-
M=c       s    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 l Z A d k	 TH d f  d     YZ
 R d e e
 f d     YZ d S(   s;   Gather information about a function or method definition.

s   $RCSfile: functioninfo.py,v $s   module_namesA   $Id: functioninfo.py,v 1.2 2002/08/04 12:06:49 doughellmann Exp $s   rcs_ids    Doug Hellmann <doug@hellfly.net>s   creators   UNSPECIFIEDs   projects   Sun, 11-Nov-2001 10:54:53 ESTs   createds   $Author: doughellmann $s   authors   $Revision: 1.2 $s   versions   $Date: 2002/08/04 12:06:49 $s   dates    i   s   0.0N(   s   SuiteInfoBase(   s   *s   SuiteFuncInfoc      s   H K d   Z  N d   Z RS(   Nc    s   K L |  i i   Sd  S(   N(   s   selfs   _function_infos   keys(   s   self(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   getFunctionNamesK s   c    s   N O |  i | Sd  S(   N(   s   selfs   _function_infos   name(   s   selfs   name(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   getFunctionInfoN s   (   s   getFunctionNamess   getFunctionInfo(    (    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   SuiteFuncInfoH s   s   FunctionInfoc      s  R d  Z  S U e e h  d  Z t d   Z y d   Z  e i d g f Z  e i e i e i	 e
 i d g f f f f Z  d   Z  d   Z  d   Z  e i e i e i e i e i e i e i e i e i d g d	 g d
 g f f f f f f f f f Z  e i e i e i e i e i e i e i e i e i e i e i e i d g f f f f f f f f f f f f Z e i e i e i e i e i e i e i e i e i e i e i e i d g d	 g d
 g f f f f f f f f f f f f Z e i e i e i e i e i e i e i e i e i d g d	 g d
 g f f f f f f f f f Z &d   Z Id   Z Nd   Z  cd   Z! g  d  Z" RS(   s9   Gather information about a function or method definition.c  	  s   U a b t  i i d d c d | d d | e d | g t i |  | d d | | i	   h | o | d p t
 i d | j |  i |  } k |  i |  l |  i |  |  _ p t  i i   q d	 Sd	 S(
   s2  Initialize the info extractor.

        Parameters:

            parent -- parent object for this object (e.g. Module or Function)

            tree -- parse tree from which to extract information

            commentInfo -- comments extracted from the source file holding
            this module

        s   FunctionInfos   __init__s   parents   trees   commentInfoi   i   iN(   s   happydoclibs   TRACEs   intos   parents   trees   commentInfos   SuiteInfoBases   __init__s   selfs   getFilenames   Nones   _extractFunctionParameterss   parameter_datas   _constructParameterInfos   _extractThrownExceptionss   _exception_infos   outof(   s   selfs   parents   trees   commentInfos   parameter_data(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   __init__U s   		#c    s2   t u v | i |  |  i   | i  } w | Sd S(   s4   Return a reference to this function from sourceNode.N(   s	   formatters   getNamedReferences   selfs   getNames
   sourceNodes   names   ref(   s   selfs	   formatters
   sourceNodes   ref(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   getReferencet s   !c    s   y z { |  i   i   Sd S(   s9   Return a complete, unique, name representing this object.N(   s   selfs	   getParents   getFullyQualifiedName(   s   self(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   getFullyQualifiedNamey s   s	   exceptionc    s      |  i i   Sd S(   sD   Return a list of the names of any exceptions raised by the function.N(   s   selfs   _exception_infos   keys(   s   self(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   getExceptionNames s   c    s      |  i | Sd S(   s   Returns a type value for an exception.

        The return value will be one of (token.NAME, token.STRING)
        indicating whether the exception was thrown as a string
        or a named object.
        N(   s   selfs   _exception_infos   exceptionName(   s   selfs   exceptionName(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   getExceptionInfo s   c    s     h  }  | o  | Sn  t |  t i t i f j o t | t i  }  x| D ]}  y  t
 | d d  }	 Wn  t j
 o  | }	 n X t }  t }  | oY  t |  i  |  \ }
 }  |
 o | i d  o  | d }  t i } n n  | o_  t |  i  |  \ }
 }  |
 o | i d  o#  t | d  }  t i } n n  | oW  t |  d j o=  | d }  | o  t |  } n  t |  } n n  | o  | | | <n qf Wn  | Sd S(   s8   Return a dictionary of exception->exception_type values.i   i
   s	   exceptioni   N(   s   thrown_exceptionss   trees   types   typess   ListTypes	   TupleTypes   findNodes   symbols
   raise_stmts   raise_tree_lists   drills   subtrees
   IndexErrors   Nones   exception_names   exception_types   lenientMatchs   selfs   EXCEPTION_STRING_PATTERNs   founds   varss   has_keys   tokens   STRINGs   EXCEPTION_BY_NAME_PATTERNs   parseTreeToStrings   NAMEs   lens   slices   execption_name(   s   selfs   trees   execption_names   varss   exception_types   raise_tree_lists   thrown_exceptionss   slices   exception_names   subtrees   found(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   _extractThrownExceptions sF   	"
 				

s   terms   trailers   trailer_bitss   atoms
   expressionc    s   &;<h  } =g  } >xC | D>]8 \ } } } } @| i |  A| | | f | | <q" WEt |  |  _
 F| |  _ Gd Sd S(   s@  Construct storable parameter data from a parameter list.
        
        Given the sequence of tuples extracted as a parameter list,
        store the names (in order) in self._parameter_names and the
        information about the parameter in self._parameter_info where
        the keys are the parameter name and the info is a tuple containing:

        (default_specified, default_value, default_value_type)

        Where:

            default_specified -- boolean indicating whether a default value
                                 was specified

            default_value -- the default value given, if any

            default_value_type -- the type of the default value (token.STRING,
                                  token.NAME, None). A type of None means
                                  unknown.
            
        N(   s   parameter_infos   parameter_namess   parameterDatas   params   default_specifieds   default_values   default_value_types   appends   tuples   selfs   _parameter_namess   _parameter_info(   s   selfs   parameterDatas   default_specifieds   default_value_types   default_values   parameter_infos   params   parameter_names(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   _constructParameterInfo&s   		
 c    s   IKL|  i Sd S(   sP   Returns a list of the names of all
        parameters to the function, in order.N(   s   selfs   _parameter_names(   s   self(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   getParameterNamesIs   c    s   N`a|  i | Sd S(   sL  Returns the info record for a parameter.

        The returned tuple consists of:

        (default_specified, default_value, default_value_type)

        Where:

            default_specified -- boolean indicating whether a default value
                                 was specified

            default_value -- the default value given, if any

            default_value_type -- the type of the default value (token.STRING,
                                  token.NAME, None). A type of None means
                                  unknown.
                                  
        N(   s   selfs   _parameter_infos	   paramName(   s   selfs	   paramName(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   getParameterInfoNs   c    s~  cded } hg  } i| d } k| d d t i j o ld | d | f  n n| d d t i j o p| Sn q| d d t i j o rd | d | f  n w| d } yd }
 zd } {t } |t } }t } ~t } xI| d D]:} | d t i j o
 qn | d t i j o d }
 n | d t i j o d } n | d t i t i f j o | o? | i | | | | f  t } } t } t } n | d t i j oM | d } |
 o d | } n | o d | } n qn | d t i j o | d d } qn | d t i j o d } qn | d t i j o t |  i |  \ } }	 | oK |	 i d  o4 |  i |	 d |	 d	 |	 d
 g  \ } } n n d Gt  i  |  n qW| o  | i | | | | f  n | Sd S(   s2   Extract information about a function's parameters.i    i   i   s"   Unrecognized parse result %s in %si   s   *%ss   **%ss   terms   trailers   trailer_bitss   UNRECOGNIZED:N(!   s   dbgs   function_parameterss   trees
   parameterss   tokens   LPARs   RPARs   symbols   varargslists   found_varargss   found_kwargss   Nones   names   found_default_values   default_values   default_value_types	   parameters   COMMAs   STARs
   DOUBLESTARs   NAMEs   fpdefs   appends   EQUALs   tests   lenientMatchs   selfs   PARAMETER_DEFAULT_PATTERNs   founds   varss   has_keys   _reconstructValueFromAtoms   pprint(   s   selfs   trees   function_parameterss   default_values
   parameterss   found_kwargss   found_default_values   default_value_types   dbgs   varss   found_varargss   founds	   parameters   name(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   _extractFunctionParameterscsn   								 	
'	



	

(
 c 	   s  d } t |  d j o| d d t i j o1 | d d } | d d !} t i } n6| d d t i j o0 | d d } t |  } t i } n| d d t i	 j o | d d } t i	 } | d j o 	t |  } n | o t d   |  o d } xP | D]E } | o
 qGn t |  } t | | d  } qGWt | | d  } t } n n | d d t i j o t |  } t } | o t d	   |  o "d } #xP | D#]E } $| o
 $qn %t |  } &t | '| (d  } qW)t | | d  } *t } n n .t |  } /t } n_ 0| d d t i t i t i f j o 6t |  } 8t } n <t |  } =t } ?| | f Sd
 S(   sy   Convert an atom portion of a parse tree into the value.

        If the atom represents a string, number or name
        i    i   i   is   Nonec    s   |  S(   N(   s   x(   s   x(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   <lambda>s    s    s    c    s   |  S(   N(   s   x(   s   x(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   <lambda>s    N(   s   dbgs   lens   atoms   tokens   STRINGs   values
   value_types   NUMBERs   evals   NAMEs   trailers   filters   trailer_strings   trailer_parts   parseTreeToStrings   part_strings   joinCodeSnippetss   Nones   symbols   factors   LPARs   LSQBs   LBRACE(	   s   selfs   atoms   trailers   part_strings   values   trailer_parts   trailer_strings
   value_types   dbg(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   _reconstructValueFromAtomsf   		
 	 
			
 	 
	*	(#   s   __doc__s   Nones   __init__s   getReferences   getFullyQualifiedNames   symbols   factors   EXCEPTION_BY_NAME_PATTERNs   powers   atoms   tokens   STRINGs   EXCEPTION_STRING_PATTERNs   getExceptionNamess   getExceptionInfos   _extractThrownExceptionss   tests   and_tests   not_tests
   comparisons   exprs   xor_exprs   and_exprs
   shift_exprs
   arith_exprs   PARAMETER_DEFAULT_PATTERNs   terms   oldPARAMETER_DEFAULT_PATTERNs&   PARAMETER_DEFAULT_WITH_TRAILER_PATTERNs,   PARAMETER_ARITH_DEFAULT_WITH_TRAILER_PATTERNs   _constructParameterInfos   getParameterNamess   getParameterInfos   _extractFunctionParameterss   _reconstructValueFromAtom(    (    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   FunctionInfoR s$   	0	Qixi#(   s   __doc__s   __rcs_info__s   splits   __version__s   symbols   tokens   happydoclibs   happydoclib.parseinfo.suites   SuiteInfoBases   happydoclib.parseinfo.utilss   SuiteFuncInfos   FunctionInfo(   s   FunctionInfos   SuiteInfoBases   SuiteFuncInfos   symbols   __version__s   tokens   happydoclibs   __rcs_info__(    (    s`   /home/dhellmann/Personal/Devel/HappyDoc/dist/HappyDoc-r2_1/happydoclib/parseinfo/functioninfo.pys   ? s   Q

