
    ^h1                        S SK r S SKrS SKrS SKJrJr  S SKJrJrJ	r	J
r
JrJrJrJrJrJr  SSKJrJrJrJrJrJr  SSKJrJr  SSKJr  S SKJr  S SKrS	\S
\	\   4S jr S	\S
\	\   4S jr!\" S5      S\S
\"\RF                     4S j5       r$\ RJ                  \ RL                  \ RN                  \ RP                  4r)\)\ RT                  \ RV                  \ RX                  \ RZ                  4-   r.\ R^                  \ R`                  \ Rb                  \ Rd                  \ Rf                  \ Rh                  \ Rj                  \ Rl                  \ Rn                  \ Rp                  \ Rr                  \ Rt                  \ Rv                  S.r< " S S\=5      r>g)    N)CodeType	FrameType)
AnyCallableIteratorOptionalSequenceSetTupleTypeUnioncast   )EnhancedASTNotOneValueFoundSourceonlyfunction_node_typesassert_)
KnownIssueVerifierFailure)mangled_name)	lru_cachenodereturnc              #   V   #     [        U S5      (       a  U R                  n U v   Og M%  7f)Nparent)hasattrr   r   s    Y/home/james-whalen/.local/lib/python3.13/site-packages/executing/_position_node_finder.pyparentsr!      s+     
4"";;DJ    ')c              #   >   #    U v   [        U 5       S h  vN   g  N7fN)r!   r   s    r    node_and_parentsr%      s     
Jt}s      codec                 @    [        [        R                  " U 5      5      $ r$   )listdisget_instructions)r'   s    r    r+   r+      s    $$T*++    )z***@z///%+-z<<z>>&^|c            
       r   \ rS rSrSrS\S\\   S\R                  S\
S\4
S jrS	\S
\
SS4S jrS	\S\R                  S\4S jrS	\S\R                  SS4S jrS\
4S jr\S\R                  S	\S\4S j5       rS	\S\R                  SS4S jrS
\
S\\R                     4S jrS\R                  S\\R                     4S jrS
\
S\4S jrSr\R<                  S:  a  \R>                  4rS\R@                  \RB                  \RD                  \RF                  /\Q74S
\
S\$\   S\%\&S4   S\4S jjr'Sr(g) PositionNodeFinderB   a  
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                    [        UR                  5       Vs0 s H  ofR                  U_M     snU l        Xl        XPl        S U l        U R                  U5      S:X  a  US-  nU R                  U5      S:X  a  M   U R                  U5      U l	        U R                  U5      nUc   eU R                  U R                  U5      U l	        U R!                  U R                  U5        U R#                  U R                  U5        U R                  c  U R%                  U R                  U5        g ['        U R                  U R                  R(                  ;   5        g s  snf ! [         ai    U R                  U5      S;   a  [        R                  4nO(U R                  U5      S;   a  [        R                  4nOe U R                  USUS9U l	         GN=f = f)NCACHE   )LOAD_METHOD	LOAD_ATTR
STORE_ATTRDELETE_ATTR)CALLCALL_KW)end_col_offset
end_lineno)match_positionstyp)r+   f_codeoffsetbc_dictr9   r=   	decoratoropname	find_noderesultr   ast	AttributeCallinstruction
fix_resultknown_issuestest_for_decoratorverifyr   decorator_list)	selfr9   r:   r;   r<   r=   bcrJ   rU   s	            r    __init__PositionNodeFinder.__init__I   s   -=ell-KM-Kriil-KM
04 kk% G+QJE kk% G+	../DK> &&u-&&&oodkk;?$++{3U3 >>!KK[1DNNdkk&@&@@Aq N   	 {{5! &  }}&U#'::
 xxk.. @ ) DK1	s   E;E A/GGr   indexr   Nc                 f   [        UR                  [        R                  [        45      (       Ga  XR                  R
                  ;   a  UR                  n U R                  US-
  5      S:X  d  [        R                  S:  a  U R                  U5      S:X  d  g US-  nU R                  U5      S;   a  US-  nU R                  U5      S;   a  M  U R                  U5      R                  S5      (       a"  U R                  U5      U:X  a  X0l        Xl        g [        R                  S:  a  US-  nM  g g )N   PRECALL      rE   r@   )r?   EXTENDED_ARGSTORE_)
isinstancer   rR   ClassDefr   rZ   rO   sysversion_info
startswithrP   rQ   rN   )r[   r   r_   	node_funcs       r    rX   %PositionNodeFinder.test_for_decorator   s   t{{S\\3F$GHH222I& [[+y8C<L<LPW<WE*f4
kk%(,EEQJE kk%(,EE KK&11(;;u-:"+K%)N##g-QJEM 	 3 Ir,   rU   c                    [         R                  S:  a]  UR                  S;   aM  [        UR                  [
        R                  5      (       a$  XR                  R                  L a  UR                  $ [         R                  S:  a  UR                  S;   a  [        UR                  R                  [
        R                  [
        R                  [
        R                  [
        R                  45      (       aW  [        UR                  [
        R                  5      (       a.  XR                  R                  L a  UR                  R                  $ [         R                  S:  a  UR                  S:X  a  U R                  U5      nUb  UR                  S:X  aq  UR                  UR                  :X  aW  [        UR                  [
        R                  5      (       a.  XR                  R                   L a  UR                  R                  $ [         R                  S:  ag  UR                  S:X  aW  [        UR                  [
        R                  5      (       a.  XR                  R                   L a  UR                  R                  $ [         R                  S:  a  UR                  S:X  a  U R                  U5      nUb  UR                  S:X  a  UR"                  S	;   aq  UR                  UR                  :X  aW  [        UR                  [
        R                  5      (       a.  XR                  R                   L a  UR                  R                  $ [         R                  S:  ad  [        U[
        R$                  5      (       aE  [        UR&                  [
        R(                  5      (       a  UR                  S
:w  a  UR*                  $ U$ )N)rd   re      GET_ITERFOR_ITER)rd   re      rE   
LOAD_CONSTBEFORE_WITHrd      LOAD_SPECIAL)	__enter__
__aenter__	UNARY_NOT)rj   rk   rO   rh   r   rR   ForiterListCompSetCompDictCompGeneratorExpcomprehensioninstruction_before	positionswithitemcontext_exprargreprUnaryOpopNotoperand)r[   r   rU   befores       r    rV   PositionNodeFinder.fix_result   s    
*""&>>4;;00(((  ;; 
*""&>>""s{{CLL#:J:JK  4;;s'8'899(((
 ;;%%%y([-?-?6-I,,[9F"MM\1$$(=(==t{{CLL99KK4444 {{))) 	)""m34;;55000 ;;%%%w&;+=+=+G,,[9F"MM^3NN&@@$$(=(==t{{CLL99KK444{{)))w&:dCKK+H+HZX\X_X_`c`g`gMhMhmxmm  CN  nN<< r,   c                    UR                   S;   a  [        U[        5      (       a  [        U[        5      (       a  [        R
                  " UR                  5       Vs/ s HA  n[        U[        R                  5      (       d  M$  [        UR                  5      S:  d  M?  UPMC     nn[        US5        [        U5      S:X  a  [        [        US   5      =ol        O[        SU-  5      e[        SU-  5      e[        R                   S S S:X  aZ  [        U[        R                  5      (       a;  UR                   S	:X  a+  [#        S
 [%        U5       5       5      (       a  [        S5      e[        U[        R&                  5      (       a  [        S5      e[#        S [%        U5       5       5      (       a  [        S5      e[        R                   S:  Ga  [        U[        R(                  5      (       Gag  [        UR*                  [        R,                  5      (       Ga=  UR*                  R.                  S:X  Ga"  UR0                  n[3        US5      (       a}  [        U[        R4                  [        R6                  45      (       dN  UR0                  n[3        US5      (       a1  [        U[        R4                  [        R6                  45      (       d  MN  S n[3        US5      (       aD  / UR8                  R:                  QUR8                  R8                  QnU(       a  US   R<                  nUR                   UR>                  4SSU4SU4SU44;   a  [        S5      eU RA                  X!5      (       a  [        S5      eUR                   S:X  a  UR>                  S:X  a  [        S5      eUR                   S	:X  a^  [        U[        R(                  5      (       d?  [#        S [C        U5       5       5      (       a  [        R                   S:  a  [        S5      e[        R                   S:  a  UR                   S ;   a  [        S!UR                    S"35      eUR                   S#;   a  UR>                  S$:X  a  [        S%5      eUR                   S&:X  a  [        U[        RD                  5      (       ac  [        URF                  [        R                  5      (       a:  [        URH                  [        RJ                  5      (       a  URF                  U l        [        R                   S':  Ga  U RM                  5       =n(       a  [O        U RP                  RS                  5       5      S(   n	US)-  URT                  s=:  a	  U	S*-
  :  d  O  [        S+5      eU RV                  RX                  RZ                  S,:X  a  UR                   S-:X  a  [        S.5      eU RV                  RX                  RZ                  S,:X  a*  [        U[        R\                  5      (       a  [        S/5      e[        U[        R^                  5      (       aC  U RV                  RX                  RZ                  UR`                  R.                  :X  a  [        S05      eUR                   S:X  a  URb                  S,:X  a  [        S15      eUR                   S2:X  a+  [        U[        R,                  5      (       a  [        S35      eg g g s  snf )4N
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 fixedrd   )rd      r   rE   c              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr$   rh   rR   Assert.0ns     r    	<genexpr>2PositionNodeFinder.known_issues.<locals>.<genexpr>>  s      N7M!Jq#**--7Mr"   zBknown bug in 3.11.1 https://github.com/python/cpython/issues/95921assertc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr$   )rh   rR   patternr   s     r    r   r   J  s      J3Iaz!S[[))3Ir"   z)pattern matching ranges seems to be wrongrc   superr   args)
LOAD_DEREF	__class__	LOAD_FASTLOAD_FAST_BORROWr   zsuper optimizationzCexeption cleanup does not belong to the last node in a except block
STORE_NAME__classcell__zstore __classcell__c              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr$   r   )r   ps     r    r   r     s     E}!Jq#**--}r"   )rd   r   r@   z&exception generation maps to conditionrd      )STORE_FAST_STORE_FASTSTORE_FAST_LOAD_FASTLOAD_FAST_LOAD_FASTzcan not map z to two ast nodesr   r   r   z^loading of __class__ is accociated with a random node at the end of a class if you use super()r   rw   r@   ra   zAsynthetic opcodes in annotations are just bound to the first node__annotate__STORE_SUBSCRz"synthetic code to store annotationz<some opcodes in the annotation are just bound specific nodesz7some opcodes in the annotation are just bound TypeAliaszjust a store of the annotationr   z3part of a check that a name like `all` is a builtin)2rO   rh   types_cmp_issuetypes_cmp_issue_fixrR   walktestComparelenopsr   r   r   rQ   r   rj   rk   anyr%   r   rT   funcNameidr   r   AsyncFunctionDefFunctionDefr   posonlyargsargargvalis_except_cleanupr!   r   r   r   r   annotation_header_sizer)   rM   keysrL   r9   rK   co_name	AnnAssign	TypeAliasnamer   )
r[   r   rU   r   comparisonsr   	first_argr   header_lengthlast_offsets
             r    rW   PositionNodeFinder.known_issues  s   !GGJ/M
 M
 $ 344 !XXdii00!!S[[1 69!%%j1n 0   %GH{#q()-k;q>)JJD;$NRVW  !!NRV!WXX Ra J.4--""f,N7G7MNNNT  dCJJ'' X&&J3CD3IJJJHII '4**499chh//		'
 ;;D$))*s++S__=3 3 {{	 $))*s++S__=3 3 ItV$$@..@@ $QI""K$6$67+i(#Y/y)	<  !!566!!+44bcc-+2D2D2W 233 &(tCHH--Ewt}EEE  J.EFFw&!! & 
 !<0B0B/CCT!UVV!!%EE+J\J\`kJk !t 
 ""l2tS[[11t||CKK88tww00 #llv% !% ; ; ==}= !2!2!45b9&q;+=+=L{1}L %%hii::$$,,n<ASASUcAc$%IJJ::$$,,n<DQTQ^Q^A_A_$%cdd$//TZZ5F5F5N5NPTPYPYP\P\5\ !Z[[!!\1k6I6I^6[ !ABB!!W,D1J1J !VWW 2K,1 &As   #[![![!c                     [         R                  S:  au  [        R                  " U R                  R                  5       S5       Vs/ s H  oR                  PM     nn[        U5      S:X  a  US   S;   a  US	 SnOUS	 SnU/ SQ:X  a  U$ gs  snf )Nrw      r   )COPY_FREE_VARS	MAKE_CELL   )RESUMEr   LOAD_SMALL_INTr   POP_JUMP_IF_FALSE	NOT_TAKENLOAD_COMMON_CONSTANT)rj   rk   	itertoolsislicerM   valuesrO   r   )r[   instheaderheader_sizes       r    r   )PositionNodeFinder.annotation_header_size  s    f$,5,<,<T\\=P=P=RST,UV,UDKK,UFV6{A~!9 >>q	 !Kq	 !K   '&+ Ws   Br   c                 j  ^  T R                   S;  a  g[        U[        R                  5      (       ac  [        UR                  [        R
                  5      (       a:  T R                   R                  S5      (       a  [        U5      T R                  :X  a  g[        U[        R                  5      (       ac  [        UR                  [        R                  5      (       a:  T R                   R                  S5      (       a  [        U5      T R                  :X  a  g[        U 4S j[        U5       5       5      $ )N)r   
STORE_FASTSTORE_DEREFSTORE_GLOBALDELETE_NAMEDELETE_FASTDELETE_DEREFDELETE_GLOBALFrg   DELETE_c              3      >#    U  HQ  n[        U[        R                  5      =(       a+    UR                  =(       a    [	        U5      TR
                  :H  v   MS     g 7fr$   )rh   rR   ExceptHandlerr   r   r   )r   r   r   s     r    r   7PositionNodeFinder.is_except_cleanup.<locals>.<genexpr>  sC      
" q#++,ZZLOt{{<ZZ"s   AA)rO   rh   rR   r   ctxStorerl   r   r   Delr   r!   )r   r   s   ` r    r   $PositionNodeFinder.is_except_cleanup  s    ;; 	
 	
 , tSXX&&488CII..&&x00T"dkk1  tSXX&&488CGG,,&&y11T"dkk1  
T]
 
 	
r,   c           	         ^^^ TR                   nS n[        S5      nS[        [        [        [           4   S[
        S[        4U4S jjnS[        [        [        [        S4   4   S[
        S[        4U4S	 jjnUS
:X  a  gU" S5      (       a,  U" [        R                  [        R                  45      (       a  gU" S5      (       aJ  U" [        R                  [        R                  [        R                  [        R                  45      (       a  g[         R"                  S:  aH  U" S5      (       a;  U" [        R                  [        R                  [        R                  45      (       a  gU" S5      (       a,  U" [        R$                  [        R&                  45      (       a  gU" S5      (       a  U" [        R(                  5      (       a  gU" SSS9(       a  U" [        R*                  5      (       a  gU" SSS9(       d  U" SSS9(       d  U" S5      (       a  U" [        R,                  [        R.                  [        R0                  S9(       aZ  [3        [5        [        R.                  [5        [        R,                  T5      R6                  5      R8                  [        5      (       a  gU" S5      (       a  U" [        R*                  5      (       a  gU" S5      (       a4  U" [        R:                  TR<                  [        R>                  S9(       a  gU" S5      (       aD  U" [        R@                  5      (       d(  U" [        R,                  [        R0                  S9(       a  gU" S5      (       a  U" [        R                  5      (       a  gU" SS S9(       a  U" [        R.                  5      (       a  gU" S!5      (       a5  U" [        RB                  5      (       a  TR<                  [E        T5      :X  a  gU" S"5      (       ah  U" [        RF                  [        RH                  45      (       a=  [K        U4S# j[5        [        RF                  T5      RL                   5       5      (       a  gU" S$5      (       a|  U" [        RN                  [        R$                  [        RP                  45      (       d(  U" [        R:                  [        RR                  S%9(       a  TR<                  [E        T5      :X  a  g U" S&5      (       aC  TRZ                  R]                  S'5      nUS(:w  a"  U" [        R^                  [`        U   S9(       a  gU" [        Rb                  [        R>                  S%9(       a  U" S)[E        T5      S9(       a  gU" S*5      (       a  U" [        Rd                  5      (       a  gU" S+5      (       a)  U" [        Rf                  [        R>                  S%9(       a  gU" [        R:                  [        Rh                  S%9(       dQ  U" [        R:                  [        RR                  S%9(       a  [3        TRj                  [        R^                  5      (       aa  U" S,5      (       aT  [3        TR<                  [l        5      (       a  [E        T5      TR<                  ;   a   gTR<                  [E        T5      :X  a  gU" [        R:                  [        R>                  S%9(       a  U" S-[E        T5      S9(       a  gU" [        R.                  5      (       a/  U" S.[5        [        R.                  T5      R8                  S9(       a  gU" [        R                  [        R                  [        R                  [        R                  [        Rn                  45      (       a  U" S/5      (       a  g[         R"                  S:  Ga  U" [        Rp                  [        Rr                  S9(       a  U" S0S1S29(       a  gU" [        Rf                  5      (       a  U" S35      (       a  gU" [        RH                  5      (       a  U" S0S4S29(       a  gU" [        Rt                  5      (       d)  [3        TRj                  [        R                  5      (       a  U" S0S5S29(       a  gU" [        R:                  5      (       a  U" S6S7S9(       a  gU" [        Rv                  5      (       a:  U" S0S8S29(       d-  U" S9S:S29(       d!  U" S9S;S29(       d  U" S<[E        T5      S29(       a  gU" [        Rx                  5      (       a#  U" S0S=S29(       d  U" S<TRz                  S29(       a  gU" [        R|                  5      (       a#  U" S0S>S29(       d  U" S<TRz                  S29(       a  gU" [        R~                  5      (       a:  U" S0S?S29(       d-  U" S"TRz                  R                  S29(       d  U" S5      (       a  gU" [        R$                  5      (       aE  TR                  (       a4  U" S@SAS29(       a  gU" SBSCS29(       a  gU" S0SDS29(       a  gU" S6S7S9(       a  gU" [        RN                  [        RP                  45      (       ag  TR                  (       aV  U" S5      (       a  gU" S9SES29(       a  gU" SFSGS9(       a  gU" SFSHS9(       a  g[         R"                  SI:  a  U" SJSKS9(       a  gU" SLSMS9(       a  gU" [        R@                  5      (       a  U" SSS9(       d  U" SN5      (       a  gU" [        R                  5      (       a  U" SO5      (       a  g[         R"                  SP:  Ga  U" SQ5      (       a  gU" SR5      (       a  U" [        Rd                  5      (       a  gU" SS5      (       a,  U" [        R&                  [        R$                  45      (       a  gU" SFSAS9(       a  gU" SFS7S9(       a  gU" ST5      (       ah  U" [        RN                  [        R$                  [        R~                  [        Rv                  [        R                  [        RP                  45      (       a  gU" SF5      (       a@  U" [        R~                  5      (       a%  TRz                  R                  TR<                  :X  a  gU" SLSUS9(       a  gU" ST5      (       a*  [3        TRj                  [        Rv                  5      (       a  gU" S9SVS29(       a;  U" [        Rv                  [        R|                  [        Rx                  45      (       a  g[         R"                  SI:  a  U" S&S(S29(       a  U" [        Rf                  5      (       a  gU" SWS7S9(       a  gU" SXSYS9(       a  gU" SJ5      (       a6  U" [        R:                  5      (       a  TR                  TR<                  ;   a  g[        S5      n	[        S5      mUR                  SZ5      (       a"  [        Rf                  n	[        Rh                  nGOUR                  S[5      (       a+  [        R,                  n	[`        TRZ                     mU4S\ jnGO[UR                  S]5      (       a^  [        Rp                  n	[        [        Rr                  [        R                  [        R                  [        R                  S^9U   mU4S_ jnOUS`;   a'  [        Rb                  n	[        Rh                  nU4Sa jnOUSb;   a'  [        R:                  n	[        Rh                  nU4Sc jnOUS;   a  [        R(                  n	Sd nOsUR                  Se5      (       a!  [        RR                  n[        Rf                  n	O<UR                  Sf5      (       a&  [        RR                  n[        Rb                  n	U4Sg jn[        TShS5      n
U[        S5      L=(       d#    [        TSh5      (       + =(       d    [3        X5      n[3        TU	5      (       a  U(       a  U" T5      (       a  gSi[        T5      R                  < SjTR                   < 3n[        UTT5      e)kz5
checks if this node could gererate this instruction
c                     g)NT es    r    <lambda>+PositionNodeFinder.verify.<locals>.<lambda>  s    r,   Nopnameskwargsr   c           	         > [        U [        5      (       a  U /n TR                  U ;   =(       a     UU Vs0 s H  o"[        TU5      _M     sn:H  $ s  snf )z
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

)rh   strrO   getattr)r   r   krU   s      r    
inst_match-PositionNodeFinder.verify.<locals>.inst_match  sa     '3''")%%0 V4:@4:q7;**F@ 6  @s   A	node_type.c                 p   > [        TU 5      =(       a#    [        U4S jUR                  5        5       5      $ )z
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      >#    U  HA  u  p[        U[        5      (       a  [        [        TU5      U5      O[        TU5      U:H  v   MC     g 7fr$   )rh   typer   )r   r   vr   s      r    r   @PositionNodeFinder.verify.<locals>.node_match.<locals>.<genexpr>:  sO      7 +DA a&& 74+Q/T1%*+ +s   A	A)rh   allitems)r   r   r   s     r    
node_match-PositionNodeFinder.verify.<locals>.node_match1  s5     dI. 3 7 #LLN	7 4 r,   r?   rE   )rE   r   r   rc   )LOAD_FAST_AND_CLEARr   )rE   CALL_FUNCTION_EXr   	LOAD_NAME__annotations__)r   rA   joinrB   )rE   BUILD_STRING)leftr   r   )r   r   )r   r   r  )r   )rv   WITH_EXCEPT_START)r   r   __doc__)r   r   r   r   )r   r   r   r   c              3   p   >#    U  H+  n[        [        [        U5      5      TR                  :H  v   M-     g 7fr$   )r   r   r   r   )r   aliasrU   s     r    r   ,PositionNodeFinder.verify.<locals>.<genexpr>  s+     {^zUZLk5!9:k>P>PP^zs   36)r   r   r   r   )r   	BINARY_OP=z[]rD   )JUMP_IF_TRUE_OR_POPJUMP_IF_FALSE_OR_POPPOP_JUMP_IF_TRUEr   DELETE_SUBSCR)r  r   LOAD_FAST_CHECKr   LOAD_GLOBALr   LOAD_FROM_DICT_OR_DEREF!LOAD_FAST_BORROW_LOAD_FAST_BORROW)r   r   r   )ru   r   rq   CALL_INTRINSIC_1INTRINSIC_UNARY_POSITIVE)r   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  z.type_params)r   r   z.generic_baseINTRINSIC_SUBSCRIPT_GENERIC"INTRINSIC_SET_FUNCTION_TYPE_PARAMSr   	.defaults.kwdefaultsrw   r  )r.  r/  r   __classdictcell__)LIST_APPENDrE   FORMAT_VALUEr   NOPTO_BOOLrF   r   __static_attributes__INTRINSIC_SET_TYPEPARAM_DEFAULTr   )r   r  __conditional_annotations__)BINARY_SUBSCRzSLICE+BINARY_c                 `   > [        [        [        R                  U 5      R                  T5      $ r$   )rh   r   rR   BinOpr   r   op_types    r    r   r     s    ZSYY0B0E0Ew%Or,   UNARY_)UNARY_POSITIVEUNARY_NEGATIVEr|   UNARY_INVERTc                 `   > [        [        [        R                  U 5      R                  T5      $ r$   )rh   r   rR   r   r   r<  s    r    r   r     s    ZS[[!0D0G0G%Qr,   )rB   rA   LOOKUP_METHODLOAD_SUPER_ATTRc                 4   > [        U 5      TR                  :H  $ r$   r   r   r   rU   s    r    r   r         \!_8J8J%Jr,   )r  r  r   r   LOAD_CLASSDEREFc                 f   > [        [        R                  U 5      R                  TR                  :H  $ r$   )r   rR   r   r   r   rG  s    r    r   r     s!    T#((A%6%9%9[=O=O%Or,   c                 b    [        [        [        R                  U 5      R                  5      S:H  $ )Nr   )r   r   rR   r   r   r   s    r    r   r     s    Sckk1)=)A)A%Ba%Gr,   )STORE_SLICEr   rC   c                 4   > [        U 5      TR                  :H  $ r$   rF  rG  s    r    r   r     rH  r,   r   zast.z is not created from )MrO   r  r   r   r	   r   boolr   r   rR   With	AsyncWithr   r   r   r   rj   rk   ri   rT   r   r   r;  ConstantModrh   r   r  valuer   r   r   	JoinedStrr   r   Import
ImportFromr   namesr   r   r   MatchAsMatchSequence
MatchValuer   removesuffix	AugAssignop_type_maprS   BoolOp	SubscriptLoadr   tupler}   r   UAddYieldTypeVarTypeVarTupler   	ParamSpecr   r   type_paramsFormattedValueLambdarl   dictUSubr   Invertr   r   __name__r   )r[   r   rU   op_nameextra_filterr   r   r  r   rJ   node_ctx	ctx_matchtitler=  s    ``          @r    rY   PositionNodeFinder.verify  sN   
 $$6DJ	c8C=&8 9 	S 	T 	&	%eD#I.>(>"? 	3 	SW 	  gf*chh-F"G"G>??J\\3++S[[#,,GE
 E
  '@AACLL#++s||DEE233
\\388$9
 9
 <==*KKC
 C
 k*;<MMB
 B
  =8k&96773993<<CGGD4d399d.C.H.HIOOQTUU n%%*S]]*C*C 455*HH++;
 n%%s}}%%CII#'')J9::z#((?S?S4YGJLLM
 M
  RSS3,,--""l4&88  RSSCJJ788{^bcfcmcmos^t^z^z{{{  RSSCOOS\\3;O;OPQQHH		
 ""l4&88 k""##005CDyZ;s;KLcmm1j,t"47
 
 
 $$o&&:cmm+Q sxxSXX.3883t{{CMM::	
 
 9C;CUCUV[8\8\L+"4"44  ##|D'99chhCGG,<\RVEW2
 cll##
+Dt4L4R4R)
 \\3;;c6F6FP
 
122w&#++#((3
",F9 #--((Z-G-G#..))j",C/  399%%DKKAQAQ)R)R/9ST#((##
<(W#++&&-7JK&0N &0T ;\RVEWX#**++-7OP;TYYO#--((-7LM;TYYO #--((1;PQ!R\`\e\e\h\h "&)) #,,''D,<,<L* 9?S&0M l/B3??3+?+?@AAdFVFVf%%&0T k=k?##w.!"EMhi,/BC
 #--((;v6566#,,--*^2L2Lw&%  )$$CJJ)?)?)$$SXXs||4L)M)M+n=+o>:;;
OOLLMMKKJJ((	A 	A  ;''s}}--IILLK$6$66,.EF:;;
4;;WZWbWb@c@c,5VW\fhkhshstw  uB  uB  CF  CS  CS  hT  ]U  ]Uw&+d3
3==8Q8Q,_E4=Z[=>>:chhCWCW\`\c\cgrgygy\y
 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'')(( 	 dC  Y<3E3E
 J

 eT;77r,   c                 :    U R                   R                  US 5      $ r$   )rM   get)r[   r_   s     r    rU   PositionNodeFinder.instruction  s    ||d++r,   c                 T    U R                   R                  UR                  S-
  S 5      $ )Nr@   )rM   ru  rL   )r[   rU   s     r    r   %PositionNodeFinder.instruction_before  s&     || 2 2Q 6==r,   c                 D    U R                  U5      nUc  gUR                  $ )Nr?   )rU   rO   )r[   r_   is      r    rO   PositionNodeFinder.opname  s#    


5
!9xxr,   r   rc   )linenorH   
col_offsetrG   rI   rJ   .c                    ^^^ U R                  U5      nUc   eUR                  mTb  TR                  c   e[        UUU4S jU R                  R
                  TR                      5       5      $ )Nc              3   *  >^#    U  H  m[        TT5      (       d  M  [        T[        R                  5      (       a  M7  [        T[        R                  5      (       a  MX  [	        UU4S  jT 5       5      (       d  Mu  [        [        T5      v   M     g7f)c              3   V   >#    U  H  n[        TU5      [        TU5      :H  v   M      g 7fr$   )r   )r   attrr   positions     r    r   9PositionNodeFinder.find_node.<locals>.<genexpr>.<genexpr>  s+      +D $'74+>>+s   &)N)rh   rR   ExprrZ  r  r   r   )r   r   rI   r  rJ   s    @r    r   /PositionNodeFinder.find_node.<locals>.<genexpr>
  st      
C$$ $ dCHH- $
 dCNN3 $  +  $Dd##Cs   BBBB<B)rU   r   r|  r   r=   _nodes_by_line)r[   r_   rI   rJ   rU   r  s     `` @r    rP   PositionNodeFinder.find_node  sn    " &&u-&&&((#(CCC 
228??C
 
 	
r,   )rM   rN   r9   rQ   r=   ))rm  
__module____qualname____firstlineno__r  r   r
   r   rR   Moduleintr   r]   rX   r*   InstructionrV   rW   r   staticmethodrN  r   rY   r   rU   r   r   rO   extra_node_typesrj   rk   
type_paramexprstmtexcepthandlerr   r	   ra  r   rP   r5  r   r,   r    r7   r7   B   s   9Bi 9BK0@ 9B

 9B[^ 9Bhn 9Bv-{ -3 -4 -^ee.1ooe	eNfX fX3?? fXt fXTc 2 5
 5
{ 5
t 5
 5
nJ8; J8S__ J8 J8X, ,#//)B ,>??>	#//	">
C C  
6!NN,
*
 HHHHKK	!

 !
"
"
 "#"
 49"
  
!"
 "
r,   r7   )?rR   rj   r*   typesr   r   typingr   r   r   r   r	   r
   r   r   r   r   	executingr   r   r   r   r   r   _exceptionsr   r   _utilsr   	functoolsr   r   r!   r%   r)   r  r+   IfExpIfr   Whiler   r   r   r   r   r   PowMultMatMultFloorDivDivrR  AddSubLShiftRShiftBitAndBitXorBitOrr]  objectr7   r   r,   r    <module>r     sR   
 
 
 % ] ] ] ` ` 4    
+ (;"7 ; 8K+@ 
 3,8 ,S__(= , ,
 IIFFJJII	  &LLKKLL	)  ''		
,,				
**
**			"S
 S
r,   