
    ;;i                     R   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 d dl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!Z!d d
lm'Z'm(Z(m)Z) ejT                  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             Z0ee/e0f   Z1dedeedf   fdZ2e&e G d d                    Z3de4dee4   fdZ5de4dee4   de4fdZ6d Z7d e8e9e4d!f   e4z     de8e9e4d!f      fd"Z:e&e G d# d$e3                    Z; G d% d&e
      Z<e	d'   Z=e G d( d)             Z> G d* d+      Z? e?       Z@d,ZA e       ZB eC       ZD G d- d.eE      ZFd/e4d0e>fd1ZGe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=ej                  d>iZUeVeWej4                     e9e4   f   eXd?<   ej                  d@ej                  dAej                  dBej                  dCej                  dDej                  dEej                  dFiZ`eVeWej                     e9e4d!f   f   eXdG<   ej                  dHej                  dIej                  dJej                  dKiZfeVeWej                     e9e4d!f   f   eXdL<   eVehe8e9eifZj G dM dN      Zk G dO dP      Zldee9e4d!f   df   fdQZmd0e>de3fdRZndSe=dTeVdeofdUZpdeofdVZqdWej                  d0e>fdXZsdY ZtdWej                  d0e>fdZZvd[ej                  d0e>deofd\ZxdeVe4eeC   f   fd]ZydWeej                  df   d0e>fd^Zzd_ehd`e3fdaZ{d`e3fdbZ|dWej                  d0e>fdcZ~dd ZdedWej                  d0e>fdeZdfe4d0e>fdgZ G dh dieV      Z	 	 	 ddfeCe4z  d0e>djedz  dedz  dWej                  dz  f
dkZdle4d0e>fdmZd0e>fdnZdo Zh dpZeVe4eehe9eWelej                  ej                  ej                  ej                  ej                  ej                  ej                  e<e?hZe8e.   eXdq<   ddrZdsZdtZ e8 ee8             e8 eei            z  Z eWi j-                               ZeWej0                  j2                     eXdu<    eWi j5                               ZeWeXdv<    eWi j9                               ZeWeXdw<   eeehZh e ee      ejD                  eV eeVe      eVjD                  ejD                  ejD                  ejD                  ejF                  eh eehe      ehjD                  e8 ee8e      e8jD                  ei eei      eijD                  eejD                  e4 ee4      e4jD                  e9 ee9      e9jD                  eo eeo      eeD  cg c]  }  e|       D ]  }|  c}} ej                   eej                  e      ej                  jD                  ej                   eej                  e      ej                  jD                  ej                   eej                  e      ej                  jD                  ej                   eej                  e      ej                  jD                  ej                   eej                  e      ej                  jD                  ej                   eej                   ee4            ej                  jD                  ejJ                   eejJ                  e      ejJ                  jD                  ejJ                  jL                  ejJ                  jN                  eCjP                  eWjP                  eljP                  Zh ee8eieCeWeee"e#Ze8e1   eXdx<   h eZ e3dydzdzdzdz e8       dzdz{       e;eeed|d}hedydydydye~
       e3dydydydydydydy      dZg dZyc c}} w )    )copy)isclass	signature	Signature	getmodule)	AnnotatedAnyStrLiteral
NamedTupleNewTypeOptionalProtocol	TypeGuardUnionget_args
get_originis_typeddict)CallableSequenceN)cached_property)	dataclassfield)MethodDescriptorType
ModuleType
MethodType)undoc)SelfLiteralStringget_type_hints)      )TypeAliasTypec                       e Zd ZddZy)
HasGetItemNc                      y N selfkeys     V/home/rose/Desktop/poly/venv/lib/python3.12/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)InstancesHaveGetItemr0   c                      y r&   r'   )r)   argskwargss      r+   __call__zInstancesHaveGetItem.__call__1   r-   r.   N)r1   r2   r3   r$   r:   r'   r.   r+   r6   r6   /   s    : r.   r6   c                       e Zd ZddZy)
HasGetAttrNc                      y r&   r'   r(   s     r+   __getattr__zHasGetAttr.__getattr__7   r-   r.   r/   )r1   r2   r3   r>   r'   r.   r+   r<   r<   5   r4   r.   r<   c                       e Zd Zy)DoesNotHaveGetAttrN)r1   r2   r3   r'   r.   r+   r@   r@   ;   s    r.   r@   funcr0   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__Nr1   __dict__)getattrtype)rA   ownerowner_classnameinstance_dict_overridess        r+   _unbind_methodrK   D   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&   )rP   )r)   valueitems      r+   can_get_itemzEvaluationPolicy.can_get_itemh       %%%r.   c                     | j                   S r&   )rQ   )r)   rZ   attrs      r+   can_get_attrzEvaluationPolicy.can_get_attrk   r]   r.   Ndunders.c                     | j                   ryy NT)rS   )r)   ra   abs       r+   can_operatezEvaluationPolicy.can_operaten   s    $$ %r.   c                 v    | j                   ry|| j                  v ryt        |      }|r|| j                  v ryy y rc   )rT   rX   rK   )r)   rA   owner_methods      r+   can_callzEvaluationPolicy.can_callr   sC    4%%%%d+LD,>,>> ?<r.   r&   )r1   r2   r3   __doc__rN   bool__annotations__rO   rP   rQ   rR   rS   rT   rU   r   setrX   r   r\   r`   tuplestrrf   ri   r'   r.   r+   rM   rM   Y   s     + %%!&$&#t##t#"'4'!&$&!OT!#t##(#=M3x==&&5c? 
r.   rM   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modulesrE   KeyErrorAttributeErrorjoin)rp   rq   member_typer_   module_paths        r+   _get_externalr{      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)Nrs   FT__getattribute__   )rt   ru   rx   r{   rF   
isinstancer   r   r1   
startswithrE   __mro__rw   rv   )rZ   rp   rq   r|   full_module_pathry   
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)rF   rE   r   )	rZ   allowed_typesallowed_methodsallowed_externalr|   r   r   rp   rq   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.rs   )r   rn   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)SelectivePolicyrV   allowed_getitem.allowed_getitem_externalallowed_getattrallowed_getattr_externalallowed_operationsallowed_operations_externalallow_getitem_on_typesF)rW   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_methodsrF   hasattrrE   r   propertyr{   rv   rw   )r)   rZ   r_   r   has_original_attributehas_original_attracceptvalue_classclass_attr_valis_propertyrp   rq   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_BaseGenericAliasrF   r   r   r   _getitem_methods)r)   rZ   r[   r   s       r+   r\   zSelectivePolicy.can_get_item6  sy    #9$:W:W#X &&%&"5"5v7O7O!PQ%&75:M+N#.. 115%
 	
r.   Nra   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)   ra   rd   re   r   objectsdunderobjs           r+   rf   zSelectivePolicy.can_operateH  s    &<,,'
# #=NN1 &
 &F"C %"&"9"9$($A$A&$I%@ & # &

 	

s   7A5
r   r0   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_methodsd      %%d&:&:MJJr.   c                 :    | j                  | j                  d      S )Nr>   r   r   r   s    r+   r   z SelectivePolicy._getattr_methodsh  r   r.   c                 :    | j                  | j                  d      S )Nr~   r   r   s    r+   r   z%SelectivePolicy._getattribute_methodsl  s    %%d&:&:<NOOr.   c           	      P    |D ch c]  }t        ||d       }|r| c}}S c c}}w r&   )rE   )r)   classesrI   class_r   s        r+   r   z!SelectivePolicy._safe_get_methodsp  s:     "
!"646 !
 	
 
s   "r&   )r1   r2   r3   r   rm   r   r6   rl   r   rn   ro   r   MayHaveGetattrr   r   r   rk   r   dictr   r   r`   r\   rf   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r1   r2   r3   rj   r'   r.   r+   r   r   y  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   g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ej*                  dz  ed<   d Zy)EvaluationContextlocalsglobalsr   
evaluationFin_subscriptNauto_importrV   policy_overridestransient_localsclass_transientsinstance_arg_namecurrent_valuec                .    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.   )r1   r2   r3   r   rl   r   EvaluationPolicyNamer   rk   r   r   r   ro   r   r   r   r   r   r   r   astASTr   r'   r.   r+   r   r     s     LM'2J$2 L$@DK8C=/:56=D"48d8"48d8$(dTk($(sTz( %)M377T>(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)r1   r2   r3   rj   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   rn   r   IDENTITY_SUBSCRIPTSUBSCRIPT_MARKERr   evalr   r   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)r1   r2   r3   rj   r   r   r  ro   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_opra   r   opcandidate_dunders        r+   _find_dunderr6    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*   rZ   s       r+   
get_policyr;  #  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)r8  r  r   warningswarn)r<  r   r:  all_goodr*   rZ   s         r+   _validate_policy_overridesrA  ,  sb     !-FH&,,.
Uvs#MMC7"5k_DVW H / Or.   c                    t        | t              ryt        | t        j                        ryt	        t        d      rt        | t        j
                        ryt        | t        j                  t        j                  f      ryt        | t        j                        ryt        | t              rt	        | d      ryt	        t        d      rt        |       yy)zD
    Returns True if obj is a type annotation, False otherwise.
    T	UnionTyper   r   F)r   rF   typesGenericAliasr   rC  r   r   r   TypeVarr   )r   s    r+   _is_type_annotationrG  ;  s     #t#u))*uk"z#u'G#++V-E-EFG#v~~&#t.A!Bv|$C)Dr.   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   rZ   r   r;  r   targetsr   r   TupleListlistelts	enumerateStarredlenrange!_is_instance_attribute_assignmentr_   id	SubscriptNamegetr   r   	NameError	Attributesliceri   r'  r   fromkeysr$  r\   r  	Exceptionr  )r   r   rZ   r   r:  r   targetvaluesrJ  itstarredstar_or_last_idxendrI   	containerstorage_dictstorage_keyr_   r*   r  r  duck_containers                          r+   _handle_assignrh  S  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                    |j                  t        | dd             }t        | j                  |      }t	        |      r-t        ||      }t        |t              xr | j                  d u}n|}d}t        | dd      rt        | j                  t        j                        r^| j                  j                  }|r6t        t        j                  | j                  g| j                        |      S ||j                  |<   y t!        | j                  |      r^| j                  j"                  }|r6t        t        j                  | j                  g| j                        |      S ||j$                  |<   y y )NrZ   )r   FsimplerJ  rZ   )r   rE   r   
annotationrG  _resolve_annotationr   GENERIC_CONTAINER_TYPESrZ   r]  r   rV  rT  rh  Assignr   rS  r_   r   )r   r   context_with_valueannotation_resultannotation_value	use_valuerI   r_   s           r+   _handle_annassignrt    s@    wtWd7ST!$//3EF,-./@'J ')@A\djjX\F\ 	 -	 tXu%*T[[#((*K{{~~!

DKK=

CW  *:  & )g>{{!

DKK=

CW  *:  &r.   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&   )r8   r   keywordsargrZ   r  )r   r   rw  r8   kwkvr9   s           r+   _extract_args_and_kwargsr{    s    /3yy9yIc7#yD9 --B vv VVYrxx12288W-
%'	DAq 	
1 	
   < :s   B A$B%r]  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.NrZ   rT  )r   r   r   r   rY  rE   rV  rZ   )r]  r   s     r+   rS  rS    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$  rE   close)r  coror_   s      r+   _get_coroutine_attributesr    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        ||        |rq|It-        |      r$t/        |      j                  | j0                  <   y|j                  | j0                  <   yt3        | |      }|j                  | j0                  <   yd }|#t-        |      r||j4                  d<   n||_        nt3        | |      }|||_        | j0                  |_        | |_        ||_        |j                  | j0                  <   yt        | t        j>                        r d	 }t        | j
                        |_        |S t        | t        j@                        ri }jB                  j                         }|jE                  j                         j                  ||
      }||_        | j
                  D ]  }t        ||        tG        | jH                  D cg c]  }t        |       c}      }tK        | j0                  ||      }|j                  | j0                  <   yt        | t        jL                        r0t        | jN                        }tQ        |d      r|jR                  S |S t        | t        jT                        rj                  j                         }j                  |      }d}| j
                  D ]  }t        ||      } t              }tW        |j                  j                         g|      }j                  jE                  |       |S t        | t        jX                        r*	 t        | jZ                        }d}|1	 |j_                  ta        |dd            rtc        t[        |            }j                  j                         }j                  |      }|C	 t        jd                  | jf                  gt        jh                  |            }tk        ||       d}| j
                  D ]  }t        ||      } t              }tW        |j                  j                         g|      }j                  jE                  |       |S t        | t        jl                        rwg }| } d}	 j                  j                         }!j                  |!      }"| j
                  D ]  }t        ||"      } |jo                  |!       | jp                  snts        | jp                        dk(  r7t        | jp                  d   t        jl                        r| jp                  d   } n[j                  j                         }#j                  |#      }$| jp                  D ]  }t        ||$      } |jo                  |#       n|jo                  j                  j                                t              }tW        ||      }j                  jE                  |       |S t        | t        jd                        rtk        |       S t        | t        jt                        rtw        |       S t        | t        jx                        rt        | j
                        S t        | t        jz                        rt        | jN                        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        j                        r&t-        |%      rt-        |&      r|j_                  |%j                        r't        t        j                  t        |%                  n	t               }'|j_                  |&j                        r't        t        j                  t        |&                  n	t               }(j                  })|)Pt        |)t        j                        r6t        |%|&fv r,t        |'|(t        j                  |)      gt                    S t        |'|(gt                    S t        | j                  t              }*|*rP|j                  |*|%|&      r ta        |%|*d         |&      S t        d|* dtK        |%      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\  }/}0|.dk(  s|*r6|j                  |*|/|0      r# ta        t        |.      |/|0      }|,r| }|sd}+|&}%t        d|. dtK        |%      dj                   d      t        d|. d       |+S t        | t        jh                        r| jN                  S t        | t        j                        rtG        fd| j                  D              S t        | t        j                        r$| j                  D 1cg c]  }1t        |1       c}1S t        | t        j                        r$| j                  D 1ch c]  }1t        |1       c}1S t        | t        j                        rYt        t        | j                  D 2cg c]  }2t        |2       c}2| j                  D 3cg c]  }3t        |3       c}3            S t        | t        j                        rIt        t        | j                        t        | j                        t        | j                              S t        | t        j                        rt        | j                        }t        | j                  t              }*|*rO|j                  |*|      r	  ta        ||*d                S t        d|* dtK        |      dj                   d      t        | t        j                        rgt        | jN                        }t        | j                        }4|j                  ||4      r||4   S t        dtK        |      dj                   d      t        | t        j                        rt        | j                        S t        | t        j                        rYj"                  lt        | jN                  t        j                        rH| jN                  j                  j(                  k(  r%j"                  j                  | j                        S t        | jN                        }|j                  || j                        rta        || j                        S 	 t        |tJ              r|nta        |dd      }5|5St        |5j                  xs i jB                  xs i        }6| j                  |6v r|6| j                     }7t/        |7      S t        d!tK        |      dj                   d      t        | t        j                        rDt        | j                        }8|8rt        | j
                        S t        | jp                        S t        | t        j                        rt        | j                         }9|j_                  |9      rt        |       \  }:}; |9|:i |;S t        |9      r0t        |9j                  |       }<|<t
        ur|<S t        |9      S ta        |9d"t
              }t        |9|       }ta        |9d#d      r$||n|}=t        t               $      }>|=|>_)        |>S |t
        ur|S |t
        ur|S t        d%|9d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 # t\        $ r d}Y w xY w# t\        $ r d}Y w xY w# t\        $ r Y 1w xY wc c}1w c c}1w c c}2w c c}3w # t        $ r% t        d| j                   dtK        |             w xY w# t\        $ r Y 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'   r8   r9   s     r+   dummy_functionz!eval_node.<locals>.dummy_functionO      r.   r0   c                       y r&   r'   r  s     r+   r  z!eval_node.<locals>.dummy_functionc  r  r.   )r   r   __awaited_type____iter__)rZ   rk  r   )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 r&  )globalnslocalnsz$Attribute access (`__getattr__`) for__inferred_return____is_async__r  zCall for)r;  r   r   InteractiveModulebodyr   FunctionDefAsyncFunctionDefr   r   r   decorator_listrX  r   staticmethodclassmethodr   r8   rw  r   returnsrG  rm  rI   _infer_return_valuerl   r  r1   __node__r  LambdaClassDefr   updatern   basesrF   AwaitrZ   r   r  While_merge_dicts_by_keyForiterr\  ri   rE   nextro  r]  Constantrh  Ifr   orelserQ  	AnnAssignrt  
ExpressionExprPassImport	AugAssignDeleteGlobalNonlocalBinOpleftrightr4  BitOrr'  r  r   r[  r$  r   Dict_merge_valuesliteral_evalr6  r  rf   r   r   Comparezipopscomparatorsr  NotInInIsIsNotoperator
ValueErrorrK  rN  rL  Setr.  r^  SlicerZ  lowerupperstepUnaryOpoperandr  rw   	TypeErrorrU  r\   rV  _eval_node_namerT  rY  rW  r_   r`   r   r   IfExptestCallrA   r{  r   _eval_return_type__new__NOT_EVALUATED_create_duck_for_heap_typer  Assertmsg)?r   r   r:  result
child_nodeis_asyncfunc_localsfunc_contextr   	is_staticis_classmethoddecorator_node	decoratorreturn_typereturn_valuer  inferred_returnclass_localsouter_localsclass_contextbaser  dummy_classrZ   loop_localsloop_contextstmtmerged_localsiterablesamplefake_assignbranchescurrentbranch_localsbranch_contextelse_localselse_contextr  r  	left_duck
right_duck
value_nodera   all_truenegater4  r   rd   re   r  ry  rz  slice_clsresolved_hints	annotatedr  rA   r8   r9   overridden_return_typeawaited_typecoroutine_ducks?    `                                                             r+   r   r     sE   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,/ $ &&{3:M#W;G,,TYY7  ;FG,,TYY7
   34F6B((3	 "";/;F..x85@2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,,$& w//$'G,,$!W--$!$

#$

34$S\\23$		"G,$**g.tww		*#D)#E* ??4<<0 dmmCI./W  ??5==1 dmmCJ/0W 
 !..J%*Z*JD%=(("J0@0@0LM)'2  !)Z!8GATUU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$)),,	#E40ge[RV6W  !/%oo3$^^1r"
 99. .tyy 9I.y'BB 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,,w   P H6  	H	    V :9 ;<  & #5dggYbeN Z  		s   "AIAI/7AI4 0AJ 1AAJ )AJ('AJ-/AJ2AJ72AJ< ;A3AK- I	AI,I+AI,I4AJJAJJAJJAJJ	AJ%J$AJ%J<.AK*K-	AK:K9AK:dictsr:  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   )rQ  rm   r  r.  r  )r  r:  all_keysdmergedr*   r^  s          r+   r  r    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  )rQ  rF   rm   ri   r'  r  r$  r  
setdefaultr   r\  r.  r  r  r  r   r   rM  rn   r  r[  )r^  r:  rz  rD  merged_items
key_valuesr  ry  valr  valsr`  s               r+   r  r    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  rQ  r;  r  )r   r   return_valuesr:  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   ReturnrZ   r   r  r   r\  r  r  r  r  r   r  rM  extendr  Tryhandlersr  r  )r  r   r  r  rZ   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   emptyrm  r  )rA   r   r   sig	not_emptys        r+   r  r    s^    
 o
 %%Y__<I"3#8#8'3dSS    s   A
 
AArl  c                 >    t        | t              rt        | |      S | S r&   )r   ro   r  )rl  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)   factoryr8   r9   r&  s       r+   r  z_GetItemDuck.__init__9  s    $)&)r.   c                 "    | j                         S r&   )r#  r(   s     r+   r,   z_GetItemDuck.__getitem__=  s    }}r.   c                      yrc   r'   r(   s     r+   r  z_GetItemDuck.__contains__@  s    r.   )r1   r2   r3   rj   r  r,   r  r0  r1  s   @r+   r!  r!  6  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.NrC   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&   )rm  )r  rw  r   rA   r   r  s     r+   r  z&_resolve_annotation.<locals>.<genexpr>  s&      
+  Wc4>+s   _is_protocol)(r  r   r   r   rC   r
   r   rQ  r   r	   r  rO  r8   rl  rT  r   r   rE   
parametersr  r   r   rm   rM  r$  rm  r  r   r[  r!  rn   r   r   rl   r   r   _eval_or_create_duck__supertype__r"   	__value__)rl  r   r  rA   r   origin	type_argsindexdef_noder_  rw  is_bound_methodr*   rZ   r_   r  type_argry  rz  r*  s    ````              @r+   rm  rm  D  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 r  rI  )r;  r   rN   r   rO   r   rR   r   builtinsrE   rU   r   r   r   rX  )r8  r   r:  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&   )r;  ri   r  )	duck_typer   r:  s      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rD  rE  rF  _iLocIndexerrD  SeriesrD  	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$  rE   )r  sourcery  s      r+   _list_methodsrQ    s-    06fCH&DF&DGCO&DFFFs   ()r   r.  r^  r  )r   r4  count	dict_keysdict_values
dict_itemsBUILTIN_GETATTRTF)rR   rN   rO   rP   rQ   rX   rT   rS   rL  rJ  )
r   r   r   r   r   rR   rN   rO   r   rX   )rR   rN   rO   rQ   rP   rT   rS   )r   r   r   )r   r   r   r   rK   )NNNr&   )r   inspectr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   collections.abcr   r   r   r:  collectionsr   r  rt   r>  	functoolsr   r   r   rD  r   r   r   IPython.utils.decoratorsr   r   r   r   version_infotyping_extensionsr"   r$   r6   r<   r@   r   rK   rM   ro   r{   r   r   rm   rn   r   r   r   r   r   r   r   r   r  objectr  r\  r   r   AddSubMultDivFloorDivModPowLShiftRShiftr  BitXorBitAndMatMultr  r   rF   rl   EqNotEqLtLtEGtGtEr  r  cmpopUSubUAddInvertNotr  unaryoprM  	frozensetrn  r  r  r6  r;  rk   rA  rG  ro  rh  rt  r  r{  r   rS  r  r   r  r  r  r  r  r  r  r!  rm  r  r/  r  SUPPORTED_EXTERNAL_GETITEMbytesdefaultdictdequeOrderedDictChainMapUserDictUserList
UserStringrN  rQ  dict_non_mutating_methodslist_non_mutating_methodsr$  set_non_mutating_methodsr.  rS  abcKeysViewr^  rT  r  rU  intfloatcomplexNUMERICSr  
isdisjointrR  Counterelementsmost_commonr'  ALLOWED_CALLSrV  BUILTIN_OPERATIONSr8  __all__)numeric_clsr   s   00r+   <module>r     s    < <    / 
     
   % ( > > *  6 6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 4:  () + 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:   sE9= c c! !4eE#s(OT,A&B ) .> %9=	 0^ ^.? ^B!F388 6G 
GG
/
	
4Xf-=(=#> iE#''4-( i3D iX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#