-
M=c       sX    d  Z     h  d d <d d <d d <d d <d	 d
 <d d <d d <d d <Z 1 y 2 e d i d  d Z Wn 3 4 d Z n X9 d k Z : d k Z ; d k Z < d k Z = d k Z > d k	 Z	 C d k
 Z
 D d k l Z E d k l Z l Z F d k l Z G d k l Z H d k TN d e e f d     YZ d S(   s/   Information gatherer for source code modules.

s   $RCSfile: moduleinfo.py,v $s   module_names?   $Id: moduleinfo.py,v 1.3 2002/08/04 12:06:50 doughellmann Exp $s   rcs_ids    Doug Hellmann <doug@hellfly.net>s   creators   UNSPECIFIEDs   projects   Sun, 11-Nov-2001 10:52:52 ESTs   createds   $Author: doughellmann $s   authors   $Revision: 1.3 $s   versions   $Date: 2002/08/04 12:06:50 $s   dates    i   s   0.0N(   s	   ClassInfo(   s   SuiteFuncInfos   FunctionInfo(   s   SuiteInfoBase(   s
   ImportInfo(   s   *s
   ModuleInfoc      s   N d  Z  S U d e h  h  d  Z  e i d e i  i d  Z  d   Z "d   Z	 &d   Z
 *d   Z -d	   Z 6d
   Z RS(   sz   Information gatherer for source code modules.

    Extract information about a source module from
    its parse tree.
    s   <string>c 	   s  U i j t  i i d d k d | l d | m d | n d | o d | p d | r | |  _
 s t i |  | | | | t d | u d | v | oS z t t | d	  \ } } { | o | | d
 |  _ n  |  i |  |  _ n  t  i i    d Sd S(   s$  Initialize the info extractor.

        Parameters:

            tree -- parse tree from which to extract information

            name -- name of the module

            fileName -- name of the file containing the module

            commentInfo -- comments extracted from the file

        s
   ModuleInfos   __init__s   parents   trees   names   fileNames   commentInfos   defaultConfigValuesi   s	   docstringN(   s   happydoclibs   TRACEs   intos   parents   trees   names   fileNames   commentInfos   defaultConfigValuess   selfs	   _filenames   SuiteInfoBases   __init__s   matchs   DOCSTRING_STMT_PATTERNs   founds   varss
   _docstrings   _extractImportedModuless   _import_infos   outof(	   s   selfs   parents   trees   names   fileNames   commentInfos   defaultConfigValuess   varss   found(    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys   __init__U s&   						

s   ^#\s*HappyDoc:(.+)$c 	   s{     e  |  i d  i   }  | i d  }  d }  x | D ]} }  | i	   }  | o  Pn  | d d j o  Pn  | |  }  | o   d | | i d  f } n qF W h  e d <e i d	 <e i d
 <e i d <}  h  }  y  | | | UWn=   e i i d   e i    e i i d  n X |  i i |   d Sd S(   s   Look into the module source file and extract HappyDoc configuration values.

        Variables can be embedded in the first comment block of the module.
        s   rts   
s    i    s   #s   %s
%si   s   strings   urlquotes   urlquote_pluss	   urlencodes.   
--- Parser Config Value Extraction Error ---
s.   --------------------------------------------

N(   s   opens   selfs	   _filenames   reads   bodys   splits   liness   config_statements   ls   strips   matchConfigValues   matchs   groups   strings   urllibs   quotes
   quote_pluss	   urlencodes   global_namespaces   local_namespaces   syss   stderrs   writes	   tracebacks	   print_excs   _configuration_valuess   update(	   s   selfs   matchConfigValues   bodys   liness   ls   local_namespaces   config_statements   global_namespaces   match(    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys   _extractConfigurationValues s0   	
 	
$
6	c    se     d }  t i t i t i d g f t i d f f f }  t   }	  x| d D ]}  t | | d | \ } }  | o | d }
  |
 d t i j o |
 d }  | d t i j o | d d j o  x |
 d D ] }  y,  | d t i j o  | d } n Wn  t j
 o
  n X | d t i j oK  | d }  t d    |  }  d i |  }  |	 i |  n q Wn | d t i j o | d d	 j ot |
 d }  y,  | d t i j o  | d } n Wn  t j
 o
  n Xt |  } y |	 i |  } Wn t j
 o g  } n X|
 d
 } x | D] } | d t i j o |	 i | | d  ny | d t i" j o |	 i | d  nK | d t# t d d  j o* t | d  } |	 i | |  n qWn n n q\ W|	 Sd S(   s   Returns modules imported by code in tree.
        
        Scan the parse tree for import statements
        and return the names of all modules imported.
        i    s   import_stmts    i   s   dbgs   importi   c    s    |  d S(   Ni   (   s   x(   s   x(    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys   <lambda> s    s   fromi   s   *s   import_as_namei'  N(%   s   dbgs   symbols   stmts   simple_stmts
   small_stmts   tokens   NEWLINEs   IMPORT_STMT_WITH_LIST_PATTERNs
   ImportInfos   imported_moduless   trees   subtrees   matchs   founds   varss   import_stmts   firsts   NAMEs   import_modules   dotted_as_names   AttributeErrors   dotted_names   module_name_partss   maps   joins   module_names	   addImports   xs   parseTreeToStrings   importedSymbolss   symbol_lists
   ValueErrors   namess   ns   STARs   getattrs   import_name(   s   selfs   trees   namess   varss   founds   IMPORT_STMT_WITH_LIST_PATTERNs   dbgs   module_names   module_name_partss   imported_moduless   import_stmts   symbol_lists   import_names   subtrees   ns   xs   import_modules   first(    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys   _extractImportedModules s`   	3	 	
( 	(
 	 +c    s   "#$|  i i   Sd S(   s6   Return the names of classes defined within the module.N(   s   selfs   _class_infos   keys(   s   self(    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys   getClassNames"s   c    s   &'(|  i | Sd S(   s0   Return a ClassInfo object for the class by name.N(   s   selfs   _class_infos   name(   s   selfs   name(    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys   getClassInfo&s   c    s   *+f  Sd  S(   N(    (   s   self(    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys   getCommentKey*s   c    s   -./|  i i   Sd S(   s-   Returns a list of which symbols are imported.N(   s   selfs   _import_infos   items(   s   self(    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys   getImportData-s   c    so   679|  i   } :| d j o? <|  i   } =| o ?| i   } n B|  i   } n D| Sd S(   sG   Return the name to use as a target for a reference such as a hyperlink.s   __init__N(   s   selfs   getNames   target_names	   getParents   parents   getReferenceTargetName(   s   selfs   target_names   parent(    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys   getReferenceTargetName6s   
(   s   __doc__s   Nones   __init__s   res   compiles
   IGNORECASEs   matchs   _extractConfigurationValuess   _extractImportedModuless   getClassNamess   getClassInfos   getCommentKeys   getImportDatas   getReferenceTargetName(    (    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys
   ModuleInfoN s   	4!1h	(   s   __doc__s   __rcs_info__s   splits   __version__s   pprints   res   strings   syss	   tracebacks   urllibs   happydoclibs   happydoclib.parseinfo.classinfos	   ClassInfos"   happydoclib.parseinfo.functioninfos   SuiteFuncInfos   FunctionInfos   happydoclib.parseinfo.suites   SuiteInfoBases   happydoclib.parseinfo.importss
   ImportInfos   happydoclib.parseinfo.utilss
   ModuleInfo(   s   FunctionInfos   SuiteFuncInfos   strings
   ImportInfos	   tracebacks   pprints   __rcs_info__s   syss   res   SuiteInfoBases   urllibs
   ModuleInfos   __version__s   happydoclibs	   ClassInfo(    (    s^   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/moduleinfo.pys   ? s$   Q
