
    i7                        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           dS )    )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
d	S )
r   c                 \    d| _         d | _        t          |           }|| _        d| _        d S )Nr   F)greenlet_switch_counteractive_greenletr   previous_trace_function_killed)self
prev_traces     9/usr/local/lib/python3.11/dist-packages/gevent/_tracer.py__init__zGreenletTracer.__init__   s6    
 ()$  $ d^^
'1$    c                 \    | j         s$d| _         t          | j                   d | _        d S d S NT)r   r   r   r   s    r   killzGreenletTracer.kill1   s<    | 	0DLT1222+/D(((	0 	0r   c                     | xj         dz  c_         |dv r|d         | _        nd | _        | j        |                     ||           d S d S )N   )switchthrow)r   r   r   r   eventargss      r   _tracezGreenletTracer._trace8   sh    $$)$$''' $(7D  #'D '3((55555 43r   c                 .    |                      ||          S N)r$   r!   s      r   __call__zGreenletTracer.__call__D   s    {{5$'''r   c                 P    | j         }| j        dk    }d| _        |s|||u rdS d|fS )Nr   FT)r   r   )r   hubr   
did_switchs       r   did_block_hubzGreenletTracer.did_block_hubG   sJ     .1Q6
'($ 	0Os4J4J
 5_$$r   c                     d | _         d S r&   )r   r   s    r    ignore_current_greenlet_blockingz/GreenletTracer.ignore_current_greenlet_blocking^   s    #r   c                 ,    t                      | _        d S r&   )r   r   r   s    r   !monitor_current_greenlet_blockingz0GreenletTracer.monitor_current_greenlet_blockingb   s    )||r   c                 "   ddt                      dt          |          dg}|                    d|            	 t          j                    |j                 }t          j        |          }n# t          $ r
 d|dg}Y nw xY w|                    dt          |j                  d           |                    d	
                    |                     |                    d
           |                    t          di |           |S )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   s5    (9999c/222245 	dd4555	2'))#*:;E *511EE  	G 	G 	G 	G ADEFEEE	G 	SAQ=R=R=R=RTUUUbggenn%%%go6666777s   A1 1BBN)__name__
__module____qualname__r   r   r$   r'   r+   r-   r/   rC   r3   r   r   r   r      s          *0 0 0
6 
6 
6( ( (% % %.$ $ $, , ,    r   r   c                       e Zd Zd Zd ZdS )
_HubTracerc                 V    t                               |            || _        || _        d S r&   )r   r   max_blocking_timer)   r   r)   rJ   s      r   r   z_HubTracer.__init__~   s)    %%%!2r   c                 H    d | _         t                              |            d S 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   }   s2          
" " " " "r   rH   c                        e Zd Zd Zd Zd ZdS )r   c                 L    t                               | ||           d| _        d S Nr   )rH   r   last_entered_hubrK   s      r   r   zHubSwitchTracer.__init__   s)    D#'8999 !r   c                     t                               | ||           | j        | j        u rt	                      | _        d S d S r&   )r   r$   r   r)   r	   rP   r!   s      r   r$   zHubSwitchTracer._trace   sD    dE400048++$0NND!!! ,+r   c                 V    t                      | j        z
  | j        k    r	d| j        fS d S r   )r	   rP   rJ   r   r   r)   s     r   r+   zHubSwitchTracer.did_block_hub   s3    >>D11D4JJJ--- KJr   NrD   rE   rF   r   r$   r+   r3   r   r   r   r      sA        " " "3 3 3
. . . . .r   r   c                        e Zd Zd Zd Zd ZdS )r   c                 r    t                               | ||           t                      | _        d| _        d S rO   )rH   r   r	   last_switchmax_blockingrK   s      r   r   zMaxSwitchTracer.__init__   s5    D#'8999'>>r   c                     | j         }t                              | ||           || j        ur4|4t	                      }t          | j        || j        z
            | _        d S d S d S r&   )r   r   r$   r)   r	   maxrX   rW   )r   r"   r#   
old_activeswitched_ats        r   r$   zMaxSwitchTracer._trace   sw    )
dE4000TX%%**@ '..K #D$5$/$2B$B!D !DD	 &%*@*@r   c                     | j         dk    rt                      | j        z
  | _         | j         | j        k    r	d| j        fS d S )Nr   T)rX   r	   rW   rJ   r   rS   s     r   r+   zMaxSwitchTracer.did_block_hub   sK    !! ,1A ADt555--- 65r   NrT   r3   r   r   r   r      sD          
D D 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      s   A @ @ @ @ @ @ @ @ @ 



                 ' ' ' ' ' ' ' ' ' ' ' '              _ _ _ _ _V _ _ _D" " " " " " " ". . . . .j . . .". . . . .j . . .8 ( ' ' ' ' ' wwyy+ , , , , ,r   