
    yIf                        d dl m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                  l    e Zd Z	 	 	 	 	 d'd(dZed)d            Zd*dZd+dZd+dZd,dZ	d-d.d!Z
d/d&ZdS )0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                 U/var/www/piapp/venv/lib/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_msgid7   sb    u::??%&EE&E&EFFF89$$%&Q%(&Q&Q&Q&QRRR %$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__E   s    @DK@@4:@@@@r+   c                *    | d| j          d| j         S )N:
 )r   r   r6   s    r)   __str__zMessageDefinition.__str__H   s#    ::TX::(8:::r+   
py_version#tuple[int, ...] | sys._version_infoc                V    | j         | j         |k    rdS | j        | j        |k    rdS dS )z;May the message be emitted using the configured py_version?NFT)r   r   )r&   r<   s     r)   may_be_emittedz MessageDefinition.may_be_emittedK   s9    ?&4?Z+G+G5?&4?j+H+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>\   s(      *K*Ka3q66*K*K*K*K*K*Kr+   z>= c              3  4   K   | ]}t          |          V  d S r!   rD   rE   s     r)   rH   z0MessageDefinition.format_help.<locals>.<genexpr>^   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&   r@   desctitlerestrrestrictionmsg_help
message_ids           r)   format_helpzMessageDefinition.format_helpS   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==$$&&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&   rW   rY   s      r)   check_message_definitionz*MessageDefinition.check_message_definitionm   s     :a=-- z\...<-K4:KKK   #-84: 8 8$(8 8158 8   $#
 |000<-K4:KKK  ! .- 10<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   )F)r@   r   r   r   )rW   rX   rY   rZ   r   r   )__name__
__module____qualname__r*   staticmethodr$   r2   r7   r;   r?   rV   r^    r+   r)   r   r      s         .2-126 $    B S S S \S
 
 
 
A A A A; ; ; ;   - - - - -4     r+   r   )
__future__r   systypingr   r   astroidr   pylint.constantsr   r   r	   pylint.exceptionsr
   pylint.utilsr   pylint.checkersr   r   rc   r+   r)   <module>rl      s   
 # " " " " " 



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