B
    `                 @   s`   d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
 eeZG dd deZdS )z'Source file annotation for coverage.py.    N)flat_rootname)
ensure_dirisolate_module)get_analysis_to_reportc               @   s>   e Zd ZdZdd ZedZedZdddZ	d	d
 Z
dS )AnnotateReportera  Generate annotated source files showing line coverage.

    This reporter creates annotated copies of the measured source files. Each
    .py file is copied as a .py,cover file, with a left-hand margin annotating
    each line::

        > def h(x):
        -     if 0:   #pragma: no cover
        -         pass
        >     if x == 1:
        !         a = 1
        >     else:
        >         a = 2

        > h(2)

    Executed lines use '>', lines not executed use '!', lines excluded from
    consideration use '-'.

    c             C   s   || _ | j j| _d | _d S )N)coverageconfig	directory)selfr    r   Y/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/coverage/annotate.py__init__'   s    
zAnnotateReporter.__init__z\s*(#|$)z\s*else\s*:\s*(#|$)Nc             C   s:   || _ | j  x$t| j|D ]\}}| || qW dS )zIRun the report.

        See `coverage.report()` for arguments.

        N)r	   r   get_datar   annotate_file)r
   Zmorfsr	   franalysisr   r   r   report/   s    
zAnnotateReporter.reportc          	   C   s2  t |j}t |j}t |j}| jrjt| j tj| jt	|
 }|dr`|dd d }|d7 }n
|jd }tj|ddd}d	}d	}	d
}
| }xt|d
ddD ]l\}}x$|t|k r|| |k r|d7 }qW x(|	t|k r
||	 |k r
|	d7 }	qW |t|k rB|| |krB|	t|kp@||	 |k}
| j|r\|d n| j|r|t|kr|	t|kr|d nP|t|ks|	t|kr|d n(|| ||	 kr|d n
|d n2||kr|d n|
r|d n
|d || qW W dQ R X dS )z]Annotate a single file.

        `fr` is the FileReporter for the file to annotate.

        Z_pyNz.pyz,coverwutf8)encodingr   T   )startz  z! z> z- )sorted
statementsmissingexcludedr	   r   ospathjoinr   Zrelative_filenameendswithfilenameioopensource	enumerate
splitlineslenblank_rematchwriteelse_re)r
   r   r   r   r   r   	dest_filedestijZcoveredr$   linenoliner   r   r   r   :   sL    






 

zAnnotateReporter.annotate_file)N)__name__
__module____qualname____doc__r   recompiler(   r+   r   r   r   r   r   r   r      s   


r   )r5   r"   r   r6   Zcoverage.filesr   Zcoverage.miscr   r   Zcoverage.reportr   objectr   r   r   r   r   <module>   s   