o
    ]Ì>Z¸"  ã                   @   sT   d Z ddlZddlZddlZddlmZ ejd Zejr e	eƒZG dd„ de
ƒZdS )z#Raw data collector for coverage.py.é    N)ÚenvÚYIELD_VALUEc                   @   sX   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚPyTracerz-Python implementation of the raw data tracer.c                 C   st   d | _ d| _d | _d | _d | _d | _d | _d| _d | _g | _	d | _
d| _d | _d| _d| _d| _t t| dd¡ d S )NFr   Ú	in_atexitT)ÚdataÚ
trace_arcsÚshould_traceÚshould_trace_cacheÚwarnÚ	threadingÚcur_file_dictÚ	last_lineÚcur_file_nameÚ
data_stackÚlast_exc_backÚlast_exc_firstlinenoÚthreadÚstoppedÚ	_activityr   ÚatexitÚregisterÚsetattr©Úself© r   úC/var/www/html/env/lib/python3.10/site-packages/coverage/pytracer.pyÚ__init__%   s"   zPyTracer.__init__c                 C   s,   d  t| ƒtdd„ | j ¡ D ƒƒt| jƒ¡S )Nz)<PyTracer at {0}: {1} lines in {2} files>c                 s   s   � | ]}t |ƒV  qd S )N)Úlen)Ú.0Úvr   r   r   Ú	<genexpr>A   s   € z$PyTracer.__repr__.<locals>.<genexpr>)ÚformatÚidÚsumr   Úvaluesr   r   r   r   r   Ú__repr__>   s
   ýzPyTracer.__repr__c                 G   sl   t ddƒ�'}| d |t| ƒ| jjt| jƒ| j 	¡ jd 
tt|ƒ¡¡¡ 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{} {:x}.{:x}[{}] {:x} {}
ú N)ÚopenÚwriter!   r"   r   Úidentr   r   r   ÚcurrentThreadÚjoinÚmapÚstr)r   ÚmarkerÚargsÚfr   r   r   ÚlogE   s   
ú"ÿzPyTracer.logc                 C   sü  | j rt ¡ | jkrt d¡ dS | jr9|| jkr6| jr+| jr+| j| j	 f}d| j|< | j
 ¡ \| _| _| _d| _|dkr™d| _| j
 | j| j| jf¡ |jj}|| _| j |¡}|du rh|  ||¡}|| j|< d| _|jr�|j}|| jvr{i | j|< | j| | _t|ddƒdk r’|jj | _| jS |j| _| jS |dkr¼| jdur¹|j}| jr±d| j| j|f< nd| j|< || _| jS |dkrî| jrà| jrà|jj}	|	rÓ|	|j tkrà|jj}
d| j| j|
 f< | j
 ¡ \| _| _| _| jS |d	krû|j| _|jj| _	| jS )
z*The trace function passed to sys.settrace.NÚcallTÚf_lastiéÿÿÿÿr   ÚlineÚreturnÚ	exception)r   ÚsysÚgettraceÚ_traceÚsettracer   r   r   r   r   r   Úpopr   r   ÚappendÚf_codeÚco_filenamer	   Úgetr   ÚtraceÚsource_filenamer   ÚgetattrÚco_firstlinenoÚf_linenoÚco_coder4   r   Úf_back)r   ÚframeÚeventÚ
arg_unusedÚpairÚfilenameÚdispÚ	tracenameÚlinenoÚcodeÚfirstr   r   r   r;   Q   sd   





æç

òý
zPyTracer._tracec                 C   sP   d| _ | jr| jdu r| j ¡ | _n| jj| j ¡ jkr| jS t | j¡ | jS )zdStart this Tracer.

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

        FN)r   r   r   r+   r*   r;   r9   r<   r   r   r   r   Ústart›   s   
zPyTracer.startc                 C   s‚   t  ¡ }d| _| jr| jj| j ¡ jkrdS | jr;tj	o'tj
dko'| jo'|du }|s=|| jkr?| jd|f dd� dS dS dS dS )zStop this Tracer.TN)é   é   z7Trace function changed, measurement is likely wrong: %rztrace-changed)Úslug)r9   r:   r   r   r   r*   r+   r
   r   ÚPYPYÚPYPYVERSIONr   r;   )r   ÚtfÚ	dont_warnr   r   r   Ústop°   s   
þúzPyTracer.stopc                 C   s   | j S )zHas there been any activity?©r   r   r   r   r   ÚactivityÍ   s   zPyTracer.activityc                 C   s
   d| _ dS )zReset the activity() flag.FNr\   r   r   r   r   Úreset_activityÑ   s   
zPyTracer.reset_activityc                 C   s   dS )z+Return a dictionary of statistics, or None.Nr   r   r   r   r   Ú	get_statsÕ   s   zPyTracer.get_statsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r%   r2   r;   rS   r[   r]   r^   r_   r   r   r   r   r      s    Jr   )rc   r   Údisr9   Úcoverager   Úopmapr   ÚPY2ÚchrÚobjectr   r   r   r   r   Ú<module>   s   
