
    <|h7                         d dl mZmZmZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ g dZ G d	 d
e      Z G d de      Z G d de      Z G d de      Zd dlmZ  e e       d       y)    )print_functionabsolute_importdivisionN)settrace)
getcurrent)format_run_info)perf_counter)gmctime)GreenletTracerHubSwitchTracerMaxSwitchTracerc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
r   c                 R    d| _         d | _        t        |       }|| _        d| _        y )Nr   F)greenlet_switch_counteractive_greenletr   previous_trace_function_killed)self
prev_traces     M/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/_tracer.py__init__zGreenletTracer.__init__   s0    
 ()$  $ d^
'1$    c                 d    | j                   s$d| _         t        | j                         d | _        y y NT)r   r   r   r   s    r   killzGreenletTracer.kill1   s+    ||DLT112+/D( r   c                     | xj                   dz  c_         |dv r|d   | _        nd | _        | j                  | j                  ||       y y )N   )switchthrow)r   r   r   r   eventargss      r   _tracezGreenletTracer._trace8   sS    $$)$'' $(7D #'D ''3((5 4r   c                 &    | j                  ||      S N)r$   r!   s      r   __call__zGreenletTracer.__call__D   s    {{5$''r   c                 `    | j                   }| j                  dk7  }d| _        |s|||u ryd|fS )Nr   FT)r   r   )r   hubr   
did_switchs       r   did_block_hubzGreenletTracer.did_block_hubG   sF     ..11Q6
'($0Os4J
 _$$r   c                     d | _         y r&   )r   r   s    r    ignore_current_greenlet_blockingz/GreenletTracer.ignore_current_greenlet_blocking^   s
    #r   c                 "    t               | _        y r&   )r   r   r   s    r   !monitor_current_greenlet_blockingz0GreenletTracer.monitor_current_greenlet_blockingb   s    )|r   c                    ddt               dt        |      dg}|j                  d|        	 t        j                         |j
                     }t        j                  |      }|j                  dt        |j
                        d       |j                  d	j                  |             |j                  d
       |j                  t        di |       |S # t        $ r
 d|dg}Y w xY w)NzP================================================================================
z : Greenlet z appears to be blockedz    Reported by z!Unknown: No thread found for hub zBlocked Stack (for thread id z): zInfo: )r
   strappendsys_current_framesthread_ident	tracebackformat_stackKeyErrorhexjoinextendr   )r   r)   r   format_kwargsreportframestacks          r   did_block_hub_reportz#GreenletTracer.did_block_hub_reporte   s     9c/245 	d45	2'')#*:*:;E **51ESAQAQ=RTUbggen%go667  	G ADEFE	Gs   !C C0/C0N)__name__
__module____qualname__r   r   r$   r'   r+   r-   r/   rC   r3   r   r   r   r      s*    *0
6(%.$,r   r   c                       e Zd Zd Zd Zy)
_HubTracerc                 J    t         j                  |        || _        || _        y r&   )r   r   max_blocking_timer)   r   r)   rJ   s      r   r   z_HubTracer.__init__~   s    %!2r   c                 <    d | _         t        j                  |        y r&   )r)   r   r   r   s    r   r   z_HubTracer.kill   s    D!r   N)rD   rE   rF   r   r   r3   r   r   rH   rH   }   s    
"r   rH   c                       e Zd Zd Zd Zd Zy)r   c                 @    t         j                  | ||       d| _        y Nr   )rH   r   last_entered_hubrK   s      r   r   zHubSwitchTracer.__init__   s    D#'89 !r   c                     t         j                  | ||       | j                  | j                  u rt	               | _        y y r&   )r   r$   r   r)   r	   rP   r!   s      r   r$   zHubSwitchTracer._trace   s5    dE40488+$0ND! ,r   c                 h    t               | j                  z
  | j                  kD  rd| j                  fS y r   )r	   rP   rJ   r   r   r)   s     r   r+   zHubSwitchTracer.did_block_hub   s4    >D111D4J4JJ---- Kr   NrD   rE   rF   r   r$   r+   r3   r   r   r   r      s    "3
.r   r   c                       e Zd Zd Zd Zd Zy)r   c                 ^    t         j                  | ||       t               | _        d| _        y rO   )rH   r   r	   last_switchmax_blockingrK   s      r   r   zMaxSwitchTracer.__init__   s'    D#'89'>r   c                     | j                   }t        j                  | ||       || j                  ur6|3t	               }t        | j                  || j                  z
        | _        y y y r&   )r   r   r$   r)   r	   maxrX   rW   )r   r"   r#   
old_activeswitched_ats        r   r$   zMaxSwitchTracer._trace   sf    ))
dE40TXX%**@ '.K #D$5$5$/$2B2B$B!DD	 +A%r   c                     | j                   dk(  rt               | j                  z
  | _         | j                   | j                  kD  rd| j                  fS y )Nr   T)rX   r	   rW   rJ   r   rS   s     r   r+   zMaxSwitchTracer.did_block_hub   sO    ! ,1A1A ADt555---- 6r   NrT   r3   r   r   r   r      s    
D.r   r   )import_c_accelzgevent.__tracer)
__future__r   r   r   r6   r9   greenletr   r   gevent.utilr   gevent._compatr	   gevent._utilr
   __all__objectr   rH   r   r   r^   globalsr3   r   r   <module>rg      so    A @ 
    ' '  _V _D" ".j .".j .8 ( wy+ ,r   