
    c                        d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlmZ erd dlmZ  G d	 d
          ZdS )    )annotationsN)TYPE_CHECKINGAny)nodes)_SCOPE_EXEMPT	MSG_TYPESWarningScope)InvalidMessageError)normalize_text)BaseCheckerc                  p    e Zd Z	 	 	 	 	 d'd(dZed)d            Zd*dZd+dZd+dZ	 d,d-dZ	d.d/d!Z
d0d&ZdS )1MessageDefinitionNFTcheckerr   msgidstrmsgdescriptionsymbolscope
minversiontuple[int, int] | None
maxversion	old_nameslist[tuple[str, str]] | Nonesharedbooldefault_enabledreturnNonec                N   |j         | _        |                     |           || _        || _        || _        || _        || _        || _        || _	        |
| _
        || _        g | _        |	r9|	D ]8\  }}|                     |           | j                            ||f           7d S d S N)namechecker_namecheck_msgidr   r   r   r   r   r   r   r   r   r   append)selfr   r   r   r   r   r   r   r   r   r   r   	old_msgid
old_symbols                 Alib/python3.11/site-packages/pylint/message/message_definition.py__init__zMessageDefinition.__init__   s     $L
&
$$.02 	)2  %	:  +++%%
+   	 	     c                    t          |           dk    rt          d|           | d         t          vrt          d| d          d|           d S )N   zInvalid message id r   zBad message type z in )lenr
   r   )r   s    r)   r$   zMessageDefinition.check_msgid8   sm    u::? 	G%&EE&E&EFFF89$ 	S%&Q%(&Q&Q&Q&QRRR	S 	Sr+   otherr   c                l    t          |t                    o| j        |j        k    o| j        |j        k    S r!   )
isinstancer   r   r   )r&   r/   s     r)   __eq__zMessageDefinition.__eq__?   s7    u/00 ,
ek),u|+	
r+   c                (    d| j          d| j         dS )NzMessageDefinition: ())r   r   r&   s    r)   __repr__zMessageDefinition.__repr__F   s    @DK@@4:@@@@r+   c                D    t          |            d| j         d| j         S )N:
 )reprr   r   r6   s    r)   __str__zMessageDefinition.__str__I   s)    t**>>>>D,<>>>r+   
py_version*tuple[int, ...] | sys._version_info | Nonec                    |&t           j        }t          j        dt                     | j        | j        |k    rdS | j        | j        |k    rdS dS )zFReturn True if message may be emitted using the configured py_version.Nz'py_version' will be a required parameter of 'MessageDefinition.may_be_emitted' in pylint 3.0. The most likely solution is to use 'linter.config.py_version' if you need to keep using this function, or to use 'MessageDefinition.is_message_enabled' instead.FT)sysversion_infowarningswarnDeprecationWarningr   r   )r&   r=   s     r)   may_be_emittedz MessageDefinition.may_be_emittedL   ss    
  		)JM
 #   ? 	4?Z+G 	5? 	4?j+H 	5tr+   
checkerrefc                   | j         }|r|d| j         dz  }| j        }| j        s| j        rg }| j        r:|                    dd                    d | j        D                                   | j        r:|                    dd                    d | j        D                                   d                    |          }|r
|d	| dz  }n	|d
| dz  }t          d                    |                                          d          }| j	         d| j
         d}|dk    r8|                                d         }d| d|                    d           d| S d| d| S )z0Return the help string for the given message id.z This message belongs to the z	 checker.z< .c              3  4   K   | ]}t          |          V  d S r!   r   .0ns     r)   	<genexpr>z0MessageDefinition.format_help.<locals>.<genexpr>j   s(      *K*Ka3q66*K*K*K*K*K*Kr+   z>= c              3  4   K   | ]}t          |          V  d S r!   rJ   rK   s     r)   rN   z0MessageDefinition.format_help.<locals>.<genexpr>l   s(      +L+LqCFF+L+L+L+L+L+Lr+   z or z' It can't be emitted when using Python z1 This message can't be emitted when using Python r:   z  )indentr4   r5   z%sr   :z: *z*
r9   )r   r#   r   r   r   r%   joinr   splitr   r   
splitlinesrstrip)r&   rF   desctitlerestrrestrictionmsg_help
message_ids           r)   format_helpzMessageDefinition.format_helpa   s    	QPD4EPPPPD? 	do 	E OM#((*K*K4?*K*K*K"K"KMMNNN PN388+L+LDO+L+L+L#L#LNNOOO ++e,,K P+PPPPVVVV "#((4::<<"8"8FFF44tz444
D= 	G$$&&q)EFzFFell3&7&7FFHFFF,:,,(,,,r+   line
int | Nonenodenodes.NodeNG | Nonec                4   | j         d         t          vr| j        t          j        k    r;|t          d| j          d          |t          d| j          d| d|           dS | j        t          j        k    r|t          d| j          d          dS dS dS )z,Check MessageDefinition for possible errors.r   NzMessage z must provide line, got Nonez" must only provide line, got line=z, node=z must provide Node, got None)r   r   r   r	   LINEr
   NODE)r&   r]   r_   s      r)   check_message_definitionz*MessageDefinition.check_message_definition{   s    :a=- 	 z\..  -K4:KKK    -84: 8 8$(8 8158 8   
 |00  -K4:KKK  !	 	  r+   )NNNFT)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/   r   r   r   )r   r   r!   )r=   r>   r   r   )F)rF   r   r   r   )r]   r^   r_   r`   r   r   )__name__
__module____qualname__r*   staticmethodr$   r2   r7   r<   rE   r\   rd    r+   r)   r   r      s         .2-126 $    B S S S \S
 
 
 
A A A A? ? ? ?
 BF    *- - - - -4     r+   r   )
__future__r   r@   rB   typingr   r   astroidr   pylint.constantsr   r   r	   pylint.exceptionsr
   pylint.utilsr   pylint.checkersr   r   ri   r+   r)   <module>rq      s   
 # " " " " " 



  % % % % % % % %       C C C C C C C C C C 1 1 1 1 1 1 ' ' ' ' ' ' ,++++++| | | | | | | | | |r+   