a
    =a                     @   sR   d dl Z d dlmZmZmZ d dlmZ d dlmZ d dl	m
Z
 G dd dZdS )    N)ListOptionalTuple)	MSG_TYPES)InvalidMessageError)normalize_textc                   @   s   e Zd Zdeeeeeeeeeeeef  eeeeeeef  eeeef  dddZe	eddddZ
dd	 Zd
d ZedddZdeedddZdS )MessageDefinitionN)msgidmsgdescriptionsymbolscope
minversion
maxversion	old_namesc
                 C   sr   |j | _| | || _|| _|| _|| _|| _|| _|| _	g | _
|	rn|	D ]"\}
}| |
 | j
|
|f qJd S N)namechecker_namecheck_msgidr	   r   r
   r   r   r   r   r   append)selfZcheckerr	   r
   r   r   r   r   r   r   Z	old_msgidZ
old_symbol r   @lib/python3.9/site-packages/pylint/message/message_definition.py__init__   s     

zMessageDefinition.__init__)r	   returnc                 C   sB   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	   r   r   r   r   *   s    zMessageDefinition.check_msgidc                 C   s   d| j  d| j dS )NzMessageDefinition: ())r   r	   r   r   r   r   __repr__1   s    zMessageDefinition.__repr__c                 C   s   t |  d| j d| j S )N:
 )reprr
   r   r   r   r   r   __str__4   s    zMessageDefinition.__str__)r   c                 C   s8   | j dur| j tjkrdS | jdur4| jtjkr4dS dS )zCreturn True if message may be emitted using the current interpreterNFT)r   sysversion_infor   r   r   r   r   may_be_emitted7   s
    z MessageDefinition.may_be_emittedF)
checkerrefr   c                 C   s  | j }|r|d| j 7 }| j}| js*| jrg }| jrT|dddd | jD   | jrz|dddd | jD   d|}|r|d	| 7 }n|d
| 7 }td| dd}| j	 d| j
 d}|dkr| d }d||d|S d| d| S )z/return the help string for the given message idz( This message belongs to the %s checker.z< %s.c                 s   s   | ]}t |V  qd S r   str.0nr   r   r   	<genexpr>H       z0MessageDefinition.format_help.<locals>.<genexpr>z>= %sc                 s   s   | ]}t |V  qd S r   r*   r,   r   r   r   r/   J   r0   z or z* It can't be emitted when using Python %s.z4 This message can't be emitted when using Python %s.r"   z  )indentr   r   z%sr   z:{}: *{}*
{}:r!   )r   r   r
   r   r   r   joinr   splitr   r	   
splitlinesformatrstrip)r   r(   ZdesctitleZrestrZrestrictionZmsg_helpZ
message_idr   r   r   format_help?   s,      
zMessageDefinition.format_help)NNN)F)__name__
__module____qualname__r+   r   r   intr   r   staticmethodr   r    r$   boolr'   r9   r   r   r   r   r      s&   	   r   )r%   typingr   r   r   Zpylint.constantsr   Zpylint.exceptionsr   Zpylint.utilsr   r   r   r   r   r   <module>   s
   