
    ^h/$              	          S r SSKrSSKrSSKrSSKrSSK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  SSK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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'  SSK(J)r)J*r*  \	(       a)   " S S5      r+ " S S5      r, " S S5      r- " S S5      r.OSSKJ.r.  SSK"J+r+J,r,J-r-  \r/\R`                  r0\Rb                  r1\Rd                  r2\Rf                  r3\Rh                  r4\Rj                  r5\Rl                  r6\Rn                  r7\Rp                  r8\Rr                  r9\Rt                  r:\Rv                  r;\Rx                  r<\Rz                  r=\R|                  r>\R~                  r?\R                  r@\R                  rA\R                  rB\R                  rC\R                  rD\R                  rE\R                  rF\R                  rG\R                  rH\R                  rI\R                  rJ\R                  rK\R                  rL\R                  rM\R                  rN\R                  rO\R                  rP\R                  rQ\R                  rR\R                  rS\R                  rT\R                  rU\R                  rV\R                  rW\R                  rX\R                  rY\R                  rZ\R                  r[\R                  r\\R                  r]\R                  r^\R                  r_\R                  r`\R                  ra\R                  rb\R                  rc\R                  rd\R                  re\R                  rf\R                  rg\R                  rh\R                  ri\R                  rj\R                  rk\R                  rl\R                  rm\R                  rn\R                  ro\R                  rp\R                  rq\R                  rr\R                  rs\R                  rt\R                  ru\R                  rv\R                  rw\R                  rx\R                  ry\R                  rz\R                  r{\R                  r|\R                  r}\R                  r~\R                  r\GR                   r\GR                  r\GR                  r\GR                  r\GR                  r\ H  r\\" 5       \GR                  '   M     S\#4S jrS\#4S jrS+S\S\S\\GR                  \GR                  4   4S jjrS\\\GR                  \GR                  4   S\
4S jrS\\\GR                  \GR"                  4   S\\\
4   4S jrS\\\
4   4S  jrS!\\#   S\\S"\
4   /\S"\
4   4   4S# jr\S,S$ j5       r\S,S% j5       r\S,S& j5       r\#GR0                  r/ S'Qr\GR5                  S( \ 5       5        SS)KJr  \GR:                  " 5       S*   rg)-z
Pyccolo: declarative, composable, portable instrumentation embedded directly in Python source.

Pyccolo brings metaprogramming to everybody via general event-emitting AST transformations.
    N)contextmanager)TYPE_CHECKINGAnyCallableDictListUnion)AstRewriter)_TRACER_STACKSANDBOX_FNAMESANDBOX_FNAME_PREFIXallow_reentrant_event_handling)PYCCOLO_BUILTIN_PREFIXmake_guard_name)	Predicate)AugmentationSpecAugmentationType)
TraceEvent)
TraceStack)
BaseTracer
NoopTracerregister_handlerregister_raw_handlerskip_when_tracing_disabled)multi_contextresolve_tracerc                       \ rS rSrSrg)Null!    N__name__
__module____qualname____firstlineno____static_attributes__r        J/home/james-whalen/.local/lib/python3.13/site-packages/pyccolo/__init__.pyr   r   !       r'   r   c                       \ rS rSrSrg)Pass"   r    Nr!   r    r'   r(   r+   r+   "   r)   r'   r+   c                       \ rS rSrSrg)Skip#   r    Nr!   r    r'   r(   r.   r.   #   r)   r'   r.   c                       \ rS rSrSrg)SkipAll$   r    Nr!   r    r'   r(   r1   r1   $   s    3r'   r1   )r1   )r   r+   r.   returnc                  d    [        [        5      S:  a	  [        S   $ [        R                  " 5       $ )Nr   )lenr   r   instancer    r'   r(   tracerr8      s)    
=AR  ""$$r'   c                      [        5       $ N)r8   r    r'   r(   r7   r7      s	    8Or'   codemodec                 0    [        5       R                  XS9$ )N)r<   )r8   parse)r;   r<   s     r(   r>   r>      s    8>>$>**r'   c                 h    [        5       R                  " U /UQ7SUR                  SS5      S-   0UD6$ Nnum_extra_lookback_framesr      )r8   evalpopr;   argskwargss      r(   rC   rC      E    8==	 #)**-H!"Lq"P 	 r'   c                 h    [        5       R                  " U /UQ7SUR                  SS5      S-   0UD6$ r@   )r8   execrD   rE   s      r(   rJ   rJ      rH   r'   c                      [        U 0 UD6$ r:   rJ   )rF   rG   s     r(   executerM      s       r'   tracers.c                 T   ^  S[         S[        4   S[         S[        4   4U 4S jjnU$ )Nf.r3   c                 8  >^ ^ T R                   R                  m[        T Vs/ s H  oR                  5       PM     sn5         [        R
                  " [        R                  " [        R                  " T 5      5      5      nTS   R                  T R                   R                  S9R                  UR                  S   5      UR                  S'   [        UT R                   R                  S5      nUR                   HQ  n[        U[         R"                  5      (       d  M$  UR$                  T R                   R$                  :X  d  MJ  UT l           O   S S S 5        [&        R(                  " T 5      S[*        4U UU4S jj5       nU$ s  snf ! , (       d  f       N>= f)Nr5   )pathr   rJ   r3   c            	         > [        T Vs/ s H  nUR                  TS9PM     sn5         T" U 0 UD6sS S S 5        $ s  snf ! , (       d  f       g = f)N)tracing_enabled_file)r   tracing_enabled)rF   rG   r8   rP   f_defined_filerN   s      r(   instrumented_f7instrumented.<locals>.decorator.<locals>.instrumented_f   s_     #*") ***O") $)&)  s   =A
A)__code__co_filenamer   tracing_disabledastr>   textwrapdedentinspect	getsourcemake_ast_rewritervisitbodycompile	co_consts
isinstancetypesCodeTypeco_name	functoolswrapsr   )rP   r8   r;   compiledconstrW   rV   rN   s   `     @r(   	decoratorinstrumented.<locals>.decorator   s0   //GLG&335GLM99X__W->->q-ABCD"2;88ajj>T>T8U[[\`\e\efg\hiDIIaL'.tQZZ5K5KV'TH!++uenn55););;!&AJ ,	 N 
		*s 	* 	* 
	* - MMMs   FCF""FF
F)r   r   )rN   rn   s   ` r(   instrumentedrp      s0    Xc3h' HS#X,> 4 r'   c           
   /      #    U c  [         OU n [        U  Vs/ s H  o3R                  " U0 UD6PM     sn5         S v   S S S 5        g s  snf ! , (       d  f       g = f7fr:   )r   r   tracing_context)rN   rF   rG   r8   s       r(   rr   rr      sJ     &mGG	gVgF..??gV	W 
X	WV	W	Ws%   AAAAA
AAc           
   +      #    U c  [         OU n [        U 5      S:X  a  [        S5      e[        U  Vs/ s H  o"R                  " S0 UD6PM     sn5         S v   S S S 5        g s  snf ! , (       d  f       g = f7f)Nr   z&Expected at least one tracer to enabler    )r   r6   
ValueErrorr   rU   rN   rG   r8   s      r(   rU   rU      s`     &mGG
7|qABB	wOwV..88wO	P 
Q	PO	P	Ps(   /A7A!A7A&A7&
A40A7c           
   +     #    U c+  [         n [        U 5      S:X  a  [        R                  " 5       /n [	        U  Vs/ s H  o"R
                  " S0 UD6PM     sn5         S v   S S S 5        g s  snf ! , (       d  f       g = f7f)Nr   r    )r   r6   r   r7   r   r[   ru   s      r(   r[   r[      sd     w<1!**,-G	Pf//9&9P	Q 
R	QP	Q	Qs(   8B A*B A/!B /
A=9B )!__version__r
   r   r   r   r   r   r   r+   r   r   r   r.   r1   r   r   eventrJ   rM   r7   rp   is_outer_stmtr   r   r>   r   r   r   r   r8   rr   r[   rU   c              #      #    U  H6  o[         R                  [         R                  4;  d  M(  UR                  v   M8     g 7fr:   )r   _load_saved_expr_stmt_ret_load_saved_slicename).0evts     r(   	<genexpr>r     s6       B:CZ=a=acmcc  =A  2Axsxx:s
   'A A )_versionversionrL   r:   )__doc__r\   rj   r_   r]   rg   
contextlibr   typingr   r   r   r   r   r	   pyccolo.ast_rewriterr
   pyccolo.emit_eventr   r   r   r   pyccolo.extra_builtinsr   r   pyccolo.predicater   pyccolo.syntax_augmentationr   r   pyccolo.trace_eventsr   pyccolo.trace_stackr   pyccolo.tracerr   r   r   r   r   pyccolo.utilsr   r   r   r+   r.   r1   rx   callreturn_	exceptionbefore_importinit_moduleexit_moduleafter_importbefore_stmt
after_stmtafter_module_stmtafter_expr_stmt	load_name
after_boolafter_bytesafter_complexafter_float	after_int
after_noneafter_stringbefore_fstringafter_fstringbefore_for_loop_bodyafter_for_loop_iterbefore_while_loop_bodyafter_while_loop_iterbefore_for_iterafter_for_iterbefore_attribute_loadbefore_attribute_storebefore_attribute_delafter_attribute_loadbefore_subscript_loadbefore_subscript_storebefore_subscript_delafter_subscript_loadbefore_subscript_sliceafter_subscript_slicebefore_load_complex_symbolafter_load_complex_symbolafter_if_testafter_while_testbefore_lambdaafter_lambdarn   before_call
after_callbefore_argumentafter_argumentbefore_returnafter_returnbefore_dict_literalafter_dict_literalbefore_list_literalafter_list_literalbefore_set_literalafter_set_literalbefore_tuple_literalafter_tuple_literaldict_key
dict_valuelist_eltset_elt	tuple_eltbefore_assign_rhsafter_assign_rhsbefore_augassign_rhsafter_augassign_rhsbefore_function_bodyafter_function_executionbefore_lambda_bodyafter_lambda_bodyleft_binop_argright_binop_argbefore_binopafter_binopleft_compare_argcompare_argbefore_compareafter_compareafter_comprehension_ifafter_comprehension_eltafter_dict_comprehension_keyafter_dict_comprehension_valueexception_handler_typeellipsisellipsesr   globalsr}   r8   r7   strModule
Expressionr>   exprrC   stmtrJ   rM   rp   rr   rU   r[   ry   __all__extendpyccolor   get_versionsrw   r    r'   r(   <module>r      s  
      % B B , q q J ' J + *  8 OOO*// 


  	(($$$$&&$$""
00 ,,  	""
$$(($$  	""
&&**((!66  44 #:: "88 ,,**"88 #:: !66 !66 "88 #:: !66 !66 #:: "88 'BB &@@ ((.. ((&&  	$$""
,,**((&& 44 22  44 22 22 00 !66  44 ""



  	00 .. !66  44 !66 %>> 22 00 **,,&&$$.. $$**((#:: $<< )FF !+!J!J #::  CGIchh 
%
 %* + +3 +E#**cnn2L,M +uS#((CNN23  uS#**chh./ T#s(^ !S#X !$z* x#s(9K8LhWZ\_W_N`8`/a <       (("L   B:  B  B ##%i0r'   