o
    g9                     @  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mZmZ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 ej dZ!ejd	 Z"e!du rrejd
 Z#ejd Z$ej%rpdndZ&e'(dZ)G dd deZ*dS )z#Raw data collector for coverage.py.    )annotationsN)	FrameType
ModuleType)AnyCallableDictListOptionalSetTuplecast)env)TArcTFileDispositionTLineNo
TTraceDataTTraceFileDataTTraceFn
TracerCore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 r7   Q/var/www/html/bloggers_ems/venv/lib/python3.10/site-packages/coverage/pytracer.py__init__:   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vr7   r7   r8   	<genexpr>f   s    z$PyTracer.__repr__.<locals>.<genexpr>z<PyTracer at z#xz: z data points in z files>)sumdatavaluesr<   r"   )r6   pointsfilesr7   r7   r8   __repr__e   s   
zPyTracer.__repr__markerargsr   c              
   G  sv   t dd,}|d|| jt| j 	 |dd
tt| 	 |d W d   dS 1 s4w   Y  dS )z3For hard-core logging of what this tracer is doing.z/tmp/debug_trace.txtaz	{} {}[{}]r   z
.{:x}.{:x}z {} z | z / c                 s  s*    | ]\}}}}|pd  dd V  qdS )z???/N)
rpartition)r=   _fnamer7   r7   r8   r?   z   s
    

zPyTracer.log.<locals>.<genexpr>
N)openwriteformatr"   r<   r,   r-   identr&   current_threadjoinmapr:   )r6   rF   rG   fstackr7   r7   r8   logj   s   "zPyTracer.logNframer   eventarglinenoOptional[TLineNo]Optional[TTraceFn]c              	   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rk| jdu rk| |}|durh|| _d}| jdusaJ | | 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 |
| jvrt | j|
< | 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r)|j}| j&rt't(t) | j*| j|f nt't(t+ | j*| || _| jS |dkr| j&r| jr|jj"}|j#}t!durat,||d krQd}n>t-j.j/rZ|d7 }|| t!k}n.|| t0krkd}n$|| t1krud}nt,||t2 krd}n||t2  t3krd}nd}|r|jj%}t'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_lastirK   liner   r   )4	THIS_FILEf_codeco_filenamer.   sysgettracer4   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_filenamerA   setf_trace_linesr   co_coderc   getattrco_firstlinenor#   r   r
   r   addr   r<   r   
PYBEHAVIORlasti_is_yieldr   r   YIELD_FROM_OFFSETr   )r6   rZ   r[   r\   r]   rW   context_mayber+   filenamedisp	tracenameoparg	real_callflinenocodelastireal_returnfirstr7   r7   r8   r3      s   	





64
)



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   r4   r5   r7   r7   r8   start"  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warnr4   )r6   tfsuppress_warningr7   r7   r8   stop0  s&   


zPyTracer.stopboolc                 C  s   | j S )zHas there been any activity?r/   r5   r7   r7   r8   activityT  s   zPyTracer.activityc                 C  s
   d| _ dS )zReset the activity() flag.FNr   r5   r7   r7   r8   reset_activityX  s   
zPyTracer.reset_activityOptional[Dict[str, int]]c                 C  s   dS )z+Return a dictionary of statistics, or None.Nr7   r5   r7   r7   r8   	get_stats\  s   zPyTracer.get_stats)r   r   )r   r:   )rF   r:   rG   r   r   r   r;   )
rZ   r   r[   r:   r\   r   r]   r^   r   r_   )r   r   )r   r   )r   r   )__name__
__module____qualname____doc__	itertoolscountr!   r9   rE   rY   r3   r   r   r   r   r   r7   r7   r7   r8   r   %   s    

+
 
"

$
r   )+r   
__future__r   r0   disr   rh   r&   typesr   r   typingr   r   r   r   r	   r
   r   r   coverager   coverage.typesr   r   r   r   r   r   r   r   opmaprs   r   r   r   r   r   r   __file__rstripre   r   r7   r7   r7   r8   <module>   s&   ((



