
    e                        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y)    )annotationsN)TYPE_CHECKINGAny)nodes)_SCOPE_EXEMPT	MSG_TYPESWarningScope)InvalidMessageError)normalize_text)BaseCheckerc                      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y)MessageDefinitionNc                J   |j                   | _        | j                  |       || _        || _        || _        || _        || _        || _        || _	        |
| _
        || _        g | _        |	r9|	D ]3  \  }}| j                  |       | j                  j                  ||f       5 y y N)namechecker_namecheck_msgidmsgidsymbolmsgdescriptionscope
minversion
maxversionshareddefault_enabled	old_namesappend)selfcheckerr   r   r   r   r   r   r   r   r   r   	old_msgid
old_symbols                 C/usr/lib/python3/dist-packages/pylint/message/message_definition.py__init__zMessageDefinition.__init__   s     $LL
&
$$.02)2 %	:  +%%
+     c                z    t        |       dk7  rt        d|       | d   t        vrt        d| d    d|       y )N   zInvalid message id r   zBad message type z in )lenr
   r   )r   s    r#   r   zMessageDefinition.check_msgid7   sN    u:?%(;E9&EFF89$%(9%(4y&QRR %r%   c                    t        |t              xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r   )
isinstancer   r   r   )r   others     r#   __eq__zMessageDefinition.__eq__>   s<    u/0 ,

ekk),u||+	
r%   c                <    d| j                    d| j                   dS )NzMessageDefinition: ())r   r   r   s    r#   __repr__zMessageDefinition.__repr__E   s    #DKK=4::,a@@r%   c                >    | d| j                    d| j                   S )N:
 )r   r   r0   s    r#   __str__zMessageDefinition.__str__H   s$    TXXJa(8(8'9::r%   c                t    | j                   | j                   |kD  ry| j                  | j                  |k  ryy)z;May the message be emitted using the configured py_version?FT)r   r   )r   
py_versions     r#   may_be_emittedz MessageDefinition.may_be_emittedK   s5    ??&4??Z+G??&4??j+Hr%   c                   | j                   }|r|d| j                   dz  }| j                  }| j                  s| j                  rg }| j                  r4|j                  ddj                  d | j                  D                      | j                  r4|j                  ddj                  d | j                  D                      dj                  |      }|r
|d	| dz  }n	|d
| dz  }t        dj                  |j                               d      }| j                   d| j                   d}|dk7  r-|j                         d   }d| d|j                  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  2   K   | ]  }t        |        y wr   str.0ns     r#   	<genexpr>z0MessageDefinition.format_help.<locals>.<genexpr>\   s     *Ka3q6*K   z>= c              3  2   K   | ]  }t        |        y wr   r<   r>   s     r#   rA   z0MessageDefinition.format_help.<locals>.<genexpr>^   s     +LqCF+LrB   z or z' It can't be emitted when using Python z1 This message can't be emitted when using Python r4   z  )indentr.   r/   z%sr   :z: *z*
r3   )r   r   r   r   r   r   joinr   splitr   r   
splitlinesrstrip)r   
checkerrefdesctitlerestrrestrictionmsg_help
message_ids           r#   format_helpzMessageDefinition.format_helpS   se   3D4E4E3FiPPD??dooEr#((*K4??*K"K!LMNs388+LDOO+L#L"MNO ++e,KA+aPPG}TUV "#((4::<"8F}Btzzl!4
D=$$&q)Ezl#ell3&7%8H:FF:,c(,,r%   c                T   | j                   d   t        vr| j                  t        j                  k(  r<|t        d| j                    d      |t        d| j                    d| d|       y| j                  t        j                  k(  r|t        d| j                    d      yyy)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   linenodes      r#   check_message_definitionz*MessageDefinition.check_message_definitionm   s     ::a=- zz\...<-"4::,.JK  #-"4::, /$$(68  $
 |000<-"4::,.JK    1 .r%   )NNNFT)r    r   r   r=   r   r=   r   r=   r   r=   r   r=   r   tuple[int, int] | Noner   rX   r   zlist[tuple[str, str]] | Noner   boolr   rY   returnNone)r   r=   rZ   r[   )r+   r   rZ   rY   )rZ   r=   )r7   z#tuple[int, ...] | sys._version_inforZ   rY   )F)rJ   rY   rZ   r=   )rU   z
int | NonerV   znodes.NodeNG | NonerZ   r[   )__name__
__module____qualname__r$   staticmethodr   r,   r1   r5   r8   rQ   rW    r%   r#   r   r      s     .2-126 $  	
    + + 0   
B S S
A;-4&9	r%   r   )
__future__r   systypingr   r   astroidr   pylint.constantsr   r   r	   pylint.exceptionsr
   pylint.utilsr   pylint.checkersr   r   r`   r%   r#   <module>ri      s1   
 # 
 %  C C 1 '+o or%   