
    ^h7C              	          S SK r S SKrS SK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  S SKJr  S SKJrJrJrJrJrJr  S SKJrJrJr  S SKJr  S SKJ r   \(       a  S S	K!J"r"  S S
K#J$r$  \RJ                  S:  a  \ RL                  r'O\ RP                  r'\RR                  " \*5      r+SRY                  \5      r-\" S\ R\                  S9r/S\ R`                  S\ S\ Rb                  4S jr2S\ Rf                  4S\ R`                  S\	\ Rh                     S\ S\ Rb                  4S jjr5S\\ R`                     S\
\\ R`                     \\ R`                     4   4S jr6 " S S\ Rn                  \5      r8g)    N)
TYPE_CHECKINGCallableDefaultDictDictListOptionalTupleTypeVarUnioncast)fast)ExprRewriter)
EMIT_EVENTEXEC_SAVED_THUNKFUNCTION_TRACING_ENABLEDPYCCOLO_BUILTIN_PREFIXTRACING_ENABLEDmake_guard_name)EmitterMixinmake_composite_condition	make_test)StatementMapper)
TraceEvent)GUARD_DATA_T)
BaseTracer)      z{}("{{evt}}", {{node_id}})_T)boundstmtevtreturnc                 $   [         R                  " U 5         [        [        R                  [         R
                  " [        R                  UR                  [        U 5      S95      R                  S   5      sS S S 5        $ ! , (       d  f       g = f)N)r!   node_idr   )r   location_ofr   astExprparse_EMIT_EVENT_TEMPLATEformatvalueidbody)r    r!   s     O/home/james-whalen/.local/lib/python3.13/site-packages/pyccolo/stmt_inserter.py_get_emit_event_astr/   2   s^    			$	HHJJ$++		2d8+Ld1
 
 		s   A B
Bret_exprc                    [         R                  " U 5         [        X5      nUb  XS'   [        [        R
                  UR                  5      n[         R                  " S0 UD6Ul        S S S 5        [        U SWR                  5      Ul
        [        US5      (       a  UR                  Ul        U$ ! , (       d  f       NN= f)Nret
end_lineno )r   r%   r/   r   r&   Callr+   kwargskeywordsgetattrlinenohasattrr3   )r    r0   r!   r6   r2   	ret_values         r.   _get_parsed_append_stmtr<   <   s     
		$	!$,$5M399-	![[262	 
  |SZZ8CJsL!!J 
 	s   AB11
B?r-   c                     / n/ nU  HV  n[        U[        R                  [        R                  45      (       a  UR	                  U5        ME  UR	                  U5        MX     X4$ N)
isinstancer&   GlobalNonlocalappend)r-   new_bodyglobals_and_nonlocalsr    s       r.   strip_globals_and_nonlocalsrE   N   sX      "H,.dSZZ677!((.OOD!	 
 **    c                      \ rS rSrSSS\S\\\R                  4   S\	\
\S\4   4   S\	\
\S\4   4   S	\	\
\S
   4   S\4S jrS\\R"                  \R$                  4   S\\R                     S\\R                     4S jrS\\R(                  \R*                  4   S\\R                     S\\R                     4S jrS\R.                  S\\R0                     S\\R0                     4S jrS\R                  S\S\R0                  S\R0                  S\\R0                     4
S jrS\R                  S\S\R0                  S\\R0                     4S jrS rSrg)StatementInserter[   tracerszList[BaseTracer]mapperorig_to_copy_mappinghandler_predicate_by_event.'guard_exempt_handler_predicate_by_eventhandler_guards_by_eventr   expr_rewriterc           	      T    [         R                  " U UUUUUU5        X l        Xpl        g r>   )r   __init__rK   rP   )selfrJ   rK   rL   rM   rN   rO   rP   s           r.   rR   StatementInserter.__init__\   s4     	 &3#	
 *rF   node	orig_bodyr"   c                 @   [        [        [        R                  [        R                  4   [
        R                  " U R                  [        U5         5      5      n[        UR                  5      u  Ul
        nU R                  (       a  [        U5      nU R                  U5        OS n[
        R                  " U5         [        U[        R                  5      (       a!  [         R"                  n[         R$                  nO [         R&                  n[         R(                  nU R*                  U   " U5      (       aO  [
        R,                  " U/ / [/        [        [        R0                  U5      U[
        R2                  " U5      S9/S9/nOUnU R                  (       a  U R4                  R7                  X5         UR                   Vs/ s H  oR4                  R9                  U5      PM     n	nS S S 5        [
        R:                  " [=        [?        [@        5      [?        U5      U R*                  U   " W5      (       a%  U RC                  UU[
        RD                  " S5      S9OS /5      UW	S9/nXH-   sS S S 5        $ s  snf ! , (       d  f       N= f! , (       d  f       g = f)Nr!   guardr-   handlersorelse	finalbodyTr2   testr-   r\   )#r   r   r&   ForWhiler   copy_astrL   r,   rE   r-   global_guards_enabledr   register_guardr%   r?   r   before_for_loop_bodyafter_for_loop_iterbefore_while_loop_bodyafter_while_loop_iterrM   Tryr<   r    StrrP   guard_exempt_contextvisitIfr   r   r   emitNameConstant)
rS   rU   rV   loop_node_copyrD   
loop_guardbefore_loop_evtafter_loop_evtr2   r\   s
             r.   _handle_loop_body#StatementInserter._handle_loop_bodyt   s4    #''399$%MM$33BtH=>
 6Q6
22 %%(8J
+Jn-$((","A"A!+!?!?","C"C!+!A!A..~>tDDHH&!#!3 $SXX~ >$2&*hhz&:#	&  ))''<<TRCQCVCVCV4**006CV   S
 GG5 )/ : )* 5 (,'F'F'W(,(& (& %)II(7(,,0,=,=d,C %. %& *." !%'. ).i .-4 SR3 .-s8   ?C8J7I>$I9*I>,BJ9I>>
J	J
Jc                 ,	   [        [        [        R                  [        R                  4   [
        R                  " U R                  [        U5         5      5      n[        UR                  5      u  Ul
        nU R                  (       a  [        U5      nU R                  U5        OS n/ n[        UR                  5      S:  a  [        UR                  S   [        R                   5      (       aY  [        UR                  S   R"                  [$        5      (       a-  UR'                  S5        UR                  R'                  S5      /n[        U5      S:X  a  U$ [
        R(                  " Xc/-   S   5         U R*                  [,        R.                     " U5      (       a  [
        R0                  " U/ / [3        [        [        R4                  U5      [,        R.                  U R                  (       a  [
        R6                  " U5      O[
        R8                  " S 5      S9/S9/nOUnU R                  (       Ga8  U R:                  R=                  X5         UR                   Vs/ s H?  n[        U[        R>                  5      (       a  U R:                  RA                  U5      OUPMA     nnS S S 5        [
        RB                  " [E        [G        [H        5      [G        U5      U R*                  [,        RJ                     " U5      (       a3  U RM                  [,        RJ                  W[
        R8                  " S5      S9OS /5      U R*                  [,        R.                     " U5      (       a  UOUWS9/n[N         S3n	[
        R0                  " U[
        RP                  " [
        RR                  " [T        RV                  [        RX                  " 5       5      U	[        [        R4                  [
        RB                  " [
        RZ                  " SU	 S	[N         S
35      R                  S   R"                  [
        R\                  " 5       // S95      /UR                  -   S9// / S9/nS S S 5        Xd-   W-   $ s  snf ! , (       d  f       GN= f! , (       d  f       N,= f)Nr   rX   rZ   Tr^   r_   _name_errorznot z.name.startswith("z"))typenamer-   )/r   r   r&   FunctionDefAsyncFunctionDefr   rc   rL   r,   rE   r-   rd   r   re   lenr?   r'   r+   StrConstpopr%   rM   r   after_function_executionrj   r<   r    rk   rp   rP   rl   exprrm   rn   r   r   r   before_function_bodyro   r   ExceptHandlerName	NameError__name__Loadr(   Raise)
rS   rU   rV   fundef_copyrD   function_guard	docstringr2   r\   name_error_excs
             r.   _handle_function_body'StatementInserter._handle_function_body   s   
 #//3#7#778MM$33BtH=>
 3N3
// %%,[9N/!N#%	  !A%;++A.99;++A.44h??MM!$))--a01Iy>Qy=8!<=..z/R/RS  HH&!#!3 $SXX{ ;$.$G$G (,'A'A %)HH^$<)-):):4)@
#	&&  )))''<<TO %0$4$4 %5D  *$99 !..44T:!%& %5   P GG5 )*B C ). 9 (,'F'F(2(G(G(&&1(3 (3 %)II(2(G(G(,,0,=,=d,C %. %& *.&  $>> * C C ) +  +   "+%3: !77{CN**!%9+=+=sxxz!J!/ $$'HH$(GG-1ZZ.2>2BBTUkTlln,o.* *.a.1 */.2jjl^/1%&!"" *.."/*  1CA >x 0366E PO3 >=s9   6CRQ3!AQ.'Q3)F6R.Q33
R	=R
Rc                    U R                  U5      nU R                  [        R                     " U5      (       a  [        R
                  " [        U5      S:  a  US   OU5         U[        R                  " [         S[        R                  R                   S3[        U5       S3-   5      R                  -    sS S S 5        $ [        U5      $ ! , (       d  f       N= f)Nr   ("", ))get_copy_noderM   r   exit_moduler   r%   r}   r(   r   rz   r,   r-   list)rS   rU   rV   	node_copys       r.   _handle_module_body%StatementInserter._handle_module_body2  s     &&t,	**:+A+AB9MM!!3y>A3E)B-4Pjj%,b)?)?)D)D(ESI	]O1-. d	 QP I QPs   $AC
C
outer_node
field_name	prev_stmtprev_stmt_copyc                    [        U[        R                  5      =(       a    US:H  nU R                  [        R
                     " U5      (       dA  U R                  [        R                     " U5      (       a  U(       d  U R                  U5      /$ [        U[        R                  5      (       ai  U(       ab  UR                  n[        U[        R                  5      (       a-  UR                  n[        U[        R                  5      (       a  M-  [        XFS9/$ U R                  U5      /[        U[        R                  5      (       a  / -   $ [        U5      /-   $ )Nr-   )r0   )r?   r&   ModulerM   r   
after_stmtafter_module_stmtrm   r'   r+   r<   Return)rS   r   r   r   r   is_module_stmtvals          r.   _make_main_and_after_stmt_stmts1StatementInserter._make_main_and_after_stmt_stmtsB  s    $J

;T
f@T..z/D/DEnUU33J4P4PQ"  &

9-..i**~//CS#((++ii S#((+++NIJJJJy)*i44   .n=> rF   
inner_nodec                    / n[        U[        R                  [        R                  [        R                  [        R
                  45      (       a1  [        U[        R                  [        R                  45      (       a  U$ [        [        R                  U R                  [        U5         5      nU R                  XX55      nU R                  [        R                     " U5      (       a  [         R"                  " U5         UR%                  [         R&                  " [)        U[        R                  5      R*                  U R                  UU[         R,                  " [.         S35      R0                  S   U5      US95        S S S 5        OUR3                  U5        [        U[        R4                  5      (       a  US:X  a  U R                  [        R6                     " U5      (       aj  [        U[        R8                  5      (       a   e[)        U[        R:                  S9R*                  nUR%                  [=        XW[        R6                  S95        U$ ! , (       d  f       N= f)Nz()r   r_   r-   )r!   )r0   r!   )r?   r&   r{   r|   ra   rb   r@   rA   r   r    rL   r,   r   rM   r   before_stmtr   r%   rB   rn   r/   r+   r(   r   r-   extendr   r   r   _load_saved_expr_stmt_retr<   )rS   rU   r   r   stmts_to_extend	stmt_copymain_and_maybe_afterr0   s           r.   _handle_stmtStatementInserter._handle_stmt^  s    +-3??C$8$8#''399M
 
cjj#,,%?@@""4#<#<R
^#LM	#CCj 
 **:+A+AB9MM!!),  &&GG0%z'='=%!AA & JJ*:);2'>?DDQG%	  4 -,$ ""#78tSZZ((f$//
0L0LMiXX!*cjj9999*zCCe  ""'j6R6R
 C -,s   BI
I$c           
      V   U R                  U5      (       a  U$ [        R                  " U5       GH  u  p#[        U[        R                  5      (       a  [        XU R                  U5      5        MB  [        U[        5      (       Ga  / n/ n[        U[        R                  5      (       a  US:X  a  U R                  U5      nU R                  [        R                     " U5      (       a  [        R                  " U5         UR                  [        R                   " ["         S[        R                  R$                   S3['        U5       S3-   5      R(                  5        S S S 5        U H  n[        U[        R*                  5      (       ae  [        U[        R,                  5      (       a#  UR.                  S:X  a  UR1                  U5        Md  UR                  U R3                  XU5      5        M  [        U[        R                  5      (       a"  UR1                  U R                  U5      5        M  UR1                  U5        M     XT-   nUS:X  a  [        U[        R                  5      (       a  U R5                  X5      nO[        U[        R6                  [        R8                  45      (       a  U R;                  X5      nO@[        U[        R<                  [        R>                  45      (       a  U RA                  X5      n[        XU5        GM  GM     U$ ! , (       d  f       GN= f)Nr-   r   r   r   
__future__)!is_tracing_disabled_contextr&   iter_fieldsr?   ASTsetattrrm   r   r   r   rM   r   init_moduler   r%   r   r(   r   rz   r,   r-   r    
ImportFrommodulerB   r   r   ra   rb   ru   r{   r|   r   )rS   rU   rz   field	new_fieldfuture_importsr   r   s           r.   generic_visitStatementInserter.generic_visit  sY   ++D11K??40KD%))DJJu$56E4((	!#dCJJ//DFN $ 2 24 8I66z7M7MN!  "--d3%,, $

'1l"Z5K5K5P5P4QQT$U)+Iq&9%:!" #'$	 4 #(J!*chh77&z3>>BB * 1 1\ A*11*=%,,T->->t:-VW#J88!((J)?@!((4 #( +6	6>!$

33$($<$<T$M	#D377CII*>??$($:$:4$K	#D3??C<P<P*QRR$($>$>t$O	I.S 1T ? 43s   ?A!L
L(	)rP   rK   N)r   
__module____qualname____firstlineno__r   r   intr&   r   r   r   r   boolr   r   rR   r   ra   rb   ru   r{   r|   r   r   r    r   strr   r   r   __static_attributes__r4   rF   r.   rH   rH   [   s   +#+  + #3<0	+
 %0
HS$Y<O0O$P+ 2=d++2
+ "-Zn9M-M!N+ $+0C/#''399,-C/:>sww-C/	cggC/Jw7COOS%9%99:w7 =w7 
cgg	w7rJJ+/>	chh GG  88	
  
chh8.GG.),.:=((.	chh.`-rF   rH   )9r&   loggingsystypingr   r   r   r   r   r   r	   r
   r   r   pyccolor   pyccolo.expr_rewriterr   pyccolo.extra_builtinsr   r   r   r   r   r   pyccolo.fastr   r   r   pyccolo.stmt_mapperr   pyccolo.trace_eventsr   pyccolo.ast_rewriterr   pyccolo.tracerr   version_infork   r~   Constant	getLoggerr   loggerr*   r)   r   r   r    r'   r/   r   r   r<   rE   NodeTransformerrH   r4   rF   r.   <module>r      sU   
  
    .  K J / +1) fwwH||H 
		8	$ 4:::F T!
chh 
Z 
CHH 
 $( ++
((sxx  

 	XX$
+
sxx.
+
4>4>)*
+`++\ `rF   