;
0sDc           @   s  d  Z  d Z d k Z d k Z d k Z d k Z d k Z d k Z d k Z d k	 Z	 d k l
 Z
 l Z l Z l Z l Z l Z d k l Z d k l Z d k l Z l Z d k l Z d k l Z d	 k l Z l Z d
 k l Z l Z d k  l! Z! l" Z" d k# l$ Z$ d k  l! Z! l% Z% l" Z" l& Z& l' Z' l( Z( d k) l* Z* d k+ l, Z, d k- l. Z. d k/ l0 Z0 l1 Z1 d k2 l3 Z3 l4 Z4 d k5 Z5 d   Z6 d e1 f d     YZ7 d   Z8 d   Z9 d   Z: d   Z; d   Z< d d  Z= d d  Z> d   Z? d  f  d!     YZ@ d" f  d#     YZA d$ f  d%     YZB d& eB f d'     YZC d( eB f d)     YZD d* eB f d+     YZE d, eE f d-     YZF d.   ZG h  d/  ZH d0   ZI h  d1  ZJ d2   ZK eL d3 j o eK   n d S(4   s6  Generate documentation from live Python objects.

This is an evolving module that allows to generate documentation
for python modules in an automated fashion. The idea is to take
live Python objects and inspect them in order to use as much mean-
ingful information as possible to write in some formatted way into
different types of documents.

In principle a skeleton captures the gathered information and
makes it available via a certain API to formatters that use it
in whatever way they like to produce something of interest. The
API allows for adding behaviour in subclasses of these formatters,
such that, e.g. for certain classes it is possible to trigger
special actions like displaying a sample image of a class that
represents some graphical widget, say.

Type the following for usage info:

  python docpy.py -h
s   0.8N(   s   finds   joins   splits   replaces
   expandtabss   rstrip(   s   canvas(   s   colors(   s   inchs   cm(   s   A4(   s   enums(   s	   TA_CENTERs   TA_LEFT(   s   getSampleStyleSheets   ParagraphStyle(   s   Flowables   Spacer(   s	   Paragraph(   s   Flowables   Preformatteds   Spacers   Images   KeepTogethers	   PageBreak(   s   TableOfContents(   s   XPreformatted(   s   Frame(   s   PageTemplates   BaseDocTemplate(   s
   TableStyles   Tablec         C   sI  |  i   |  i   } |  i d t t d d t t d d t t d d t  |  i d t d t t d d t d t  | d j o{ |  i d d  |  i d t	 t d |  t
 |  d  o< t i |  i d	  } |  i d t t d d
 t |  q
n |  i d d  d } |  i d t d t |  |  i   d S(   s*   The page frame used for all PDF documents.i   i   i    s   Times-Romani   i   s   %ds
   headerLines     f1.75i   sA   Generated with reportlab.lib.docpy. See http://www.reportlab.com!f1.6499999999999999N(   s   canvass	   saveStates   getPageNumbers
   pageNumbers   lines   cms   A4s   setFonts
   drawStrings   inchs   hasattrs   strings   joins
   headerLines
   headerlines   msgs   restoreState(   s   canvass   docs
   headerlines   msgs
   pageNumber(    (    s
   ./docpy.pys   mainPageFrameA   s     
>.+s
   MyTemplatec           B   s)   t  Z d  Z d f Z d   Z d   Z RS(   s1   The document template used for all PDF documents.s   pageTemplatesc         K   sm   t  d t d t d t d t d d } d |  _ t t i |  | f |  |  i
 t d | g t   d  S(   Nf2.5i   i   s   ids   F1i    s   normal(   s   Frames   cms   frame1s   selfs   allowSplittings   applys   BaseDocTemplates   __init__s   filenames   kws   addPageTemplatess   PageTemplates   mainPageFrame(   s   selfs   filenames   kws   frame1(    (    s
   ./docpy.pys   __init__\   s    +	c   
      C   s;  | i i d j o$| } | i i d  } | i i d  } | d j o t |  i
 d  o g  |  i
 _ n | d j o | i g |  i
 _ n | d j o{ t |  i
 i  d j o |  i
 i d	 =n8 t |  i
 i  d
 j o |  i
 i d	 =|  i
 i d	 =n |  i
 i i | i  nR | d j oD t |  i
 i  d
 j o |  i
 i d	 =n |  i
 i i | i  n | d j o t | i i d  } |  i d | | i   |  i f  |  i
 } | i } t t |   }	 yJ | d j o
 d } n d } | i |	  | i | |	 d | d | Wq3t j
 o q3Xq7n d S(   s3   Takes care of header line, TOC and outline entries.s	   Paragraphi   i   s   Headings
   headerLines   Heading0s   Heading1i   ii   s   Heading2s   TOCEntryi    i   s   levels   closedN(   s   flowables	   __class__s   __name__s   fs   styles   names   name7s   name8s   hasattrs   selfs   canvs
   headerLines   texts   lens   appends   ints	   headLevels   notifys   getPlainTexts   pages   cs   titles   strs   hashs   keys   isCloseds   bookmarkPages   addOutlineEntrys
   ValueError(
   s   selfs   flowables   cs   fs	   headLevels   titles   isCloseds   name7s   name8s   key(    (    s
   ./docpy.pys   afterFlowablec   sF     !"		
(   s   __name__s
   __module__s   __doc__s   _invalidInitArgss   __init__s   afterFlowable(    (    (    s
   ./docpy.pys
   MyTemplateW   s    		c         C   s,   t  t  t  |  d d  d d  d d  Sd S(   s/   Escape special HTML characters, namely &, <, >.s   &s   &amp;s   <s   &lt;s   >s   &gt;N(   s   replaces   text(   s   text(    (    s
   ./docpy.pys
   htmlescape   s     	c         C   s   t  t |    Sd  S(   N(   s
   htmlescapes   reprs   object(   s   object(    (    s
   ./docpy.pys   htmlrepr   s    c         C   s   d t  |   Sd  S(   Ns   =(   s   htmlreprs   object(   s   object(    (    s
   ./docpy.pys   defaultformat   s    c         C   sX   t  i |   } | o! y t  i |   } Wq8 q8 Xn | o t |  d p d Sd  S(   Ns   
s    (   s   inspects   getdocs   objects   results   getcommentss   rstrip(   s   objects   result(    (    s
   ./docpy.pys   getdoc   s    c         C   s   t  |  d  d Sd S(   s(   Return first line of a multiline string.s   
i    N(   s   splits   docStr(   s   docStr(    (    s
   ./docpy.pys   reduceDocStringLength   s     s   #FFA0FFc         C   sr   t  t |    }  g  } | i d  | i d |  | i d |   | i d  | i d  t | d  Sd S(   sa   Create HTML code for a section.

    This is usually a header for all classes or functions.
u    s    <TABLE WIDTH="100\%" BORDER="0">s%   <TR><TD BGCOLOR="%s" VALIGN="CENTER">s   <H2>%s</H2>s   </TD></TR></TABLE>s    s   
N(   s
   htmlescapes
   expandtabss   texts   results   appends   bgcolors   join(   s   texts   bgcolors   result(    (    s
   ./docpy.pys   makeHtmlSection   s     s   #AAA0FFc         C   sr   t  t |    }  g  } | i d  | i d |  | i d |   | i d  | i d  t | d  Sd S(   sV   Create HTML code for a subsection.

    This is usually a class or function name.
    s    <TABLE WIDTH="100\%" BORDER="0">s%   <TR><TD BGCOLOR="%s" VALIGN="CENTER">s+   <H3><TT><FONT SIZE="+2">%s</FONT></TT></H3>s   </TD></TR></TABLE>s    s   
N(   s
   htmlescapes
   expandtabss   texts   results   appends   bgcolors   join(   s   texts   bgcolors   result(    (    s
   ./docpy.pys   makeHtmlSubSection   s     c         C   s   d |  |  f Sd S(   s*   Create HTML code for an inline image.
    s   <IMG SRC="%s" ALT="%s">N(   s   text(   s   text(    (    s
   ./docpy.pys   makeHtmlInlineImage   s     s   PackageSkeleton0c           B   s   t  Z d  Z RS(   s=   A class collecting 'interesting' information about a package.(   s   __name__s
   __module__s   __doc__(    (    (    s
   ./docpy.pys   PackageSkeleton0   s    s   ModuleSkeleton0c           B   s}   t  Z d  Z d   Z d   Z d   Z d   Z h  h  d  Z h  h  h  d d  Z h  h  h  d d  Z	 d	   Z
 d
   Z RS(   s<   A class collecting 'interesting' information about a module.c         C   s   h  |  _ h  |  _ h  |  _ d  S(   N(   s   selfs   modules	   functionss   classes(   s   self(    (    s
   ./docpy.pys   __init__   s    		c         C   s   |  i d Sd S(   s,   Return the name of the module being treated.s   nameN(   s   selfs   module(   s   self(    (    s
   ./docpy.pys   getModuleName   s     c         C   s   | |  _ t i |  o |  i |  n t i |  o |  i |  ns t i |  o |  i	 |  nR t i
 |  o |  i |  n1 t i |  o |  i |  n d } t |  d S(   s)   Collect information about a given object.s/   Don't know how to document this kind of object.N(   s   objects   selfs   moduleSpaces   inspects   ismodules   _inspectModules   isclasss   _inspectClasss   ismethods   _inspectMethods
   isfunctions   _inspectFunctions	   isbuiltins   _inspectBuiltins   msgs	   TypeError(   s   selfs   objects   msg(    (    s
   ./docpy.pys   inspect  s     	c         C   s  | i }
 |
 |  i d <t | d  o | i |  i d <n d   } t | t	 i
 | t	 i   } g  h  f \ } } xg t	 i
 | t	 i  D]P \ } } t	 i |  p | | j o' | i |  d | | | <| | <q q Wg  h  f \ } } x` t	 i
 | t	 i  D]I \ } } | i |  d | | | <t	 i |  o | | | | <qqWx | D] }	 x |	 i D] } | i | i f \ } } | |
 j o t i i |  oj t i | } t | |  o t | |  | j o3 | i |  o | d | | | <| | <qqqiqiWqYWt  |  } | |  i d <| o t d	   |  |  i d
 <n | o( x% | D] } |  i# | | |  qdWn | o( x% | D] } |  i$ | | |  qWn d S(   s0   Collect information about a given module object.s   names   __version__s   versionc         C   s   |  d S(   Ni   (   s   list(   s   list(    (    s
   ./docpy.pys   <lambda>"  s    s   #s   #-s   .txt#s   docc         C   s   |  i S(   N(   s   ms   __name__(   s   m(    (    s
   ./docpy.pys   <lambda>@  s    s   importedModulesN(%   s   objects   __name__s   names   selfs   modules   hasattrs   __version__s   cadrs   maps   inspects
   getmemberss   ismodules   moduless   classess   cdicts   isclasss   keys   values	   getmodules   appends	   functionss   fdicts	   isroutines
   isfunctions   cs	   __bases__s   bases
   __module__s   modnames   syss   has_keys   getattrs   getdocs   docs   items   _inspectClasss   _inspectFunction(   s   selfs   objects   cadrs   modules	   functionss   modnames   bases   keys   fdicts   cs   names   docs   cdicts   moduless   values   items   classes(    (    s
   ./docpy.pys   _inspectModule  sT     		    
  &.  c         C   sV  | i } | i } g  } | o( g  } x | D] } | i |  q, Wn h  |  i
 | <| o | |  i
 | d <n g  h  f \ } } xN t i | t i  D]7 \ } }	 | i |	  d | d | | | <| |	 <q W| o[ |  i
 | i d  o h  |  i
 | d <n x+ | D] }
 |  i |
 | | | |  qWn t |  } | |  i
 | d <d S(   s/   Collect information about a given class object.s   basess   #s   -s   methodss   docN(   s   objects   __name__s   names	   __bases__s   basess   resultss   parentss   bases   appends   selfs   classess   methodss   mdicts   inspects
   getmemberss   ismethods   keys   values   has_keys   items   _inspectMethods	   functionss   getdocs   doc(   s   selfs   objects	   functionss   classess   keys   basess   names   docs   resultss   values   items   parentss   bases   mdicts   methods(    (    s
   ./docpy.pys   _inspectClassK  s2     		  " !s    c         C   s    |  i | i | | | |  d S(   s0   Collect information about a given method object.N(   s   selfs   _inspectFunctions   objects   im_funcs	   functionss   classess   methodss   clname(   s   selfs   objects	   functionss   classess   methodss   clname(    (    s
   ./docpy.pys   _inspectMethodk  s     c         C   s  y= t  i |  \ } } } } t  i | | | | d t }
 Wn t
 j
 o d }
 n Xt |  } | i d j o d |
 d d !g } n | i } | o& h  d |
 <d | <|  i | i <nX |  i | d	 } | i | i  o h  | | i <n | | i }	 |
 |	 d <| |	 d <d
 S(   s2   Collect information about a given function object.s   defaultformats   ( ... )s   <lambda>s	    lambda  i   is	   signatures   docs   methodsN(   s   inspects
   getargspecs   objects   argss   varargss   varkws   defaultss   formatargspecs   defaultformats   argspecs	   TypeErrors   getdocs   docs   __name__s   decls   clnames   selfs	   functionss   classess
   theMethodss   has_keys	   theMethod(   s   selfs   objects	   functionss   classess   methodss   clnames   decls   argss   docs	   theMethods   argspecs   defaultss   varargss
   theMethodss   varkw(    (    s
   ./docpy.pys   _inspectFunctionq  s&     	&
c         C   s   | i d GHd S(   s+   Collect information about a given built-in.s   ( ... )N(   s   objects   __name__(   s   selfs   object(    (    s
   ./docpy.pys   _inspectBuiltin  s     c         C   s,  |  } | } | i d } | i d } | i i d g   } | i	   | i
 | | |  | i d | _ | i | i i    | i i   } | i	   x| D]w\ } } | i | d } | i | i d g   }	 | i d | _ | i | | |	  | i | i d  o h  | i | d <n | i | i | d i    | i | d i   } | i	   xn | D]f \ } } | d } | d }
 | i d | _ | i | | |
  | i d | _ | i | | |
  qjW| i | i | d i    | i d | _ | i | | |	  q W| i d | _ | i | i i    | i d | _ | i | i  i    | i  i   } | i	   xn | D]f \ } } | d } | d }
 | i d | _ | i" | | |
  | i d | _ | i# | | |
  qW| i d | _ | i$ | i  i    | i% | | |  d S(	   s+   Call event methods in a visiting formatter.s   names   docs   importedModulesi   s   basess   methodss	   signatureN(&   s   selfs   ss	   formatters   fs   modules   modNames   modDocs   gets   importeds   sorts   beginModules   indentLevels   beginClassess   classess   keyss   itemss   ks   vs   cDocs   basess
   beginClasss   has_keys   beginMethodss   ms   mDocs   sigs   beginMethods	   endMethods
   endMethodss   endClasss
   endClassess   beginFunctionss	   functionss   docs   beginFunctions   endFunctions   endFunctionss	   endModule(   s   selfs	   formatters   modNames   importeds   fs   itemss   ms   docs   ss   basess   sigs   mDocs   vs   modDocs   ks   cDoc(    (    s
   ./docpy.pys   walk  sf     

 
 


 

(   s   __name__s
   __module__s   __doc__s   __init__s   getModuleNames   inspects   _inspectModules   _inspectClasss   _inspectMethods   _inspectFunctions   _inspectBuiltins   walk(    (    (    s
   ./docpy.pys   ModuleSkeleton0   s    	
			1  	s   DocBuilder0c           B   s   t  Z d  Z e Z e d  Z e d  Z d d d  Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s8  An abstract class to document the skeleton of a Python module.

    Instances take a skeleton instance s and call their s.walk()
    method. The skeleton, in turn, will walk over its tree structure
    while generating events and calling equivalent methods from a
    specific interface (begin/end methods).
    c         C   s   | |  _  t |  _ d |  _ d  S(   Ni    (   s   skeletons   selfs   Nones   packageNames   indentLevel(   s   selfs   skeleton(    (    s
   ./docpy.pys   __init__  s    		c         C   s(   | o | |  _  n |  i  i |   d  S(   N(   s   skeletons   selfs   walk(   s   selfs   skeleton(    (    s
   ./docpy.pys   write  s    s    c         C   s   d  S(   N(    (   s   selfs   names   typ(    (    s
   ./docpy.pys   begin  s    c         C   s   d  S(   N(    (   s   self(    (    s
   ./docpy.pys   end  s    c         C   s   | |  _ d  S(   N(   s   names   selfs   packageName(   s   selfs   name(    (    s
   ./docpy.pys   beginPackage
  s    c         C   s   d  S(   N(    (   s   selfs   name(    (    s
   ./docpy.pys
   endPackage  s    c         C   s   d  S(   N(    (   s   selfs   names   docs   imported(    (    s
   ./docpy.pys   beginModule  s    c         C   s   d  S(   N(    (   s   selfs   names   docs   imported(    (    s
   ./docpy.pys	   endModule  s    c         C   s   d  S(   N(    (   s   selfs   names(    (    s
   ./docpy.pys   beginClasses  s    c         C   s   d  S(   N(    (   s   selfs   names(    (    s
   ./docpy.pys
   endClasses  s    c         C   s   d  S(   N(    (   s   selfs   names   docs   bases(    (    s
   ./docpy.pys
   beginClass  s    c         C   s   d  S(   N(    (   s   selfs   names   docs   bases(    (    s
   ./docpy.pys   endClass  s    c         C   s   d  S(   N(    (   s   selfs   names(    (    s
   ./docpy.pys   beginMethods  s    c         C   s   d  S(   N(    (   s   selfs   names(    (    s
   ./docpy.pys
   endMethods  s    c         C   s   d  S(   N(    (   s   selfs   names   docs   sig(    (    s
   ./docpy.pys   beginMethod  s    c         C   s   d  S(   N(    (   s   selfs   names   docs   sig(    (    s
   ./docpy.pys	   endMethod  s    c         C   s   d  S(   N(    (   s   selfs   names(    (    s
   ./docpy.pys   beginFunctions!  s    c         C   s   d  S(   N(    (   s   selfs   names(    (    s
   ./docpy.pys   endFunctions"  s    c         C   s   d  S(   N(    (   s   selfs   names   docs   sig(    (    s
   ./docpy.pys   beginFunction$  s    c         C   s   d  S(   N(    (   s   selfs   names   docs   sig(    (    s
   ./docpy.pys   endFunction%  s    (   s   __name__s
   __module__s   __doc__s   Nones
   fileSuffixs   __init__s   writes   begins   ends   beginPackages
   endPackages   beginModules	   endModules   beginClassess
   endClassess
   beginClasss   endClasss   beginMethodss
   endMethodss   beginMethods	   endMethods   beginFunctionss   endFunctionss   beginFunctions   endFunction(    (    (    s
   ./docpy.pys   DocBuilder0  s,    																s   AsciiDocBuilder0c           B   sz   t  Z d  Z d Z g  Z d Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z RS(   s   Document the skeleton of a Python module in ASCII format.

    The output will be an ASCII file with nested lines representing
    the hiearchical module structure.

    Currently, no doc strings are listed.
    s   .txts     c         C   s   |  i o |  i |  i |  _ n1 |  i o |  i i   |  i |  _ n
 d |  _ |  i oE t |  i d  } x" |  i D] } | i
 | d  qw W| i   n d  S(   Ns    s   ws   
(   s   selfs   packageNames
   fileSuffixs   outPaths   skeletons   getModuleNames   opens   files   outLiness   lines   writes   close(   s   selfs   lines   file(    (    s
   ./docpy.pys   end5  s    

	

 c         C   sZ   t  i |  |  |  i |  i f \ } } |  i i	 d | | | f  |  i i	 d  d  S(   Ns   %sPackage: %ss    (
   s   DocBuilder0s   beginPackages   selfs   names   indentLevels   indentLabels   levs   labels   outLiness   append(   s   selfs   names   levs   label(    (    s
   ./docpy.pys   beginPackageE  s    c         C   s   |  i i } |  i |  i f \ } } |  i i d | | | f  | d  | og |  i i d | d |  | d  x0 | D]( } |  i i d | d | | f  q W| d  n d  S(   Ns   %sModule: %ss    s
   %sImportedi   s   %s%si   (
   s   selfs   outLiness   appends   indentLevels   indentLabels   levs   labels   names   importeds   m(   s   selfs   names   docs   importeds   ms   labels   levs   append(    (    s
   ./docpy.pys   beginModuleL  s    

 &c         C   sO   | oD |  i |  i f \ } } |  i i d | |  |  i i d  n d  S(   Ns	   %sClassess    (   s   namess   selfs   indentLevels   indentLabels   levs   labels   outLiness   append(   s   selfs   namess   levs   label(    (    s
   ./docpy.pys   beginClasses[  s    c         C   s   |  i i } |  i |  i f \ } } | o: t d   |  } | d | | | t
 | d  f  n | d | | | f  d  S|  i i d  d  S(   Nc         C   s   |  i S(   N(   s   bs   __name__(   s   b(    (    s
   ./docpy.pys   <lambda>g  s    s   %s%s(%s)s   , s   %s%ss    (   s   selfs   outLiness   appends   indentLevels   indentLabels   levs   labels   basess   maps   names   join(   s   selfs   names   docs   basess   labels   levs   append(    (    s
   ./docpy.pys
   beginClassb  s    (c         C   s   |  i i d  d  S(   Ns    (   s   selfs   outLiness   append(   s   selfs   names   docs   bases(    (    s
   ./docpy.pys   endClassq  s    c         C   sC   |  i i } |  i |  i f \ } } | d | | | | f  d  S(   Ns   %s%s%s(	   s   selfs   outLiness   appends   indentLevels   indentLabels   levs   labels   names   sig(   s   selfs   names   docs   sigs   labels   levs   append(    (    s
   ./docpy.pys   beginMethodu  s    c         C   sO   | oD |  i |  i f \ } } |  i i d | |  |  i i d  n d  S(   Ns   %sFunctionss    (   s   namess   selfs   indentLevels   indentLabels   levs   labels   outLiness   append(   s   selfs   namess   levs   label(    (    s
   ./docpy.pys   beginFunctions}  s    c         C   s   |  i i d  d  S(   Ns    (   s   selfs   outLiness   append(   s   selfs   names(    (    s
   ./docpy.pys   endFunctions  s    c         C   sI   |  i i } |  i |  i f \ } } |  i i d | | | | f  d  S(   Ns   %s%s%s(	   s   selfs   outLiness   appends   indentLevels   indentLabels   levs   labels   names   sig(   s   selfs   names   docs   sigs   labels   levs   append(    (    s
   ./docpy.pys   beginFunction  s    (   s   __name__s
   __module__s   __doc__s
   fileSuffixs   outLiness   indentLabels   ends   beginPackages   beginModules   beginClassess
   beginClasss   endClasss   beginMethods   beginFunctionss   endFunctionss   beginFunction(    (    (    s
   ./docpy.pys   AsciiDocBuilder0(  s    									s   HtmlDocBuilder0c           B   sz   t  Z d  Z d Z g  Z d d d  Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z RS(   s@   A class to write the skeleton of a Python source in HTML format.s   .htmls    c         C   s$   |  i i d  |  i i d  d  S(   Ns>   <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">s   <html>(   s   selfs   outLiness   append(   s   selfs   names   typ(    (    s
   ./docpy.pys   begin  s    c         C   s   |  i o |  i |  i |  _ n1 |  i o |  i i   |  i |  _ n
 d |  _ |  i oU t |  i d  } |  i i	 d  x" |  i D] } | i | d  q W| i   n d  S(   Ns    s   ws   </body></html>s   
(   s   selfs   packageNames
   fileSuffixs   outPaths   skeletons   getModuleNames   opens   files   outLiness   appends   lines   writes   close(   s   selfs   lines   file(    (    s
   ./docpy.pys   end  s    

	

 c         C   s\   t  i |  |  |  i i d |  |  i i d  |  i i d |  |  i i d  d  S(   Ns   <title>%s</title>s   <body bgcolor="#ffffff">s   <H1>%s</H1>s    (   s   DocBuilder0s   beginPackages   selfs   names   outLiness   append(   s   selfs   name(    (    s
   ./docpy.pys   beginPackage  s
    c         C   s  |  i o( |  i i d |  |  i i d  n |  i i d |  |  i i d  xA t | d  D]0 } |  i i d t |   |  i i d  qg W|  i i d  | o_ |  i i t
 d   |  i i d	  x" | D] } |  i i d
 |  q W|  i i d  n d  S(   Ns   <title>%s</title>s   <body bgcolor="#ffffff">s   <H1>%s</H1>s    s   
s   <FONT SIZE="-1">%s</FONT>s   <BR>s   Imported Moduless   <ul>s   <li>%s</li>s   </ul>(   s   selfs   packageNames   outLiness   appends   names   splits   docs   lines
   htmlescapes   importeds   makeHtmlSections   m(   s   selfs   names   docs   importeds   ms   line(    (    s
   ./docpy.pys   beginModule  s"      c         C   s   |  i i t d   d  S(   Ns   Classes(   s   selfs   outLiness   appends   makeHtmlSection(   s   selfs   names(    (    s
   ./docpy.pys   beginClasses  s    c         C   s   t  i |  | | |  | o? t d   |  } |  i i t	 d | t
 | d  f   n |  i i t	 d |   xA t | d  D]0 } |  i i d t |   |  i i d  q W|  i i d  d  S(	   Nc         C   s   |  i S(   N(   s   bs   __name__(   s   b(    (    s
   ./docpy.pys   <lambda>  s    s   %s(%s)s   , s   %ss   
s   <FONT SIZE="-1">%s</FONT>s   <BR>s    (   s   DocBuilder0s
   beginClasss   selfs   names   docs   basess   maps   outLiness   appends   makeHtmlSubSections   joins   splits   lines
   htmlescape(   s   selfs   names   docs   basess   line(    (    s
   ./docpy.pys
   beginClass  s    - c         C   s   d  S(   N(    (   s   selfs   names(    (    s
   ./docpy.pys   beginMethods  s    c         C   s   |  i | | |  d  S(   N(   s   selfs   beginFunctions   names   docs   sig(   s   selfs   names   docs   sig(    (    s
   ./docpy.pys   beginMethod  s    c         C   s   |  i i t d   d  S(   Ns	   Functions(   s   selfs   outLiness   appends   makeHtmlSection(   s   selfs   names(    (    s
   ./docpy.pys   beginFunctions  s    c         C   sz   |  i i } | d | | f  | d  x5 t | d  D]$ } | d t |   | d  q: W| d  | d  d  S(   Ns/   <DL><DL><DT><TT><STRONG>%s</STRONG>%s</TT></DT>s    s   
s"   <DD><FONT SIZE="-1">%s</FONT></DD>s   <BR>s
   </DL></DL>(	   s   selfs   outLiness   appends   names   sigs   splits   docs   lines
   htmlescape(   s   selfs   names   docs   sigs   lines   append(    (    s
   ./docpy.pys   beginFunction  s    
 
(   s   __name__s
   __module__s   __doc__s
   fileSuffixs   outLiness   begins   ends   beginPackages   beginModules   beginClassess
   beginClasss   beginMethodss   beginMethods   beginFunctionss   beginFunction(    (    (    s
   ./docpy.pys   HtmlDocBuilder0  s    									s   PdfDocBuilder0c           B   s   t  Z d  Z d Z e d d  Z d d d  Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z RS(   s7   Document the skeleton of a Python module in PDF format.s   .pdfs    c         C   s8  | d d d f j o; t d d t |  d d d d	 d
 d d d d d  } n | d d f j o | oG t d d t |  d d d d d
 d d d d d d d d d  } q0t d d t |  d d d d d
 d d d d d d d d d  } n8 t d d t |  d d d d	 d
 d d d d d  } | Sd S(   s;   Make a heading style for different types of module content.s   packages   modules   classs   names   Headings   fontNames   Courier-Bolds   fontSizei   s   leadingi   s   spaceBeforei   s
   spaceAfteri   s   methods   functions   firstLineIndentis
   leftIndenti$   i    is
   Times-BoldN(   s   typs   ParagraphStyles   strs   levels   styles   doc(   s   selfs   levels   typs   docs   style(    (    s
   ./docpy.pys   makeHeadingStyle  sB     c         C   s  t    } | d |  _ | d |  _ g  |  _ t i t i    } t i	 d |  } |  i i t d | | f |  i   |  i i t d t |  i   |  i i t d | |  i   |  i i t d |  i   |  i i t    t   } |  i i |  |  i i t    d  S(   Ns   Codes   BodyTexts   %Y-%m-%d %H:%Ms.   <font size=18>Documentation for %s "%s"</font>s6   <font size=18>Generated by: docpy.py version %s</font>s'   <font size=18>Date generated: %s</font>s    <font size=18>Format: PDF</font>(   s   getSampleStyleSheets
   styleSheets   selfs   codes   bts   storys   times   gmtimes   ts   strftimes
   timeStrings   appends	   Paragraphs   typs   names   __version__s	   PageBreaks   TableOfContentss   toc(   s   selfs   names   typs   tocs
   styleSheets   ts
   timeString(    (    s
   ./docpy.pys   begin&  s    		&  	c         C   s   |  i t j	 o nR |  i o |  i |  i |  _ n1 |  i o |  i i   |  i |  _ n
 d |  _ d |  i GH|  i o# t |  i  } | i	 |  i
  n d  S(   Ns    s   output path is %s(   s   selfs   outPaths   Nones   packageNames
   fileSuffixs   skeletons   getModuleNames
   MyTemplates   docs
   multiBuilds   story(   s   selfs   doc(    (    s
   ./docpy.pys   end;  s    

	
c         C   sB   t  i |  |  |  i } | i t | |  i |  i d    d  S(   Ns   package(	   s   DocBuilder0s   beginPackages   selfs   names   storys   appends	   Paragraphs   makeHeadingStyles   indentLevel(   s   selfs   names   story(    (    s
   ./docpy.pys   beginPackageJ  s    	c         C   s   |  i } |  i } | i t | |  i |  i d    | o6 | i t	 t
 |  |   | i t	 d |   n | os | i t d |  i |  i d    xJ | D]> } t d | |  } d | i _ d | i _ | i |  q Wn d  S(   Ns   modules    s   Imported modulesi   s   <bullet></bullet> %si
   i   (   s   selfs   storys   bts   appends	   Paragraphs   names   makeHeadingStyles   indentLevels   docs   XPreformatteds
   htmlescapes   importeds   ms   ps   styles   bulletIndents
   leftIndent(   s   selfs   names   docs   importeds   storys   ps   ms   bt(    (    s
   ./docpy.pys   beginModuleP  s    		%& c         C   s-   t  i |  | | |  |  i i t    d  S(   N(	   s   DocBuilder0s	   endModules   selfs   names   docs   importeds   storys   appends	   PageBreak(   s   selfs   names   docs   imported(    (    s
   ./docpy.pys	   endModulea  s    c         C   s)   |  i i t d |  i |  i    d  S(   Ns   Classes(   s   selfs   storys   appends	   Paragraphs   makeHeadingStyles   indentLevel(   s   selfs   names(    (    s
   ./docpy.pys   beginClassesf  s    c         C   s   |  i } |  i } | oN t d   |  } | i t d | t | d  f |  i	 |  i
 d    n& | i t | |  i	 |  i
 d    | o6 | i t t |  |   | i t d |   n d  S(   Nc         C   s   |  i S(   N(   s   bs   __name__(   s   b(    (    s
   ./docpy.pys   <lambda>n  s    s   %s(%s)s   , s   classs    (   s   selfs   bts   storys   basess   maps   appends	   Paragraphs   names   joins   makeHeadingStyles   indentLevels   docs   XPreformatteds
   htmlescape(   s   selfs   names   docs   basess   storys   bt(    (    s
   ./docpy.pys
   beginClassj  s    		<%c         C   s   |  i } |  i } | i t | | |  i |  i d |    | o6 | i t
 t |  |   | i t
 d |   n d  S(   Ns   methods    (   s   selfs   bts   storys   appends	   Paragraphs   names   sigs   makeHeadingStyles   indentLevels   docs   XPreformatteds
   htmlescape(   s   selfs   names   docs   sigs   storys   bt(    (    s
   ./docpy.pys   beginMethodx  s    		,c         C   s4   | o) |  i i t d |  i |  i    n d  S(   Ns	   Functions(   s   namess   selfs   storys   appends	   Paragraphs   makeHeadingStyles   indentLevel(   s   selfs   names(    (    s
   ./docpy.pys   beginFunctions  s    c         C   s|   |  i } |  i } | i t | | |  i |  i d    | o6 | i t
 t |  |   | i t
 d |   n d  S(   Ns   functions    (   s   selfs   bts   storys   appends	   Paragraphs   names   sigs   makeHeadingStyles   indentLevels   docs   XPreformatteds
   htmlescape(   s   selfs   names   docs   sigs   storys   bt(    (    s
   ./docpy.pys   beginFunction  s    		)(   s   __name__s
   __module__s   __doc__s
   fileSuffixs   Nones   makeHeadingStyles   begins   ends   beginPackages   beginModules	   endModules   beginClassess
   beginClasss   beginMethods   beginFunctionss   beginFunction(    (    (    s
   ./docpy.pys   PdfDocBuilder0  s    )									s   UmlPdfDocBuilder0c           B   st   t  Z d  Z d Z d d d  Z d   Z d   Z d   Z d   Z d   Z	 d	   Z
 d
   Z d   Z d   Z RS(   sA   Document the skeleton of a Python module with UML class diagrams.s   .pdfs    c         C   si   t    } | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ g  |  _ d |  _	 g  |  _
 d  S(   Ns   Heading1s   Heading2s   Heading3s   Codes   BodyTexts    (   s   getSampleStyleSheets
   styleSheets   selfs   h1s   h2s   h3s   codes   bts   storys   classCompartments   methodCompartment(   s   selfs   names   typs
   styleSheet(    (    s
   ./docpy.pys   begin  s    			c         C   s   |  i } |  i |  i |  i |  i f \ } } } } t   }
 |
 d } | i	 t
 | |   | i	 t | |   | os | i	 t
 d |  i |  i d    xJ | D]> } t
 d | |  }	 d |	 i _ d |	 i _ | i	 |	  q Wn d  S(   Ns   BodyTexts   Imported modulesi   s   <bullet></bullet> %si
   i   (   s   selfs   storys   h1s   h2s   h3s   bts   getSampleStyleSheets
   styleSheets   bt1s   appends	   Paragraphs   names   XPreformatteds   docs   importeds   makeHeadingStyles   indentLevels   ms   ps   styles   bulletIndents
   leftIndent(   s   selfs   names   docs   importeds   storys   h2s   h1s   ms   bts   ps
   styleSheets   h3s   bt1(    (    s
   ./docpy.pys   beginModule  s    	*	
& c         C   s-   |  i i t    t i |  | | |  d  S(   N(	   s   selfs   storys   appends	   PageBreaks   PdfDocBuilder0s	   endModules   names   docs   imported(   s   selfs   names   docs   imported(    (    s
   ./docpy.pys	   endModule  s    c         C   sR   |  i |  i |  i |  i f \ } } } } | o |  i i t d |   n d  S(   Ns   Classes(	   s   selfs   h1s   h2s   h3s   bts   namess   storys   appends	   Paragraph(   s   selfs   namess   h2s   h3s   h1s   bt(    (    s
   ./docpy.pys   beginClasses  s    *c         C   sX   d |  _ g  |  _ | o2 t d   |  } d | t | d  f |  _ n
 | |  _ d  S(   Ns    c         C   s   |  i S(   N(   s   bs   __name__(   s   b(    (    s
   ./docpy.pys   <lambda>  s    s   %s(%s)s   , (   s   selfs   classCompartments   methodCompartments   basess   maps   names   join(   s   selfs   names   docs   bases(    (    s
   ./docpy.pys
   beginClass  s    		 c         C   s  |  i |  i |  i |  i |  i f \ } } } } } t   } | d } |  i	 }	 t
 |  } g  } } t d |  i |  } t | i _ | f g }
 t |
  } | i d d d f d | d f d t i f  xC |  i D]8 \ } } } t d | | f |  } |
 i | f  q W| i d d | f d d f d t i f  t |
 d	 t  f  } t" |  } | i$ |  |  i	 i |  |  i	 i t% d t  d t    d  S(
   Ns   BodyTexts	   <b>%s</b>s   BOXi    ii   f0.25s   <b>%s</b>%si   (&   s   selfs   h1s   h2s   h3s   bts   codes   getSampleStyleSheets
   styleSheets   bt1s   storys   reduceDocStringLengths   docs   classDocs   tsas   tableStyleAttributess	   Paragraphs   classCompartments   ps	   TA_CENTERs   styles	   alignments   rowss   lens   lenRowss   appends   colorss   blacks   methodCompartments   names   sigs
   nameAndSigs   Tables   cms   ts
   TableStyles
   tableStyles   setStyles   Spacer(   s   selfs   names   docs   basess   codes   h2s   h3s   classDocs   h1s   storys   rowss   tsas   sigs   lenRowss   bt1s
   tableStyles   bts
   styleSheets   tableStyleAttributess
   nameAndSigs   ps   t(    (    s
   ./docpy.pys   endClass  s*    3	
	
/
 +c         C   s   |  i i | | | f  d  S(   N(   s   selfs   methodCompartments   appends   names   docs   sig(   s   selfs   names   docs   sig(    (    s
   ./docpy.pys   beginMethod  s    c         C   sx   |  i |  i |  i |  i f \ } } } } | o |  i i t d |   n t	 d  d t	 d  |  _
 g  |  _ d  S(   Ns	   Functionsi   s    Module-Level Functions i   (   s   selfs   h1s   h2s   h3s   bts   namess   storys   appends	   Paragraphs   chrs   classCompartments   methodCompartment(   s   selfs   namess   h2s   h3s   h1s   bt(    (    s
   ./docpy.pys   beginFunctions  s
    *c         C   s   |  i i | | | f  d  S(   N(   s   selfs   methodCompartments   appends   names   docs   sig(   s   selfs   names   docs   sig(    (    s
   ./docpy.pys   beginFunction  s    c         C   s  |  i |  i |  i |  i |  i f \ } } } } } t   } | d } |  i	 } | o d  Sn g  } } t d |  i |  } t | i _ | f g } t |  }
 | i d d d f d |
 d f d t i f  xC |  i D]8 \ } } }	 t d | |	 f |  } | i | f  q W| i d d |
 f d d f d t i f  t | d	 t f  } t! |  } | i# |  |  i	 i |  |  i	 i t$ d t d t   d  S(
   Ns   BodyTexts	   <b>%s</b>s   BOXi    ii   f0.25s   <b>%s</b>%si   (%   s   selfs   h1s   h2s   h3s   bts   codes   getSampleStyleSheets
   styleSheets   bt1s   storys   namess   tsas   tableStyleAttributess	   Paragraphs   classCompartments   ps	   TA_CENTERs   styles	   alignments   rowss   lens   lenRowss   appends   colorss   blacks   methodCompartments   names   docs   sigs
   nameAndSigs   Tables   cms   ts
   TableStyles
   tableStyles   setStyles   Spacer(   s   selfs   namess   codes   h2s   h3s   h1s   storys   rowss   tsas   sigs   lenRowss   bt1s
   tableStyles   bts
   styleSheets   tableStyleAttributess
   nameAndSigs   names   docs   ps   t(    (    s
   ./docpy.pys   endFunctions  s,    3	
	
/
 +(   s   __name__s
   __module__s   __doc__s
   fileSuffixs   begins   beginModules	   endModules   beginClassess
   beginClasss   endClasss   beginMethods   beginFunctionss   beginFunctions   endFunctions(    (    (    s
   ./docpy.pys   UmlPdfDocBuilder0  s    					#			c           C   s   d S(   s  docpy.py - Automated documentation for Python source code.

Usage: python docpy.py [options]

    [options]
        -h          Print this help message.

        -f name     Use the document builder indicated by 'name',
                    e.g. Ascii, Html, Pdf (default), UmlPdf.

        -m module   Generate document for module named 'module'
                    (default is 'docpy').
                    'module' may follow any of these forms:
                        - docpy.py
                        - docpy
                        - c:\test\docpy
                    and can be any of these:
                        - standard Python modules
                        - modules in the Python search path
                        - modules in the current directory

        -p package  Generate document for package named 'package'.
                    'package' may follow any of these forms:
                        - reportlab
                        - reportlab.platypus
                        - c:\test\reportlab
                    and can be any of these:
                        - standard Python packages (?)
                        - packages in the Python search path
                        - packages in the current directory

        -s          Silent mode (default is unset).

Examples:

    python docpy.py -h
    python docpy.py -m docpy.py -f Ascii
    python docpy.py -m string -f Html
    python docpy.py -m signsandsymbols.py -f Pdf
    python docpy.py -p reportlab.platypus -f UmlPdf
    python docpy.py -p reportlab.lib -s -f UmlPdf
N(    (    (    (    s
   ./docpy.pys
   printUsage   s    *c         C   s   t  i   } t  i i |   } | o t i i |  n |  d d j o |  d  } n |  } | o t  i i
 |  } n y t |  } Wn! d | GHt  i |  d Sn Xt   } | i |  | i |  | o t i d =n t  i |  d S(   s{  Generate documentation for one Python file in some format.

    This handles Python standard modules like string, custom modules
    on the Python search path like e.g. docpy as well as modules
    specified with their full path like C:/tmp/junk.py.

    The doc file will always be saved in the current directory with
    a basename equal to that of the module, e.g. docpy.
    is   .pys   Failed to import %s.Ni(   s   oss   getcwds   cwds   paths   dirnames
   pathOrNames   dirNames   syss   appends   modnames   basenames
   __import__s   modules   chdirs   ModuleSkeleton0s   ss   inspects   builders   write(   s
   pathOrNames   builders   optss   modnames   modules   ss   dirNames   cwd(    (    s
   ./docpy.pys   documentModule0M  s,    	 		c         C   s   |  \ } } t d   |  } t d   |  } xm | D]e } t i i | |  } | i	 d d  o	 | GHn | i
 d | _
 t | |  | i
 d | _
 q7 Wd S(   s9   A callback function used when waking over a package tree.c         C   s
   |  d j S(   Ns   __init__.py(   s   f(   s   f(    (    s
   ./docpy.pys   <lambda>  s    c         C   s   |  d d j S(   Nis   .py(   s   f(   s   f(    (    s
   ./docpy.pys   <lambda>  s    s   isSilenti    i   N(   s   builders   optss   filters   filess   fs   oss   paths   joins   dirPaths   gets   indentLevels   documentModule0(   s   .0s   dirPaths   filess   builders   optss   fs   path(    (    s
   ./docpy.pys   _packageWalkCallback}  s     	c         C   s   t  i |  j o, |  } t  i i t  i i |   d } n\ |  } t |  } d | j o' d | t	 | d  } t |  } n t  i i | i  } t  i   } | i |  t  i i | t | | f  | i |  t  i |  d S(   sm  Generate documentation for one Python package in some format.

    'pathOrName' can be either a filesystem path leading to a Python
    package or package name whose path will be resolved by importing
    the top-level module.

    The doc file will always be saved in the current directory with
    a basename equal to that of the package, e.g. reportlab.lib.
    i    s   .s   packageN(   s   oss   seps
   pathOrNames   paths   splitexts   basenames   names
   __import__s   packages   finds   subnames   evals   dirnames   __file__s   getcwds   cwds   builders   beginPackages   walks   _packageWalkCallbacks   optss
   endPackages   chdir(   s
   pathOrNames   builders   optss   packages   cwds   subnames   paths   name(    (    s
   ./docpy.pys   documentPackage0  s    	 &c          C   s  t  i  t i d d  \ }
 } h  } x |
 D] \ } } | | | <q, W| i }	 |	 d  o t
 i GHt i d  n |	 d  } | i d d  d } t | d	  }  |	 d
  o |	 d  o d | d <n h  d | <} |	 d  oI | d } | o d | GHn |  i d | d d  t | |  |  nW |	 d
  oI | d
 } | o d | GHn |  i d | d d  t | |  |  n |  i   | o d |  i GHn d S(   s=   Handle command-line options and trigger corresponding action.i   s   hsf:m:p:s   -hi    s   -ss   -fs   Pdfs   DocBuilder0s   ()s   -ps   -ms   docpys   isSilents)   Generating documentation for module %s...s   names   typs   modules*   Generating documentation for package %s...s   packages	   Saved %s.N(   s   getopts   syss   argvs   optss   argss   optsDicts   ks   vs   has_keys   hasOpts
   printUsages   __doc__s   exits   isSilents   gets   builderClassNames   evals   builders   optionss
   nameOrPaths   begins   documentModule0s   documentPackage0s   ends   outPath(   s   builders   builderClassNames   ks   argss   optsDicts   optionss
   nameOrPaths   isSilents   vs   hasOpts   opts(    (    s
   ./docpy.pys   main  s>      	


s   __main__(M   s   __doc__s   __version__s   syss   oss   res   typess   strings   getopts   copys   times   finds   joins   splits   replaces
   expandtabss   rstrips   reportlab.pdfgens   canvass   reportlab.libs   colorss   reportlab.lib.unitss   inchs   cms   reportlab.lib.pagesizess   A4s   enumss   reportlab.lib.enumss	   TA_CENTERs   TA_LEFTs   reportlab.lib.styless   getSampleStyleSheets   ParagraphStyles   reportlab.platypus.flowabless   Flowables   Spacers   reportlab.platypus.paragraphs	   Paragraphs   Preformatteds   Images   KeepTogethers	   PageBreaks"   reportlab.platypus.tableofcontentss   TableOfContentss    reportlab.platypus.xpreformatteds   XPreformatteds   reportlab.platypus.framess   Frames   reportlab.platypus.doctemplates   PageTemplates   BaseDocTemplates   reportlab.platypus.tabless
   TableStyles   Tables   inspects   mainPageFrames
   MyTemplates
   htmlescapes   htmlreprs   defaultformats   getdocs   reduceDocStringLengths   makeHtmlSections   makeHtmlSubSections   makeHtmlInlineImages   PackageSkeleton0s   ModuleSkeleton0s   DocBuilder0s   AsciiDocBuilder0s   HtmlDocBuilder0s   PdfDocBuilder0s   UmlPdfDocBuilder0s
   printUsages   documentModule0s   _packageWalkCallbacks   documentPackage0s   mains   __name__(>   s   ModuleSkeleton0s   cms   Flowables   htmlreprs   PdfDocBuilder0s   reduceDocStringLengths   replaces   Preformatteds   colorss   AsciiDocBuilder0s   BaseDocTemplates
   printUsages   HtmlDocBuilder0s   finds   canvass   copys   Spacers   TableOfContentss   PageTemplates   res   defaultformats   TA_LEFTs   splits   rstrips   documentPackage0s   inchs   getopts   __version__s   A4s   UmlPdfDocBuilder0s   strings   makeHtmlSubSections   makeHtmlSections   inspects   documentModule0s
   MyTemplates   _packageWalkCallbacks   syss
   htmlescapes	   Paragraphs   KeepTogethers   Tables   XPreformatteds   enumss   typess   getdocs   mains   joins   PackageSkeleton0s
   TableStyles   Images   makeHtmlInlineImages
   expandtabss	   TA_CENTERs	   PageBreaks   times   mainPageFrames   getSampleStyleSheets   DocBuilder0s   ParagraphStyles   oss   Frame(    (    s
   ./docpy.pys   ?   sV   H++			D				
		>hh	-0	 	1