+
    Qi1                         ^ RI t ^ RIt^ RIt^ RIHtHt ^ RIHtHtH	t	H
t
HtHtHtHtHtHt ^RIHtHtHtHtHtHt ^RIHtHt ^RIHt ^ RIHt ^ RItR R	 lt R
 R lt!]! ^4      R R l4       t"] PF                  ] PH                  ] PJ                  ] PL                  3t']'] PP                  ] PR                  ] PT                  ] PV                  3,           t,R] PZ                  R] P\                  R] P^                  R] P`                  R] Pb                  R] Pd                  R] Pf                  R] Ph                  R] Pj                  R] Pl                  R] Pn                  R] Pp                  R] Pr                  /t: ! R R];4      t<R# )    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_cachec                F    V ^8  d   QhR\         R\        \         ,          /#    nodereturnr   r   )formats   "A/usr/lib/python3/dist-packages/executing/_position_node_finder.py__annotate__r!      s      + (;"7     c              #   X   "    \        V R4      '       d   V P                  p V x  K%  R# 5i)TparentN)hasattrr$   r   s   &r    parentsr'      s&     
4"";;DJs   (*c                F    V ^8  d   QhR\         R\        \         ,          /# r   r   )r   s   "r    r!   r!      s      ; 8K+@ r"   c              #   @   "   V x  \        V 4       R j  xL
  R #  L5iN)r'   r&   s   &r    node_and_parentsr+      s     
Jt}s   c                Z    V ^8  d   QhR\         R\        \        P                  ,          /# )r   coder   )r   listdisInstruction)r   s   "r    r!   r!      s#     , ,8 ,S__(= ,r"   c                 @    \        \        P                  ! V 4      4      # r*   )r.   r/   get_instructions)r-   s   &r    r2   r2      s    $$T*++r"   z***@z///%+-z<<z>>&^|c                     a  ] tR t^Bt o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	]
V 3R lR l4       tV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRt]P$                  R8  d   ]P(                  3tR]P*                  ]P,                  ]P.                  ]P0                  .]O53V 3R lR lltRtV tR# )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.
c          
      \   < V ^8  d   QhRS[ RS[S[,          RS[P                  RS[RS[/# )r   framestmtstreelastisource)r   r
   r   astModuleintr   )r   __classdict__s   "r    r!   PositionNodeFinder.__annotate__I   sB     9B 9Bi 9BK0@ 9B

 9B[^ 9Bhn 9Br"   c                   \        VP                  4       Uu/ uF  qfP                  VbK  	  upV n        Wn        WPn        R V n        V P                  V4      R8X  d   V^,          pK!   V P                  V4      V n	        V P                  V4      pVf   Q hV P                  V P                  V4      V n	        V P!                  V P                  V4       V P#                  V P                  V4       V P                  f   V P%                  V P                  V4       R # \'        V P                  V P                  P(                  9   4       R # u upi   \         do    T P                  T4      R9   d   \        P                  3pM)T P                  T4      R9   d   \        P                  3pMh T P                  TRTR7      T n	         ELGi ; i)NCACHE)match_positionstyp)LOAD_METHOD	LOAD_ATTR
STORE_ATTRDELETE_ATTR)CALLCALL_KW)end_col_offset
end_lineno)r2   f_codeoffsetbc_dictr?   rC   	decoratoropname	find_noderesultr   rD   	AttributeCallinstruction
fix_resultknown_issuestest_for_decoratorverifyr   decorator_list)	selfr?   r@   rA   rB   rC   bcrL   r^   s	   &&&&&&   r    __init__PositionNodeFinder.__init__I   s~   -=ell-KM-Kriil-KM
04 kk% G+QJE	../DK> &&u-&&&oodkk;?$++{3U3 >>!KK[1DNNdkk&@&@@Aq N   	 {{5! &  }}&U#'::
 xxk.. @ ) DK1	s   E
*E A5GGc                *   < V ^8  d   QhRS[ RS[RR/# )r   r   indexr   N)r   rF   )r   rG   s   "r    r!   rH      s"     - -{ -3 -4 -r"   c                z   \        VP                  \        P                  \        34      '       Ed
   WP                  P
                  9   d   VP                  p V P                  V^,
          4      R8X  g   \        P                  R8  d   V P                  V4      R8X  g   R# V^,          pV P                  V4      R9   d   V^,          pK!  V P                  V4      P                  R4      '       d%   V P                  V4      V8X  d   W0n        Wn        R# \        P                  R8  g   K  V^,          pK  R# R# )TPRECALLrQ   STORE_N      )rJ   EXTENDED_ARG)
isinstancer$   rD   ClassDefr   rc   rY   sysversion_info
startswithrZ   r[   rX   )rd   r   ri   	node_funcs   &&& r    ra   %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&11(;;u-:"+K%)N##g-QJEU 3 Ir"   c                @   < V ^8  d   QhRS[ RS[P                  RS[ /# )r   r   r^   r   r   r/   r0   )r   rG   s   "r    r!   rH      s.     e ee.1ooe	er"   c                   \         P                  R8  da   VP                  R9   dP   \        VP                  \
        P                  4      '       d&   WP                  P                  J d   VP                  # \         P                  R8  d   VP                  R9   d   \        VP                  P                  \
        P                  \
        P                  \
        P                  \
        P                  34      '       dZ   \        VP                  \
        P                  4      '       d0   WP                  P                  J d   VP                  P                  # \         P                  R8  d   VP                  R8X  d   V P                  V4      pVe   VP                  R8X  du   VP                  VP                  8X  dZ   \        VP                  \
        P                  4      '       d0   WP                  P                   J d   VP                  P                  # \         P                  R8  dk   VP                  R8X  dZ   \        VP                  \
        P                  4      '       d0   WP                  P                   J d   VP                  P                  # \         P                  R	8  d   VP                  R8X  d   V P                  V4      pVe   VP                  R8X  d   VP"                  R
9   du   VP                  VP                  8X  dZ   \        VP                  \
        P                  4      '       d0   WP                  P                   J d   VP                  P                  # \         P                  R	8  dh   \        V\
        P$                  4      '       dH   \        VP&                  \
        P(                  4      '       d   VP                  R8w  d   VP*                  # V# )rn   rQ   
LOAD_CONSTBEFORE_WITHLOAD_SPECIAL	UNARY_NOT)rn   ro      GET_ITERFOR_ITER)rn   ro      rn      )	__enter__
__aenter__)rs   rt   rY   rq   r$   rD   ForiterListCompSetCompDictCompGeneratorExpcomprehensioninstruction_before	positionswithitemcontext_exprargreprUnaryOpopNotoperand)rd   r   r^   befores   &&& r    r_   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                >   < V ^8  d   QhRS[ RS[P                  RR/# r   r   r^   r   Nry   )r   rG   s   "r    r!   rH     s0     fX fX fX3?? fXt fXr"   c                   VP                   R(9   d   \        V\        4      '       d   \        V\        4      '       d   \        P
                  ! VP                  4       Uu. uFC  p\        V\        P                  4      '       g   K%  \        VP                  4      ^8  g   KA  VNKE  	  pp\        VR4       \        V4      ^8X  d   \        \        V^ ,          4      ;qn        M$\        RV,          4      h\        RV,          4      h\        P                   R,          R)8X  d   \        V\        P                  4      '       di   VP                   R8X  dX   \"        ;QJ d%    R \%        V4       4       F  '       g   K   RM	  R	M! R \%        V4       4       4      '       d   \        R
4      h\        V\        P&                  4      '       d   \        R4      h\"        ;QJ d%    R \%        V4       4       F  '       g   K   RM	  R	M! R \%        V4       4       4      '       d   \        R4      h\        P                   R*8  EdS   \        V\        P(                  4      '       Ed2   \        VP*                  \        P,                  4      '       Ed   VP*                  P.                  R8X  d   VP0                  p\3        VR4      '       d?   \        V\        P4                  \        P6                  34      '       g   VP0                  pKP  Rp\3        VR4      '       dJ   . VP8                  P:                  OVP8                  P8                  OpV'       d   V^ ,          P<                  pVP                   VP>                  3R+RV3RV3RV339   d   \        R4      hV PA                  W!4      '       d   \        R4      hVP                   R8X  d   VP>                  R8X  d   \        R4      hVP                   R8X  d   \        V\        P(                  4      '       gm   \"        ;QJ d%    R \C        V4       4       F  '       g   K   RM	  R	M! R \C        V4       4       4      '       d!   \        P                   R,8  d   \        R4      h\        P                   R-8  d   VP                   R.9   d   \        RVP                    R24      hVP                   R/9   d   VP>                  R8X  d   \        R4      hVP                   R 8X  d   \        V\        PD                  4      '       df   \        VPF                  \        P                  4      '       d<   \        VPH                  \        PJ                  4      '       d   VPF                  V n        \        P                   R08  Ed   V PM                  4       ;p'       d   \O        V PP                  PS                  4       4      R1,          p	V^,          VPT                  u;8  d   V	^,
          8  g   M \        R 4      hV PV                  PX                  PZ                  R!8X  d   VP                   R"8X  d   \        R#4      hV PV                  PX                  PZ                  R!8X  d,   \        V\        P\                  4      '       d   \        R$4      h\        V\        P^                  4      '       dE   V PV                  PX                  PZ                  VP`                  P.                  8X  d   \        R%4      hVP                   R8X  d   VPb                  R!8X  d   \        R&4      hVP                   R8X  d.   \        V\        P,                  4      '       d   \        R'4      hR# R# R# u upi )2
COMPARE_OPIS_OPz expected at least one comparisonz4multiple chain comparison inside %s can not be fixedz+chain comparison inside %s can not be fixed:Nrn   NrQ   c              3   V   "   T F  p\        V\        P                  4      x  K!  	  R # 5ir*   rq   rD   Assert.0ns   & r    	<genexpr>2PositionNodeFinder.known_issues.<locals>.<genexpr>>  s      N7M!Jq#**--7M   ')TFzBknown bug in 3.11.1 https://github.com/python/cpython/issues/95921assertc              3   V   "   T F  p\        V\        P                  4      x  K!  	  R # 5ir*   )rq   rD   patternr   s   & r    r   r   J  s      J3Iaz!S[[))3Ir   z)pattern matching ranges seems to be wrongsuperr$   Nargs
LOAD_DEREF	__class__	LOAD_FASTLOAD_FAST_BORROWzsuper optimizationzCexeption cleanup does not belong to the last node in a except block
STORE_NAME__classcell__zstore __classcell__c              3   V   "   T F  p\        V\        P                  4      x  K!  	  R # 5ir*   r   )r   ps   & r    r   r     s     E}!Jq#**--}r   z&exception generation maps to conditionzcan not map z to two ast nodesz^loading of __class__ is accociated with a random node at the end of a class if you use super()zAsynthetic opcodes in annotations are just bound to the first noder!   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 annotationz3part of a check that a name like `all` is a builtinr   r   CONTAINS_OP)rn         rm   )r   r   )rn   r   r   rn      )STORE_FAST_STORE_FASTSTORE_FAST_LOAD_FASTLOAD_FAST_LOAD_FASTr   r   r   )2rY   rq   types_cmp_issuetypes_cmp_issue_fixrD   walktestComparelenopsr   r   r   r[   r   rs   rt   anyr+   r   r]   funcNameidr$   r%   AsyncFunctionDefFunctionDefr   posonlyargsargargvalis_except_cleanupr'   r   r   r   r   annotation_header_sizer.   rW   keysrV   r?   rU   co_name	AnnAssign	TypeAliasnamer   )
rd   r   r^   r   comparisonsr   	first_argr   header_lengthlast_offsets
   &&&       r    r`   PositionNodeFinder.known_issues  s   !GGJ/M
 M
 $ 344 !XXdii00!!S[[1 69!%%j1n A0   %GH{#q()-k;q>)JJD;$NRVW  !!NRV!WXX R J.4--""f,N7G7MNN7G7MNNNT  dCJJ'' X&&3J3CD3IJ333J3CD3IJJJHII '4**499chh//		'
 ;;D$))*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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    "]5]5#]5c                    < V ^8  d   QhRS[ /# )r   r   )rF   )r   rG   s   "r    r!   rH     s      c r"   c                0   \         P                  R8  d|   \        P                  ! V P                  P                  4       ^4       Uu. uF  qP                  NK  	  pp\        V4      ^8X  d%   V^ ,          R9   d   V^  ^pMV^ ^pV. RO8X  d   V# ^ # u upi )rn   r   )COPY_FREE_VARS	MAKE_CELL)RESUMEr   LOAD_SMALL_INTr   POP_JUMP_IF_FALSE	NOT_TAKENLOAD_COMMON_CONSTANT)rs   rt   	itertoolsislicerW   valuesrY   r   )rd   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c                @   < V ^8  d   QhRS[ P                  RS[RS[/# )r   r   r   r   )r/   r0   r   bool)r   rG   s   "r    r!   rH     s&     5
 5
 5
{ 5
t 5
r"   c                  a  S P                   R9  d   R# \        V\        P                  4      '       dh   \        VP                  \        P
                  4      '       d>   S P                   P                  R4      '       d   \        V4      S P                  8X  d   R# \        V\        P                  4      '       dh   \        VP                  \        P                  4      '       d>   S P                   P                  R4      '       d   \        V4      S P                  8X  d   R# \        ;QJ d(    V 3R l\        V4       4       F  '       g   K   R# 	  R# ! V 3R l\        V4       4       4      # )r   Frl   DELETE_c              3      <"   T FS  p\        V\        P                  4      ;'       d-    VP                  ;'       d    \	        V4      SP
                  8H  x  KU  	  R # 5ir*   )rq   rD   ExceptHandlerr   r   r   )r   r   r   s   & r    r   7PositionNodeFinder.is_except_cleanup.<locals>.<genexpr>  sI      
" q#++,ZZZZLOt{{<ZZ"s   %AA!AT)r   
STORE_FASTSTORE_DEREFSTORE_GLOBALDELETE_NAMEDELETE_FASTDELETE_DEREFDELETE_GLOBAL)rY   rq   rD   r   ctxStoreru   r   r   Delr   r'   )r   r   s   f&r    r   $PositionNodeFinder.is_except_cleanup  s   ;; 	
 	
 , tSXX&&488CII..&&x00T"dkk1  tSXX&&488CGG,,&&y11T"dkk1 s 
T]
ss 	
s 	
s 
T]
 
 	
r"   c                >   < V ^8  d   QhRS[ RS[P                  RR/# r   ry   )r   rG   s   "r    r!   rH     s+     J8 J8; J8S__ J8 J8r"   c           	     #  aaa SP                   pR p\        R4      pR V3R llpR V3R llpVR8X  d   R# V! R4      '       d/   V! \        P                  \        P                  34      '       d   R# V! RL4      '       dM   V! \        P
                  \        P                  \        P                  \        P                  34      '       d   R# \        P                  RM8  dL   V! RN4      '       d>   V! \        P
                  \        P                  \        P                  34      '       d   R# V! RO4      '       d/   V! \        P                  \        P                  34      '       d   R# V! RP4      '       d   V! \        P                  4      '       d   R# V! RRR7      '       d   V! \        P                  4      '       d   R# V! RRR7      '       g   V! RRR7      '       g   V! RQ4      '       d   V! \        P                  \        P                   \        P"                  R7      '       d]   \%        \'        \        P                   \'        \        P                  S4      P(                  4      P*                  \,        4      '       d   R# V! R4      '       d   V! \        P                  4      '       d   R# V! RR4      '       d:   V! \        P.                  SP0                  \        P2                  R7      '       d   R# V! R4      '       dK   V! \        P4                  4      '       g-   V! \        P                  \        P"                  R7      '       d   R# V! RS4      '       d   V! \        P                  4      '       d   R# V! RTRR7      '       d   V! \        P                   4      '       d   R# V! RU4      '       d9   V! \        P6                  4      '       d   SP0                  \9        S4      8X  d   R# V! RV4      '       d   V! \        P:                  \        P<                  34      '       d   \>        ;QJ dA    V3R l\'        \        P:                  S4      P@                   4       F  '       g   K   RM6	  RM2! V3R l\'        \        P:                  S4      P@                   4       4      '       d   R# V! RW4      '       d   V! \        PB                  \        P                  \        PD                  34      '       g-   V! \        P.                  \        PF                  R7      '       d   SP0                  \9        S4      8X  d   R#  T! R4      '       dN   SPN                  PQ                  R4      pTR8w  d,   T! \        PR                  \T        T,          R7      '       d   R# T! \        PV                  \        P2                  R7      '       d   T! R\9        S4      R7      '       d   R# T! RX4      '       d   T! \        PX                  4      '       d   R# T! R 4      '       d/   T! \        PZ                  \        P2                  R7      '       d   R# T! \        P.                  \        P\                  R7      '       gW   T! \        P.                  \        PF                  R7      '       d   \%        SP^                  \        PR                  4      '       dh   T! RY4      '       dZ   \%        SP0                  \`        4      '       d   \9        S4      SP0                  9   d     R# SP0                  \9        S4      8X  d   R# T! \        P.                  \        P2                  R7      '       d   T! RZ\9        S4      R7      '       d   R# T! \        P                   4      '       d5   T! R[\'        \        P                   S4      P*                  R7      '       d   R# T! \        P
                  \        P                  \        P                  \        P                  \        Pb                  34      '       d   T! R\4      '       d   R# \        P                  RM8  Ed   T! \        Pd                  \        Pf                  R7      '       d   T! R#R$R%7      '       d   R# T! \        PZ                  4      '       d   T! R&4      '       d   R# T! \        P<                  4      '       d   T! R#R'R%7      '       d   R# T! \        Ph                  4      '       g+   \%        SP^                  \        P                  4      '       d   T! R#R(R%7      '       d   R# T! \        P.                  4      '       d   T! R!R)R7      '       d   R# T! \        Pj                  4      '       dL   T! R#R*R%7      '       g:   T! R+R,R%7      '       g*   T! R+R-R%7      '       g   T! R]\9        S4      R%7      '       d   R# T! \        Pl                  4      '       d-   T! R#R.R%7      '       g   T! R]SPn                  R%7      '       d   R# T! \        Pp                  4      '       d-   T! R#R/R%7      '       g   T! R]SPn                  R%7      '       d   R# T! \        Pr                  4      '       dE   T! R#R0R%7      '       g3   T! RVSPn                  Pt                  R%7      '       g   T! R4      '       d   R# T! \        P                  4      '       d[   SPv                  '       dI   T! R^R1R%7      '       d   R# T! R_R2R%7      '       d   R# T! R#R3R%7      '       d   R# T! R!R)R7      '       d   R# T! \        PB                  \        PD                  34      '       d   SPv                  '       dn   T! R4      '       d   R# T! R+R4R%7      '       d   R# T! R	R5R7      '       d   R# T! R	R6R7      '       d   R# \        P                  R`8  d   T! R"RaR7      '       d   R# T! RR7R7      '       d   R# T! \        P4                  4      '       d!   T! RRR7      '       g   T! Rb4      '       d   R# T! \        Px                  4      '       d   T! R84      '       d   R# \        P                  Rc8  Ed   T! R94      '       d   R# T! R:4      '       d   T! \        PX                  4      '       d   R# T! R;4      '       d/   T! \        P                  \        P                  34      '       d   R# T! R	R1R7      '       d   R# T! R	R)R7      '       d   R# T! Rd4      '       dk   T! \        PB                  \        P                  \        Pr                  \        Pj                  \        Pz                  \        PD                  34      '       d   R# T! R	4      '       dD   T! \        Pr                  4      '       d(   SPn                  Pt                  SP0                  8X  d   R# T! RR<R7      '       d   R# T! Rd4      '       d-   \%        SP^                  \        Pj                  4      '       d   R# T! R+R=R%7      '       d>   T! \        Pj                  \        Pp                  \        Pl                  34      '       d   R# \        P                  R`8  d   T! RRR%7      '       d   T! \        PZ                  4      '       d   R# T! R
R)R7      '       d   R# T! ReR>R7      '       d   R# T! R"4      '       d:   T! \        P.                  4      '       d   SPt                  SP0                  9   d   R# \        R4      p	\        R4      oTP}                  Rf4      '       d#   \        PZ                  p	\        P\                  pEMTP}                  R?4      '       d0   \        P                  p	\T        SPN                  ,          oT3R@ lpEMhTP}                  RA4      '       df   \        Pd                  p	\        \        Pf                  \        P                  \        P                  \        P                  RB7      T,          oT3RC lpMTRg9   d(   \        PV                  p	\        P\                  pT3RD lpMTRh9   d(   \        P.                  p	\        P\                  pT3RE lpMTRP9   d   \        P                  p	RF pMuTP}                  Ri4      '       d"   \        PF                  p\        PZ                  p	M=TP}                  RG4      '       d'   \        PF                  p\        PV                  p	T3RH lp\        SRIR4      p
T\        R4      J;'       g%    \        SRI4      '       * ;'       g    \%        Y4      p\%        ST	4      '       d   T'       d   T! S4      '       d   R# RJ\        S4      P                  : RKSP                   : 2p\        TSS4      h)jz5
checks if this node could gererate this instruction
c                     R # )T es   &r    <lambda>+PositionNodeFinder.verify.<locals>.<lambda>  s    r"   Nc                t    V ^8  d   QhR\         \        \        \        ,          3,          R\        R\        /# )r   opnameskwargsr   )r   strr	   r   r   )r   s   "r    r!   /PositionNodeFinder.verify.<locals>.__annotate__  s/     	 	c8C=&8 9 	S 	T 	r"   c           	        < \        V \        4      '       d   V .p SP                  V 9   ;'       d     TV Uu/ uF  q"\        SV4      bK  	  up8H  # u upi )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

)rq   r
  rY   getattr)r  r	  kr^   s   &, r    
inst_match-PositionNodeFinder.verify.<locals>.inst_match  sf     '3''")%%0  V4:@4:q7;**F@ 6  @s   Ac                x    V ^8  d   QhR\         \        \        \        R3,          3,          R\        R\        /# )r   	node_type.r	  r   )r   r   r   r   r   )r   s   "r    r!   r  1  s5     	 	%eD#I.>(>"? 	3 	SW 	r"   c                   < \        SV 4      ;'       dW    \        ;QJ d-    V3R lVP                  4        4       F  '       d   K   R# 	  R# ! V3R lVP                  4        4       4      # )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      <"   T FB  w  r\        V\        4      '       d   \        \        SV4      V4      M\        SV4      V8H  x  KD  	  R # 5ir*   )rq   typer  )r   r  vr   s   &  r    r   @PositionNodeFinder.verify.<locals>.node_match.<locals>.<genexpr>:  sO      7 +DA a&& 74+Q/T1%*+ +s   A
AFT)rq   allitems)r  r	  r   s   &,r    
node_match-PositionNodeFinder.verify.<locals>.node_match1  sc     dI.  33 7 #LLN	733 3 3 7 #LLN	7 4 r"   rJ   rQ   r   r   	LOAD_NAME__annotations__)r   rM   joinrN   BUILD_STRING)leftr   r   )r   r   )r   r   __doc__c              3   p   <"   T F+  p\        \        \        V4      4      SP                  8H  x  K-  	  R # 5ir*   )r   r   r   r   )r   aliasr^   s   & r    r   ,PositionNodeFinder.verify.<locals>.<genexpr>  s+     {^zUZLk5!9:k>P>PP^zs   36TF)r   	BINARY_OP=z[]rP   DELETE_SUBSCRr   !LOAD_FAST_BORROW_LOAD_FAST_BORROWCALL_INTRINSIC_1INTRINSIC_UNARY_POSITIVE)r   BINARY_SLICEINTRINSIC_IMPORT_STARINTRINSIC_ASYNC_GEN_WRAPrG   INTRINSIC_TYPEVARCALL_INTRINSIC_2INTRINSIC_TYPEVAR_WITH_BOUND"INTRINSIC_TYPEVAR_WITH_CONSTRAINTSINTRINSIC_TYPEVARTUPLEINTRINSIC_PARAMSPECINTRINSIC_TYPEALIASz.type_paramsz.generic_baseINTRINSIC_SUBSCRIPT_GENERIC"INTRINSIC_SET_FUNCTION_TYPE_PARAMS	.defaults.kwdefaults__classdictcell__FORMAT_VALUENOPTO_BOOLrR   __static_attributes__INTRINSIC_SET_TYPEPARAM_DEFAULT__conditional_annotations__BINARY_c                 `   < \        \        \        P                  V 4      P                  S4      # r*   )rq   r   rD   BinOpr   r  op_types   &r    r  r    s    ZSYY0B0E0Ew%Or"   UNARY_)UNARY_POSITIVEUNARY_NEGATIVEr~   UNARY_INVERTc                 `   < \        \        \        P                  V 4      P                  S4      # r*   )rq   r   rD   r   r   rC  s   &r    r  r    s    ZS[[!0D0G0G%Qr"   c                 4   < \        V 4      SP                  8H  # r*   r   r   r  r^   s   &r    r  r        \!_8J8J%Jr"   c                 f   < \        \        P                  V 4      P                  SP                  8H  # r*   )r   rD   r   r   r   rL  s   &r    r  r    s!    T#((A%6%9%9[=O=O%Or"   c                 b    \        \        \        P                  V 4      P                  4      ^8H  # )r   )r   r   rD   r   r   r  s   &r    r  r    s    Sckk1)=)A)A%Ba%Gr"   rO   c                 4   < \        V 4      SP                  8H  # r*   rK  rL  s   &r    r  r    rM  r"   r   zast.z is not created from )rQ   r   r   rm   )LOAD_FAST_AND_CLEARr   )rQ   CALL_FUNCTION_EXr   )rQ   r  )r   r   )r|   WITH_EXCEPT_START)r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )JUMP_IF_TRUE_OR_POPJUMP_IF_FALSE_OR_POPPOP_JUMP_IF_TRUEr   )r  r   LOAD_FAST_CHECKr   LOAD_GLOBALr   LOAD_FROM_DICT_OR_DEREFr(  )r   r   r   )r{   r   r   )r   r   )r   r   rY  )r   r   r   )r7  r8  )LIST_APPENDrQ   r   r   )r   r  )BINARY_SUBSCRzSLICE+)rN   rM   LOOKUP_METHODLOAD_SUPER_ATTR)r  rX  r   r   LOAD_CLASSDEREF)STORE_SLICEr   )GrY   r  rD   With	AsyncWithr   r   r   r   rs   rt   rr   r]   r   r   rB  ConstantModrq   r   r   valuer
  r   r   r   	JoinedStrr   r   Import
ImportFromr   namesr   r   r   MatchAsMatchSequence
MatchValuer   removesuffix	AugAssignop_type_mapr\   BoolOp	SubscriptLoadr$   tupler   r   UAddYieldTypeVarTypeVarTupler   	ParamSpecr   r   type_paramsFormattedValueLambdaru   dictUSubr   Invertr  r%   __name__r   )rd   r   r^   op_nameextra_filterr   r  r  r   rL   node_ctx	ctx_matchtitlerD  s   &ff          @r    rb   PositionNodeFinder.verify  s   
 $$6DJ	 	&	 	  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8k&996773993<<CGGDD4d399d.C.H.HIOOQTUU n%%*S]]*C*C 455*HH++;
 ;
 n%%s}}%%CII#'')J)J9::z#((?S?S4YGGJLLM
 M
  RSS3,,--""l4&88  RSSCJJ788{^bcfcmcmos^t^z^z{{^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Lcmm11j,t"47
 7
 
 
 $$o&&:cmm+Q+Q sxxSXX..38833t{{CMM::	
 
 9C;CUCUV[8\8\L+"4"44  ##|D'99chhCGG,,<\RVEW2
 2
 cll##
+Dt4L4R4R)
 )
 \\3;;c6F6FP
 
122w&#++#((33
",F9 9 #--((Z-G-G#..))j",C/ /  399%%DKKAQAQ)R)R/9STT#((##
<(W(W#++&&-7JKK&0N  &0T  ;\RVEWXX#**++-7OPP;TYYOO#--((-7LMM;TYYOO #--((1;PQQ!R\`\e\e\h\h  "&)) #,,''D,<,<,<L*  9?SS&0M  l/BB3??3+?+?@AAdFVFVFVf%%&0T  k==k??##w.!"EMhii,/BCC
 #--((;v6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F:;;
4;;WZWbWb@c@c,5VWW\fhkhshstw  uB  uB  CF  CS  CS  hT  ]U  ]Uw&+d33
3==8Q8Q,_E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                J   < V ^8  d   QhRS[ RS[S[P                  ,          /# r   ri   r   )rF   r   r/   r0   )r   rG   s   "r    r!   rH     s$     , , ,#//)B ,r"   c                :    V P                   P                  VR 4      # r*   )rW   get)rd   ri   s   &&r    r^   PositionNodeFinder.instruction  s    ||d++r"   c                ^   < V ^8  d   QhRS[ P                  RS[S[ P                  ,          /# )r   r^   r   )r/   r0   r   )r   rG   s   "r    r!   rH     s*     > >??>	#//	">r"   c                \    V P                   P                  VP                  ^,
          R4      # )r   N)rW   r  rV   )rd   r^   s   &&r    r   %PositionNodeFinder.instruction_before  s&     || 2 2Q 6==r"   c                &   < V ^8  d   QhRS[ RS[/# r  )rF   r
  )r   rG   s   "r    r!   rH     s      C C r"   c                H    V P                  V4      pVf   R# VP                  # )NrJ   )r^   rY   )rd   ri   is   && r    rY   PositionNodeFinder.opname  s#    


5
!9xxr"   c                V   < V ^8  d   QhRS[ RS[S[,          RS[S[R3,          RS[/# )r   ri   rK   rL   .r   )rF   r	   r
  rr  r   r   )r   rG   s   "r    r!   rH     s@     "
 "
"
 "#"
 49"
  
!"
r"   c                   aaa V P                  V4      pVf   Q hVP                  oSe   SP                  f   Q h\        VVV3R lV P                  P
                  SP                  ,           4       4      # )Nc              3   ~  <a"   T F  o\        SS4      '       g   K  \        S\        P                  4      '       d   K9  \        S\        P                  4      '       d   K[  \        ;QJ d     VV3R  lS 4       F  '       d   K   RM	  RM! VV3R  lS 4       4      '       g   K  \        \        S4      x  K  	  R# 5i)c              3   V   <"   T F  p\        SV4      \        SV4      8H  x  K   	  R # 5ir*   )r  )r   attrr   positions   & r    r   9PositionNodeFinder.find_node.<locals>.<genexpr>.<genexpr>  s+      +D $'74+>>+s   &)FTN)rq   rD   Exprrk  r  r   r   )r   r   rK   r  rL   s   &@r    r   /PositionNodeFinder.find_node.<locals>.<genexpr>
  s      
C$$ $ dCHH- $
 dCNN3 $ s +sss +  $Dd##Cs'   B=B=B=!
B=,B=B=%B=)r^   r   linenor   rC   _nodes_by_line)rd   ri   rK   rL   r^   r  s   &&ff @r    rZ   PositionNodeFinder.find_node  sn    " &&u-&&&((#(CCC 
228??C
 
 	
r"   )rW   rX   r?   r[   rC   Nr  rm   )r  rT   
col_offsetrS   )r~  
__module____qualname____firstlineno__r!  rf   ra   r_   r`   r   staticmethodr   rb   r^   r   rY   extra_node_typesrs   rt   rD   
type_paramexprstmtexcepthandlerr   rZ   r=  r9  )rG   s   @r    r=   r=   B   s     9B 9Bv- -^e eNfX fXT 2 5
 5
nJ8 J8X, ,> >
  
6!NN,
*
 HHHHKK	!

 !
"
 "
 "
r"   r=   )=rD   rs   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+   r2   IfExpIfr   Whiler   r   r   r   r   r   PowMultMatMultFloorDivDivrc  AddSubLShiftRShiftBitAndBitXorBitOrrn  objectr=   r  r"   r    <module>r     s/   
 
 
 % ] ] ] ` ` 4    

 3, ,
 IIFFJJII	  &LLKKLL	)  	#''#,,#**#**"S
 S
r"   