
    Mh                     V   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j"                 fd            Z#e j$        e j%        e j&        e j'        fZ(e(e j)        e j*        e j+        e j,        fz   Z-e j.        e j/        e j0        e j1        e j2        e j3        e j4        e j5        e j6        e j7        e j8        e j9        e j:        dZ; G d de<          Z=dS )    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              #   F   K   	 t          | d          r| j        } | V  nd S )NTparent)hasattrr   r   s    _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/executing/_position_node_finder.pyparentsr       s9      4"" 	;DJJJJE    c              #   <   K   | V  t          |           E d {V  d S N)r    r   s    r   node_and_parentsr$      s3      
JJJt}}r!   c                    t          | t          j                  r	| j        }n't          | t          j                  r	| j        }nt          | t          j                  r(| j        p| j        	                    d          d         }nt          | t          j
        t          j        t          j        f          r| j        }nt          | t          j                  r| j        sJ | j        }n^t          j        dk    r"t          | t          j                  r| j        }n,t#          dt%          t'          |                     z             |                    d          r|                    d          s| j        | }}t          |t          j                  r	||j        vs=t1          |d          snT|j        |}}t          |t          j                  4||j        v=|j                            d          }|dk    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   r5   r   child
class_names        r   mangled_namerG      s    $&& Hy	D#(	#	# Hw	D39	&	& 
H{5diooc2215	D3?CL#:NO	P	P Hy	D#+	,	, Hyy		V	#	#
4(D(D	#Y5d4::6F6FFGGGt /T]]4%8%8 /[ufS\22 	/uFL7P7P6(++ v5F	 fS\22 	/uFL7P7P {))#..J2~~Z'$.. Kr!      codec                 D    t          t          j        |                     S r#   )listdisget_instructions)rI   s    r   rM   rM   I   s    $T**+++r!   )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j        d
eej                 fdZd	e	d
efdZdZej        dk    rej        fZdej        ej        ej         ej!        geR fd	e	de"e         de#e$df         d
efdZ%dS )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                 d   d t          |j                  D             | _        || _        d | _        |                     |          dk    r|dz  }|                     |          dk    	 |                     |          | _        nx# t          $ rk |                     |          dv rt          j
        f}n&|                     |          dv rt          j        f}n |                     |d|          | _        Y nw xY w|                     |          }|J |                     | j        |          | _        |                     | j        |           |                     | j        |           | j        |                     | j        |           d S t#          | j        | j        j        v            d S )Nc                     i | ]
}|j         |S  )offset).0bcs     r   
<dictcomp>z/PositionNodeFinder.__init__.<locals>.<dictcomp>u   s    MMMrbiMMMr!   CACHE   )LOAD_METHOD	LOAD_ATTR
STORE_ATTRDELETE_ATTR)CALLCALL_KW)end_col_offset
end_lineno)match_positionstyp)rM   f_code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]   rp   rx   s           r   __init__zPositionNodeFinder.__init__t   s   MM-=el-K-KMMM04 kk%  G++QJE kk%  G++	..//DKK 	 	 	 {{5!! &   }&U##':::
 xk.. @ )  DKKK1	< &&u--&&&oodk;??$+{333U333 >!KK[11111DNdk&@@AAAAAs   *B A2C:9C:r   indexr   Nc                 N   t          |j        t          j        t          f          r||j        j        v r|j        }	 |                     |dz
            dk    st          j        dk    r|                     |          dk    sd S |dz  }|                     |          dv r|dz  }|                     |          dv |                     |          	                    d          r)| 
                    |          |k    r|| _        || _        d S t          j        dk     r|dz  }d S d S )	NT   PRECALLr'   rk   rf   )re   EXTENDED_ARGSTORE_)r-   r   r.   r8   r   r}   rt   r;   r<   rA   ru   rv   rs   )r~   r   r   	node_funcs       r   r{   z%PositionNodeFinder.test_for_decorator   s@   t{S\3F$GHH,	222I&& [[++y88C<LPW<W<WE**f44E
kk%((,EEEQJE kk%((,EEE KK&&11(;;u--::"+DK%)DNF#g--QJEM&,	 ,	22r!   rx   c                    t           j        dk    r=|j        dv r4t          |j        t
          j                  r||j        j        u r|j        S t           j        dk    r|j        dv rt          |j        j        t
          j        t
          j	        t
          j
        t
          j        f          r9t          |j        t
          j                  r||j        j        u r|j        j        S t           j        dk    rv|j        dk    rk|                     |          }|T|j        dk    rI|j        |j        k    r9t          |j        t
          j                  r||j        j        u r|j        j        S t           j        dk    rD|j        dk    r9t          |j        t
          j                  r||j        j        u r|j        j        S |S )N)r(   r)      GET_ITERFOR_ITER)r(   r)      rk   
LOAD_CONSTBEFORE_WITH)r;   r<   rt   r-   r   r.   ForiterListCompSetCompDictCompGeneratorExpcomprehensioninstruction_before	positionswithitemcontext_expr)r~   r   rx   befores       r   ry   zPositionNodeFinder.fix_result   s    
**"&>>>4;00 ?(((  ; 
**"&>>>"s{CL#:JK  ?
 4;s'899 ? (((
 ;%%y(([-?6-I-I,,[99F"M\11$(===t{CL99 >DK4444 {)) 	))"m334;55 4000 ;%%r!   c                    |j         dv rt          |t                    rt          |t                    r{d t	          j        |j                  D             }t          |d           t          |          dk    r#t          t          |d                   x}| _        n$t          d|z            t          d|z            t          j        d d         d	k    rZt          |t          j                  r@|j         d
k    r5t!          d t#          |          D                       rt          d          t          |t          j                  rt          d          t!          d t#          |          D                       rt          d          t          j        dk    r%t          |t          j                  r
t          |j        t          j                  r|j        j        dk    r|j        }t1          |d          rct          |t          j        t          j        f          s=|j        }t1          |d          r&t          |t          j        t          j        f          =d }t1          |d          r)g |j        j        |j        j        }|r|d         j        }|j         |j        fdd|fd|ffv rt          d          |                     ||          rt          d          |j         dk    r|j        dk    rt          d          |j         d
k    r_t          |t          j                  sEt!          d tA          |          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    rht          |t          j!                  rPt          |j"        t          j                  r3t          |j#        t          j$                  r|j"        | _        d S d S d S d S d S d S )&N
COMPARE_OPIS_OPCONTAINS_OPc                 v    g | ]6}t          |t          j                  rt          |j                  d k    4|7S )r   )r-   r.   Comparelenopsrb   ns     r   
<listcomp>z3PositionNodeFinder.known_issues.<locals>.<listcomp>@  sG       !!S[11 7:!%jj1nn 6Dnnr!   z expected at least one comparisonr   r   z4multiple chain comparison inside %s can not be fixedz+chain comparison inside %s can not be fixedr(   )r(      r   rk   c              3   J   K   | ]}t          |t          j                  V  d S r#   r-   r.   Assertr   s     r   	<genexpr>z2PositionNodeFinder.known_issues.<locals>.<genexpr>W  s.      NN!Jq#*--NNNNNNr!   zBknown bug in 3.11.1 https://github.com/python/cpython/issues/95921assertc              3   J   K   | ]}t          |t          j                  V  d S r#   )r-   r.   patternr   s     r   r   z2PositionNodeFinder.known_issues.<locals>.<genexpr>c  s.      JJaz!S[))JJJJJJr!   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   J   K   | ]}t          |t          j                  V  d S r#   r   )rb   ps     r   r   z2PositionNodeFinder.known_issues.<locals>.<genexpr>  s.      EE!Jq#*--EEEEEEr!   )r(   r   rf   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   )%rt   r-   types_cmp_issuetypes_cmp_issue_fixr.   walktestr   r   r   r   rv   r   r;   r<   r   anyr$   r   rw   funcr1   r2   r   r   r9   r7   r   posonlyargsargargvalis_except_cleanupr    UnaryOpoperandopNot)r~   r   rx   comparisonsr   	first_argr   s          r   rz   zPositionNodeFinder.known_issues3  s   !GGGJ/M
 M
G $ 344 Y  Xdi00   %GHHH{##q(()-k;q>)J)JJD4;;$NRVW   !!NRV!WXXX RaR J..4-- /"f,,NN7G7M7MNNNNN - T   dCJ'' 	' X&&&JJ3CD3I3IJJJJJ 	JHIII ''4** (49ch// ( 	''
 ;D$)) #*s+S_=3 3 # {	 $)) #*s+S_=3 3 # ItV$$ ,@.@@ , $QI"K$67+i(y)<  
 !!5666!!+t44 	dbccc--+2D2W2W 2333 &((tCH-- )EEwt}}EEEEE )  J..EFFFw&&! &  
 !!U0B!U!U!UVVV![00[5G;5V5V !u  
 "l22tS[11 3t|CK88 3 tw00 3 #l7 '&( 32222222r!   instc                      j         dvrdS t          |t          j                  rSt          |j        t          j                  r4 j                             d          rt          |           j        k    rdS t          |t          j                  rSt          |j        t          j	                  r4 j                             d          rt          |           j        k    rdS 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   | ]=}t          |t          j                  o|j        ot	          |          j        k    V  >d S r#   )r-   r.   r:   r5   rG   r   )rb   r   r   s     r   r   z7PositionNodeFinder.is_except_cleanup.<locals>.<genexpr>  s]       
 
 q#+,,ZZLOOt{<Z
 
 
 
 
 
r!   )rt   r-   r.   r1   ctxStorerA   rG   r   Delr   r    )r   r   s   ` r   r   z$PositionNodeFinder.is_except_cleanup  s$   ; 	
 	
 	
 5, tSX&&	48CI..	 &&x00	 T""dk11 5 tSX&&	48CG,,	 &&y11	 T""dk11 5 
 
 
 
T]]
 
 
 
 
 	
r!   c           	      6   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dS  |d          r# |t          j
        t          j        f          rdS  |d          r9 |t          j        t          j        t          j        t          j        f          rdS t           j        dk    r9 |d          r. |t          j        t          j        t          j        f          rdS  |d          r# |t          j        t          j        f          rdS  |d          r |t          j                  rdS  |dd          r |t          j                  rdS  |dd          s |dd          s |d          r} |t          j        t          j        t          j                  rQt3          t5          t          j        t5          t          j                  j                  j        t                    rdS  |d          r |t          j                  rdS  |d          r) |t          j        j        t          j                  rdS  |d          r8 |t          j                   s! |t          j        t          j                  rdS  |d          r |t          j
                  rdS  |dd           r |t          j                  rdS  |d!          r/ |t          j!                  rj        tE                    k    rdS  |d"          r[ |t          j#        t          j$        f          r:tK          fd#t5          t          j#                  j&        D                       rdS  |d$          rg |t          j'        t          j        t          j(        f          s! |t          j        t          j)        %          rj        tE                    k    rdS 	  |d+          r< |t          j-        t\          j/        0                    d,                             rdS  |t          j1        t          j        %          r |d-tE                              rdS  |d.          r |t          j2                  rdS  |d/          r# |t          j3        t          j        %          rdS  |t          j        t          j4        %          s@ |t          j        t          j)        %          r;t3          j5        t          j-                  r |d0tE                              rdS  |t          j        t          j        %          r |d1tE                              rdS  |t          j                  r, |d2t5          t          j                  j                  rdS  |t          j        t          j        t          j        t          j        t          j6        f          r |d3          rdS t           j        dk    r |t          j7        t          j8                  r |d4d56          rdS  |t          j3                  r |d7          rdS  |t          j$                  r |d4d86          rdS  |t          j9                  st3          j5        t          j                  r |d4d96          rdS  |t          j                  r |d:d;          rdS  |t          j:                  rC |d4d<6          s4 |d=d>6          s' |d=d?6          s |d@tE                    6          rdS  |t          j;                  r! |d4dA6          s |d@j<        6          rdS  |t          j=                  r! |d4dB6          s |d@j<        6          rdS  |t          j>                  r1 |d4dC6          s" |dDj<        j?        6          s |d          rdS  |t          j                  rCj@        r< |dEdF6          rdS  |dGdH6          rdS  |d4dI6          rdS  |d:d;          rdS  |t          j'        t          j(        f          rAj@        r: |d          rdS  |d=dJ6          rdS  |dKdL          rdS  |dKdM          rdS  |dNdO          rdS  |t          j                   r |dd          s |dP          rdS  |t          jA                  r |dQ          rdS t           j        dRk    rG |dS          rdS  |dT          r |t          j2                  rdS  |dU          r# |t          j        t          j        f          rdS  |dKdF          rdS  |dKd;          rdS  |dK          rO |t          j'        t          j        t          j>        t          j:        t          jB        t          j(        f          rdS  |dK          r, |t          j>                  rj<        j?        j        k    rdS  |dNdV          rdS  |dK          r!t3          j5        t          j:                  rdS t          d          }t          d          |C                    dW          rt          j3        }t          j4        }nZ|C                    dX          r%t          j        }t\          j/                 fdY}n |C                    dZ          rSt          j7        }t          t          j8        t          jE        t          jF        t          jG        [          |         fd\}n|d]v rt          j1        }t          j4        }fd^}n|d_v rt          j        }t          j4        }fd`}nt|dv rt          j        }da }n`|C                    db          rt          j)        }t          j3        }n2|C                    dc          rt          j)        }t          j1        }fdd}t          ded          }	|t          d          up t          de           pt3          |	|          }
t3          |          r|
r |          rdS dft                    jJ        dgj         }t          |          )hzE
        checks if this node could gererate this instruction
        c                     dS )NTr`   es    r   <lambda>z+PositionNodeFinder.verify.<locals>.<lambda>  s     r!   Nopnameskwargsr   c                 j    t          | t                    r| g} j        | v o|fd|D             k    S )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

            c                 2    i | ]}|t          |          S r`   getattr)rb   krx   s     r   rd   zAPositionNodeFinder.verify.<locals>.inst_match.<locals>.<dictcomp>  s8     @ @ @/07;**@ @ @r!   )r-   strrt   )r   r   rx   s     r   
inst_matchz-PositionNodeFinder.verify.<locals>.inst_match   sg     '3'' $")%0 V @ @ @ @4:@ @ @ 6 r!   	node_type.c                 ~    t          |           o,t          fd|                                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   | ]N\  }}t          |t                    rt          t          |          |          nt          |          |k    V  Od S r#   )r-   r@   r   )rb   r   vr   s      r   r   z@PositionNodeFinder.verify.<locals>.node_match.<locals>.<genexpr>  sw       7 7 Aq a&&+
74++Q///T1%%*7 7 7 7 7 7r!   )r-   allitems)r   r   r   s     r   
node_matchz-PositionNodeFinder.verify.<locals>.node_match  sX     dI.. 3 7 7 7 7 #LLNN	7 7 7 4 4 r!   re   rk   )rk   r   r'   )LOAD_FAST_AND_CLEARr   )rk   CALL_FUNCTION_EXr   	LOAD_NAME__annotations__)r   rg   joinrh   )rk   BUILD_STRING)leftr   STORE_SUBSCR)r   r   )r2   r   r   )r   )r   WITH_EXCEPT_START)r   r   __doc__)r   r   r   r   )r   r   r   r   c              3   n   K   | ]/}t          t          t          |                    j        k    V  0d S r#   )rG   r   r   r   )rb   r3   rx   s     r   r   z,PositionNodeFinder.verify.<locals>.<genexpr>u  s>      {{UZLk5!9!9::k>PP{{{{{{r!   )r   r   r   r   )r   F)r   r   )r5   r   z==	BINARY_OP=rj   )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   r   r   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_APPENDrk   FORMAT_VALUEr   NOPTO_BOOLrl   __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>t  s     ZSY0B0B0Ew%O%O r!   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>}  s     ZS[!0D0D0G%Q%Q r!   )rh   rg   LOOKUP_METHODLOAD_SUPER_ATTRc                 4    t          |           j        k    S r#   rG   r   r   rx   s    r   r   z+PositionNodeFinder.verify.<locals>.<lambda>      \!__8J%J r!   )r   r  r   r   LOAD_CLASSDEREFc                 T    t          t          j        |           j        j        k    S r#   )r   r.   r1   r2   r   r+  s    r   r   z+PositionNodeFinder.verify.<locals>.<lambda>  s    T#(A%6%6%9[=O%O r!   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>  s"    Sck1)=)=)A%B%Ba%G r!   )STORE_SLICEr   ri   c                 4    t          |           j        k    S r#   r*  r+  s    r   r   z+PositionNodeFinder.verify.<locals>.<lambda>  r,  r!   r   zast.z is not created from )Lrt   r@   r   r   r	   r   boolr   r   r.   With	AsyncWithr   r   r   r   r;   r<   r8   rw   r   	AnnAssignr  ConstantModr-   r   r   valuer1   r   r   	JoinedStrr:   rG   Import
ImportFromr   namesr7   r9   r   MatchAsMatchSequence
MatchValue	AugAssignop_type_mapr  removesuffixr/   BoolOp	SubscriptLoadr   r   r   UAddYieldr=   TypeVarTupler5   	ParamSpec	TypeAliasr2   type_paramsFormattedValueLambdarA   dictUSubr   Invertr   r   __name__r   )r~   r   rx   op_nameextra_filterr   r   r   rp   node_ctx	ctx_matchtitler   s    ``         @r   r|   zPositionNodeFinder.verify  s   
 $6DnJJ	c8C=&8 9 	S 	T 	 	 	 	 	 	&	%eD#I.>(>"? 	3 	SW 	 	 	 	 	 	  gF:f 	**ch-F"G"G 	F:+,, 	\3+S[#,G2
 2
 	 F ''
@AA (
CL#+s|DEE ( F:233 	

\38$9
 9
 	 F:<== 	**KC
 C
 	 F:k*;<<< 	MB
 B
 	 F 
=888
	 :k&999
	 :677	
	 
393<CGDDD
	 4d39d.C.C.HIIOQTUU
	 F:n%% 	**S]*C*C 	F :455 	**H+;
 ;
 ;
 	 F:n%% 	Js}%%	)3CI#')J)J)J	 F:9:: 	zz#(?S?S 	F:4YGGG 	JJLM
 M
 	 F JRSS	
3,--	 "l4&8&888 F JRSS	
CJ788	 {{{{^bcfcmos^t^t^z{{{{{	 F JRSS	 
COS\3;OPQQ	 :H	  		 "l4&8&888F	 :k"" 	zzMk+*=*J*J3*O*OP(
 (
 (
 	 F:cm111 	jj,t"4"47
 7
 7
 	 F:
 
 		 j$$		 F:o&& 	::cm+Q+Q+Q 	F JsxSX...	 
38333	 t{CM::		 j  %%

 

 

	" F:chCG,,, 	<\RVEWEW2
 2
 2
 	 F:cl## 	

clD!9!9!?)
 )
 )
 	 F:\3;c6FP
 
 	j122	 Fw&&z#+#(333 

",F9 9 9  z#-(( ZZ-G-G z#.)) jj",C/ / /   
39%%)3DKAQ)R)R*/9STTT z#(## 

<(W(W(W z#+&& 

-7JKKK
:&0N  

 :&0T  
 :;\RVEWEWXXX
 z#*++ 
-7OPPP:;TYOOO z#-(( 
-7LMMM :;TYOOO  z#-(( J1;PQQQ!zCTY\  
 "z&)) F z#,'' D,< :L*    F:9?SSS F:&0M    F:l/BBB Fz3?3+?@AA dFV :f%% F:&0T    F:k=== F:k??? Fz,/BCCC 
 z#-(( 
;v666:566 z#,-- **^2L2L w&&z%   z)$$ CJ)?)? z)$$ SXs|4L)M)M z+n=== z+o>>> z+&& ::OLMKJ(	, 	,   
;''Js}-- ILK$666z,.EFFF z+&& :dk#++N+N 
 JJT

9:: '	K-C(CC	** $	K)C!+"56GOOOOLL))  	K+C"x"x' Z	  
 G RQQQLLWWW-C(CJJJJLL 
 
 
 (C(COOOOLL>>>+CGGLL ?@@ 	K)C-CC-- 	K)C-CJJJJL4-- tDzz! )4''')(C(( 	 dC   	Y 	<<3E3E 	F
 JJ

 eT;777r!   c                 8    | j                             |d           S r#   )rr   get)r~   r   s     r   rx   zPositionNodeFinder.instruction  s    |d+++r!   c                 H    | j                             |j        dz
  d           S )Nrf   )rr   rX  ra   )r~   rx   s     r   r   z%PositionNodeFinder.instruction_before  s$     | 2Q 6===r!   c                 B    |                      |          }|dS |j        S )Nre   )rx   rt   )r~   r   is      r   rt   zPositionNodeFinder.opname  s&    


5
!
!97xr!   r`   r'   )linenorn   
col_offsetrm   ro   rp   .c                     |                      |          }|J |j        j        J t          fd| j        j        j                 D                       S )Nc              3     K   | ]yt                    t          t          j                  ,t          t          j                  Ft	          fd D                       bt          t                    V  zdS )c              3   \   K   | ]&}t          |          t          |          k    V  'd S r#   r   )rb   r0   r   positions     r   r   z9PositionNodeFinder.find_node.<locals>.<genexpr>.<genexpr>  sP         $''74+>+>>     r!   N)r-   r.   Exprr?  r   r   r   )rb   r   ro   ra  rp   s    @r   r   z/PositionNodeFinder.find_node.<locals>.<genexpr>  s       
 
$$$
 dCH--	
 dCN33
      +    
d##
 
 
 
 
 
r!   )rx   r   r\  r   r]   _nodes_by_line)r~   r   ro   rp   rx   ra  s     `` @r   ru   zPositionNodeFinder.find_node  s    " &&u--&&&(#(C(C(C 
 
 
 
 
 
28?C
 
 
 
 
 	
r!   )&rQ  
__module____qualname__r   r   r
   r   r.   Moduleintr   r   r{   rL   Instructionry   rz   staticmethodr2  r   r|   r   rx   r   r   rt   extra_node_typesr;   r<   
type_paramexprstmtexcepthandlerr   r	   tupler   ru   r`   r!   r   rX   rX   m   s{        8Bi 8BK0@ 8B
 8B[^ 8Bhn 8B 8B 8B 8Bt-{ -3 -4 - - - -^TT.1oT	T T T TlJ+ J+3? J+t J+ J+ J+ J+X 5
 5
{ 5
t 5
 5
 5
 \5
ns8; s8S_ s8 s8 s8 s8 s8j, ,#/)B , , , ,>?>	#/	"> > > >
C C     
6!!N,
*
 HHK	!

 !
 !
"
 "
"
 "#"
 49"
  
!"
 "
 "
 "
 "
 "
r!   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   rG   rK   rh  rM   IfExpIfr   Whiler   r   r   r   r   r   PowMultMatMultFloorDivDivr7  AddSubLShiftRShiftBitAndBitXorBitOrrA  objectrX   r`   r!   r   <module>r     sY   



 



 



 % % % % % % % % ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 4 4 4 4 4 4 4      
+ (;"7    ; 8K+@    
*{ *s * * * *Z 3,8 ,S_(= , , , ,
 IFJI	  &LKL	)  '		
,				
*
*			 "s
 s
 s
 s
 s
 s
 s
 s
 s
 s
r!   