B
    `*                 @   s^   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e
dZG dd deZdS )z#Raw data collector for coverage.py.    N)envYIELD_VALUEcoc               @   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   s   d | _ d| _d | _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should_start_contextwarn	threadingcur_file_dict	last_linecur_file_namecontextstarted_context
data_stacklast_exc_backlast_exc_firstlinenothreadstopped	_activityr   atexitregistersetattr)self r   Y/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/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 {}: {} lines in {} files>c             s   s   | ]}t |V  qd S )N)len).0vr   r   r   	<genexpr>I   s    z$PyTracer.__repr__.<locals>.<genexpr>)formatidsumr   valuesr    )r   r   r   r   __repr__F   s    zPyTracer.__repr__c          
   G   s^   t ddJ}|d|t| t| j |ddtt| |d W dQ R X dS )z3For hard-core logging of what this tracer is doing.z/tmp/debug_trace.txtaz	{} {}[{}]z {} 
N)	openwriter$   r%   r    r   joinmapstr)r   markerargsfr   r   r   logM   s    zPyTracer.logc             C   s  t |jjkrdS | jrLt | jkrLtd | j	 \| _
| _| _| _dS | jr|| jkr| jr| j
r| j| j f}d| j
|< | j	 \| _
| _| _| _d| _|dkr| jr| jdkr| |}|dk	r|| _d| _| | j qd| _nd| _d| _| j| j
| j| j| jf |jj}|| _| j|}|dkrP| ||}|| j|< d| _
|jr|j}|| jkrzi | j|< | j| | _
t|dddk r|jj | _n|j| _n|dkr| j
dk	r|j}	| jrd| j
| j|	f< n
d| j
|	< |	| _n|d	kr~| jrJ| j
rJ|jj}
|
r0|
|j  t!krJ|jj}d| j
| j| f< | j	 \| _
| _| _| _| jrd| _| d n|d
kr|j"| _|jj| _| jS )z*The trace function passed to sys.settrace.NcallTFf_lastir   linereturn	exception)#	THIS_FILEf_codeco_filenamer   sysgettrace_tracesettracer   popr   r   r   r   r   r   r   r   r   Zswitch_contextr   appendr
   getr	   traceZsource_filenamer   getattrco_firstlinenof_linenoco_coder6   r   f_back)r   frameeventZ
arg_unusedpairZcontext_maybefilenameZdispZ	tracenamelinenocodefirstr   r   r   r@   d   s    	














zPyTracer._tracec             C   sP   d| _ | jr>| jdk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   currentThreadidentr@   r>   rA   )r   r   r   r   start   s    
zPyTracer.startc             C   sv   t  }d| _| jr,| jj| j jkr,dS | jrrtj	oNtj
dkoN| joN|dk}|sr|| jkrr| jd|f dd dS )zStop this Tracer.TN)      z7Trace function changed, measurement is likely wrong: %rztrace-changed)Zslug)r>   r?   r   r   r   rS   rR   r   r   ZPYPYZPYPYVERSIONr   r@   )r   tfZ	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.FN)r   )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(   r4   r@   rT   rX   rY   rZ   r[   r   r   r   r   r      s   rr   )r_   r   disr>   Zcoverager   opmapr   PY2chr__file__rstripr;   objectr   r   r   r   r   <module>   s   

