o
    g)                     @   sV   d dl Z d dlmZ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)DictListTuple
ValuesView)UnknownMessageError)MessageDefinition)MessageIdStorec                   @   s   e Zd ZdZdd Zedee fddZddd	Z	d
eddfddZ
dedee fddZdedefddZdee ddfddZdddZdeee ee f fddZdS )MessageDefinitionStorezThe messages store knows information about every possible message definition but has
    no particular state during analysis.
    c                 C   s   t  | _i | _tt| _d S N)r   message_id_store_messages_definitionscollectionsdefaultdictlist_msgs_by_categoryself r   e/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pylint/message/message_definition_store.py__init__   s   zMessageDefinitionStore.__init__returnc                 C   s
   | j  S )z The list of all active messages.)r   valuesr   r   r   r   messages   s   
zMessageDefinitionStore.messagesNc                 C   s"   |   |jD ]}| | qdS )z1Register all messages definitions from a checker.N)check_consistencyr   register_message)r   checkermessager   r   r   register_messages_from_checker    s   
z5MessageDefinitionStore.register_messages_from_checkerr   c                 C   s>   | j |j|j|j || j|j< | j|jd  |j dS )z6Register a MessageDefinition with consistency in mind.r   N)r   register_message_definitionmsgidsymbol	old_namesr   r   append)r   r   r   r   r   r   &   s
   z'MessageDefinitionStore.register_messagemsgid_or_symbolc                    s    fdd j |D S )zCReturns the Message definition for either a numeric or symbolic id.c                    s   g | ]} j | qS r   )r   ).0mr   r   r   
<listcomp>0   s    zBMessageDefinitionStore.get_message_definitions.<locals>.<listcomp>)r   get_active_msgids)r   r#   r   r   r   get_message_definitions.   s   

z.MessageDefinitionStore.get_message_definitionsc                 C   s6   |  |}t|dkrt|d jS tdd |D S )z8Generates a user-consumable representation of a message.   r   c                 S   s   g | ]}|j qS r   )r    )r$   mdr   r   r   r&   :   s    zAMessageDefinitionStore.get_msg_display_string.<locals>.<listcomp>)r(   lenreprr    )r   r#   message_definitionsr   r   r   get_msg_display_string5   s   
z-MessageDefinitionStore.get_msg_display_stringmsgids_or_symbolsc                 C   sn   |D ]2}z|  |D ]}t|jdd td q
W q ty4 } zt| td W Y d}~qd}~ww dS )z7Display help messages for the given message identifiersT
checkerref N)r(   printformat_helpr   )r   r/   msgids_or_symbolmessage_definitionexr   r   r   help_message<   s   
z#MessageDefinitionStore.help_messagec                 C   s\   |   \}}td |D ]
}t|jdd qtd |D ]
}t|jdd qtd dS )z7Output full messages list documentation in ReST format.z,Emittable messages with current interpreter:Fr0   z1
Non-emittable messages with current interpreter:r2   N)find_emittable_messagesr3   r4   )r   	emittablenon_emittablemsgr   r   r   list_messagesJ   s   z$MessageDefinitionStore.list_messagesc                 C   sN   t | j dd d}g }g }|D ]}| r|| q|| q||fS )z.Finds all emittable and non-emittable messagesc                 S   s   | j S r
   )r   )r%   r   r   r   <lambda>Y   s    z@MessageDefinitionStore.find_emittable_messages.<locals>.<lambda>)key)sortedr   r   may_be_emittedr"   )r   r   r:   r;   r   r   r   r   r9   U   s   z.MessageDefinitionStore.find_emittable_messages)r   N)__name__
__module____qualname____doc__r   propertyr   r   r   r   r   strr   r(   r.   r8   r=   r   r9   r   r   r   r   r	      s    	

r	   )r   typingr   r   r   r   pylint.exceptionsr   !pylint.message.message_definitionr   pylint.message.message_id_storer   r	   r   r   r   r   <module>   s   