
    g}                        d dl Z d dlZd dlZ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 ddlmZmZmZmZmZmZ ddlmZmZ d dlmZ ded	e	e   fd
Zded	e	e   fdZded	efdZ  ed      ded	e!ejD                     fd       Z#e jH                  e jJ                  e jL                  e jN                  fZ(e(e jR                  e jT                  e jV                  e jX                  fz   Z-e j\                  e j^                  e j`                  e jb                  e jd                  e jf                  e jh                  e jj                  e jl                  e jn                  e jp                  e jr                  e jt                  dZ; G d de<      Z=y)    N)CodeType	FrameType)
AnyCallableIteratorOptionalSequenceSetTupleTypeUnioncast   )EnhancedASTNotOneValueFoundSourceonlyfunction_node_typesassert_)
KnownIssueVerifierFailure)	lru_cachenodereturnc              #   J   K   	 t        | d      r| j                  } |  ny w)Nparent)hasattrr   r   s    T/var/www/openai/venv/lib/python3.12/site-packages/executing/_position_node_finder.pyparentsr       s)     
4";;DJ s   !#c              #   >   K   |  t        |       E d {    y 7 wN)r    r   s    r   node_and_parentsr#      s     
Jt}s   c                 l   t        | t        j                        r| j                  }nDt        | t        j                        r| j
                  }nt        | t        j                        r-| j                  xs | j                  j                  d      d   }nt        | t        j                  t        j                  t        j                  f      r| j                  }nt        | t        j                        r| j                  sJ | j                  }nZt        j                  dk\  r't        | t        j                         r| j                  }n t#        dt%        t'        |             z         |j)                  d      r|j+                  d      s| j,                  | }}t        |t        j                        r||j.                  vsGt1        |d      s	 |S |j,                  |}}t        |t        j                        s8||j.                  vsG|j                  j3                  d      }|dk7  rd|z   |z   S |S )	z

    Parameters:
        node: the node which should be mangled
        name: the name of the node

    Returns:
        The mangled name of `node`
    .r         zno node to mangle for type __r   _ )
isinstanceast	AttributeattrNameidaliasasnamenamesplitFunctionDefClassDefAsyncFunctionDefExceptHandlersysversion_infoTypeVar	TypeErrorreprtype
startswithendswithr   basesr   lstrip)r   r4   r   child
class_names        r   mangled_namerF      s    $&yy	D#((	#ww	D399	&{{5diiooc215	D3??CLL#:N:NO	Pyy	D#++	,yyyyy			V	#
4(DYY5d4:6FFGGtT]]4%8[[ufS\\2uFLL7P6(+ K  v5F	 fS\\2uFLL7P {{))#.J2~Z'$.. K       codec                 >    t        t        j                  |             S r"   )listdisget_instructions)rI   s    r   rM   rM   I   s    $$T*++rG   )z***@z///%+-z<<z>>&^|c            
          e Zd ZdZdedee   dej                  de	de
f
dZded	e	d
dfdZdedej                  d
efdZdedej                  d
dfdZedej                  ded
efd       Zdedej                  d
dfdZd	e	d
eej                     fdZd	e	d
efdZdZej6                  dk\  rej8                  fZdej:                  ej<                  ej>                  ej@                  gefd	e	de!e   de"e#df   d
efdZ$y)PositionNodeFindera%  
    Mapping bytecode to ast-node based on the source positions, which where introduced in pyhon 3.11.
    In general every ast-node can be exactly referenced by its begin/end line/col_offset, which is stored in the bytecode.
    There are only some exceptions for methods and attributes.
    framestmtstreelastisourcec                    t        |j                        D ci c]  }|j                  | c}| _        || _        d | _        | j                  |      dk(  r|dz  }| j                  |      dk(  r	 | j                  |      | _        | j                  |      }|J | j                  | j                  |      | _        | j                  | j                  |       | j!                  | j                  |       | j
                  | j#                  | j                  |       y t%        | j
                  | j                  j&                  v        y c c}w # t        $ rh | j                  |      dv rt        j                  f}n&| j                  |      dv rt        j                  f}n | j                  |d|      | _        Y 8w xY w)NCACHE   )LOAD_METHOD	LOAD_ATTR
STORE_ATTRDELETE_ATTR)CALLCALL_KW)end_col_offset
end_lineno)match_positionstyp)rM   f_codeoffsetbc_dictr]   	decoratoropname	find_noderesultr   r-   r.   Callinstruction
fix_resultknown_issuestest_for_decoratorverifyr   decorator_list)	selfrY   rZ   r[   r\   r]   bcrj   rs   s	            r   __init__zPositionNodeFinder.__init__t   s   -=ell-KM-Krbiil-KM04 kk% G+QJE kk% G+	../DK> &&u-&&&oodkk;?$++{3U3 >>!KK[1DNNdkk&@&@@Ao N   	 {{5! &  }}&U#'::
 xxk.. @ ) DK1	s   E
1E A-G ?G r   indexr   Nc                 <   t        |j                  t        j                  t        f      r||j                  j
                  v r|j                  }	 | j                  |dz
        dk(  st        j                  dk\  r| j                  |      dk(  sy |dz  }| j                  |      dv r|dz  }| j                  |      dv r| j                  |      j                  d      r#| j                  |      |k(  r|| _        || _        y t        j                  dk  r|dz  }y y )N   PRECALLr&   re   r`   )r_   EXTENDED_ARGSTORE_)r,   r   r-   r7   r   rx   ro   r:   r;   r@   rp   rq   rn   )ry   r   r|   	node_funcs       r   rv   z%PositionNodeFinder.test_for_decorator   s   t{{S\\3F$GH222I& [[+y8C<L<LPW<WE*f4
kk%(,EEQJE kk%(,EE KK&11(;u-:"+DK%)DN##g-QJEM 	 3 IrG   rs   c                     t         j                  dk\  rV|j                  dv rHt        |j                  t
        j                        r$||j                  j                  u r|j                  S |S )N)r'   r(      GET_ITERFOR_ITER)r:   r;   ro   r,   r   r-   Foriter)ry   r   rs   s      r   rt   zPositionNodeFinder.fix_result   sV     
*""&>>4;;0(((  ;;rG   c                 "	   |j                   dv rt        |t              rt        |t              rt	        j
                  |j                        D cg c]6  }t        |t        j                        rt        |j                        dkD  r|8 }}t        |d       t        |      dk(  rt        t        |d         x}| _        nt        d|z        t        d|z        t        j                   d d dk(  rOt        |t        j                        r5|j                   d	k(  r&t#        d
 t%        |      D              rt        d      t        |t        j&                        rt        d      t#        d t%        |      D              rt        d      t        j                   dk\  rWt        |t        j(                        r<t        |j*                  t        j,                        r|j*                  j.                  dk(  r|j0                  }t3        |d      rmt        |t        j4                  t        j6                  f      sC|j0                  }t3        |d      r+t        |t        j4                  t        j6                  f      sCd }t3        |d      r?g |j8                  j:                  |j8                  j8                  }|r|d   j<                  }|j                   |j>                  fdd|fd|ffv rt        d      | jA                  ||      rt        d      |j                   dk(  r|j>                  dk(  rt        d      |j                   d	k(  rSt        |t        j(                        s9t#        d tC        |      D              rt        j                   dk\  rt        d      t        j                   dk\  r|j                   dv rt        d |j                    d!      |j                   dk(  r|j>                  d"k(  rt        d#      |j                   d$k(  rwt        |t        jD                        r\t        |jF                  t        j                        r7t        |jH                  t        jJ                        r|jF                  | _        y y y y y y c c}w )%N
COMPARE_OPIS_OPCONTAINS_OPr   z expected at least one comparisonr   z4multiple chain comparison inside %s can not be fixedz+chain comparison inside %s can not be fixedr'   )r'      r   re   c              3   P   K   | ]  }t        |t        j                           y wr"   r,   r-   Assert.0ns     r   	<genexpr>z2PositionNodeFinder.known_issues.<locals>.<genexpr>  s     N7M!Jq#**-7M   $&zBknown bug in 3.11.1 https://github.com/python/cpython/issues/95921assertc              3   P   K   | ]  }t        |t        j                           y wr"   )r,   r-   patternr   s     r   r   z2PositionNodeFinder.known_issues.<locals>.<genexpr>'  s     J3Iaz!S[[)3Ir   z)pattern matching ranges seems to be wrongr&   superr   args)
LOAD_DEREF	__class__	LOAD_FASTr   zsuper optimizationzCexeption cleanup does not belong to the last node in a except block
STORE_NAME__classcell__zstore __classcell__c              3   P   K   | ]  }t        |t        j                           y wr"   r   )r   ps     r   r   z2PositionNodeFinder.known_issues.<locals>.<genexpr>a  s     E}!Jq#**-}r   )r'   r   r`   z&exception generation maps to conditionr'      )STORE_FAST_STORE_FASTSTORE_FAST_LOAD_FASTLOAD_FAST_LOAD_FASTzcan not map z to two ast nodesr   z^loading of __class__ is accociated with a random node at the end of a class if you use super()r   )&ro   r,   types_cmp_issuetypes_cmp_issue_fixr-   walktestComparelenopsr   r   r   rq   r   r:   r;   anyr#   r   rr   funcr0   r1   r   r   r8   r6   r   posonlyargsargargvalis_except_cleanupr    UnaryOpoperandopNot)ry   r   rs   r   comparisonsr   	first_argr   s           r   ru   zPositionNodeFinder.known_issues   s   !GGJ/M
 $ 34 !XXdii00!!S[[1c!%%j1n 0   %GH{#q()-k;q>)JJD4;$NRVW  !!NRV!WXX Ra J.4-""f,N7G7MNNT  dCJJ' X&&J3CD3IJJHII '4*499chh/		'
 ;;D$)*s++S__=3 {{	 $)*s++S__=3 ItV$@..@@ $QI""K$6$67+i(y)< 
 !!566!!+t4bcc-+2D2D2W 233 &(tCHH-Ewt}EE  J.EFFw&!! & 
 !<0B0B/CCT!UVV!![0[5G5G;5V !t 
 ""l2tS[[1t||CKK8tww0 #ll	 1 9 2 3) 'Es   ;Rinstc                 $     j                   dvryt        |t        j                        rXt        |j                  t        j
                        r4 j                   j                  d      rt        |       j                  k(  ryt        |t        j                        rXt        |j                  t        j                        r4 j                   j                  d      rt        |       j                  k(  ryt         fdt        |      D              S )N)r   
STORE_FASTSTORE_DEREFSTORE_GLOBALDELETE_NAMEDELETE_FASTDELETE_DEREFDELETE_GLOBALFr   DELETE_c              3      K   | ]F  }t        |t        j                        xr& |j                  xr t	        |      j
                  k(   H y wr"   )r,   r-   r9   r4   rF   r   )r   r   r   s     r   r   z7PositionNodeFinder.is_except_cleanup.<locals>.<genexpr>  sD      
" q#++,ZZLOt{{<ZZ"s   AA)ro   r,   r-   r0   ctxStorer@   rF   r   Delr   r    )r   r   s   ` r   r   z$PositionNodeFinder.is_except_cleanup  s    ;; 	
 	
 , tSXX&488CII.&&x0T"dkk1  tSXX&488CGG,&&y1T"dkk1  
T]
 
 	
rG   c           	         j                   }d }t        d      }dt        t        t        t           f   dt
        dt        ffd}dt        t        t        t        df   f   dt
        dt        ffd	}|d
k(  ry |d      r' |t        j                  t        j                  f      ry |d      rE |t        j                  t        j                  t        j                  t        j                  f      ryt         j"                  dk\  r> |d      r6 |t        j                  t        j                  t        j                  f      ry |d      r' |t        j$                  t        j&                  f      ry |d      r |t        j(                        ry |dd      r |t        j*                        ry |dd      s |dd      s |d      r |t        j,                  t        j.                  t        j0                        rUt3        t5        t        j.                  t5        t        j,                        j6                        j8                  t              ry |d      r |t        j*                        ry |d      r2 |t        j:                  j<                  t        j>                        ry |d      r= |t        j@                        s& |t        j,                  t        j0                        ry |d      r |t        j                        ry |dd       r |t        j.                        ry |d!      r/ |t        jB                        rj<                  tE              k(  ry |d"      r] |t        jF                  t        jH                  f      r7tK        fd#t5        t        jF                        jL                  D              ry |d$      rt |t        jN                  t        j$                  t        jP                  f      s& |t        j:                  t        jR                  %      rj<                  tE              k(  ry	  |d&      r9 |t        jZ                  t\        j^                  ja                  d'               ry |t        jb                  t        j>                  %      r |d(tE                    ry |d)      r |t        jd                        ry |d*      r' |t        jf                  t        j>                  %      ry |t        j:                  t        jh                  %      sJ |t        j:                  t        jR                  %      r8t3        jj                  t        jZ                        r |d+tE                    ry |t        j:                  t        j>                  %      r |d,tE                    ry |t        j.                        r- |d-t5        t        j.                        j8                        ry |t        j                  t        j                  t        j                  t        j                  t        jl                  f      r	 |d.      ryt         j"                  dk\  r |t        jn                  t        jp                        r |d/d01      ry |t        jf                        r	 |d2      ry |t        jH                        r |d/d31      ry |t        jr                        s$t3        jj                  t        j                        r |d/d41      ry |t        j:                        r |d5d6      ry |t        jt                        r2 |d/d71      s' |d8d91      s |d8d:1      s |d;tE              1      ry |t        jv                        r |d/d<1      s |d;jx                  1      ry |t        jz                        r |d/d=1      s |d;jx                  1      ry |t        j|                        r1 |d/d>1      s& |d?jx                  j~                  1      s |d      ry |t        j$                        r8j                  r, |d@dA1      ry |dBdC1      ry |d/dD1      ry |d5d6      ry |t        jN                  t        jP                  f      r6j                  r* |d      ry |d8dE1      ry |dFdG      ry |dFdH      ry |dIdJ      ry |t        j@                        r |dd      s |dK      ry |t        j                        r	 |dL      ryt         j"                  dMk\  rR |dN      ry |dO      r |t        jd                        ry |dP      r' |t        j&                  t        j$                  f      ry |dFdA      ry |dFd6      ry |dF      rc |t        jN                  t        j$                  t        j|                  t        jt                  t        j                  t        jP                  f      ry |dF      r: |t        j|                        r$jx                  j~                  j<                  k(  ry |dIdQ      ry |dF      r%t3        jj                  t        jt                        ryt        d      }t        d      |j                  dR      r"t        jf                  }t        jh                  }n|j                  dS      r*t        j,                  }t\        j^                     fdT}nE|j                  dU      r`t        jn                  }t        t        jp                  t        j                  t        j                  t        j                  V      |   fdW}n|dXv r&t        jb                  }t        jh                  }fdY}n|dZv r&t        j:                  }t        jh                  }fd[}n|dv rt        j(                  }d\ }nh|j                  d]      r!t        jR                  }t        jf                  }n6|j                  d^      r%t        jR                  }t        jb                  }fd_}t        d`d      }	|t        d      uxs t        d`       xs t3        |	|      }
t3        |      r|
r	 |      rydat              j                  dbj                   }t        |      )czE
        checks if this node could gererate this instruction
        c                      y)NT es    r   <lambda>z+PositionNodeFinder.verify.<locals>.<lambda>  s    rG   Nopnameskwargsr   c           	          t        | t              r| g} j                  | v xr ||D ci c]  }|t        |       c}k(  S c c}w )a)  
            match instruction

            Parameters:
                opnames: (str|Seq[str]): inst.opname has to be equal to or in `opname`
                **kwargs: every arg has to match inst.arg

            Returns:
                True if all conditions match the instruction

            )r,   strro   getattr)r   r   krs   s      r   
inst_matchz-PositionNodeFinder.verify.<locals>.inst_match  s`     '3'")%%0 V4:@4:q7;**F@ 6  @s   A	node_type.c                 d    t        |       xr" t        fd|j                         D              S )a  
            match the ast-node

            Parameters:
                node_type: type of the node
                **kwargs: every `arg` has to be equal `node.arg`
                        or `node.arg` has to be an instance of `arg` if it is a type.
            c              3      K   | ]<  \  }}t        |t              rt        t        |      |      nt        |      |k(   > y wr"   )r,   r?   r   )r   r   vr   s      r   r   z@PositionNodeFinder.verify.<locals>.node_match.<locals>.<genexpr>  sO      7 +DAq a& 74+Q/T1%*+ +s   AA)r,   allitems)r   r   r   s     r   
node_matchz-PositionNodeFinder.verify.<locals>.node_match  s5     dI. 3 7 #LLN	7 4 rG   r_   re   )re   r   r&   )LOAD_FAST_AND_CLEARr   )re   CALL_FUNCTION_EXr   	LOAD_NAME__annotations__)r   ra   joinrb   )re   BUILD_STRING)leftr   STORE_SUBSCR)r   r   )r1   r   r   )r   )BEFORE_WITHWITH_EXCEPT_START)r   r   __doc__)r   r   r   r   )r   r   r   r   c              3   j   K   | ]*  }t        t        t        |            j                  k(   , y wr"   )rF   r   r   r   )r   r2   rs   s     r   r   z,PositionNodeFinder.verify.<locals>.<genexpr>9  s,     {^zUZLk5!9:k>P>PP^zs   03)r   r   r   r   )r   	BINARY_OP=rd   )JUMP_IF_TRUE_OR_POPJUMP_IF_FALSE_OR_POPPOP_JUMP_IF_TRUEPOP_JUMP_IF_FALSEDELETE_SUBSCR)r   r   LOAD_FAST_CHECKLOAD_GLOBALr   LOAD_FROM_DICT_OR_DEREF)r   r   r   
LOAD_CONSTr   CALL_INTRINSIC_1INTRINSIC_UNARY_POSITIVE)argreprBINARY_SLICEINTRINSIC_IMPORT_STARINTRINSIC_ASYNC_GEN_WRAPr   __classdict__INTRINSIC_TYPEVARCALL_INTRINSIC_2INTRINSIC_TYPEVAR_WITH_BOUND"INTRINSIC_TYPEVAR_WITH_CONSTRAINTS)r   r   INTRINSIC_TYPEVARTUPLEINTRINSIC_PARAMSPECINTRINSIC_TYPEALIAS)r   r   r   )r   r   r   z.type_params)r   r   z.generic_baseINTRINSIC_SUBSCRIPT_GENERIC"INTRINSIC_SET_FUNCTION_TYPE_PARAMSr   z	.defaultsz.kwdefaultsr   __classdictcell__)LIST_APPENDre   FORMAT_VALUEr   NOPTO_BOOLrf   __static_attributes__)BINARY_SUBSCRzSLICE+BINARY_c                 `    t        t        t        j                  |       j                        S r"   )r,   r   r-   BinOpr   r   op_types    r   r   z+PositionNodeFinder.verify.<locals>.<lambda>8  s    ZSYY0B0E0Ew%OrG   UNARY_)UNARY_POSITIVEUNARY_NEGATIVE	UNARY_NOTUNARY_INVERTc                 `    t        t        t        j                  |       j                        S r"   )r,   r   r-   r   r   r  s    r   r   z+PositionNodeFinder.verify.<locals>.<lambda>A  s    ZS[[!0D0G0G%QrG   )rb   ra   LOOKUP_METHODLOAD_SUPER_ATTRc                 4    t        |       j                  k(  S r"   rF   r   r   rs   s    r   r   z+PositionNodeFinder.verify.<locals>.<lambda>E      \!_8J8J%JrG   )r   r   r   r   LOAD_CLASSDEREFc                 f    t        t        j                  |       j                  j                  k(  S r"   )r   r-   r0   r1   r   r  s    r   r   z+PositionNodeFinder.verify.<locals>.<lambda>O  s!    T#((A%6%9%9[=O=O%OrG   c                 b    t        t        t        j                  |       j                        dk(  S )Nr   )r   r   r-   r   r   r   s    r   r   z+PositionNodeFinder.verify.<locals>.<lambda>R  s    Sckk1)=)A)A%Ba%GrG   )STORE_SLICEr   rc   c                 4    t        |       j                  k(  S r"   r  r  s    r   r   z+PositionNodeFinder.verify.<locals>.<lambda>Y  r  rG   r   zast.z is not created from )Lro   r?   r   r   r	   r   boolr   r   r-   With	AsyncWithListCompGeneratorExpSetCompDictCompr:   r;   r7   rr   r   	AnnAssignr  ConstantModr,   r   r   valuer0   r   r   	JoinedStrr9   rF   Import
ImportFromr   namesr6   r8   r   MatchAsMatchSequence
MatchValue	AugAssignop_type_mapr   removesuffixr.   BoolOp	SubscriptLoadr   r   r   UAddYieldr<   TypeVarTupler4   	ParamSpec	TypeAliasr1   type_paramsFormattedValueLambdar@   dictUSubr   Invertr   r   __name__r   )ry   r   rs   op_nameextra_filterr   r   r   rj   node_ctx	ctx_matchtitler  s    ``         @r   rw   zPositionNodeFinder.verify  s)
   
 $$6DJ	c8C=&8 9 	S 	T 	&	%eD#I.>(>"? 	3 	SW 	  gf*chh-F"G+,\\3++S[[#,,G2
  '@ACLL#++s||DE23
\\388$9
 <=*KKC
 k*;<MMB
  =8k&9673993<<CGGD4d399d.C.H.HIOOQTU n%*S]]*C 45*HH++;
 n%s}}%CII#'')J9:z#((?S4YGJLLM
  RS3,,-""l4&88  RSCJJ78{^bcfcmcmos^t^z^z{{  RSCOOS\\3;O;OPQHH		
 ""l4&88 k"zMMk+*=*=*J*J3*OP(
 cmm1j,t"47
 
 $o&:cmm+Q sxxSXX.3883t{{CMM:  %

 chhCGG,<\RVEW2
 cll#
cllD!9!?!?)
 \\3;;c6F6FP
12w&#++#((3
",F9 #--(Z-G#..)j",C/  399%DKKAQAQ)R/9ST#((#
<(W#++&-7JK&0N &0T ;\RVEWX#**+-7OP;TYYO#--(-7LM;TYYO #--(1;PQ!CTYY\\ "&) #,,'D,<,<L* 9?S&0M l/B3??3+?+?@AdFVFVf%&0T k=k?,/BC
 #--(;v656#,,-*^2Lw&% )$CJJ)?)$SXXs||4L)M+n=+o>+&:OOLLMMKKJJ((	,  ;'s}}-IILLK$6$66,.EF+&:dkk#+++N
 JT
9:--C((C	*))C!+"5"56GOL)++C"xx"xx'' ZZ	
 G RLWW--C((CJL 
 
 ((C((COL>>++CGL ?@))C--C-))C--CJL4- tDz! )4'')(C( 	 dC Y<3E
 J

 eT;77rG   c                 :    | j                   j                  |d       S r"   )rm   get)ry   r|   s     r   rs   zPositionNodeFinder.instructionp  s    ||d++rG   c                 B    | j                  |      }|y|j                  S )Nr_   )rs   ro   )ry   r|   is      r   ro   zPositionNodeFinder.opnames  s#    


5
!9xxrG   r   r&   )linenorh   
col_offsetrg   ri   rj   .c                     | j                  |      }|J |j                  j                  J t        fd| j                  j
                  j                     D              S )Nc              3      K   | ]i  t              r[t        t        j                        sAt        t        j                        s't	        fd D              rt        t               k yw)c              3   P   K   | ]  }t        |      t        |      k(    y wr"   )r   )r   r/   r   positions     r   r   z9PositionNodeFinder.find_node.<locals>.<genexpr>.<genexpr>  s,      +D $'74+>>+s   #&N)r,   r-   Exprr3  r   r   r   )r   r   ri   rT  rj   s    @r   r   z/PositionNodeFinder.find_node.<locals>.<genexpr>  s[      
C$$dCHH-dCNN3 +  d#Cs   A/A3)rs   	positionsrO  r   r]   _nodes_by_line)ry   r|   ri   rj   rs   rT  s     `` @r   rp   zPositionNodeFinder.find_node}  sn    " &&u-&&&((#(CCC 
228??C
 
 	
rG   )%rE  
__module____qualname__r   r   r
   r   r-   Moduleintr   r{   rv   rL   Instructionrt   ru   staticmethodr"  r   rw   r   rs   r   ro   extra_node_typesr:   r;   
type_paramexprstmtexcepthandlerr   r	   tupler   rp   r   rG   r   rX   rX   m   s   8Bi 8BK0@ 8B

 8B[^ 8Bhn 8Bt-{ -3 -4 -^.1oo	4J+ J+3?? J+t J+X 5
 5
{ 5
t 5
 5
ns8; s8S__ s8 s8j, ,#//)B ,C C  
6!NN,
*
 HHHHKK	!

 !
"
"
 "#"
 49"
  
!"
rG   rX   )>r-   r:   rL   typesr   r   typingr   r   r   r   r	   r
   r   r   r   r   	executingr   r   r   r   r   r   _exceptionsr   r   	functoolsr   r    r#   r   rF   rK   r\  rM   IfExpIfr   Whiler   r%  r'  r(  r&  r   PowMultMatMultFloorDivDivr+  AddSubLShiftRShiftBitAndBitXorBitOrr5  objectrX   r   rG   r   <module>ry     s`   
 
 
 % ] ] ] ` ` 4 
+ (;"7 ; 8K+@ 
*{ *s *Z 3,8 ,S__(= , ,
 IIFFJJII	  &LLKKLL	)  ''		
,,				
**
**			"r
 r
rG   