o
    v&i;                     @  s  d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	m
Z
 ddlmZmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZ ee Zee Zej dZ!ejd	 Z"e!du ruejd
 Z#ejd Z$ej%rrdndZ&nd Z# Z$Z&e'(dZ)G dd deZ*dS )z#Raw data collector for coverage.py.    )annotationsN)	FrameType
ModuleType)AnyCallablecast)env)
TArcTFileDispositionTLineNoTracerTShouldStartContextFnTShouldTraceFn
TTraceDataTTraceFileDataTTraceFnTWarnFnRESUMERETURN_VALUEYIELD_VALUE
YIELD_FROM   coc                   @  sv   e Zd ZdZe Zd%ddZd&ddZd'ddZ		d(d)ddZ
d*ddZd%ddZd+ddZd%d d!Zd,d#d$ZdS )-PyTracerz-Python implementation of the raw data tracer.returnNonec                 C  s   t | j| _|  d| _|  |  d | _d | _|  |  |  d | _d | _d| _d | _	d | _
d| _g | _d | _d| _d| _d| _tt| dd | j| _d S )NFr   	in_atexitT)next
tracer_idsid
trace_arcsshould_start_contextswitch_context	threadingcur_file_data	last_linecur_file_namecontextstarted_context
data_stackthreadstopped	_activityr   atexitregistersetattr_trace_cached_bound_method_traceself r5   W/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/coverage/pytracer.py__init__L   s.   
zPyTracer.__init__strc                 C  s@   t dd | j D }t| j}dt| dd| d| dS )Nc                 s  s    | ]}t |V  qd S N)len).0vr5   r5   r6   	<genexpr>z   s    z$PyTracer.__repr__.<locals>.<genexpr>z<PyTracer at z#xz: z data points in z files>)sumdatavaluesr:   r    )r4   pointsfilesr5   r5   r6   __repr__y   s   
zPyTracer.__repr__markerargsr   c              
   G  s   t dddd0}|| d| j dt| j d 	 |d
d
tt| 	 |d W d   dS 1 s:w   Y  dS )z3For hard-core logging of what this tracer is doing.z/tmp/debug_trace.txtazutf-8)encoding []r   z
.{:x}.{:x}z {}z | z / c                 s  s*    | ]\}}}}|pd  dd V  qdS )z???/r   N)
rpartition)r;   _fnamer5   r5   r6   r=      s    
zPyTracer.log.<locals>.<genexpr>
N)openwriter    r:   r*   formatr+   identr$   current_threadjoinmapr8   )r4   rD   rE   fstackr5   r5   r6   log~   s   $"zPyTracer.logNframer   eventarglinenoTLineNo | NoneTTraceFn | Nonec              	   C  s  t |jjv rdS | jr@t | jkr@	 td z| j \| _| _| _| _W dS  ty?   | d|jj|j|jj	 Y dS w |dkr| jrl| jdu rl| |}|duri|| _d}| jdusbJ | | j nd}nd}|| _d| _| j| j| j| j|f |jj}|| jks|r|| _| j|}	|	du r| ||}	|	| j|< d| _|	jr|	j}
|
dusJ |   z|
| jvrt  | j|
< W | !  n| !  w | j|
 | _n
d|_"n| jsd|_"t#dur|jj$|j%d	  }|dk}nt&|d
ddk }|r|jj' | _| jS |j| _| jS |dkr:| jdur7|j}| j(r+t)t*| j+| j|f n	t)t,| j+| || _| jS |dkr| j(r| jr|jj$}|j%}t#durot-||d kr_d}n>t.j/j0rh|d7 }|| t#k}n.|| t1kryd}n$|| t2krd}nt-||t3 krd}n||t3  t4krd}nd}|r|jj'}t)t*| j+| j| f | j \| _| _| _| _| jr| jdusJ d| _| d | jS )z*The trace function passed to sys.settrace.Nr   z---
X>zEmpty stack!callTF   f_lastir   liner   r   )5	THIS_FILEf_codeco_filenamer,   sysgettracer2   rY   f_linenoco_namef_tracef_backsettracer*   popr%   r'   r&   r)   
IndexErrorr"   r(   r#   r-   appendshould_trace_cachegetshould_tracetracesource_filename	lock_datar?   setunlock_dataf_trace_linesr   co_coderc   getattrco_firstlinenor!   r   set_TArcaddset_TLineNor:   r   
PYBEHAVIORlasti_is_yieldr   r   YIELD_FROM_OFFSETr   )r4   rZ   r[   r\   r]   rW   context_mayber)   filenamedisp	tracenameoparg	real_callflinenocodelastireal_returnfirstr5   r5   r6   r1      s   	






75
*



zPyTracer._tracer   c                 C  s4   d| _ | jr| jdu r| j | _t| j | jS )zdStart this Tracer.

        Return a Python function suitable for use with sys.settrace().

        FN)r,   r$   r+   rT   rh   rn   r2   r3   r5   r5   r6   start8  s   
zPyTracer.startc                 C  s   t  }d| _| jr| jdusJ | jj| j jkrdS tjr'| j	r'|du p)tj
}| jrE|sG|| jkrI| jd|d| j dd dS dS dS dS )zStop this Tracer.TNz.Trace function changed, data is likely wrong: z != ztrace-changed)slug)rh   ri   r,   r$   r+   rS   rT   r   PYPYr   METACOVwarnr2   )r4   tfsuppress_warningr5   r5   r6   stopF  s"   


zPyTracer.stopboolc                 C  s   | j S )zHas there been any activity?r-   r3   r5   r5   r6   activityg  s   zPyTracer.activityc                 C  s
   d| _ dS )zReset the activity() flag.FNr   r3   r5   r5   r6   reset_activityk  s   
zPyTracer.reset_activitydict[str, int] | Nonec                 C  s   dS )z+Return a dictionary of statistics, or None.Nr5   r3   r5   r5   r6   	get_statso  s   zPyTracer.get_stats)r   r   )r   r8   )rD   r8   rE   r   r   r   r9   )
rZ   r   r[   r8   r\   r   r]   r^   r   r_   )r   r   )r   r   )r   r   )__name__
__module____qualname____doc__	itertoolscountr   r7   rC   rY   r1   r   r   r   r   r   r5   r5   r5   r6   r   7   s    

-
 
'

!
r   )+r   
__future__r   r.   disr   rh   r$   typesr   r   typingr   r   r   coverager   coverage.typesr	   r
   r   r   r   r   r   r   r   r   rx   r   r~   opmaprs   r   r   r   r   r   r   __file__rstripre   r   r5   r5   r5   r6   <module>   s,   0



