
    yIf                        d dl mZ d dlZd dlmZmZmZmZ d dlm	Z	 d dl
mZmZmZmZ d dlmZmZ erd dlmZ ddZ G d de	          Zej        ej        ej        ej        fZddZddZdS )    )annotationsN)TYPE_CHECKINGAnyLiteralcast)BaseTokenChecker)	ParagraphSectionTableText)LinterStatsdiff_string)PyLintersectr
   statsr   	old_statsLinterStats | NonereturnNonec           	        |j         d         }|                     dt          t          | d          g                     g d}dD ]}t	          t
          d         |          }|j         |         }|rt          |dz            |z  nd}|r|j         |         nd}|rt          ||          nd}	||t          |          ||dnd	|rt          |          nd	|	r|	nd	gz  }| 	                    t          |d
d                     dS )z5Calculate percentage of code / doc / comment / empty.totalr   z lines have been analyzed
)typenumber%previous
difference)code	docstringcommentemptyd   Nz.2fNC      )childrencolsrheaders)code_type_countinsertr	   r   r   r   floatr   strappendr   )
r   r   r   total_lineslines	node_typer   percentolddiff_strs
             O/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/raw_metrics.pyreport_raw_statsr4      sD    '0KKK9dk#N#N#NOOPQQRRR===E> 
 
	!HI9UU	%i06AK%$${22t6?Ii'	22T.1;;sE***tJJ ' 3w%CHHH *HHd
 	
 	KKu1q999:::::    c                  F    e Zd ZU dZdZdZi Zded<   ddeffZ	dd
Z
ddZdS )RawMetricsCheckerzChecker that provides raw metrics instead of checking anything.

    Provides:
    * total number of lines
    * total number of code lines
    * total number of docstring lines
    * total number of comments lines
    * total number of empty lines
    metrics r   msgsRP0701zRaw metricsr   r   c                B    | j         j                                         dS )zInit statistics.N)linterr   reset_code_count)selfs    r3   openzRawMetricsChecker.open?   s    **,,,,,r5   tokenslist[tokenize.TokenInfo]c                   d}t          |          }|t          |          k     rgt          ||          \  }}}| j        j        j        dxx         |z  cc<   | j        j        j        |xx         |z  cc<   |t          |          k     edS dS )zUpdate stats.r   r   N)listlenget_typer=   r   r(   )r?   rA   ilines_number	line_types        r3   process_tokensz RawMetricsChecker.process_tokensC   s    f#f++oo)1&!)<)<&A|YK-g666,F666K-i888LH888 #f++oooooor5   N)r   r   )rA   rB   r   r   )__name__
__module____qualname____doc__nameoptionsr:   __annotations__r4   reportsr@   rJ   r9   r5   r3   r7   r7   +   sw           DGDNNNN-)9:<G- - - -I I I I I Ir5   r7   rA   rB   start_indexintAtuple[int, int, Literal['code', 'docstring', 'comment', 'empty']]c                8   |}| |         d         }|}d}|t          |           k     r| |         d         d         |d         k    r| |         d         }| |         d         }|2|t          j        k    rd}n|t          j        k    rd}n|t          v rnd}|dz  }|t          |           k     r| |         d         d         |d         k    |d	}n4|t          |           k     r!| |         d         t          j        k    r|dz  }||d         |d         z
  dz   |fS )
z7Return the line type : docstring, comment, code, empty.   Nr      r   r   r   r$   r    )rE   tokenizeSTRINGCOMMENTJUNKNEWLINE)rA   rS   rG   startposrI   tok_types          r3   rF   rF   P   s4    	A1IaLE
CI
c&kk//fQil1oq99!9Q<Qil8?**'		X---%		T!!"		Q c&kk//fQil1oq99 			
S[[VAYq\X-===	Qc!fuQx!#Y..r5   r=   r   c                J    |                      t          |                      d S )N)register_checkerr7   )r=   s    r3   registerrc   m   s%    
-f5566666r5   )r   r
   r   r   r   r   r   r   )rA   rB   rS   rT   r   rU   )r=   r   r   r   )
__future__r   rY   typingr   r   r   r   pylint.checkersr   pylint.reporters.ureports.nodesr	   r
   r   r   pylint.utilsr   r   pylint.lintr   r4   r7   NLINDENTr]   	ENDMARKERr\   rF   rc   r9   r5   r3   <module>rm      sB  
 # " " " " "  4 4 4 4 4 4 4 4 4 4 4 4 , , , , , , K K K K K K K K K K K K 1 1 1 1 1 1 1 1 %$$$$$$; ; ; ;2I I I I I( I I ID 	X_h&68JK/ / / /:7 7 7 7 7 7r5   