
    #i                        U d dl m Z  d dlmZmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZmZ d dl m!Z!m"Z"m#Z# d dl$m%Z% d d	lm&Z&m'Z' ejP                  d
k  rd dl)m*Z* nd dlm*Z* e% G d de             Z+e% G d de             Z,e% G d de             Z-e% G d de             Z.ee-e.f   Z/de	dee	df   fdZ0e%e G d d                    Z1de2dee2   fdZ3de2dee2   de2fdZ4d Z5de6e7e2d f   e2z     de6e7e2d f      fd!Z8e%e G d" d#e1                    Z9 G d$ d%e      Z:e
d&   Z;e G d' d(             Z< G d) d*      Z= e=       Z>d+Z? e       Z@ eA       ZB G d, d-eC      ZDd.e2d/e<fd0ZEej                  d1ej                  d2ej                  d3ej                  d4ej                  d5ej                  d6ej                  d7ej                  d8ej                  d9ej                  d:ej                  d;ej                  d<ej                  d=iZSeTeUej2                     e7e2   f   eVd><   ej                  d?ej                  d@ej                  dAej                  dBej                  dCej                  dDej                  dEiZ^eTeUej                     e7e2d f   f   eVdF<   ej                  dGej                  dHej                  dIej                  dJiZdeTeUej                     e7e2d f   f   eVdK<    G dL dM      Zf G dN dO      Zgdee7e2d f   df   fdPZhd/e<de1fdQZidRe;dSeTdejfdTZkdUej                  d/e<fdVZmdUej                  d/e<fdWZodXej                  d/e<dejfdYZqdeTe2eeA   f   fdZZrdUeej                  df   d/e<fd[Zsd\etd]e1fd^Zud]e1fd_ZvdUej                  d/e<fd`Zxda Zyde	dUej                  d/e<fdbZzdce2d/e<fddZ{ G de dfeT      Z|	 	 	 ddceAe2z  d/e<dgedz  de	dz  dUej                  dz  f
dhZ}die2d/e<fdjZ~d/e<fdkZdl Zh dmZeTe2eete7eUegej                  ej                  ej
                  ej                  ej                  ej                  ej                  e:e=hZe6e,   eVdn<   ddoZdpZdqZ e6 ee6             e6 ee            z  Z eUi j#                               ZeUej&                  j(                     eVdr<    eUi j+                               ZeUeVds<    eUi j/                               ZeUeVdt<   eeehZh e ee      ej:                  eT eeTe      eTj:                  ej:                  ej:                  ej:                  ej<                  et eete      etj:                  e6 ee6e      e6j:                  e ee      ej:                  eej:                  e2 ee2      e2j:                  e7 ee7      e7j:                  ej eej      eeD  cg c]  }  e|       D ]  }|  c}} ej                   eej                  e      ej                  j:                  ej                   eej                  e      ej                  j:                  ej
                   eej
                  e      ej
                  j:                  ej                   eej                  e      ej                  j:                  ej                   eej                  e      ej                  j:                  ej                   eej                   ee2            ej                  j:                  ej@                   eej@                  e      ej@                  j:                  ej@                  jB                  ej@                  jD                  eAjF                  eUjF                  egjF                  Zh ee6eeAeUeee!e"Ze6e/   eVdu<   h eZ e1dvdwdwdwdw e6       dwdwx       e9eeedydzhedvdvdvdve{
       e1dvdvdvdvdvdvdv|      d}Zg d~Zyc c}} w )    )copy)isclass	signature	Signature	getmodule)	AnnotatedAnyStrCallableLiteral
NamedTupleNewTypeOptionalProtocolSequence	TypeGuardUnionget_args
get_originis_typeddictN)cached_property)	dataclassfield)MethodDescriptorType
ModuleType
MethodType)undoc)SelfLiteralString)      )TypeAliasTypec                       e Zd ZddZy)
HasGetItemNc                      y N selfkeys     HC:\Projects\mas-dev\.venv\Lib\site-packages\IPython/core/guarded_eval.py__getitem__zHasGetItem.__getitem__,           returnN)__name__
__module____qualname__r+   r&   r-   r*   r#   r#   *       +r-   r#   c                       e Zd ZdefdZy)InstancesHaveGetItemr/   c                      y r%   r&   )r(   argskwargss      r*   __call__zInstancesHaveGetItem.__call__1   s    sr-   N)r0   r1   r2   r#   r9   r&   r-   r*   r5   r5   /   s
    :::r-   r5   c                       e Zd ZddZy)
HasGetAttrNc                      y r%   r&   r'   s     r*   __getattr__zHasGetAttr.__getattr__6   r,   r-   r.   )r0   r1   r2   r=   r&   r-   r*   r;   r;   4   r3   r-   r;   c                       e Zd Zy)DoesNotHaveGetAttrN)r0   r1   r2   r&   r-   r*   r?   r?   9   s    r-   r?   funcr/   c                     t        | dd      }t        |      }t        | dd      }t        |dd      }||r|r|r||vrt        ||      S y)z}Get unbound method for given bound method.

    Returns None if cannot get unbound method, or method is already unbound.
    __self__Nr0   __dict__)getattrtype)r@   ownerowner_classnameinstance_dict_overridess        r*   _unbind_methodrJ   B   sa    
 D*d+Eu+K4T*D%eZ>''D8O,O {D))r-   c                       e Zd ZU dZdZeed<   dZeed<   dZeed<   dZ	eed<   dZ
eed<   dZeed<   dZeed	<   dZeed
<    ee      Zee   ed<   d Zd Zddeedf   fdZd Zy)EvaluationPolicyz Definition of evaluation policy.Fallow_locals_accessallow_globals_accessallow_item_accessallow_attr_accessallow_builtins_accessallow_all_operationsallow_any_callsallow_auto_importdefault_factoryallowed_callsc                     | j                   S r%   )rO   )r(   valueitems      r*   can_get_itemzEvaluationPolicy.can_get_itemf       %%%r-   c                     | j                   S r%   )rP   )r(   rY   attrs      r*   can_get_attrzEvaluationPolicy.can_get_attri   r\   r-   Ndunders.c                     | j                   ryy NT)rR   )r(   r`   abs       r*   can_operatezEvaluationPolicy.can_operatel   s    $$ %r-   c                 v    | j                   ry|| j                  v ryt        |      }|r|| j                  v ryy y rb   )rS   rW   rJ   )r(   r@   owner_methods      r*   can_callzEvaluationPolicy.can_callp   sC    4%%%%d+LD,>,>> ?<r-   r%   )r0   r1   r2   __doc__rM   bool__annotations__rN   rO   rP   rQ   rR   rS   rT   r   setrW   r
   r[   r_   tuplestrre   rh   r&   r-   r*   rL   rL   W   s     + %%!&$&#t##t#"'4'!&$&!OT!#t##(#=M3x==&&5c? 
r-   rL   module_nameaccess_pathc                     	 t         j                  |    }|D ]  }t        ||      } |S # t        t        f$ r= dj                  | g|      }|t         j                  v rt         j                  |   cY S  w xY w)a  Get value from external module given a dotted access path.

    Only gets value if the module is already imported.

    Raises:
    * `KeyError` if module is removed not found, and
    * `AttributeError` if access path does not match an exported object
    .)sysmodulesrD   KeyErrorAttributeErrorjoin)ro   rp   member_typer^   module_paths        r*   _get_externalrz   }   sy    kk+.D!+t4K  n% hh:k:;#++%;;{++s   '* AA64A6method_namec                 |   |t         j                  vr'dj                  |g|      }|t         j                  vry	 t        ||      }t	        |       }t	        |       |k(  ryt        |t              r\t        |      }|r|j                  sy|j                  |j                  k(  s(|j                  j                  |j                  dz         ry|dk(  ryt        |t              s,t        | |      r t        ||d       }t        ||d       }	|	|k(  ryt        |t              rt        ||d       }|j                  dd  D ]i  }
t        |
      }|s|j                  |j                  k(  s)|j                  j                  |j                  dz         sSt        |
|d       }|c||k(  si y y y # t        t        f$ r Y yw xY w)Nrr   FT__getattribute__   )rs   rt   rw   rz   rE   
isinstancer   r   r0   
startswithrD   __mro__rv   ru   )rY   ro   rp   r{   full_module_pathrx   
value_typevalue_modulemethodmember_method
base_classbase_modulebase_methods                r*   _has_original_dunder_externalr      s    #++%88[$?;$?@3;;.$#K=%[
;+%k:.$Z0L|'<'<%%)=)==((33K4H4H34NO,, +z2z%7UZd;F#KdCM&k:.Zd;F(004
'
3((K,@,@@"++66{7K7Kc7QR #**k4"HK".;&3H# 5 / H% sO   %F) !)F) AF) F) ;F) <F) AF) F) F) $F) &F) )F;:F;c                     t        |       }||v ryt        ||d       }|y ||v ry|D ]  ^}}t        | |||      s y y)NTF)rE   rD   r   )	rY   allowed_typesallowed_methodsallowed_externalr{   r   r   ro   rp   s	            r*   _has_original_dunderr      s`    
 eJ ]"Zd3F~ %5!k([+V &6 r-   
allow_list.c                     | D ch c].  }t        |t              r|nt        |j                  d            0 c}S c c}w )z<Replace dotted paths on the provided allow-list with tuples.rr   )r   rm   split)r   paths     r*   _coerce_path_to_tuplesr      sD     D 4'U4::c?-CC  s   3;c                      e Zd ZU  ee      Zee   ed<    ee      Zee	e
df   e
z     ed<    ee      Zee   ed<    ee      Zee	e
df   e
z     ed<    ee      Zeed<    ee      Zee	e
df   e
z     ed<    ee      Zeed	<    eed
      Zee
ee   f   ed<   d Zd Zdde	e
df   fdZde
dee   fdZedee   fd       Zedee   fd       Zedee   fd       Zdee   fdZy)SelectivePolicyrU   allowed_getitem.allowed_getitem_externalallowed_getattrallowed_getattr_externalallowed_operationsallowed_operations_externalallow_getitem_on_typesF)rV   init_operation_methods_cachec                    t        | j                        }t        || j                  | j                  |d      }t        || j                  | j
                  |d      }d}||rd}n|xr |}|rwt        |      }t        ||      syt        ||      }t        |t              }	|	syt        |      | j                  v ry|D ]#  ^}
}	 t        |
|      }t        ||      }||k(  c S  y# t        t        f$ r Y  yw xY w)Nr}   r   r   r   r{   r=   FT)r   r   r   r   _getattribute_methods_getattr_methodsrE   hasattrrD   r   propertyrz   ru   rv   )r(   rY   r^   r   has_original_attributehas_original_attracceptvalue_classclass_attr_valis_propertyro   rp   external_classexternal_class_attr_vals                 r*   r_   zSelectivePolicy.can_get_attr   s2   #9$:W:W#X !5.. 665*"
 1.. 115%
  $)?F 'A+AF u+K;-$[$7N$^X>K E{d222 .F)k!%2;%LN.5nd.K+ &)@@@ .F 	 !.1 ! !s   C''C:9C:c                    t        | j                        }| j                  rHt        |t        j
                  t        j                  f      ryt        |t              rt        |d      ryt        || j                  | j                  |d      S )zTAllow accessing `__getiitem__` of allow-listed instances unless it was not modified.T__class_getitem__r+   r   )r   r   r   r   typing_SpecialForm_BaseGenericAliasrE   r   r   r   _getitem_methods)r(   rY   rZ   r   s       r*   r[   zSelectivePolicy.can_get_item4  sy    #9$:W:W#X &&%&"5"5v7O7O!PQ%&75:M+N#.. 115%
 	
r-   Nr`   c                     t        | j                        }|g}||j                  |       t        |D cg c]2  }|D ]+  }t	        || j
                  | j                  |      ||      - 4 c}}      S c c}}w )Nr   )r   r   appendallr   r   _operator_dunder_methods)r(   r`   rc   rd   r   objectsdunderobjs           r*   re   zSelectivePolicy.can_operateF  s    &<,,'
# #=NN1 &
 &F"C %"&"9"9$($A$A&$I%@ & # &

 	

s   7A5
r   r/   c                     || j                   vr)| j                  | j                  |      | j                   |<   | j                   |   S r%   )r   _safe_get_methodsr   )r(   r   s     r*   r   z(SelectivePolicy._operator_dunder_methods[  sI    666484J4J''5D))&1 ,,V44r-   c                 :    | j                  | j                  d      S )Nr+   )r   r   r(   s    r*   r   z SelectivePolicy._getitem_methodsb      %%d&:&:MJJr-   c                 :    | j                  | j                  d      S )Nr=   r   r   r   s    r*   r   z SelectivePolicy._getattr_methodsf  r   r-   c                 :    | j                  | j                  d      S )Nr}   r   r   s    r*   r   z%SelectivePolicy._getattribute_methodsj  s    %%d&:&:<NOOr-   c           	      P    |D ch c]  }t        ||d       }|r| c}}S c c}}w r%   )rD   )r(   classesrH   class_r   s        r*   r   z!SelectivePolicy._safe_get_methodsn  s:     "
!"646 !
 	
 
s   "r%   )r0   r1   r2   r   rl   r   r5   rk   r   rm   rn   r   MayHaveGetattrr   r   r   rj   r   dictr   r
   r_   r[   re   r   r   r   r   r   r   r&   r-   r*   r   r      s    27s1KOS-.K;@QT;Uc%S/C"78U+0+EOS(E;@QT;Uc%S/C"78U#C88>CTW>XU38_s%:!;X#(#>D>9>5:d3H#56 6p
$
5c? 
*5s 5s8} 5 K#h- K K K#h- K K Ps8} P P
#h- 
r-   r   c                       e Zd ZdZy)_DummyNamedTuplez<Used internally to retrieve methods of named tuple instance.Nr0   r1   r2   ri   r&   r-   r*   r   r   w  s    Fr-   r   )	forbiddenminimallimitedunsafe	dangerousc                       e Zd ZU eed<   eed<   dZeed<   dZeed<   dZ	e
ee   ef   dz  ed<    ee	      Zeed
<    ee	      Zeed<   dZedz  ed<   dZedz  ed<   d Zy)EvaluationContextlocalsglobalsr   
evaluationFin_subscriptNauto_importrU   policy_overridestransient_localsclass_transientsinstance_arg_namec                .    t        j                  | fi |S )z8Return a new copy of the context, with specified changes)dataclassesreplace)r(   changess     r*   r   zEvaluationContext.replace  s    ""43733r-   )r0   r1   r2   r   rk   r   EvaluationPolicyNamer   rj   r   r
   listrn   r   r   r   r   r   r   r   r&   r-   r*   r   r   ~  s     LM'2J$2 L$:>K$s)Z/047>"48d8"48d8$(dTk($(sTz(4r-   r   c                       e Zd ZdZd Zy)_IdentitySubscriptz<Returns the key itself when item is requested via subscript.c                     |S r%   r&   r'   s     r*   r+   z_IdentitySubscript.__getitem__  s    
r-   N)r0   r1   r2   ri   r+   r&   r-   r*   r   r     s
    Fr-   r   __SUBSCRIPT_SENTINEL__c                       e Zd ZdZy)GuardRejectionz7Exception raised when guard rejects evaluation attempt.Nr   r&   r-   r*   r   r     s    Ar-   r   codecontextc                    |j                   }|j                  dk(  rt        d      |j                  rJ| s
t	               S |j                         }t        |t        <   t        dz   | z   dz   } |j                  |      }|j                  dk(  r!t        | |j                  |j                         S t        j                  | d      }t        ||      S )	a7  Evaluate provided code in the evaluation context.

    If evaluation policy given by context is set to ``forbidden``
    no evaluation will be performed; if it is set to ``dangerous``
    standard :func:`eval` will be used; finally, for any other,
    policy :func:`eval_node` will be called on parsed AST.
    r   zForbidden mode[])r   r   exec)mode)r   r   r   r   rm   r   IDENTITY_SUBSCRIPTSUBSCRIPT_MARKERr   evalr   astparse	eval_node)r   r   locals_nodes       r*   guarded_evalr     s     nnG[(-..
 
 7N,,.$6 !#%,s2///1[(D'//7>>::99T'DT7##r-   )__add__)__sub__)__mul__)__truediv__)__floordiv__)__mod__)__pow__)
__lshift__)
__rshift__)__or__)__xor__)__and__)
__matmul__BINARY_OP_DUNDERS)__eq__)__ne__r  )__lt____gt__)__le____ge__)r  r  )r
  r	  )__contains__COMP_OP_DUNDERS)__neg__)__pos__)
__invert____inv__)__not__UNARY_OP_DUNDERSc                       e Zd ZdZy)ImpersonatingDuckzXA dummy class used to create objects of other classes without calling their ``__init__``Nr   r&   r-   r*   r  r    s    br-   r  c                   v     e Zd ZdZddee   dee   fdZdefdZdefdZ	 fdZ
d	efd
Zd	efdZd Z xZS )_DuckzHA dummy class used to create objects pretending to have given attributes
attributesitemsc                 <    ||ni | _         ||| _        y i | _        y r%   r  r  )r(   r  r  s      r*   __init__z_Duck.__init__  s"    (2(>*B#/U
R
r-   r^   c                      | j                   |   S r%   r  r(   r^   s     r*   r=   z_Duck.__getattr__  s    t$$r-   c                     || j                   v S r%   r  r  s     r*   __hasattr__z_Duck.__hasattr__  s    t&&r-   c                 >    g t        t              | j                  S r%   )dirsuperr  )r(   	__class__s    r*   __dir__z_Duck.__dir__  s    .U.doo..r-   r)   c                      | j                   |   S r%   r  r'   s     r*   r+   z_Duck.__getitem__
      zz#r-   c                      | j                   |   S r%   r'  r'   s     r*   __hasitem__z_Duck.__hasitem__  r(  r-   c                 6    | j                   j                         S r%   )r  keysr   s    r*   _ipython_key_completions_z_Duck._ipython_key_completions_  s    zz  r-   )NN)r0   r1   r2   ri   r   r   r  rn   r=   r   r%  r+   r*  r-  __classcell__r$  s   @r*   r  r    s[    R88D> 8$ 8% %' '/s s !r-   r  c                 X    d }|j                         D ]  \  }}t        | |      s|} |S r%   )r  r   )node_opr`   r   opcandidate_dunders        r*   _find_dunderr4    s3    F 'gr"%F !0 Mr-   c                     t        t        | j                           }| j                  j	                         D ]  \  }}t        ||      st        |||       ! |S r%   )r   EVALUATION_POLICIESr   r   r  r   setattr)r   policyr)   rY   s       r*   
get_policyr9    sR    %g&8&89:F..446
U63FC' 7 Mr-   policy_namer   c                     t         |    }d}|j                         D ]0  \  }}t        ||      rt        j                  d|d| d       d}2 |S )NTz	Override z is not valid with z evaluation policyF)r6  r  r   warningswarn)r:  r   r8  all_goodr)   rY   s         r*   _validate_policy_overridesr?  %  sb     !-FH&,,.
Uvs#MMC7"5k_DVW H / Or-   r   c           	      0   t        | j                  |      }|j                  }t        |      }|j                  }| j
                  D ]  }t        |t        j                  t        j                  f      rt        |      }|j                  }t        |      D 	
cg c]"  \  }	}
t        |
t        j                        s!|	$ }}	}
|r|d   n
t        |      }t        |      D ]<  }	t!        ||	   |      r||	   |||	   j"                  <   (||	   |||	   j$                  <   > |st        |      t        |      |z
  dz
  z
  }t!        ||   |      r||| |||   j"                  <   n||| |||   j                  j$                  <   t        |dz   t        |            D ]l  }	t!        ||	   |      r.|t        |      t        |      |	z
  z
     |||	   j"                  <   @|t        |      t        |      |	z
  z
     |||	   j$                  <   n t        |t        j&                        rt        |j                  t        j(                        rv|j                  j$                  }|j+                  |      }||j,                  j+                  |      }||j.                  j+                  |      }|t1        | d      |}|}nyt        |j                  t        j2                        rSt!        |j                  |      r=|j                  j"                  }|j+                  |d       }|t1        | d      |}|}n y t        |j4                  |      }|j7                  |j8                        rt:        j=                  t?        |            ni }i }|jA                  |d       r	 t;        |jC                               }|||<   tG        ||      }|||<   t!        ||      r|||j"                  <   |||j$                  <    y c c}
}	w # tD        $ r Y Zw xY w)Nr   r~   + not found in locals, globals, nor builtinsz not found in class transientsr  )$r   rY   r   r9  r   targetsr   r   TupleListr   elts	enumerateStarredlenrange!_is_instance_attribute_assignmentr^   id	SubscriptNamegetr   r   	NameError	Attributeslicerh   r%  r   fromkeysr"  r[   r  	Exceptionr  )r   r   rY   r   r8  r   targetvaluesrB  itstarredstar_or_last_idxendrH   	containerstorage_dictstorage_keyr^   r)   r  r  duck_containers                          r*   _handle_assignr_  4  s   djj'*E// F//,,fsyy#((34%[FkkG%.w%7V%7TQ:a;Uq%7GV .5wqz#g, +,4WQZI8>q	$WQZ__56<Qi$WQZ]]3 - &kS\4D%Dq%HI4,-w HN(H$W-=%>%C%CD LR(L$W-=%>%D%D%G%GH
 /!3S\BA8WM<BK3w<!+;<=(9 ;AK3w<!+;<;(7 C .&,,1||,006	$ ' 2 24 8I$ ' 3 3D 9I$#& KL   0"cmm3FLL'J||((,00t<	$#tf,J$KLL/"FLL'2C ??9#4#45 c)n- 
 E""9d3 !23E E#J"jFN(6L%.vw?,1V[[)*/VYY'q r i WT ! s   "P=P!P			PPc           
      X   | j                   D cg c]  }t        ||       }}| j                  D ci c]_  }|j                  r"|j                  t        |j                  |      int        |j                  |      j                         D ]  \  }}||
 a }}}}||fS c c}w c c}}}w r%   )r7   r   keywordsargrY   r  )r   r   rb  r7   kwkvr8   s           r*   _extract_args_and_kwargsrf    s    /3yy9yIc7#yD9 --B vv VVYrxx12288W-
%'	DAq 	
1 	
   < :s   B A$B%rT  c                    |j                   duxrw |j                  duxrg t        | t        j                        xrK t        t        | dd      t        j                        xr$ t        | j                  dd      |j                  k(  S )zFReturn True if target is an attribute access on the instance argument.NrY   rK  )r   r   r   r   rP  rD   rM  rY   )rT  r   s     r*   rJ  rJ    s    
 	  , 	K%%T1	Kvs}}-	K wvw5sxx@	K FLL$-1J1JJr-   c            	          d }  |        }	 t        |      D ci c]  }|t        ||d        c}|j                          S c c}w # |j                          w xY w)Nc                     K   y wr%   r&   r&   r-   r*   _dummyz)_get_coroutine_attributes.<locals>._dummy  s	     s   )r"  rD   close)rj  coror^   s      r*   _get_coroutine_attributesrm    sS     8D<?IFIDgdD$//IF

 G

s   A AA A Ac                 #   t              }| yt        | t        j                  t        j                  f      r!d}| j
                  D ]  }t        |      } |S t        | t        j                  t        j                  f      rt        | t        j                        }j                  j                         }j                  |      }d}d}	d}
| j                  D ]0  }	 t        |      }|t        u rd}|t        u rd}	&|t         u s/d}
2 |j"                  D|	sB|
s@| j$                  j$                  r#| j$                  j$                  d   j&                  nd|_        t        | j*                        }| j
                  D ]  }t        ||        |rL|$t-        |      j                  | j.                  <   yt1        | |      }|j                  | j.                  <   yd }|||j2                  d<   nt1        | |      }|||_        | j.                  |_        | |_        ||_        |j                  | j.                  <   yt        | t        j<                        r d	 }t        | j
                        |_        |S t        | t        j>                        ri }j@                  j                         }|jC                  j                         j                  ||
      }||_        | j
                  D ]  }t        ||        tE        | jF                  D cg c]  }t        |       c}      }tI        | j.                  ||      }|j                  | j.                  <   yt        | t        jJ                        r0t        | jL                        }tO        |d      r|jP                  S |S t        | t        jR                        rj                  j                         }j                  |      }d}| j
                  D ]  }t        ||      } t              }tU        |j                  j                         g|      }j                  jC                  |       |S t        | t        jV                        r*	 t        | jX                        }d}|1	 |j]                  t_        |dd            rta        tY        |            }j                  j                         }j                  |      }|C	 t        jb                  | jd                  gt        jf                  |            }ti        ||       d}| j
                  D ]  }t        ||      } t              }tU        |j                  j                         g|      }j                  jC                  |       |S t        | t        jj                        rwg }| } d}	 j                  j                         }!j                  |!      }"| j
                  D ]  }t        ||"      } |jm                  |!       | jn                  sntq        | jn                        dk(  r7t        | jn                  d   t        jj                        r| jn                  d   } n[j                  j                         }#j                  |#      }$| jn                  D ]  }t        ||$      } |jm                  |#       n|jm                  j                  j                                t              }tU        ||      }j                  jC                  |       |S t        | t        jb                        rti        |       S t        | t        jr                        r| jt                  rCt-        t        | jv                              }|j                  | jd                  jx                  <   t{        | jd                        rCt-        t        | jv                              }|j"                  | jd                  j|                  <   yt        | t        j~                        rt        | j
                        S t        | t        j                        rt        | jL                        S t        | t        j                        ryt        | t        j                        ryt        | t        j                  t        j                  f      ryt        | t        j                  t        j                  f      ryt        | t        j                        rt        | j                        }%t        | j                        }&t        | j                  t              }'|'rP|j                  |'|%|&      r t_        |%|'d         |&      S t        d|' dtI        |%      dj                   d      t        | t        j                        r`t        | j                        }%d}(d})t        | j                  | j                        D ]   \  }*}&t        |&      }&d}+t        |*t              }'|'smt        |*t        j                        rt        t        j                     }'d})t        |*t        j                        rd}+t        |*t        j                        rd}+d})|+s|'r|'d   }+|+ru|+dk(  r|&|%fn|%|&f\  },}-|+dk(  s|'r6|j                  |'|,|-      r# t_        t        |+      |,|-      }|)r| }|sd}(|&}%t        d|+ dtI        |%      dj                   d      t        d|+ d       |(S t        | t        jf                        r| jL                  S t        | t        j                        rtE        fd| j                  D              S t        | t        j                        r$| j                  D .cg c]  }.t        |.       c}.S t        | t        j                        r$| j                  D .ch c]  }.t        |.       c}.S t        | t        j                        rYt        t        | j                  D /cg c]  }/t        |/       c}/| j                  D 0cg c]  }0t        |0       c}0            S t        | t        j                        rIt        t        | j                        t        | j                        t        | j                              S t        | t        j                        rt        | j                        }t        | j                  t              }'|'rO|j                  |'|      r	  t_        ||'d                S t        d|' dtI        |      dj                   d      t        | t        j                        rgt        | jL                        }t        | j                        }1|j                  ||1      r||1   S t        dtI        |      dj                   d      t        | t        j                        rt        | jx                        S t        | t        j                        rj"                  lt        | jL                  t        j                        rH| jL                  jx                  j(                  k(  r%j"                  j                  | j|                        S t        | jL                        }|j                  || j|                        rt_        || j|                        S t        dtI        |      dj                   d      t        | t        j                        rDt        | j                        }2|2rt        | j
                        S t        | jn                        S t        | t        j                        rt        | j                        }3|j]                  |3      rt        |       \  }4}5 |3|4i |5S t        |3      r,t        |3j                  |       }6|6t        ur|6S t        |3      S t_        |3dt              }t        |3|       }t_        |3d d      r#||n|}7t        t               !      }8|7|8_(        |8S |t        ur|S |t        ur|S t        d"|3dj                   d      t        | t        j                         r:| j                  rt        | j                        S t        | j                        S y# t        $ r Y $w xY wc c}w # tZ        $ r d}Y w xY w# tZ        $ r d}Y aw xY w# tZ        $ r Y  w xY wc c}.w c c}.w c c}/w c c}0w # t        $ r% t        d| j                   dtI        |             w xY w)#a  Evaluate AST node in provided context.

    Applies evaluation restrictions defined in the context. Currently does not support evaluation of functions with keyword arguments.

    Does not evaluate actions that always have side effects:

    - class definitions (``class sth: ...``)
    - function definitions (``def sth: ...``)
    - variable assignments (``x = 1``)
    - augmented assignments (``x += 1``)
    - deletions (``del x``)

    Does not evaluate operations which do not return values:

    - assertions (``assert x``)
    - pass (``pass``)
    - imports (``import x``)
    - control flow:

        - conditionals (``if x:``) except for ternary IfExp (``a if x else b``)
        - loops (``for`` and ``while``)
        - exception handling

    The purpose of this function is to guard against unwanted side-effects;
    it does not give guarantees on protection from malicious code execution.
    N)r   FTr   )r   c                       y r%   r&   r7   r8   s     r*   dummy_functionz!eval_node.<locals>.dummy_function
      r-   r/   c                       y r%   r&   rp  s     r*   rq  z!eval_node.<locals>.dummy_function  rr  r-   )r   r   __awaited_type____iter__)rY   )rB  rY   r~   zOperation (`z`) forznot allowed in  modeis_r  zComparison (`zComparison `z` not supportedc              3   6   K   | ]  }t        |        y wr%   )r   ).0er   s     r*   	<genexpr>zeval_node.<locals>.<genexpr>  s     >IqYq'*Is   zbad operand type for unary z: z$Subscript access (`__getitem__`) forz not allowed in z$Attribute access (`__getattr__`) for__inferred_return____is_async__r  zCall for)r9  r   r   InteractiveModulebodyr   FunctionDefAsyncFunctionDefr   r   r   decorator_listrO  r   staticmethodclassmethodr   r7   rb  r   returns_resolve_annotationrH   _infer_return_valuerk   r|  r0   __node__r}  LambdaClassDefr   updaterm   basesrE   AwaitrY   r   rt  While_merge_dicts_by_keyForiterrS  rh   rD   nextAssignrT  Constantr_  Ifr   orelserH  	AnnAssignsimple
annotationrK  rJ  r^   
ExpressionExprPassImport	AugAssignDeleteGlobalNonlocalBinOpleftrightr4  r2  r  re   r   r   Comparezipopscomparatorsr  NotInInIsIsNotoperator
ValueErrorrC  rE  rD  SetDictr   r,  rU  SlicerQ  lowerupperstepUnaryOpoperandr  rv   	TypeErrorrL  r[   rM  _eval_node_namerP  rN  r_   IfExptestCallr@   rf  r   _eval_return_type__new__NOT_EVALUATED_create_duck_for_heap_typer  rm  Assertmsg)9r   r   r8  result
child_nodeis_asyncfunc_localsfunc_contextr   	is_staticis_classmethoddecorator_node	decoratorreturn_typereturn_valuerq  inferred_returnclass_localsouter_localsclass_contextbaser  dummy_classrY   loop_localsloop_contextstmtmerged_localsiterablesamplefake_assignbranchescurrentbranch_localsbranch_contextelse_localselse_contextr  r  r`   all_truenegater2  r   rc   rd   rz  rd  re  slice_r  r@   r7   r8   overridden_return_typeawaited_typecoroutine_ducks9    `                                                       r*   r   r     s   6  F|$#**56))Jz73F $$#*>*>?@dC$8$89..335D	"11N%ng>	
 H$"l* 	k)!% 2 ((4^-1YY^^DIINN1%)) .  g>))Jj,/ $ &6I7((3   34F6B((3	 "7BN**841$EO*5D2"&))"&&.#.<  +$

#	 .7tyy'-J*$%~~**,G445), ( 
 *6&))Jj-0 $DJJGJDyw/JGH499e\:.9  +$		"$**g.5,-)))$		"..335DIIDt\2F  G$+'22779:F
 	  ''6$ 	 G4H ??78Z#FG!$x.1F ..335D!jj![[MF1K {L9 IIDt\2F  G$+'22779:F
 	  ''6$#4499;M$__m_LN"48 %OOM*>>W^^$)j9JCFF.S!..+ &66;;=&L#NND&t\:F +,% & 	005578G$+Hf=  ''6$

#dG,,$&;;'	$//7(KWUE7<G$$T[[^^4,T[['B'	$//7(KWUE9>G$$T[[%5%56$'G,,$!W--$!$

#$

34$S\\23$		"G,$**g.tww(9:!!'470wtWQZ077$"7)62J%g&8&8%9? 
 $$G,TXXt'7'78IBeW-EF"27Gb#)),-cff5G!Fb#&&)"Fb#)),"F!Fg (..(@t}tUm1U?g&2D2DWaQR2S6WXv6q!<F%+!#( D('xv6T
)'*<*<)=UC  !"6(/: ? 9D $%zz$		">DII>>>$!/3yy9y!	!W%y99$ /3yy9y!	!W%y99$!04		:	11g&	:04<11g&<
 	
 $		"djj'*djj'*dii)
 	

 $$$,,0tww(89!!'51575'!*577 %"7)62K%g&8&8%9? 
 $&$**g.4::w/uf-= 2Kw112%8
 	

 $!tww00$&$$04::sxx0

!:!::++//		::$**g.udii05$)),,2Kg0017
 	

 $		"G,TYY00T[['22$!G,??4 3D'BLD&(((4=
 &7t||T7%S"%]:---d33%d,A=QO+D$@Kt^U3'6'BO  "'2K2M!N2>/%%m3&&-/""g0017
 	

 $

# 88TXXw//G,,k
   D H6  	H	    v :9 ;<  & #5dggYbeN s   "AC6AD?AD 0AD 9AAD/ AD? AEAE	+AEAE C6	ADDADDADDADDAD,D+AD,D/	AD<D;AD<E.AFdictsr8  c                     t        |       dk(  r| d   S t               }| D ]!  }|j                  |j                                # i }|D ]+  }| D cg c]  }||v s||    }}|st	        ||      ||<   - |S c c}w )z;Merge multiple dictionaries, combining values for each key.r~   r   )rH  rl   r  r,  _merge_values)r  r8  all_keysdmergedr)   rU  s          r*   r  r  A  s    
5zQQxuH!  F"'4%Q3!8!C&%4'7F3K 
 M	 5s   	A8A8c           	         t        |       dk(  r| d   S | D ch c]  }t        |       }}d}i }t               }| D ]  }|j                  |j                        r|j                  t        |             	 |j                  |j                        r;	 |j                         D ]&  \  }}|j                  |g       j                  |       ( nS|j                  |j                        r8	 |j                         D ]#  }|j                  |g       j                  d       % 	  |r4|j                         D 
ci c]  \  }}
||
d   t        |
|      nd }}}
t        |      dk(  rt        t        |            }|t        fvrtt!        t        t        |             d      r<t!        t        t        |             d      s8t!        t        t        |             d      s|t"        t        t$        fv r|S | d   S t'        t        j)                  |      |      S c c}w # t        $ r}	Y d}	~	d}	~	ww xY w# t        $ r}	Y d}	~	"d}	~	ww xY w# t        $ r}	Y d}	~	d}	~	ww xY wc c}
}w )zGRecursively merge multiple values, combining attributes and dict items.r~   r   Nr+   r  r,  r  )rH  rE   rl   rh   r%  r  r"  r  
setdefaultr   rS  r,  r  r  r  r   r   r   rm   r  rR  )rU  r8  re  typesmerged_items
key_valuesr  rd  valrz  valsrW  s               r*   r  r  S  s   
6{aay$%fT!WfE%LJJ??199%c!f%	qww'"#'')3"--a4;;C@ #, (VVX"--a4;;DA & &  &++-
-4 d1g.A}T6*tK- 	 

 5zQeTGDf&6T&\*G44V-v6 T3&&!9DMM*5\JJU & !  !  		
se   H5I9H
I'6H1I5I	H.#I)H..I1	I:I II	IIc                     t        | j                  |      }|syt        |      dk(  r|d   S t        |      }t	        ||      S )zLInfer the return value(s) of a function by evaluating all return statements.Nr~   r   )_collect_return_valuesr  rH  r9  r  )r   r   return_valuesr8  s       r*   r  r    sG    *499g>M
=QQ F//r-   c                 2   g }| D ]  }t        |t        j                        r?|j                  +	 t	        |j                  |      }||t
        ur|j                  |       t        |t        j                  t        j                  t        j                  t        j                  f      rt        |d      r?t        |j                  t              r%|j                  t!        |j                  |             t        |t        j"                        r|j$                  D ]4  }t        |d      s|j                  t!        |j                  |             6 t        |d      r%|j                  t!        |j&                  |             t        |d      r%|j                  t!        |j(                  |             t        |d      st        |j&                  t              s|j                  t!        |j&                  |              |S # t        $ r Y w xY w)z@Recursively collect return values from a list of AST statements.r  r  	finalbody)r   r   ReturnrY   r   r  r   rS  r  r  r  r  r   r  r   extendr  Tryhandlersr  r  )r  r   r  r  rY   hs         r*   r  r    s   MdCJJ'zz!!$**g6$m)C!((/ 3??C$8$8#,,

S
 T6"z$))T'B  !7		7!KLdCGG$]]1f%!(()?)PQ # tX&$$%;DKK%QRt[)$$%;DNNG%TU4"z$++t'D  !7W!MN3 4 %  s   1H			HHc                     	 t        |       }|j                  t        j
                  u}|rt        |j                  ||| |      S t        S # t        $ r	 t        }Y Nw xY w)zyEvaluate return type of a given callable function.

    Returns the built-in type, a duck or NOT_EVALUATED sentinel.
    )r   r  UNKNOWN_SIGNATUREreturn_annotationr   emptyr  r  )r@   r   r   sig	not_emptys        r*   r  r    s^    
 o
 %%Y__<I"3#8#8'3dSS    s   A
 
AAr  c                 >    t        | t              rt        | |      S | S r%   )r   rn   r  )r  r   s     r*   _eval_annotationr    s)     j#& 	
G, r-   c                   .     e Zd ZdZ fdZd Zd Z xZS )_GetItemDuckzUA dict subclass that always returns the factory instance and claims to have any item.c                 2    t        |   |i | || _        y r%   )r#  r  _factory)r(   factoryr7   r8   r$  s       r*   r  z_GetItemDuck.__init__  s    $)&)r-   c                 "    | j                         S r%   )r	  r'   s     r*   r+   z_GetItemDuck.__getitem__  s    }}r-   c                      yrb   r&   r'   s     r*   r  z_GetItemDuck.__contains__  s    r-   )r0   r1   r2   ri   r  r+   r  r.  r/  s   @r*   r  r    s    _ r-   r  r  c                    | yt        |       } t        |       }| t        u rrt        d      rj                  S |t
        u rt        |       }t        |      dk(  r|d   S y| t        u ry| t        u r&d}rt        d      rj                  }t        |j                  j                        D ]>  \  }	}
|
j                  st        |
j                  j                        } | t        u s<|	} n t        t               xr t#        d      du}|rN|rL|dz  }nFrDt        j$                  j'                               D ]  \  }	\  }}|j                  t        u s|	} n |y|dk  s|t        j                        k\  ryt)        j                  |         S |t*        u ry|t,        u s|t.        u rt1        t3        t        |       d               D cg c]  }| }}t5        t6        j9                  |            t5        t6        j9                  t1         |                   t;        fd	      
      S |t<        u r t=        fdt        |       D              S |t>        u rVt        |       D cg c]!  }t1        t3        |            D ]  }| # }}}t5        t6        j9                  |            S tA        |       rjt5        t6        j9                  t1        t7                           | jB                  j'                         D ci c]  \  }}|t3        |       c}}
      S t        | d      r(t5        t6        j9                  t1        |                   S |tD        u rt        |       d   }t3        |      S t        | tF              rtI        | jJ                        S t        | tL              rtI        | jN                        S tI        |       S c c}w c c}}w c c}}w )zKResolve annotation created by user with `typing` module and custom objects.NrB   r~   r    r  Fr  c                       S r%   r&   )ducks   r*   <lambda>z%_resolve_annotation.<locals>.<lambda>  s    tr-   r  c              3   <   K   | ]  }t        |        y wr%   )r  )ry  rb  r   r@   r   r  s     r*   r{  z&_resolve_annotation.<locals>.<genexpr>  s&      
+  Wc4>+s   _is_protocol)(r  r   r   r   rB   r   r   rH  r   r	   r  rF  r7   r  rK  r   r   rD   
parametersr  r   r   rl   r   r"  r  r  r   rR  r  rm   r   r   rk   r   r   _eval_or_create_duck__supertype__r!   	__value__)r  r   r  r@   r   origin	type_argsindexdef_noderV  rb  is_bound_methodr)   rY   r^   r  type_argrd  re  r  s    ````              @r*   r  r    s    !*g6J
#FTdwtZ'@}}	7	Z(	y>QQ< 	}	$	v	GD*-}}H#HMM$6$673~~-cnn.?.?I
'E 8 4,Vz1JRV1V  
#,S^^-A-A-C#D<C##v-E $E =19TYY/5)733	9		3&D. #HZ$8$;Wc4QUV
  	 
 j 9:}}S]3|,
 	

 
5 

+
 
 	
 
5 %Z0
0/'3dST T 0 	 

 j 9::	j	!}}S[1 '66<<>>DAq &q'3dCC>
 	
 
^	,c*o >??	9	J'*"8Wc4FF	J	(#J$<$<gFF	J	.#J$8$8'BB#J88Y
(
s    	O0&O5O;node_idc                    t        |      }| |j                  v r|j                  |    S |j                  r| |j                  v r|j                  |    S |j                  r| |j
                  v r|j
                  |    S |j                  r t        t        |       rt        t        |       S |j                  r|j                  r|j                  |       S |j                  s%|j                  st        d|j                   d      t        |  d      )Nz Namespace access not allowed in rv  rA  )r9  r   rM   r   rN   r   rQ   r   builtinsrD   rT   r   r   r   rO  )r  r   r8  s      r*   r  r  =  s     F'***''00!!g&?~~g&&""w'//'Aw''##'(Bx))G$7$7""7++&&v/I/I.w/A/A.B%H
 	
 7)#NOPPr-   c                 ^    t        |      }|j                  |       r |        S t        |       S r%   )r9  rh   r  )	duck_typer   r8  s      r*   r  r  R  s+     Fy!{%i00r-   c                 R    t               }	 | |_        |S # t        $ r Y t        S w xY w)zCreate an imitation of an object of a given type (a duck).

    Returns the duck or NOT_EVALUATED sentinel if duck could not be created.
    )r  r$  r  r  )r"  r  s     r*   r  r  [  s5    
 D" s    	&&>   numpyvoidr%  ndarraypandascoreindexing_LocIndexerr*  r+  r,  _iLocIndexerr*  Seriesr*  	DataFrameBUILTIN_GETITEMc                 Z    |r|n
t        |       D cg c]  }t        | |       c}S c c}w )z=For use on immutable objects or with methods returning a copy)r"  rD   )clssourcerd  s      r*   _list_methodsr8    s-    06fCH&DF&DGCO&DFFFs   ()r   r,  rU  r  )r   r  count	dict_keysdict_values
dict_itemsBUILTIN_GETATTRTF)rQ   rM   rN   rO   rP   rW   rS   rR   r2  r0  )
r   r   r   r   r   rQ   rM   rN   r   rW   )rQ   rM   rN   rP   rO   rS   rR   )r   r   r   )r   r   r   r   rJ   )NNNr%   )r   inspectr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   collectionsr   r  rs   r<  	functoolsr   r   r   r  r   r   r   IPython.utils.decoratorsr   r   r   version_infotyping_extensionsr!   r#   r5   r;   r?   r   rJ   rL   rn   rz   r   r   rl   rm   r   r   r   r   r   r   r   r   r  objectr  rS  r   r   AddSubMultDivFloorDivModPowLShiftRShiftBitOrBitXorBitAndMatMultr  r   rE   rk   EqNotEqLtLtEGtGtEr  r  cmpopUSubUAddInvertNotr  unaryopr  r  r4  r9  rj   r?  r  r_  r  rf  ASTrJ  rm  r   r   r  r  r  r  r  r  r  r  r  r  r  r  SUPPORTED_EXTERNAL_GETITEMbytesdefaultdictdequeOrderedDictChainMapUserDictUserList
UserStringr4  r8  dict_non_mutating_methodslist_non_mutating_methodsr"  	frozensetset_non_mutating_methodsr,  r:  abcKeysViewrU  r;  r  r<  intfloatcomplexNUMERICSru  
isdisjointrI  Counterelementsmost_commonr%  ALLOWED_CALLSr=  BUILTIN_OPERATIONSr6  __all__)numeric_clsr   s   00r*   <module>rz     s    < <          
   % ( > > * 'g/$ , , , ;8 ; ; , , , 	 	 	
 z#556 eHdN&; * 
! !  !Hs # .// #/ 	/d4E#s(Oc)*sCx 
H
& H
  H
VGz G WX  4 4 44  () + K 	Y 	!$s !$%6 !$J GG\GG\HHlGGLL#GG\GG\JJJJII{JJJJKK; 4S\\*E#J67 " FFKII#FF GG!FF GG!FF	;d399ouS#X67 	 HHlHHlJJ)GG\> $tCKK(%S/9: c c! !4eE#s(OT,A&B ) .> %9=	^ ^.? ^B388 6G 
GG
/
	
4Xf-=(=#> CE#''4-( C3D CLt -= $/K"2 /Kd
0coo 
08I 
0@H CHH ?P "4 " !  ^9^9^9 
T	^9 T/	^9
 ((T/^9BQS Q+< Q*1-> 1  				!.)* (G
 @ 6 s3x=3s9~+>>  -1O	4(() ;%T %
#
D # :	:5: 
NN: 		:
 423: 	MM: : : : : 	: 423: 	MM: : 301:  LL!:" #:$ 9%:& ':( 
):* 
NN+:, -:. 3/:0 LL1:2 
3:4 55:6 
NN7:8 	9:: 4;:< =:> !)R}[7QVf7QfR?:@ A:B ;$$&?@C:D E:F G:H ;**,EFI:J $$K:L M:N ;**,EFO:P $$Q:R S:T ;'')BCU:V !!W:X Y:Z ;'')BC[:\ !!]:^ _:` ;))3s84a:b ##c:d e:f ;&&(ABg:h   i:j   k:l ##m:n NNo:p 	LLq:r 
MMs:x
(
(
( 
( 	
(
 	
( 
( 
( 
( 
(^$ 
 ('   "!"e"	 '!;' $ "

 ." !##  " !!7$ Ng Ss   %b	