
    Iik                     X   S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r
  SSKJr  SSKJr  SSKJr  \r\" \\5      (       d  \R(                  rSr SSKr\R.                  R.                  R1                  S	S
5      rSrSr SSKrSr SSKJr  SrSr Sr!Sr"Sr#\RH                  " S5      RJ                  r&Sr'\(S0r)Sr*\* V s0 s H  o \;   d  M
  U \U    _M     sn r+Sr,\, V s0 s H  n \-" \U 5      (       d  M  U \." \U 5      _M     sn r/Sr0Sr1SSSSSSSS S!.r2\(       a  \3" \4" \05      5      r0\3" S" \0 5       5      r0\2Rk                  5        V Vs0 s H  u  p\-" \U5      (       d  M  X_M     snn r20 r6\0 H  r7\." \\7S5      r8\8c  M  \8\6\7'   M     \2Rk                  5        H  u  r9r7\." \\7S5      r8\8c  M  \8\6\9'   M     \(       a  \1 H  r7\." \\7S5      r8\8c  M  \8\6\7'   M     O0 r6SVS# jr:S$ r;\:\;S%.r<S& r=S' r>S( r?S) r@0 \R                  S* _\R                  S+ _\R                  S, _\R                  S- _\R                  \?_\R                  S. _\R                  S/ _\R                  S0 _\R                  S1 _\R                  S2 _\R                  \@_\R                  S3 _\R                  \>_\R                  \=_\R                  S4 _\R                  S5 _\R                  S6 _\R                  S7 \R                  S8 \R                  S9 \R                  S: \R                  S; \R                  S< \R                  S= \R                  S> \R                  S? \R                  S@ \R                  SA \R                  SB 0Er^SC r_ " SD SE\5      r`SF raSG rbSH rc " SI SJ5      rd\d" 5       re " SK SL5      rf " SM SN\R                  5      rhSO riSP rj " SQ SR\5      rkSWSS jrl " ST SU5      rmg! \ a    Sr GN{f = f! \ a     GNf = f! \ a    S r GNf = fs  sn f s  sn f s  snn f )Xzo
utility functions for asteval

   Matthew Newville <newville@cars.uchicago.edu>,
   The University of Chicago
    N)exc_info)ENCODING)NAME)tokenize)	FormatterF.   T)formatter_field_name_splitc                 "    U R                  5       $ N)_formatter_field_name_splitxs    6/venv/lib/python3.13/site-packages/asteval/astutils.py<lambda>r   *   s    ((*    i'  i   i  ))FalseNoneTrueandasassertasyncawaitbreakclasscontinuedefdelelifelseexceptfinallyforfromglobalifimportinislambdanonlocalnotorpassraisereturntrywhilewithyieldexecevalexecfile
__import____package____fstring__z[a-zA-Z_][a-zA-Z0-9_]*$)__subclasses__	__bases____globals____code__
__reduce____reduce_ex____mro____closure____func____self__
__module____dict__	__class____call____get____getattribute____subclasshook____new____init__func_globals	func_codefunc_closureim_classim_funcim_selfgi_codegi_framef_locals__asteval__mro)format
format_map)WArithmeticErrorAssertionErrorAttributeErrorBaseExceptionBufferErrorBytesWarningDeprecationWarningEOFErrorEnvironmentError	Exceptionr   FloatingPointErrorGeneratorExitIOErrorImportErrorImportWarningIndentationError
IndexErrorKeyErrorKeyboardInterruptLookupErrorMemoryError	NameErrorr   NotImplementedErrorOSErrorOverflowErrorReferenceErrorRuntimeErrorRuntimeWarningStopIterationSyntaxErrorSyntaxWarningSystemError
SystemExitr   	TypeErrorUnboundLocalErrorUnicodeDecodeErrorUnicodeEncodeErrorUnicodeErrorUnicodeTranslateErrorUnicodeWarning
ValueErrorWarningZeroDivisionErrorabsallanybinbool	bytearraybyteschrcomplexdictdirdivmod	enumeratefilterfloatrZ   	frozensethashhexidint
isinstancelenlistmapmaxminoctordpowrangereprreversedroundsetslicesortedstrsumtuplezip)%acosacoshasinasinhatanatan2atanhceilcopysigncoscoshdegreeseexpfabs	factorialfloorfmodfrexpfsumhypotisinfisnanldexploglog10log1pmodfpir   radianssinsinhsqrttantanhtrunc()  r   addr   amaxaminangler   appendarangearccosarccosharcsinarcsinharctanarctan2arctanhargmaxargminargsortargwherearoundarrayasarray
atleast_1d
atleast_2d
atleast_3daveragebartlettbitwise_andbitwise_not
bitwise_orbitwise_xorblackman	broadcastr   chooseclipcolumn_stackcommon_type
complex128compressconcatenate	conjugateconvolver   corrcoef	correlater   r   covcrosscumprodcumsumdatetime_datadeg2radr   deletediagdiag_indicesdiag_indices_fromdiagflatdiagonaldiffdigitizedividedotdsplitdstackdtyper   ediff1dempty
empty_likeequalr   exp2expand_dimsexpm1extracteyer   fill_diagonalfinfofixflatiterflatnonzerofliplrflipudfloat64r   floor_dividefmaxfminr   format_parserr   
frombufferfromfilefromfunctionfromiter
frompyfunc	fromregex
fromstring
genfromtxt
getbufsizegeterrgradientgreatergreater_equalhamminghanning	histogramhistogram2dhistogramddhsplithstackr   i0identityiinfoimagindicesinexactinfinfoinnerinsertint32integerinterpintersect1dinvert	iscomplexiscomplexobjisfiniter   r   isneginfisposinfisreal	isrealobjisscalariterablekaiserkronr   
left_shiftless
less_equallinspacelittle_endianloadtxtr   r   r   log2	logaddexp
logaddexp2logical_andlogical_not
logical_orlogical_xorlogspace
longdoublelonglongmask_indicesmatrixmaximummay_share_memorymeanmedianmemmapmeshgridminimummintypecodemodr   msortmultiplynan
nan_to_num	nanargmax	nanargminnanmaxnanminnansumndarrayndenumeratendimndindexnegative	nextafternonzero	not_equalnumberones	ones_likeouterpackbits
percentiler   	piecewiseplacepolypoly1dpolyaddpolyderpolydivpolyintpolymulpolysubpolyvalpowerprodptpputputmaskrad2degr   ravelrealreal_if_close
reciprocalrecord	remainderrepeatreshaperesizeright_shiftrintrollrollaxisrootsrot90r   searchsortedselect
setbufsize	setdiff1dseterrsetxor1dshapeshortsignsignbitsignedintegerr   sincsingler   sizesortsort_complexspacingsplitr   squaresqueezestdsubtractr   swapaxestaker   r   	tensordottiletrace	transposetritriltril_indicestril_indices_from
trim_zerostriutriu_indicestriu_indices_fromtrue_divider   ubyteuintuint32union1duniqueunravel_indexunsignedintegerunwrapushortvandervarvdot	vectorizevsplitvstackwherezeros
zeros_like)
fvipmtirrmirrnpernpvpmtppmtpvrater   r   r   r   r   r   r   r   )lnr   r   r   r   r   r   r   c              #   T   #    U  H  n[        [        U5      (       d  M  Uv   M      g 7fr   )hasattrnumpy).0syms     r   	<genexpr>r     s     HjsGE34Gssjs   (	(c                 p    US;  a  [        S5      eU[        :  a  [        S[         35      e[        XX#S9$ )zread only version of open())rrbrUz2Invalid open file mode, must be 'r', 'rb', or 'rU'z,Invalid buffering value, max buffer size is )encoding)rv   MAX_OPEN_BUFFERopen)filenamemode	bufferingr  s       r   _openr     s@    $$OPP?"I/IZ[\\	==r   c                 ,    [        U 5      R                  $ )z%type that prevents varargs and varkws)type__name__r   s    r   _typer     s    7r   )r  r  c                 >   [        U[        R                  5      (       a!  U[        :  a  [	        S[         35      e X-  $ [
        (       aO  [        U[        R                  5      (       a0  [        R                  " U5      [        :  a  [	        S[         35      eX-  $ )zsafe version of powz"Invalid exponent, max exponent is )	r   numbersNumberMAX_EXPONENTrv   	HAS_NUMPYr  rw  rt  )baser   s     r   safe_powr     s    #w~~&&!CL>RSS 
 ; 
z#u}}55<<|+!CL>RSS;r   c                     [        U [        5      (       a=  [        U[        5      (       a(  [        U 5      U-  [        :  a  [        S[         35      eX-  $ )zsafe version of multiply-String length exceeded, max string length is )r   r   r   r   MAX_STR_LENrv   arg1arg2s     r   	safe_multr	     sF    $D#!6!63t9t;Kk;YJ;-XYY;r   c                     [        U [        5      (       aF  [        U[        5      (       a1  [        U 5      [        U5      -   [        :  a  [	        S[         35      eX-   $ )zsafe version of addr  )r   r   r   r  rv   r  s     r   safe_addr     sK    $D#!6!63t9s4y;PS^;^J;-XYY;r   c                 >   [        U[        R                  5      (       a!  U[        :  a  [	        S[         35      e X-  $ [
        (       aO  [        U[        R                  5      (       a0  [        R                  " U5      [        :  a  [	        S[         35      eX-  $ )zsafe version of lshiftz&Invalid left shift, max left shift is )	r   r  r  	MAX_SHIFTrv   r   r  rw  rt  r  s     r   safe_lshiftr     s    $'')!G	{STT 
 < 
z$66<<	)!G	{STT<r   c                     XL $ r    abs     r   r   r      s    !&r   c                     XL$ r   r  r  s     r   r   r      s    QZr   c                 
    X;   $ r   r  r  s     r   r   r          !&r   c                 
    X;  $ r   r  r  s     r   r   r      s    QZr   c                 
    X-  $ r   r  r  s     r   r   r          aer   c                 
    X-  $ r   r  r  s     r   r   r      s    QUr   c                 
    X-  $ r   r  r  s     r   r   r      r  r   c                 
    X-  $ r   r  r  s     r   r   r          15r   c                 
    X-  $ r   r  r  s     r   r   r     s    r   c                 
    X-	  $ r   r  r  s     r   r   r     s    afr   c                 
    X-  $ r   r  r  s     r   r   r     s    qur   c                 
    X-
  $ r   r  r  s     r   r   r     r  r   c                 
    X-  $ r   r  r  s     r   r   r     r  r   c                     U =(       a    U$ r   r  r  s     r   r   r   	  s
    177r   c                     U =(       d    U$ r   r  r  s     r   r   r   
  s
    !&q&r   c                 
    X:H  $ r   r  r  s     r   r   r     r  r   c                 
    X:  $ r   r  r  s     r   r   r         !%r   c                 
    X:  $ r   r  r  s     r   r   r         16r   c                 
    X:  $ r   r  r  s     r   r   r     r'  r   c                 
    X:*  $ r   r  r  s     r   r   r     r)  r   c                 
    X:g  $ r   r  r  s     r   r   r     s    QVr   c                     U ) $ r   r  r  s    r   r   r     s    A2r   c                     U (       + $ r   r  r.  s    r   r   r     s    Ar   c                     U 7$ r   r  r.  s    r   r   r         !r   c                     U * $ r   r  r.  s    r   r   r     r1  r   c                    U[         ;   =(       d)    UR                  S5      =(       a    UR                  S5      nU(       dF  [        R	                  5        H.  u  pV[        X5      =(       d    XL =(       a    X;   nU(       d  M.    O   U(       a  SU S[        U 5       3nU" U[        US9  g [        X5      $ ! [         a     gf = f)zsafe version of getattr__zno safe attribute 'z' for excmsgN)	UNSAFE_ATTRS
startswithendswithUNSAFE_ATTRS_DTYPESitemsr   r   r^   getattr)objattr	raise_excnodeunsafer  attrlistr7  s           r   safe_getattrrD    s    l" <__T":t}}T': 288:OE ,<R$BRFv  ; #D6S	{;$N4	3%% 		s   -
B8 8
CCc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SafeFormatteri*  c                 :   > Xl         X l        [        TU ]  5         g r   )r@  rA  superrN   )selfr@  rA  rH   s      r   rN   SafeFormatter.__init__+  s    "	r   c                     [        U5      u  pEU R                  XBU5      nU H3  u  pxU(       a#  [        XhU R                  U R                  5      nM/  Xh   nM5     Xd4$ r   )r
   	get_valuerD  r@  rA  )	rI  
field_nameargskwargsfirstrestr>  is_attris	            r   	get_fieldSafeFormatter.get_field0  sT    0<nnU&1JG"34>>499Ef	 
 zr   )rA  r@  )r  rF   __qualname____firstlineno__rN   rT  __static_attributes____classcell__)rH   s   @r   rF  rF  *  s    
 r   rF  c                 <    [        X5      nUR                  XU5      $ r   )rF  vformat)_stringr@  rA  rN  rO  	formatters         r   safe_formatr^  :  s    i.IWF33r   c                 0   U [         ;   a  g[        [        R                  " U R	                  S5      5      R
                  5      n[        U5      u  p#pEnU[        :X  a  [        U5      u  p#pEnU[        :H  =(       a    US:H  =(       a    US[        U 5      4:H  $ )a;  Determine whether the input symbol name is a valid name.

Arguments
---------
  name  : str
     name to check for validity.

Returns
--------
  valid :  bool
    whether name is a a valid symbol name

This checks for Python reserved words and that the name matches
the regular expression ``[a-zA-Z_][a-zA-Z0-9_]``
Fzutf-8)   r   r`  )
RESERVED_WORDSgenerate_tokensioBytesIOencodereadlinenexttk_ENCODINGtk_NAMEr   )namegentyp_startends         r   valid_symbol_namerp  >  s~      ~
"**T[[%9:CC
DC ICE
k $S	A'>GevoG#!SY2GGr   c                 (    [         U R                     $ )z#Return function for operator nodes.)	OPERATORSrH   )opers    r   op2funcrt  X  s    T^^$$r   c                   *    \ rS rSrSrS rS rS rSrg)Emptyi]  zEmpty class.c                     g!TODO: docstring in public method.Nr  rI  s    r   rN   Empty.__init___  s    r   c                     g))Empty is TODO: docstring in magic method.Fr  rz  s    r   __nonzero__Empty.__nonzero__c  s    r   c                     g)r}  rv  r  rz  s    r   __repr__Empty.__repr__g  s    r   r  N)	r  rF   rV  rW  __doc__rN   r~  r  rX  r  r   r   rv  rv  ]  s    r   rv  c                   2    \ rS rSrSr  SS jrS rS rSrg)	ExceptionHolderim  zBasic exception handler.Nc                    Xl         X@l        X0l        X l        XPl        X`l        X`l        SU l        Uc4   UR
                  U l        UR                  U l        UR                  U l        [        5       U l        U R                  c$  U R                  S   b  U R                  S   U l        U R                  S:X  a/  U R                  S   b  [        U R                  S   5      U l        ggg!    N= f)ry  r   N r`  )
rA  exprr7  r6  textlineno
end_lineno
col_offsetr   r   )rI  rA  r6  r7  r  r  r  s          r   rN   ExceptionHolder.__init__o  s     			 >"kk"&//"&// !
88a 0 <}}Q'DH88r>dmmA.:4==+,DH ;>s   3C) )C-c                     U R                   R                  nUS;   a  Sn/ nU R                  R                  S5       Vs/ s H  o3 PM     snU l        [        U R                  5       VVs/ s H  u  pCUS-    SU 3PM     snnU l         UR                  SR                  U R                  U R                  S-
  U R                   5      5        U R                  S:  a!  UR                  U R                  S-   S35        UR                  U SU R                   35        USR                  U5      4$ ! [         a    [        U R                   5      n GN=f = fs  snf s  snnf !   UR                  U R                   5         N= f)	zRetrieve error data.)Nr   UnknownError
r`  : r    z^^^^)r6  r  r^   r   r  r  coder   	codelinesr   joinr  r  r  r  r7  )rI  exc_nameoutlrS  s        r   	get_errorExceptionHolder.get_error  sJ   	%xx((H ~%%H&*iiood&;<&;sV&;<	4=dii4HI4HDAQqSEA3-4HI	'JJtyy4;;q=!IJK ??QJJ$//#-.d34

hZr$((,-$))C.))!  	%488}H	% =I	'JJ$))&s)   D3 E+EAE$ 3EE$Fc                 <    SU R                    SU R                   S3$ )NzExceptionHolder(, )r5  rz  s    r   r  ExceptionHolder.__repr__  s    !$((2dhhZq99r   )r  r  r  r  r6  r   r  r  r7  rA  r  )Nr  NNN)	r  rF   rV  rW  r  rN   r  r  rX  r  r   r   r  r  m  s    "48#'-0*,:r   r  c                   $    \ rS rSrSrS rS rSrg)
NameFinderi  z,Find all symbol names used by a parsed node.c                 P    / U l         [        R                  R                  U 5        grx  )namesastNodeVisitorrN   rz  s    r   rN   NameFinder.__init__  s    
  &r   c                     UR                   R                  S:X  a?  UR                  U R                  ;  a%  U R                  R	                  UR                  5        [
        R                  R                  X5        g)ry  NameN)rH   r  r   r  r   r  r  generic_visit)rI  rA  s     r   r  NameFinder.generic_visit  sL    >>""f,wwdjj(

!!$''*%%d1r   )r  N)r  rF   rV  rW  r  rN   r  rX  r  r   r   r  r    s    6'
2r   r  c                 P    [        5       nUR                  U 5        UR                  $ )z%Return symbol Names from an AST node.)r  r  r  )astnodefinders     r   get_ast_namesr    s!    \F
!<<r   c                 B    U R                  5       =(       a	    U [        ;  $ )zis this a valid variable name)isidentifierra  )rj  s    r   valid_varnamer    s    =4~#==r   c                   N    \ rS rSrSrSS jrS rSS jrS rSS jr	S	 r
S
 rSrg)Groupi  z
Group: a container of objects that can be accessed either as an object attributes
or dictionary  key/value.  Attribute names must follow Python naming conventions.
Nc                 x    Uc  [        [        U 5      5      nXl        [        R                  " U 40 UD6  X l        g r   )r   r   r  r   rN   _searchgroups)rI  rj  searchgroupskwss       r   rN   Group.__init__  s0    <r$x=Dd"c")r   c                 J    [        U5      (       d  [        SU S35      eX U'   g )Nzinvalid attribute name '')r  ry   rI  rj  values      r   __setattr__Group.__setattr__  s)    T"" 8a@AAT
r   c                 <    X;   a  X   $ Ub  U$ [        SU S35      e)Nzno attribute named 'r  )rm   )rI  rj  defaults      r   __getattr__Group.__getattr__  s/    <:N-dV1566r   c                 h    [        U5      (       a  [        R                  XU5        g [        XU5      $ r   )r  r   __setitem__setattrr  s      r   r  Group.__setitem__  s*    T/4u--r   c                 L   U R                  U[        5      n[        U[        5      (       d  U$ U R                  nUbg  U Ha  nU R                  US 5      n[        U[
        [        45      (       d  M2  UR                  U[        5      n[        U[        5      (       a  M_  Us  $    U$ r   )r  ReturnedNoner   rv  r  r  r   )rI  keyr  valr  sgroupgrps          r   get	Group.get  s    sL1#u%%J))#&&&vt4cE4=11//#|<C%c511"
 ' r   c                     U R                  5        Vs/ s H  oS:w  d  M
  UPM     nnSU R                   S[        U5       S3$ s  snf )Nr  zGroup('z', z	 symbols))keysr  r   )rI  r  r  s      r   r  Group.__repr__  sB    99;:;az/;:s3t9+Y?? ;s
   	AAc                    SU R                    S3S/nU R                  5        H=  u  p#UR                  SU S[        U5      R                    S[	        U5      S S35        M?     UR                  S	5        S
R                  U5      $ )z(HTML representation for Jupyter notebookz<table><caption>Group('z')</caption>zA<tr><th>Attribute</th><th>DataType</th><th><b>Value</b></th></tr>z	
<tr><td>z</td><td><i>z</i></td>
    <td>z.75sz</td>
</tr>z</table>r  )r  r<  r   r  r   r  )rI  htmlr  r  s       r   _repr_html_Group._repr_html_  s    )$--EEG

HCKK 		\$s),,- .		c4 	 
 %
 	Jyyr   )r  r  )NNr   )r  rF   rV  rW  r  rN   r  r  r  r  r  r  rX  r  r   r   r  r    s+    *
7.@
r   r  c                    U(       a1  SnU(       a  SnSU;   a  UR                  S5      n[        U[        S9nO0 nUR                  [        5        UR                  [        5        UR                  U5        [        [        R                  5       5      nU (       a  UR                  [        5        U(       a!  [        SSS0UD6US'   [        US'   SUl	        OUR                  U5        UR                  " S0 UD6  U$ )	a   Create a default symboltable, taking dict of user-defined symbols.

Arguments
---------
numpy : bool, optional
   whether to include symbols from numpy [True]
nested : bool, optional
   whether to make a "new-style" nested table instead of a plain dict [False]
top : bool, optional
   whether this is the top-level table in a nested-table [True]
kws :  optional
   additional symbol name, value pairs to include in symbol table

Returns
--------
symbol_table : dict or nested Group
   a symbol table that can be used in `asteval.Interpereter`

rm  _mainrj  )rj  r  mathr  )r  r  )
popr  updateBUILTINS_TABLE
LOCALFUNCSr   
MATH_TABLEr<  NUMPY_TABLEr  )	use_numpynestedtopr  rj  symtablemath_functionss          r   make_symbol_tabler    s    ( D}wwvd%0OON#OOJOOC***,-Nk* ?f??!!*'OOcOr   c                   L    \ rS rSrSr   SS jrS rS rS rS r	S	 r
S
 rSrg)	Procedurei)  zProcedure: user-defined function for asteval.

This stores the parsed ast nodes as from the 'functiondef' ast node
for later evaluation.

Nc                 h   SU l         Xl        U R                  U l        X l        U R                  R                  U l        X0l        XPl        Xpl        Xl	        Xl
        Xl        X@l        X`l        Uc9  U R                  5        S3[        R                   " U R                  5      -   U l        SU l         g)ry  TNr  F)
__ininit__rj  r  rX   raise_exception__raise_exc__r  __body____argnames__
__kwargs__
__vararg__
__varkws__r  __text____signature__r  unparse)rI  rj  rE  docr  bodyr  rN  rO  varargvarkwss              r   rN   Procedure.__init__1  s     			!!--==    <#1134B7#++dmm:TTDMr   c                 n    [        U SS5      (       d  U R                  S [        SS9  X R                  U'   g )Nr  Tzprocedure is read-onlyr5  )r=  r  r}   rG   )rI  r?  r  s      r   r  Procedure.__setattr__F  s7    t\400t#;  =!dr   c                 
    / SQ$ )N)
__getdoc__argnamesrO  rj  r  r  r  rz  s    r   __dir__Procedure.__dir__L  s    OOr   c                 t    U R                   n[        U[        R                  5      (       a  UR                  nU$ r   )r  r   r  Constantr  )rI  r  s     r   r  Procedure.__getdoc__O  s*    llc3<<(())C
r   c                 f    U R                  5       nSU S3nU R                  5       nUb  U SU 3nU$ )z TODO: docstring in magic method.z<Procedure >z
 )r  r  )rI  sigrepr  s       r   r  Procedure.__repr__U  sD      "C5"oo?ESE"C
r   c                    Sn[        U R                  5      S:  a  USR                  U R                  5      -   nU R                  b  USU R                   3-   n[        U R                  5      S:  al  [        U5      S:  a  U S3nU R                   VVs/ s H  u  p#U SU 3PM     nnnU SR                  U5       3nU R
                  b  U SU R
                   3nU R                   SU S3$ s  snnf )	zcall signaturer  r   r  *=z, **(r  )r   r  r  r  r  r  rj  )rI  r  kv_kws        r   r  Procedure.__signature__^  s    t  !A%4#4#455C??&!DOO,--Ct!#3x!|Rj*.//:/$!aS!:/C:E$))C.)*C*T$//!23))AcU!$$ ;s   C0c                 T   U R                   R                  nU R                   R                  R                  SS5      (       ao  SU0nUR                  SS5      nUb  U H  nUR                  U5      XF'   M     [	        S SSU R
                   S30UD6n[        UR                  5       5      Ul        O0 n[        U5      n[        U5      n[        U5      n	[        U R                  5      n
X:  an  U	S	:  ah  U R                  US  H*  nX;   d  M
  UR                  UR                  U5      5        M,     [        U5      n[        U R                  5      n
[        U5      n	X:  a.  U R
                   S
3nU SU
 SU 3nU R                  S[        US9  [        U R                  5      S	:  aS  UbP  SnU R                   H>  nX;   d  M
  U SU SU R
                   3nU R                  S[        UU R                  S9  M@     X:w  a6  SnX:  a/  SU R
                   S3nU SU
 SU 3nU R                  S[        US9  X:  a  U R                   c  X-
  [        U R"                  5      :  aE  SU R
                   S3nU S[        U R"                  5      U
-    SU 3nU R                  S[        US9  [%        XS 5       H#  u  pU R"                  U   S	   nUU;  d  M  XU'   M%     U R                   H  nUR                  S	5      UU'   M      U R                   b  ['        U5      XpR                   '   U R"                   H"  u  nnUU;   a  UR                  U5      nUUU'   M$     U R(                  b  X'U R(                  '   Oj[        U5      S	:  a[  SU R
                   S3nUSR+                  [        UR                  5       5      5      -   nU R                  SU[        U R                  S9  U R                   R                  R                  SS5      (       a'  U R                   R                  nXpR                   l        OIU R                   R                  R5                  5       nU R                   R                  R7                  U5        SU R                   l        U R                   =R:                  S-  sl        SnU R                   R<                  R                  U R>                  5        U R@                   H  nU R                   RC                  UUR                  S9  [        U R                   RD                  5      S	:  a    OOU R                   R8                  c  Me  U R                   R8                  nSU R                   l        U[F        L a  Sn  O   UU R                   l        U R                   R<                  R                  5         U R                   =R:                  S-  sl        SnU$ ! [,        [.        [        [0        [2        4 a-    SU R
                   3nU R                  SXR                  S9   GNFf = f)!ry  nested_symtableFr  r  Nrj  	symtable_rm  r   z() takes at leastr  z arguments, got r5  z$multiple values for keyword argumentz 'z' in Procedure )r6  r7  r  z#not enough arguments for Procedure z()z (expected z, got ztoo many arguments for z() expected at mostz&extra keyword arguments for Procedure r  ,)r7  r6  r  z"incorrect arguments for Procedure )r7  r  r`  )r  r  )$rX   r  configr  r  rj  r   r  r  r   r  r   r  r  r}   r  r  r  r   r   r  r  r   ro   rq   r^   copyr  retval
_calldepth	code_textr  r  runerrorr  )rI  rN  rO  topsymsargssgroupssxname	symlocalsnargsnkwsnargs_expectedrj  r7  targrS  xargkw_nameargnamer  r  save_symtabler  rA  s                          r   rI   Procedure.__call__o  s   !!**""&&'8%@@f%Ejj$7G"%F$*JJv$6EM & EYtyyk#;EuEI&*5::<&8I#IDzD	6{T../ "q))%&1>KK

4 01 2 IE !2!23Nv;D!YYK01CE>**:5'BCt=t  !A%&*<8C))> ED6DC&&t-1[[ ' : * "C%;DII;bI[(8ugF""4YC"@!doo&=%DOO(<</		{:MNQs4??3NBC6%Q""4YC"@$T/%:;//!,Q/&(&*7O <
 ((G!%!Ig )	B*-24[	//* OOS&= **S/C!$	# ,
 *-3$//*Vq>tyykLCHHT&++-%899""4Si*.++ # 7 ""&&'8%@@ ,,55M(1% ,,55::<M%%,,Y7"&##q(# 	""))$--8MMD  dkk :4##))*Q.&&2))00*.  '\)!F " %2!""&&(##q(#	C K>+ 	B6tyykBCt[[A	Bs   A1W 6A*W AX'&X')r  rX   r  r  r  r  r  r  r  r  r  r  rj  )NNNNNNNN)r  rF   rV  rW  r  rN   r  r  r  r  r  rI   rX  r  r   r   r  r  )  s7     7;9=%) *"P%"sr   r  )r  N)TFT)nr  r  rc  r  r  resysr   r   r   rh  r   ri  rb  stringr   __builtins__builtinsr   r   rG   r   r  versionr  numpy_versionri   HAS_NUMPY_FINANCIALnumpy_financialr\  r
   r  r  r  r  ra  compilematch
NAME_MATCHr8  r   r;  FROM_PYr  	FROM_MATHr  r=  r  
FROM_NUMPYFROM_NUMPY_FINANCIALNUMPY_RENAMESr   r   r<  r  r  r>  snamer  r  r  r  r	  r  r  IsIsNotInNotInAddBitAndBitOrBitXorDivFloorDivLShiftRShiftMultPowMatMultSubModAndOrEqGtGtELtLtENotEqInvertNotUAddUSubrr  rD  rF  r^  rp  rt  rv  r  r  r  r  r  r  r  r  r  )r  r  s   00r   <module>rW     s    	   	  , $ 0 (D!!  H	MM))//Q7MI  	+2 	! ZZ2399
1 45 * 18K(?$#x}$K	 2;Q#gdC>P%c74%%Q
..
b5  h!IYD s:'JHjHHJ2?2E2E2Ga2GJC7SXZ_K`ZSZ2GaMKeS$'?"K 
 $))+
seS$'?!$K ,
 'C/35C#&C  ( K>
 U+

%SVV( %YY/%VV(% YY/% WWh	%
 ZZ+% YY*% ZZ+% WW(% \\.% ZZ% ZZ,% XXy% WWh% [[,% WW(%  WW(!%" WW*VV(VV(VV'WW)VV'WW)YY+ZZWWoXX|XX|9%	@$I  4H4%
  w1: 1:f2 2 >
;D ;|,^y y]  E  		  +"++t L Rz bsZ   ,O0 O? 
P 	P
P"P!8P!P&'P&0O<;O<?P	P		PP