
    ^h                        % S SK r S SKrS SKrS SKJr  S SKJrJr  S SKJ	r	  \(       a  S SK
JrJr  \ R                  " \5      r\	 V s1 s H  o R                   iM     sn r/ rS\S'   SqS	q\S
 5       rS r\" 5       r\R4                  " 5       R6                  rSrSrSSS\S\ 4S jr!S\S\ 4S jr"SSS\S\S\ 4S jr# SSSS\S\S\ S\ 4
S jjr$S r%S r&gs  sn f )    N)contextmanager)TYPE_CHECKINGList)BEFORE_EXPR_EVENTS)
BaseTracer_InternalBaseTracerzList[BaseTracer]_TRACER_STACKTFc               #   8   #    [         n Sq  S v   U q g ! U q f = f7fNT)_allow_reentrant_event_handling)orig_allow_reentrant_handlings    L/home/james-whalen/.local/lib/python3.13/site-packages/pyccolo/emit_event.pyallow_reentrant_event_handlingr      s*      %D!&*#H*G'*G's   	 c                 H   ^ U [         ;   a  [        T5      (       d  U4S j$ T$ )Nc                     > T$ )N )_rets    r   <lambda>_make_ret.<locals>.<lambda>$   s    #    )_BEFORE_EXPR_EVENT_NAMEScallable)eventr   s    `r   	_make_retr   "   s    ((#
r   z	<sandbox>z<sandboxtracerr   filenamereturnc                     g)NFr   )r   r   s     r   _should_instrument_filer    /   s    r   c                 D   U R                   (       d)  XR                  ;   d  UR                  [        5      (       a  gU R                  R                  5        H=  nUR                  S:X  a    O,UR                  R                  S5      nUc  M5  U" X5      s  $    [        X5      $ )NTr   should_instrument_file)
instrument_all_files_tracing_enabled_files
startswithSANDBOX_FNAME_PREFIX	__class__mro__name____dict__getr    )r   r   clazzr"   s       r   _should_instrument_file_implr-   3   s    ##444344!!%%'>>\)!&!3!34L!M!-)&;; ( #644r   evtc                     gr   r   )r   r.   r   s      r   _file_passes_filter_for_eventr0   C   s     r   is_reentrantc                    X R                   :X  a:  U R                  (       a)  U R                  S:  nU =R                  US:H  -  sl        U$ US;   d  [        X5      (       d  gU R                  R                  5        H>  nUR                  S:X  a    O-UR                  R                  S5      nUc  M5  U" XU5      s  $    [        XU5      $ )N   call)before_importinit_moduleafter_importFr   file_passes_filter_for_event)
_current_sandbox_fnamehas_sys_trace_events_num_sandbox_calls_seenr-   r'   r(   r)   r*   r+   r0   )r   r.   r   r1   r   r,   r8   s          r   _file_passes_filter_implr<   I   s     000V5P5P,,1&&#-7&

	
 (99!!%%'>>\)',~~'9'9*(
$ (3/XFF ( )h??r   c                    [         R                  " 5       R                  n[        (       + nU=(       a    [        (       + nSq[
         H  nU[        :w  a  UR                  (       d  M   U(       a  UR                  (       d  [        (       d  ME  [        XpUR                  R                  US9(       d  Mk  UR                  " U UU4SU0UD6n[        U[        5      (       a%  [        U5      S:  a  US   [         L a
  US   US'     g XS'   M     g )NF)r1   reentrant_handlers_only   r   r   )	threadingcurrent_threadident_allow_event_handlingr   r	   _main_thread_idmultiple_threads_allowedallow_reentrant_eventsr<   f_codeco_filename_emit_event
isinstancetuplelenSkipAll)	r   node_idframekwargscurrent_thread_idr1   r>   r   new_rets	            r   _emit_tracer_looprS   e   s     "00288,,L*R3R/R!/8W8W1133'5<<33,
 $$
 %<	

 
 gu%%#g,*:wqzW?T#AJF5M#5M1  r   c                    Sn[         R                  " 5       R                  nUR                  R                  [
        :X  a  [        XR                  SS 5      5      $ [        n[        n[        [        5      S:  aJ  [        S   R                  R                  UR                  R                  5      nUb  UR                  X5      n [        U UUU5        UqUq	[        XR                  S5      5      $ ! UqUq	f = f)NTr   r   )sys	_getframef_backrG   rH   __file__r   r+   rC   r   rL   r	   node_id_remapping_by_fnamerS   )r   rN   rP   __debuggerskip__rO   orig_allow_event_handling#orig_allow_reentrant_event_handling	remappings           r   rI   rI      s     MMO""E||8+

5$ 788 5*I'
=A!"%@@DDLL$$
	  mmG5G	N		
 !:*M'UJJu-.. !:*M's   C1 1C7)F)'loggingrV   r@   
contextlibr   typingr   r   pyccolo.trace_eventsr   pyccolo.tracerr   r   	getLoggerr)   loggervaluer   r	   __annotations__rC   r   r   r   objectrM   main_threadrB   rD   SANDBOX_FNAMEr&   strboolr    r-   r0   r<   rS   rI   )r.   s   0r   <module>rm      sD    
  % & 3> 
		8	$ 2DD1C#II1CD $&! & "'  H H ('')//! $9 S T 53 54 5 !(+7:	 RW@!@(+@7:@JN@	@8$$N/w Es   C