o
    g                     @   s   d dl Z d dlmZmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d	ed
efddZG dd deZe je je je jfZdd Zdd ZdS )    N)AnyOptionalUnion)BaseTokenChecker)EmptyReportError)ITokenChecker)Table)CheckerStats)diff_stringstats	old_statsc                 C   s   |d }|s	t  | d| _g d}dD ]5}|d }|| }t|d | }||d}	|	dur7t|	|}
nd\}	}
||t||d	t|	|
g7 }q| t|d
dd dS )z4calculate percentage of code / doc / comment / emptytotal_linesz lines have been analyzed)typenumber%previous
difference)code	docstringcommentempty_linesd   N)NCr   z.2f      )childrencolsrheaders)r   descriptionfloatgetr
   strappendr   )sectr   r   r   lines	node_typekeytotalpercentolddiff_str r,   Y/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pylint/checkers/raw_metrics.pyreport_raw_stats   s    r.   c                   @   sP   e Zd ZU dZefZdZdZi Ze	e
d< ddeffZdd Zd	d
 Zdd ZdS )RawMetricsCheckerzdoes not check anything but gives some raw metrics :
    * total number of lines
    * total number of code lines
    * total number of docstring lines
    * total number of comments lines
    * total number of empty lines
    metricsr,   msgsRP0701zRaw metricsc                 C   s   t | | i | _d S )N)r   __init__r   )selflinterr,   r,   r-   r3   I   s   
zRawMetricsChecker.__init__c                 C   s   | j jdddddd| _dS )zinit statisticsr   )r   
code_linesempty_linesdocstring_linescomment_linesN)r5   	add_statsr   )r4   r,   r,   r-   openM   s   zRawMetricsChecker.openc                 C   s`   d}t |}|t|k r.t||\}}}| jd  |7  < | j|  |7  < |t|k sdS dS )zupdate statsr   r   N)listlenget_typer   )r4   tokensilines_number	line_typer,   r,   r-   process_tokensW   s   z RawMetricsChecker.process_tokensN)__name__
__module____qualname____doc__r   __implements__nameoptionsr1   r   __annotations__r.   reportsr3   r;   rC   r,   r,   r,   r-   r/   5   s   
 
r/   c                 C   s  |}| | d }|}d}|t | k r[| | d d |d kr[| | d }| | d }|du rE|tjkr6d}n|tjkr>d}n|tv rCnd}|d7 }|t | k r[| | d d |d ks|du rbd	}n|t | k ru| | d tjkru|d7 }||d |d  d |fS )
z6return the line type : docstring, comment, code, empty   Nr      r8   r9   r6   r   r7   )r=   tokenizeSTRINGCOMMENTJUNKNEWLINE)r?   start_indexr@   startposrB   tok_typer,   r,   r-   r>   d   s,   $

$r>   c                 C   s   |  t|  dS )z-required method to auto register this checkerN)register_checkerr/   )r5   r,   r,   r-   register~   s   rY   )rO   typingr   r   r   pylint.checkersr   pylint.exceptionsr   pylint.interfacesr   pylint.reporters.ureports.nodesr   pylint.typingr	   pylint.utilsr
   r.   r/   NLINDENTrS   	ENDMARKERrR   r>   rY   r,   r,   r,   r-   <module>   s"   
,