
    fh^                        U 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 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      Z* G d! d"      Z+ e+       Z,d#Z- G d$ d%e.      Z/d&e$d'e*fd(Z0ejb                  d)ejd                  d*ejf                  d+ejh                  d,ejj                  d-ejl                  d.ejn                  d/ejp                  d0ejr                  d1ejt                  d2ejv                  d3ejx                  d4ejz                  d5iZ>eeej                     ee$   f   e?d6<   ej                  d7ej                  d8ej                  d9ej                  d:ej                  d;ej                  d<ej                  d=iZGeeej                     ee$d>f   f   e?d?<   ej                  d@ej                  dAej                  dBej                  dCiZMeeej                     ee$d>f   f   e?dD<   de
ee$d>f   df   fdEZOdFe
ej                  df   d'e*fdGZQh dHZReSe$eTeUeVej                  ej                  ej                  ej                  ej                  ej                  ej                  e)e+hZ^ee   e?dI<   dYdJZ_dKZ`dLZa eb eceb             eb eced            z  Ze efi j                               Zheej                  j                     e?dM<    efeUj                        Zlee?dN<    efe      ZmeneoephZqh eT e_eT      eS e_eSe`      ehj                  eU e_eUea      eb e_ebee      ed e_ed      ese$ e_e$      eV e_eV      eqeqD  cg c]  }  e_|       D ]  }|  c}} ej                   e_ej                  ea      ej                   e_ej                  e`      ej                   e_ej                  e`      ej                   e_ej                  e`      ej                   e_ej                  ea      ej                   e_ej                   ece$            ej                   e_ej                  e`      ej                  j                  ej                  j                  Zwh e^ebedeefeqehelemZxee!   e?dO<   h exZy e#dPdQdQdQdQ eb       dQdQR       e(e^eRexdSdTheydPdPdPewU	       e#dPdPdPdPdPdPdPV      dWZzg dXZ{yc c}} w )Z    )AnyCallableDictSetSequenceTuple
NamedTupleTypeLiteralUnionTYPE_CHECKINGN)cached_property)	dataclassfield)GENERATING_DOCUMENTATION)undoc)Protocolc                       e Zd ZddZy)
HasGetItemNc                      y N selfkeys     T/var/www/cvtools/html/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)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__/   r   r   r    )r"   r#   r$   r/   r   r   r   r-   r-   -   r%   r   r-   c                       e Zd Zy)DoesNotHaveGetAttrN)r"   r#   r$   r   r   r   r1   r1   3   s    r   r1   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)r2   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   )rA   r   valueitems      r   can_get_itemzEvaluationPolicy.can_get_item_       %%%r   c                     | j                   S r   )rB   )r   rK   attrs      r   can_get_attrzEvaluationPolicy.can_get_attrb   rN   r   Ndunders.c                     | j                   ryy NT)rD   )r   rR   abs       r   can_operatezEvaluationPolicy.can_operatee   s    $$ %r   c                 v    | j                   ry|| j                  v ryt        |      }|r|| j                  v ryy y rT   )rE   rH   r<   )r   r2   owner_methods      r   can_callzEvaluationPolicy.can_calli   sC    4%%%%d+LD,>,>> ?<r   r   )r"   r#   r$   __doc__r?   bool__annotations__r@   rA   rB   rC   rD   rE   r   setrH   r   r   rM   rQ   r   strrW   rZ   r   r   r   r>   r>   Q   s     + %%!&$&#t##t#"'4'!&$&!OT!#(#=M3x==&&5c? 
r   r>   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modulesr6   )r`   ra   member_typerP   s       r   _get_externalrf   v   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__)rc   rd   rf   r7   
isinstancer6   AttributeErrorKeyError)rK   r`   ra   rg   re   
value_typemethodmember_methods           r   _has_original_dunder_externalrp      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)r7   r6   rp   )	rK   allowed_typesallowed_methodsallowed_externalrg   rm   rn   r`   ra   s	            r   _has_original_dunderru      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)SelectivePolicyrF   allowed_getitem.allowed_getitem_externalallowed_getattrallowed_getattr_externalallowed_operationsallowed_operations_externalF)rG   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)Nri   rr   rs   rt   rg   r/   FT)ru   rz   _getattribute_methodsr{   _getattr_methodsr7   hasattrr6   rj   propertyrf   rl   rk   )r   rK   rP   has_original_attributehas_original_attracceptvalue_classclass_attr_valis_propertyr`   ra   external_classexternal_class_attr_vals                r   rQ   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   )ru   rx   _getitem_methodsry   rJ   s      r   rM   zSelectivePolicy.can_get_item   s0    #.. 11!::%
 	
r   NrR   c                     |g}||j                  |       t        |D cg c]<  }|D ]5  }t        || j                  | j	                  |      | j
                  |      7 > c}}      S c c}}w )Nr   )appendallru   r|   _operator_dunder_methodsr}   )r   rR   rU   rV   objectsdunderobjs          r   rW   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   rx   r   s    r   r   z SelectivePolicy._getitem_methods!      %%d&:&:MJJr   c                 :    | j                  | j                  d      S )Nr/   r   rz   r   s    r   r   z SelectivePolicy._getattr_methods%  r   r   c                 :    | j                  | j                  d      S )Nri   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   )r6   )r   classesr:   class_rn   s        r   r   z!SelectivePolicy._safe_get_methods-  s5     "
"646 
 	
 
s   "r   )r"   r#   r$   r   r^   rx   r   r'   r]   ry   r   r_   rz   MayHaveGetattrr{   r|   r}   dictr   r   r   rQ   rM   rW   r   r   r   r   r   r   r   r   r   rw   rw      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   rw   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   6  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   r]   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__K  s    
r   N)r"   r#   r$   r[   r   r   r   r   r   r   H  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  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   Y  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                 X    d }|j                         D ]  \  }}t        | |      s|} |S r   )itemsrj   )node_oprR   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        | j:                        S t        | t        j>                        rtA        fd| jB                  D              S t        | t        jD                        r$| jB                  D cg c]  }t        |       c}S t        | t        jF                        r$| jB                  D ch c]  }t        |       c}S t        | t        jH                        rYtK        t%        | jL                  D cg c]  }t        |       c}| jN                  D cg c]  }t        |       c}            S t        | t        jP                        rItS        t        | jT                        t        | jV                        t        | jX                              S t        | t        jZ                        r-tA        | j\                  D cg c]  }t        |       c}      S t        | t        j^                        rt        | j`                        }t        | j                  tb              }|rN|j                  ||      r t        ||d                S t        d| dt!        |      dj                   d      t        | t        jd                        rgt        | j:                        }t        | jR                        }|jg                  ||      r||   S t        dt!        |      dj                   d      t        | t        jh                        r|jj                  r1| jl                  jn                  v rjn                  | jl                     S |jp                  r1| jl                  jr                  v rjr                  | jl                     S |jt                  r4tw        tx        | jl                        rt        tx        | jl                        S |jp                  s%|jj                  st        dj                   d      t{        | jl                   d      t        | t        j|                        rlt        | j:                        }|j                  || j                        rt        || j                        S t        dt!        |      dj                   d      t        | t        j                        rDt        | j                        }|rt        | j                        S t        | j                        S t        | t        j                        rvt        | j                        }|j                  |      r4| j                  s(| j                  D cg c]  }t        |       }} || 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 c c}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)JEVALUATION_POLICIESr   rj   r   
Expressionr   bodyBinOpleftrightr   r   r   rW   r6   r   r7   Comparezipopscomparatorsr   NotInInIsIsNotoperator
ValueErrorConstantrK   Indexr   r   eltsListr   r   r   keysvaluesSliceslicelowerupperstepExtSlicedimsUnaryOpoperandr   	SubscriptrM   Namer?   idr   r@   r   rC   r   builtins	NameError	AttributerQ   rP   IfExptestorelseCallr2   rZ   keywordsr)   dump)r   r   policyr   r   rR   all_truenegater   r   rU   rV   resultr   kvdimrK   slice_r  r2   argr)   s    `                     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$		"W--$		">DII>>>$!/3yy9!	!W%99$ /3yy9!	!W%99$!04		:11g&:04<11g&<
 	
 $		"djj'*djj'*dii)
 	

 $%C#iW-CDD$$$,,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;g0017
 	

 %sxx~
66a :9 ;< Dn Bs$   +a()a-1a2a7a<b>   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)dirr6   )clssourcer"  s      r   _list_methodsr<  t  s$    06fCHFGCOFFFs   ()r   r  r  r   )r   indexcount	dict_keysmethod_descriptorBUILTIN_GETATTRTF)rC   r?   r@   rA   rB   rH   rE   rD   r5  r3  )	rx   ry   rz   r{   r|   rC   r?   r@   rH   )rC   r?   r@   rB   rA   rE   rD   )r   r   r   )r   r   r   r   r<   r   )|typingr   r   r   r   r   r   r	   r
   r   r   r   r   r  collectionsr  rc   	functoolsr   dataclassesr   r   IPython.utils.docsr   IPython.utils.decoratorsr   typing_extensionsr   objectr   r'   r-   r1   r   r<   r>   r_   rf   rp   ru   rw   r   r   r   r   r   	Exceptionr   r   AddSubMultDivFloorDivModPowLShiftRShiftBitOrBitXorBitAndMatMultr   r]   EqNotEqLtLtEGtGtEr   r   cmpopUSubUAddInvertNotr   unaryopr   ASTr   SUPPORTED_EXTERNAL_GETITEMr   byteslistr   defaultdictdequeOrderedDictChainMapUserDictUserList
UserStringr7  r<  dict_non_mutating_methodslist_non_mutating_methodsr^   r9  	frozensetset_non_mutating_methodsr7   r  r?  abcKeysViewr   r@  moduleintfloatcomplexNUMERICS
isdisjointrangeCounterelementsmost_commonALLOWED_CALLSrA  BUILTIN_OPERATIONSr   __all__)numeric_clsrn   s   00r   <module>r     s          
 % ( 7 * ,* H   
 8  
   
 	 	 	
 z#556 eHdN&; * 
      F
s 
# 
 # 	64 
y
& y
  y
xGz G
   () + 	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: eE#s(OT,A&B l7E#''4-( l73D l7^  			.)* $G
 @ 6 s3x=3s9~+>>  -1O	4(() ;dii 3 (	h #	#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