
    yIf0                        d dl mZ d dlmZmZmZ d dlmZ  G d de          Z G d de          Z	 G d d	e          Z
 G d
 de          Z G d de          Z G d de          Z G d d          ZddZdS )    )annotations)Literal	TypedDictcast)MessageTypesFullNamec                      e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   dS )BadNamesz7TypedDict to store counts of node types with bad names.intargumentattrklassclass_attributeclass_constconst	inlinevarfunctionmethodmodulevariabletypevar	typealiasN__name__
__module____qualname____doc____annotations__     L/var/www/piapp/venv/lib/python3.11/site-packages/pylint/utils/linterstats.pyr	   r	      s         AAMMMIIIJJJJJJNNNMMMKKKKKKMMMLLLNNNNNr   r	   c                  F    e Zd ZU dZded<   ded<   ded<   ded<   ded<   dS )	CodeTypeCountz1TypedDict to store counts of lines of code types.r
   codecomment	docstringemptytotalNr   r   r   r    r"   r"      sC         ;;IIILLLNNNJJJJJJJJr   r"   c                  (    e Zd ZU dZded<   ded<   dS )DuplicatedLinesz6TypedDict to store counts of lines of duplicated code.r
   nb_duplicated_linesfloatpercent_duplicated_linesNr   r   r   r    r)   r)   (   s0         @@######r   r)   c                  <    e Zd ZU dZded<   ded<   ded<   ded<   dS )	NodeCountz6TypedDict to store counts of different types of nodes.r
   r   r   r   r   Nr   r   r   r    r.   r.   /   s:         @@MMMJJJKKKKKKKKr   r.   c                  <    e Zd ZU dZded<   ded<   ded<   ded<   dS )UndocumentedNodesz5TypedDict to store counts of undocumented node types.r
   r   r   r   r   Nr   r   r   r    r0   r0   8   s:         ??MMMJJJKKKKKKKKr   r0   c                  Z    e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded<   ded	<   d
S )ModuleStatsz>TypedDict to store counts of types of messages and statements.r
   
conventionerrorfatalinforefactor	statementwarningNr   r   r   r    r2   r2   A   sU         HHOOOJJJJJJIIIMMMNNNLLLLLr   r2   c                      e Zd ZdZ	 	 	 	 	 	 	 	 d4d5dZd6dZd6dZd7dZd8dZd9d 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?d/Zd@d0ZdAd2Zd:d3ZdS )BLinterStatszClass used to linter stats.N	bad_namesBadNames | None	by_moduledict[str, ModuleStats] | Noneby_msgdict[str, int] | Nonecode_type_countCodeTypeCount | Nonedependenciesdict[str, set[str]] | Noneduplicated_linesDuplicatedLines | None
node_countNodeCount | NoneundocumentedUndocumentedNodes | NonereturnNonec	                   |pt          ddddddddddddd          | _        |pi | _        |pi | _        |pt	          ddddd          | _        |pi | _        |pt          dd          | _        |pt          dddd          | _
        |pt          dddd          | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r$   r%   r&   r'           r*   r,   r   r   r   r   )r	   r<   r>   r@   r"   rB   rD   r)   rF   r.   rH   r0   rJ   r3   r4   r5   r6   r7   r8   r9   global_noter*   r,   )	selfr<   r>   r@   rB   rD   rF   rH   rJ   s	            r    __init__zLinterStats.__init__Q   s^    # 
h'
 '
 '
 2;b&,l.  
-A!13
 3
 3
 2>1C 0 !
O !C5
 5
 5
 % 
	a!)
 )
 )
 ) 
,=a!-
 -
 -
 

	#$ (+%%%r   strc                     t          |           S )N)rW   rU   s    r    __repr__zLinterStats.__repr__   s    4yyr   c                6   d                     g | j         dt          | j                                                   dt          | j                                                   d| j         dt          | j                                                   d| j         d| j	         d| j
         d| j         d| j         d| j         d| j         d| j         d| j         d| j         d| j         d| j                   S )N z	
        )joinr<   sortedr>   itemsr@   rB   rD   rF   rJ   r3   r4   r5   r6   r7   r8   r9   rT   r*   r,   rY   s    r    __str__zLinterStats.__str__   s"   + + + +DN + + + +	$$&&	'	'+ + + +	!!##	$	$+ + + + 
	+ + + + 
!''))	*	*	+ + + +
 
	+ + + + 
	+ + + + 
+ + + + 
+ + + + 
+ + + + 
+ + + + 
+ + + + 
+ + + + 
+ + + + 
	+ + + + 
	!+ + + +  
	&!+ + + + 	+r   module_namec           	     B    t          ddddddd          | j        |<   dS )z`Use through PyLinter.set_current_module so PyLinter.current_name is
        consistent.
        r   )r3   r4   r5   r6   r7   r8   r9   N)r2   r>   )rU   ra   s     r    init_single_modulezLinterStats.init_single_module   s5     '2Q!UV'
 '
 '
{###r   	node_nameLiteral['argument', 'attr', 'class', 'class_attribute', 'class_const', 'const', 'inlinevar', 'function', 'method', 'module', 'variable', 'typevar', 'typealias']r
   c                z    |dk    r| j                             dd          S | j                             |d          S )zGet a bad names node count.classr   r   )r<   getrU   rd   s     r    get_bad_nameszLinterStats.get_bad_names   s?    & >%%gq111~!!)Q///r   increasec                    |dvrt          d          t          t          d         |          }|dk    r| j        dxx         |z  cc<   dS | j        |xx         |z  cc<   dS )z Increase a bad names node count.>   r   rg   r   r   r   r   r   r   r   r   r   r   r   z(Node type not part of the bad_names stat)r   r   rg   r   r   r   r   r   r   r   r   r   r   rg   r   N)
ValueErrorr   r   r<   )rU   rd   rk   s      r    increase_bad_namezLinterStats.increase_bad_name   s     
 
 
 GHHH !
 
	$ N7###x/#####N9%%%1%%%%%r   c                H    t          ddddddddddddd          | _        dS )zResets the bad_names attribute.r   rO   N)r	   r<   rY   s    r    reset_bad_nameszLinterStats.reset_bad_names   sC    !
 
 
r   	type_name9Literal['code', 'comment', 'docstring', 'empty', 'total']c                8    | j                             |d          S )zGet a code type count.r   )rB   rh   rU   rq   s     r    get_code_countzLinterStats.get_code_count   s     #''	1555r   c                8    t          ddddd          | _        dS )z%Resets the code_type_count attribute.r   rP   N)r"   rB   rY   s    r    reset_code_countzLinterStats.reset_code_count   s*    ,A!1 
  
  
r   c                2    t          dd          | _        dS )z&Resets the duplicated_lines attribute.r   rQ   rR   N)r)   rF   rY   s    r    reset_duplicated_linesz"LinterStats.reset_duplicated_lines  s$     / !C!
 !
 !
r   0Literal['function', 'class', 'method', 'module']c                z    |dk    r| j                             dd          S | j                             |d          S )z6Get a node count while handling some extra conditions.rg   r   r   )rH   rh   ri   s     r    get_node_countzLinterStats.get_node_count  s?     ?&&w222""9a000r   c                6    t          dddd          | _        dS )z Resets the node count attribute.r   rS   N)r.   rH   rY   s    r    reset_node_countzLinterStats.reset_node_count  s    #Qa!LLLr   r+   c                B    |dk    r| j         d         S | j         |         S )zGet a undocumented node count.rg   r   )rJ   ri   s     r    get_undocumentedzLinterStats.get_undocumented  s+     $W-- ++r   c                6    t          dddd          | _        dS )z"Resets the undocumented attribute.r   rS   N)r0   rJ   rY   s    r    reset_undocumentedzLinterStats.reset_undocumented  s"    -q!TUVVVr   c                $    t          | |d          S )zGet a global message count.r   )getattrrt   s     r    get_global_message_countz$LinterStats.get_global_message_count#  s    tY***r   modnamec                :    t          | j        |         |d          S )zGet a module message count.r   )r   r>   )rU   r   rq   s      r    get_module_message_countz$LinterStats.get_module_message_count'  s    t~g.	1===r   c                J    t          | |t          | |          |z              dS )z>Increase the message type count of an individual message type.N)setattrr   )rU   rq   rk   s      r    increase_single_message_countz)LinterStats.increase_single_message_count+  s)    iy!9!9H!DEEEEEr   r   c                <    | j         |         |xx         |z  cc<   dS )z[Increase the message type count of an individual message type of a
        module.
        N)r>   )rU   r   rq   rk   s       r    $increase_single_module_message_countz0LinterStats.increase_single_module_message_count/  s-     	w	***h6*****r   c                Z    d| _         d| _        d| _        d| _        d| _        d| _        dS )z2Resets the message type count of the stats object.r   N)r3   r4   r5   r6   r7   r9   rY   s    r    reset_message_countzLinterStats.reset_message_count7  s0    

	r   )NNNNNNNN)r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   )rL   rW   )ra   rW   rL   rM   )rd   re   rL   r
   )rd   rW   rk   r
   rL   rM   )rL   rM   )rq   rr   rL   r
   )rd   rz   rL   r
   )rd   rz   rL   r+   )rq   rW   rL   r
   )r   rW   rq   rW   rL   r
   )rq   rW   rk   r
   rL   rM   )r   rW   rq   r   rk   r
   rL   rM   )r   r   r   r   rV   rZ   r`   rc   rj   rn   rp   ru   rw   ry   r|   r~   r   r   r   r   r   r   r   r   r   r    r;   r;   N   s       %% &*37(,043737'+155, 5, 5, 5, 5,n   + + + +&
 
 
 
0 0 0 0.(2 (2 (2 (2T
 
 
 
$6 6 6 6
 
 
 

 
 
 
1 1 1 1M M M M, , , ,W W W W+ + + +> > > >F F F F7 7 7 7     r   r;   statslist[LinterStats]rL   c                $
   t                      }| D ]}|j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        d	xx         |j        d	         z  cc<   |j        d
xx         |j        d
         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j                                        D ]\  }}||j        |<   |j                                        D ]5\  }}	 |j        |xx         |z  cc<   # t
          $ r ||j        |<   Y 2w xY w|j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j                                        D ]@\  }}	 |j        |                             |           '# t
          $ r ||j        |<   Y =w xY w|j	        dxx         |j	        d         z  cc<   |j	        dxx         |j	        d         z  cc<   |j
        dxx         |j
        d         z  cc<   |j
        dxx         |j
        d         z  cc<   |j
        d	xx         |j
        d	         z  cc<   |j
        d
xx         |j
        d
         z  cc<   |j        dxx         |j        d         z  cc<   |j        dxx         |j        d         z  cc<   |j        d	xx         |j        d	         z  cc<   |j        d
xx         |j        d
         z  cc<   |xj        |j        z  c_        |xj        |j        z  c_        |xj        |j        z  c_        |xj        |j        z  c_        |xj        |j        z  c_        |xj        |j        z  c_        |xj        |j        z  c_        |xj        |j        z  c_        |S )zaUsed to merge multiple stats objects into a new one when pylint is run in
    parallel mode.
    r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r$   r%   r&   r'   r*   r,   )r;   r<   r>   r_   r@   KeyErrorrB   rD   updaterF   rH   rJ   r3   r4   r5   r6   r7   r8   r9   rT   )	r   mergedstatmod_key	mod_valuemsg_key	msg_valuedep_key	dep_values	            r    merge_statsr   A  s'    ]]F =/ =/$$$z(BB$$$   DN6$::   !!!T^G%<<!!!*+++t~>O/PP+++'''4>-+HH'''!!!T^G%<<!!!%%%)DD%%%$$$z(BB$$$"""dnX&>>""""""dnX&>>"""$$$z(BB$$$###t~i'@@###%%%)DD%%%"&."6"6"8"8 	2 	2GY(1FW%%"&+"3"3"5"5 	3 	3GY3g&&&)3&&&& 3 3 3)2g&&&3 	v&&&$*>v*FF&&&y)))T-A)-LL))){+++t/CK/PP+++w'''4+?+HH'''w'''4+?+HH'''"&"3"9"9";"; 	9 	9GY9#G,33I>>>> 9 9 9/8#G,,,9 	 5666$:O!;
 	
666 	 :;;;t?T&@
 	
;;; 	*%%%)DD%%%'"""dog&>>"""(###tx'@@###(###tx'@@###J'''4+<Z+HH'''G$$$(9'(BB$$$H%%%):8)DD%%%H%%%):8)DD%%%T_,
"
"ty 4=(DN*$,&d..Ms$   <HH)(H)+ LL#"L#N)r   r   rL   r;   )
__future__r   typingr   r   r   pylint.typingr   r	   r"   r)   r.   r0   r2   r;   r   r   r   r    <module>r      s  
 # " " " " " + + + + + + + + + + . . . . . .    y   $    I   $ $ $ $ $i $ $ $    	       	   	 	 	 	 	) 	 	 	p p p p p p p pfC C C C C Cr   