
    c10                    4   d dl mZ d dlZd dlmZ d dlmZ ej        dk    r	d dlmZm	Z	 nd dl
mZ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 )    )annotationsN)cast)MessageTypesFullName)      )Literal	TypedDictc                      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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typevarN__name__
__module____qualname____doc____annotations__     8lib/python3.11/site-packages/pylint/utils/linterstats.pyr   r      s         AAMMMIIIJJJJJJNNNMMMKKKKKKMMMLLLLLr    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/   4   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!   r1   r1   =   s:         ??MMMJJJKKKKKKKKr    r1   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!   r3   r3   F   sU         HHOOOJJJJJJIIIMMMNNNLLLLLr    r3   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          | _        |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?   rA   r#   rC   rE   r*   rG   r/   rI   r1   rK   r4   r5   r6   r7   r8   r9   r:   global_noter+   r-   )	selfr=   r?   rA   rC   rE   rG   rI   rK   s	            r!   __init__zLinterStats.__init__V   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)rX   rV   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?   itemsrA   rC   rE   rG   rK   r4   r5   r6   r7   r8   r9   r:   rU   r+   r-   rZ   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   )r4   r5   r6   r7   r8   r9   r:   N)r3   r?   )rV   rb   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']r   c                z    |dk    r| j                             dd          S | j                             |d          S )zGet a bad names node count.classr   r   )r=   getrV   re   s     r!   get_bad_nameszLinterStats.get_bad_names   sA    $  	2>%%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   rh   r   r   r   r   r   r   r   r   r   r   z(Node type not part of the bad_names stat)r   r   rh   r   r   r   r   r   r   r   r   r   rh   r   N)
ValueErrorr   r   r=   )rV   re   rl   s      r!   increase_bad_namezLinterStats.increase_bad_name   s     
 
 	I GHHH 
 
	"  	2N7###x/#####N9%%%1%%%%%r    c                F    t          dddddddddddd          | _        dS )zResets the bad_names attribute.r   rP   N)r   r=   rZ   s    r!   reset_bad_nameszLinterStats.reset_bad_names   s@    !
 
 
r    	type_name9Literal['code', 'comment', 'docstring', 'empty', 'total']c                8    | j                             |d          S )zGet a code type count.r   )rC   ri   rV   rr   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   rQ   N)r#   rC   rZ   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   rR   rS   N)r*   rG   rZ   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.rh   r   r   )rI   ri   rj   s     r!   get_node_countzLinterStats.get_node_count  sA      	3?&&w222""9a000r    c                6    t          dddd          | _        dS )z Resets the node count attribute.r   rT   N)r/   rI   rZ   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.rh   r   )rK   rj   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   rT   N)r1   rK   rZ   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   )getattrru   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?   )rV   r   rr   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   )rV   rr   rl   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?   )rV   r   rr   rl   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)r4   r5   r6   r7   r8   r:   rZ   s    r!   reset_message_countzLinterStats.reset_message_count7  s0    

	r    )NNNNNNNN)r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   )rM   rX   )rb   rX   rM   rN   )re   rf   rM   r   )re   rX   rl   r   rM   rN   )rM   rN   )rr   rs   rM   r   )re   r{   rM   r   )re   r{   rM   r,   )rr   rX   rM   r   )r   rX   rr   rX   rM   r   )rr   rX   rl   r   rM   rN   )r   rX   rr   r   rl   r   rM   rN   )r   r   r   r   rW   r[   ra   rd   rk   ro   rq   rv   rx   rz   r}   r   r   r   r   r   r   r   r   r   r    r!   r<   r<   S   s       %% &*37(,043737'+154, 4, 4, 4, 4,l   + + + +&
 
 
 
0 0 0 0,&2 &2 &2 &2P
 
 
 
"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]rM   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 ]\  }}||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`   rA   KeyErrorrC   rE   updaterG   rI   rK   r4   r5   r6   r7   r8   r9   r:   rU   )	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'@@###"&."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$   G22H	H	 K,,LL)r   r   rM   r<   )
__future__r   systypingr   pylint.typingr   version_infor   r	   typing_extensionsr   r#   r*   r/   r1   r3   r<   r   r   r    r!   <module>r      s  
 # " " " " " 



       . . . . . .v 5)))))))))44444444    y   "    I   $ $ $ $ $i $ $ $    	       	   	 	 	 	 	) 	 	 	k k k k k k k k\B B B B B Br    