
    ^h!                     n    S SK r S SKJr  S SKJrJrJrJrJrJ	r	J
r
Jr  \(       a  S SKJr   " S S5      rg)    N)contextmanager)TYPE_CHECKINGAnyCallableDictListOptionalSetTuple)_InternalBaseTracerc            	           \ rS rSrSS jrS r SS\S\\   S\\   S\	4S	 jjr
\S
\	S\/ \	4   4S j5       r\S 5       r\S 5       r\S 5       rS rSS jrS rS rSrg)
TraceStack
   c                 f    Xl         / U l        0 U l        [        5       U l        SU l        0 U l        g )NF)_manager_stack_stack_item_initializersset'_stack_items_with_manual_initialization _registering_stack_state_context_field_mapping)selfmanagers     M/home/james-whalen/.local/lib/python3.13/site-packages/pyccolo/trace_stack.py__init__TraceStack.__init__   s0    -/FH%AD405-.0    c                 t    [         R                  " U R                  R                  5       U R                  5      $ N)	itertoolschainr   keysr   r   s    r   _stack_item_namesTraceStack._stack_item_names   s.    ))..088
 	
r   Nfielddepthheightreturnc                 Z    Uc  Uc  SOU* OUnU R                   U   U R                  U      $ )N   )r   r   )r   r&   r'   r(   s       r   	get_fieldTraceStack.get_field   s7     6<^151{{6"4#6#6u#=>>r   init_valc                    ^  U 4S j$ )Nc                     > T $ r    r.   s   r   <lambda>2TraceStack._make_initer_from_val.<locals>.<lambda>!   s    xr   r1   r2   s   `r   _make_initer_from_val TraceStack._make_initer_from_val   s	    r   c              #     #    SU l         [        U R                  R                  R	                  5       5      nS v   SU l         [        U R                  R                  R	                  5       U-
  5      nX R
                  -
   H  nU R                  R                  U   n[        U[        5      (       a  UR                  U R                  U'   ML  Uc  S U R                  U'   Ma  [        U[        [        [        [        45      (       a1  [        U5      " U5      nU R                  U5      U R                  U'   M  [        U5      U R                  U'   M     [!        U R#                  5       5       H  u  pcX`R$                  U'   M     g 7f)NTFc                      g r   r1   r1   r   r   r3   1TraceStack.register_stack_state.<locals>.<lambda>1   s    r   )r   r   r   __dict__r"   r   
isinstancer   _cloner   intboolstrfloattyper5   	enumerater$   r   )r   original_statestack_item_namesstack_item_name
stack_itemr.   is          r   register_stack_stateTraceStack.register_stack_state#   sF    04-T]]3388:;05-t}}55::<~MNKKK  //@J*j11AKARAR--o>#AM--o>JdC(?@@
+J7..x8 --o> BFjAQ--o> L #,D,B,B,D"EA340 #Fs   FFc              #      #    U R                   (       d   e[        U R                  R                  R	                  5       5      nS v   [        U R                  R                  R	                  5       U-
  5      U l        g 7fr   )r   r   r   r:   r"   r   )r   rC   s     r   needing_manual_initialization(TraceStack.needing_manual_initialization<   s\     4444T]]3388:;7:MM""'')N:8
4s   A;A=c              #   "  ^ #    T R                   R                  [        U 4S jT R                  5        5       5      5        T R                  R                  5        H#  u  pU" 5       T R                  R                  U'   M%     T R                   H  nT R                  R                  U	 M     Sv   / nT R                   H0  nUT R                  R                  ;  d  M  UR                  U5        M2     [        U5      S:  a  [        SU-  5      eg7f)z]
Checks at the end of the context that everything requiring manual init was manually inited.
c              3   V   >#    U  H  nTR                   R                  U   v   M      g 7fr   )r   r:   ).0rF   r   s     r   	<genexpr>"TraceStack.push.<locals>.<genexpr>K   s'      ":J &&z2":s   &)Nr   zEStack item(s) %s requiring manual initialization were not initialized)r   appendtupler$   r   itemsr   r:   r   len
ValueError)r   rF   initializeruninitialized_itemss   `   r   pushTraceStack.pushE   s     
 	 "&"8"8": 	
 (,'D'D'J'J'L#J1<DMM"":. (MFFJ&&z2 G FFJ!7!77#**:6 G "#a'W%&  (s   CD3Dc                 d    [        U R                  5      n[        U R                  5      Ul        U$ r   )r   r   dictr:   )r   new_tracing_stacks     r   r<   TraceStack._clone_   s)    &t}}5%)$--%8"  r   c                     [        U R                  5       U R                  R                  5       5       H  u  pX R                  R
                  U'   M     U $ r   )zipr$   r   popr   r:   )r   rE   rF   s      r   ra   TraceStack.popd   sI    +.""$dkkoo&7,
'O 7AMM""?3,
 r   c                     U R                   S S U l         [        U R                   5      S:  a  U R                  5         g g )Nr+   r   )r   rU   ra   r#   s    r   clearTraceStack.cleark   s2    kk"1ot{{aHHJ  r   c                 ,    [        U R                  5      $ r   )rU   r   r#   s    r   __len__TraceStack.__len__p   s    4;;r   )r   r   r   r   r   r   )r   r   )NN)r)   r   )__name__
__module____qualname____firstlineno__r   r$   r?   r	   r=   r   r,   staticmethodr   r5   r   rH   rK   rY   r<   ra   rd   rg   __static_attributes__r1   r   r   r   r   
   s    1
 PT??!)#??G}?	?    S0A     5 50 
 
  2!

 r   r   )r    
contextlibr   typingr   r   r   r   r   r	   r
   r   pyccolo.tracerr   r   r1   r   r   <module>rr      s&     % Q Q Q2g  g r   