
    }ea                         U d dl 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 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 d dlmZ d dlmZ eserd d	l m!Z! ne"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Z(ee G d d                    Z)de*dee*   fdZ+de*dee*   de*fdZ,d Z-ee G d de)                    Z. G d d e
      Z/ G d! d"e
      Z0 G d# d$      Z1 e1       Z2d%Z3 e       Z4 G d& d'e5      Z6d(e*d)e0fd*Z7ejp                  d+ejr                  d,ejt                  d-ejv                  d.ejx                  d/ejz                  d0ej|                  d1ej~                  d2ej                  d3ej                  d4ej                  d5ej                  d6ej                  d7iZEeeej$                     e	e*   f   eFd8<   ej                  d9ej                  d:ej                  d;ej                  d<ej                  d=ej                  d>ej                  d?iZNeeej                     e	e*d@f   f   eFdA<   ej                  dBej                  dCej                  dDej                  dEiZTeeej                     e	e*d@f   f   eFdF<    G dG dH      ZVdee	e*d@f   df   fdIZWdJeej                  df   d)e0fdKZYh dLZZe[e*e\e]e^ej                  ej                  ej                  ej                  ej                  ej                  ej                  e/e1hZfee$   eFdM<   d\dNZgdOZhdPZi ej ekej             ej ekel            z  Zm eni j                               Zpeej                  j                     eFdQ<   eseteuhZvh e\ ege\      e[ ege[eh      epj                  e] ege]ei      ej egejem      el egel      exe* ege*      e^ ege^      evevD  cg c]  }  eg|       D ]  }|  c}} ej                   egej                  ei      ej                   egej                  eh      ej                   egej                  eh      ej                   egej                  eh      ej                   egej                  ei      ej                   egej                   eke*            ej                   egej                  eh      ej                  j                  ej                  j                  Z|h efejele"enevepeeZ}ee'   eFdR<   h e}Z~ e)dSdTdTdTdT ej       dTdTU       e.efeZe}dVdWhe~dSdSdSe|X	       e)dSdSdSdSdSdSdSY      dZZg d[Zyc c}} w )]    )	signature	Signature)AnyCallableDictSetSequenceTuple
NamedTupleTypeLiteralUnionTYPE_CHECKINGN)cached_property)	dataclassfield)MethodDescriptorType
ModuleType)GENERATING_DOCUMENTATION)undoc)Protocolc                       e Zd ZddZy)
HasGetItemNc                      y N selfkeys     ;/usr/lib/python3/dist-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__+   r"   r#   N)r&   r'   r(   r   r/   r   r#   r    r+   r+   )   s    : r#   r+   c                       e Zd ZddZy)
HasGetAttrNc                      y r   r   r   s     r    __getattr__zHasGetAttr.__getattr__1   r"   r#   r$   )r&   r'   r(   r3   r   r#   r    r1   r1   /   r)   r#   r1   c                       e Zd Zy)DoesNotHaveGetAttrN)r&   r'   r(   r   r#   r    r5   r5   5   s    r#   r5   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__Nr&   __dict__)getattrtype)r6   ownerowner_classnameinstance_dict_overridess        r    _unbind_methodr@   >   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	<    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default_factoryallowed_callsc                     | j                   S r   )rE   r   valueitems      r    can_get_itemzEvaluationPolicy.can_get_itema       %%%r#   c                     | j                   S r   )rF   )r   rO   attrs      r    can_get_attrzEvaluationPolicy.can_get_attrd   rR   r#   Ndunders.c                     | j                   ryy NT)rH   )r   rV   abs       r    can_operatezEvaluationPolicy.can_operateg   s    $$ %r#   c                 v    | j                   ry|| j                  v ryt        |      }|r|| j                  v ryy y rX   )rI   rL   r@   )r   r6   owner_methods      r    can_callzEvaluationPolicy.can_callk   sC    4%%%%d+LD,>,>> ?<r#   r   )r&   r'   r(   __doc__rC   bool__annotations__rD   rE   rF   rG   rH   rI   r   setrL   r   r   rQ   rU   r
   strr[   r^   r   r#   r    rB   rB   S   s     + %%!&$&#t##t#"'4'!&$&!OT!#(#=M3x==&&5c? 
r#   rB   module_nameaccess_pathc                 R    t         j                  |    }|D ]  }t        ||      } |S )zGet value from external module given a dotted access path.

    Raises:
    * `KeyError` if module is removed not found, and
    * `AttributeError` if acess path does not match an exported object
    )sysmodulesr:   )rd   re   member_typerT   s       r    _get_externalrj   x   s3     ++k*K 1k401r#   method_namec                    |t         j                  vry	 t        ||      }t        |       }t        |       |k(  ry|dk(  ryt	        | |      r!t        ||d       }t        ||d       }||k(  ryy y # t        t        f$ r Y yw xY w)NFT__getattribute__)rg   rh   rj   r;   
isinstancer:   AttributeErrorKeyError)rO   rd   re   rk   ri   
value_typemethodmember_methods           r    _has_original_dunder_externalrt      s     #++%#K=%[
;+%,, e[)Zd;F#KdCM& ' *
 H% s   %A/ A/ +A/ /B Bc                     t        |       }||v ryt        ||d       }|y ||v ry|D ]  ^}}t        | |||      s y y)NTF)r;   r:   rt   )	rO   allowed_typesallowed_methodsallowed_externalrk   rq   rr   rd   re   s	            r    _has_original_dunderry      se    
 eJ ]"Zd3F~ %5 !k([+V r#   c                      e Zd ZU  ee      Zee   ed<    ee      Z	ee
edf      ed<    ee      Zee   ed<    ee      Zee
edf      ed<    ee      Zeed<    ee      Zee
edf      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)SelectivePolicyrJ   allowed_getitem.allowed_getitem_externalallowed_getattrallowed_getattr_externalallowed_operationsallowed_operations_externalF)rK   init_operation_methods_cachec                    t        || j                  | j                  | j                  d      }t        || j                  | j                  | j                  d      }d}||rd}n|xr |}|rt        |      }t        ||      syt        ||      }t        |t              }|syt        |      | j                  v ry| j                  D ]#  ^}	}
	 t        |	|
      }t        ||      }||k(  c S  y# t        t        f$ r Y  yw xY w)Nrm   rv   rw   rx   rk   r3   FT)ry   r~   _getattribute_methodsr   _getattr_methodsr;   hasattrr:   rn   propertyrj   rp   ro   )r   rO   rT   has_original_attributehas_original_attracceptvalue_classclass_attr_valis_propertyrd   re   external_classexternal_class_attr_vals                r    rU   zSelectivePolicy.can_get_attr   s8   !5.. 66!::*"
 1.. 11!::%
  $)?F 'A+AF u+K;-$[$7N$^X>K E{d222 .2-J-J A)k!%2;%LN.5nd.K+ &)@@@A 	 !.1 ! !s   C00DDc                 ^    t        || j                  | j                  | j                  d      S )zTAllow accessing `__getiitem__` of allow-listed instances unless it was not modified.r!   r   )ry   r|   _getitem_methodsr}   rN   s      r    rQ   zSelectivePolicy.can_get_item   s0    #.. 11!::%
 	
r#   NrV   c                     |g}||j                  |       t        |D cg c]<  }|D ]5  }t        || j                  | j	                  |      | j
                  |      7 > c}}      S c c}}w )Nr   )appendallry   r   _operator_dunder_methodsr   )r   rV   rY   rZ   objectsdunderobjs          r    r[   zSelectivePolicy.can_operate
  s    #=NN1 &
 "
  %"&"9"9$($A$A&$I%)%E%E &


 	

s   AA*
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_methods#      %%d&:&:MJJr#   c                 :    | j                  | j                  d      S )Nr3   r   r~   r   s    r    r   z SelectivePolicy._getattr_methods'  r   r#   c                 :    | j                  | j                  d      S )Nrm   r   r   s    r    r   z%SelectivePolicy._getattribute_methods+  s    %%d&:&:<NOOr#   c           	      P    |D ch c]  }t        ||d       }|r| c}}S c c}}w r   )r:   )r   classesr>   class_rr   s        r    r   z!SelectivePolicy._safe_get_methods/  s5     "
"646 
 	
 
s   "r   )r&   r'   r(   r   rb   r|   r   r+   ra   r}   r
   rc   r~   MayHaveGetattrr   r   r   dictr   r   r   rU   rQ   r[   r   r   r   r   r   r   r   r#   r    r{   r{      se    27s1KOS-.K5:35Oc%S/2O+0+EOS(E5:35Oc%S/2O#C888=c8RU38_!5R9>5:d3H#56 4l

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r&   r'   r(   r_   r   r#   r    r   r   8  s    Fr#   r   c                   D    e Zd ZU eed<   eed<   dZed   ed<   dZeed<   y)	EvaluationContextlocalsglobals	forbidden)r   minimallimitedunsafe	dangerous
evaluationFin_subscriptN)	r&   r'   r(   r   ra   r   r   r   r`   r   r#   r    r   r   <  s1    LM 	 @ 
 L$r#   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__M  s    
r#   N)r&   r'   r(   r_   r!   r   r#   r    r   r   J  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   V  s    Ar#   r   codecontextc                    |j                   }|j                  dk(  rt        d      |j                  rW| s
t	               S |j                         }t        |t        <   t        dz   | z   dz   } t        d	i i |j                         d|i}|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   eval)moder   )r   r   r   r   tuplecopyIDENTITY_SUBSCRIPTSUBSCRIPT_MARKERr   _asdictr   r   astparse	eval_node)r   r   locals_
expressions       r    guarded_evalr   \  s     nnG[(-..
 
 7N,,.$6 !#%,s2#S&R):&Rx>Q&RS[(D'//7>>::4f-JZ))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)DuckzXA dummy class used to create objects of other classes without calling their ``__init__``Nr   r   r#   r    r   r     s    br#   r   c                 X    d }|j                         D ]  \  }}t        | |      s|} |S r   )itemsrn   )node_oprV   r   opcandidate_dunders        r    _find_dunderr     s8    F ' &gr"%F& Mr#   nodec                    t         j                     }| yt        | t        j                        rt        | j                        S t        | t        j                        rt        | j                        }t        | j                        }t        | j                  t              }|rP|j                  |||      r t        ||d         |      S t        d| dt!        |      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        j0                        rd	}	t        |t        j2                        rd	}	d}|	s|r|d   }	|	ru|	d
k(  r||fn||f\  }
}|	d	k(  s|r6|j                  ||
|      r# t        t4        |	      |
|      }|r| }|sd}|}t        d|	 dt!        |      dj                   d      t7        d|	 d       |S t        | t        j8                        r| j:                  S t        | t        j<                        rt?        fd| j@                  D              S t        | t        jB                        r$| j@                  D cg c]  }t        |       c}S t        | t        jD                        r$| j@                  D ch c]  }t        |       c}S t        | t        jF                        rYtI        t%        | jJ                  D cg c]  }t        |       c}| jL                  D cg c]  }t        |       c}            S t        | t        jN                        rItQ        t        | jR                        t        | jT                        t        | jV                              S t        | t        jX                        rt        | jZ                        }t        | j                  t\              }|rN|j                  ||      r t        ||d                S t        d| dt!        |      dj                   d      t        | t        j^                        rgt        | j:                        }t        | jP                        }|ja                  ||      r||   S t        dt!        |      dj                   d      t        | t        jb                        r|jd                  r1| jf                  jh                  v rjh                  | jf                     S |jj                  r1| jf                  jl                  v rjl                  | jf                     S |jn                  r4tq        tr        | jf                        rt        tr        | jf                        S |jj                  s%|jd                  st        dj                   d      tu        | jf                   d      t        | t        jv                        rlt        | j:                        }|jy                  || jz                        rt        || jz                        S t        dt!        |      dj                   d      t        | t        j|                        rDt        | j~                        }|rt        | j                        S t        | j                        S t        | t        j                        r4t        | j                        }|j                  |      r4| j                  s(| j                  D cg c]  }t        |       }} || S 	 t        |      }|j                  t        j                  u}t        |j                  t               }|ry|rwt               }|j                  |j                        r>| j                  s2| j                  D cg c]  }t        |       }} |j                  | S 	 |j                  |_M        |S t        d|dj                   d      t7        dt        j                  |             c c}w c c}w c c}w c c}w c c}w # t6        $ r
 t        }Y w xY wc c}w # t        $ r Y yw 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.
    Nr   zOperation (`z`) forznot allowed in z modeTF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     >qYq'*>s   z$Subscript access (`__getitem__`) forz not allowed in z Namespace access not allowed in z+ not found in locals, globals, nor builtinsz$Attribute access (`__getattr__`) forzCall forzUnhandled node)PEVALUATION_POLICIESr   rn   r   
Expressionr   bodyBinOpleftrightr   r   r   r[   r:   r   r;   Comparezipopscomparatorsr   NotInInIsIsNotoperator
ValueErrorConstantrO   r
   r   eltsListr   r   r   keysvaluesSliceslicelowerupperstepUnaryOpoperandr   	SubscriptrQ   NamerC   idr   rD   r   rG   r   builtins	NameError	AttributerU   rT   IfExptestorelseCallr6   r^   keywordsr-   r   UNKNOWN_SIGNATUREreturn_annotationr   emptyrc   r   	__class__	TypeErrordump)r   r   policyr   r   rV   all_truenegater   r   rY   rZ   resultr   kvrO   slice_r  r6   argr-   sig	not_emptynot_stringizedducks    `                        r    r   r     s   6 !!3!34F|$'G,,$		"G,$**g.tww(9:!!'470wtWQZ077$"7)62J%g&8&8%9? 
 $$G,TXXt'7'78 !	IB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(/: ?!	D $%zz$		">DII>>>$!/3yy9!	!W%99$ /3yy9!	!W%99$!04		:11g&:04<11g&<
 	
 $		"djj'*djj'*dii)
 	

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

 $!%%$''W^^*C>>$''**&&477goo+E??477++''GHdgg,F8TWW--**63M3M 273E3E2FeL  twwi'RSTT$&$**g.udii05$)),,2Kg0017
 	

 $		"G,TYY00T[['22$!G,??4 7;yyAIc7+ADA;	$D/C
 ))@	'(=(=sCC6Ds445dmm;?99EC	#w/EE,s,,d33 "%!6!6 g0017
 	

 %sxx~
66E :9 ;<~ B  	$#C	$ F  sH   ;b09b5b:$b?c9c	 >c#c$ 	cc$	c0/c0>   numpyvoidr3  ndarraypandascoreindexing_LocIndexerr8  r9  r:  _iLocIndexerr8  Seriesr8  	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)dirr:   )clssourcer*  s      r    _list_methodsrG    s$    06fCHFGCOFFFs   ()r   r  r  r   )r   indexcount	dict_keysBUILTIN_GETATTRTF)rG   rC   rD   rE   rF   rL   rI   rH   r@  r>  )	r|   r}   r~   r   r   rG   rC   rD   rL   )rG   rC   rD   rF   rE   rI   rH   )r   r   r   )r   r   r   r   r@   r   )inspectr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r  collectionsr  rg   	functoolsr   dataclassesr   r   typesr   r   IPython.utils.docsr   IPython.utils.decoratorsr   typing_extensionsr   objectr   r+   r1   r5   r   r@   rB   rc   rj   rt   ry   r{   r   r   r   r   r   r   	Exceptionr   r   AddSubMultDivFloorDivModPowLShiftRShiftBitOrBitXorBitAndMatMultr   ra   EqNotEqLtLtEGtGtEr  r   cmpopUSubUAddInvertNotr   unaryopr   r   ASTr   SUPPORTED_EXTERNAL_GETITEMr   byteslistr   defaultdictdequeOrderedDictChainMapUserDictUserList
UserStringrB  rG  dict_non_mutating_methodslist_non_mutating_methodsrb   rD  	frozensetset_non_mutating_methodsr;   r  rJ  abcKeysViewintfloatcomplexNUMERICS
isdisjointrangeCounterelementsmost_commonALLOWED_CALLSrK  BUILTIN_OPERATIONSr   __all__)numeric_clsrr   s   00r    <module>r     s   ( (        
 % ( 2 7 * ,* H   
 8  
   
 	 	 	
 z#556 eHdN&; * 
      F
s 
# 
 # 	64 
y
& y
  y
xGz G
   () + 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eE#s(OT,A&B {7E#''4-( {73D {7|  			.)* $G
 @ 6 s3x=3s9~+>>  -1O	4(() ; #	#5# 	# 423	#
 # 	# 423# # 301# # 9# 
# # 3# 
#  5!#" ##$ !)R}[7QRVfRfR%#& '#( ;$$&?@)#* +#, ;**,EF-#. /#0 ;**,EF1#2 3#4 ;'')BC5#6 7#8 ;'')BC9#: ;#< ;))3s84=#> ?#@ ;&&(ABA#B   C#D ##E#J
(
(
( 
( 	
(
 	
( 
( 
( 
( 
(^$ 
 ('   "!"e"	 '!;' $ "

 ." !# " !!5# LQ Ss   V
