§
    ÷yIfú  ã                  ó”   — d dl mZ d dl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 d dlmZ d dlmZ e	rd dlmZ  G d	„ d
¦  «        ZdS )é    )ÚannotationsN)ÚSequenceÚ
ValuesView)ÚTYPE_CHECKING)ÚUnknownMessageError)ÚMessageDefinition)ÚMessageIdStore)ÚBaseCheckerc                  ó¦   — e Zd ZdZej        fdd„Zedd„¦   «         Zdd„Z	dd„Z
 ej        d¬¦  «        d d„¦   «         Zd!d„Zd"d„Zd#d„Zd$d„ZdS )%ÚMessageDefinitionStorez‚The messages store knows information about every possible message definition but
    has no particular state during analysis.
    Ú
py_versionú#tuple[int, ...] | sys._version_infoÚreturnÚNonec                ó„   — t          ¦   «         | _        i | _        t          j        t
          ¦  «        | _        || _        d S ©N)r	   Úmessage_id_storeÚ_messages_definitionsÚcollectionsÚdefaultdictÚlistÚ_msgs_by_categoryr   )Úselfr   s     ú[/var/www/piapp/venv/lib/python3.11/site-packages/pylint/message/message_definition_store.pyÚ__init__zMessageDefinitionStore.__init__   s<   € õ 1?Ñ0@Ô0@ˆÔð DFˆÔ"å7BÔ7NÍtÑ7TÔ7TˆÔØ$ˆŒˆˆó    úValuesView[MessageDefinition]c                ó4   — | j                              ¦   «         S )z The list of all active messages.)r   Úvalues)r   s    r   ÚmessageszMessageDefinitionStore.messages&   s   € ð Ô)×0Ò0Ñ2Ô2Ð2r   Úcheckerr
   c                ól   — |                      ¦   «          |j        D ]}|                      |¦  «         ŒdS )z1Register all messages definitions from a checker.N)Úcheck_consistencyr    Úregister_message)r   r!   Úmessages      r   Úregister_messages_from_checkerz5MessageDefinitionStore.register_messages_from_checker+   sG   € à×!Ò!Ñ#Ô#Ð#ØÔ'ð 	+ð 	+ˆGØ×!Ò! 'Ñ*Ô*Ð*Ð*ð	+ð 	+r   r%   r   c                óÚ   — | 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%   s     r   r$   z'MessageDefinitionStore.register_message1   sg   € àÔ×9Ò9ØŒM˜7œ>¨7Ô+<ñ	
ô 	
ð 	
ð 5<ˆÔ" 7¤=Ñ1ØÔ˜wœ}¨QÔ/Ô0×7Ò7¸¼ÑFÔFÐFÐFÐFr   N)ÚmaxsizeÚmsgid_or_symbolÚstrúlist[MessageDefinition]c                óP   ‡ — ˆ fd„‰ j                              |¦  «        D ¦   «         S )a   Returns the Message definition for either a numeric or symbolic id.

        The cache has no limit as its size will likely stay minimal. For each message we store
        about 1000 characters, so even if we would have 1000 messages the cache would only
        take up ~= 1 Mb.
        c                ó*   •— g | ]}‰j         |         ‘ŒS © )r   )Ú.0Úmr   s     €r   ú
<listcomp>zBMessageDefinitionStore.get_message_definitions.<locals>.<listcomp>G   s1   ø€ ð 
ð 
ð 
àð Ô& qÔ)ð
ð 
ð 
r   )r   Úget_active_msgids)r   r.   s   ` r   Úget_message_definitionsz.MessageDefinitionStore.get_message_definitions=   s?   ø€ ð
ð 
ð 
ð 
àÔ*×<Ò<¸_ÑMÔMð
ñ 
ô 
ð 	
r   c                ó¸   — |                       |¦  «        }t          |¦  «        dk    rt          |d         j        ¦  «        S t          d„ |D ¦   «         ¦  «        S )z8Generates a user-consumable representation of a message.é   r   c                ó   — g | ]	}|j         ‘Œ
S r3   )r*   )r4   Úmds     r   r6   zAMessageDefinitionStore.get_msg_display_string.<locals>.<listcomp>Q   s   € Ð=Ð=Ð= 2�R”YÐ=Ð=Ð=r   )r8   ÚlenÚreprr*   )r   r.   Úmessage_definitionss      r   Úget_msg_display_stringz-MessageDefinitionStore.get_msg_display_stringL   s_   € à"×:Ò:¸?ÑKÔKÐÝÐ"Ñ#Ô# qÒ(Ð(ÝÐ+¨AÔ.Ô5Ñ6Ô6Ð6ÝÐ=Ð=Ð)<Ð=Ñ=Ô=Ñ>Ô>Ð>r   Úmsgids_or_symbolsúSequence[str]c                ó  — |D ]‚}	 |                       |¦  «        D ]4}t          |                     d¬¦  «        ¦  «         t          d¦  «         Œ5ŒN# t          $ r(}t          |¦  «         t          d¦  «         Y d}~Œ{d}~ww xY wdS )z8Display help messages for the given message identifiers.T©Ú
checkerrefÚ N)r8   ÚprintÚformat_helpr   )r   rA   Úmsgids_or_symbolÚmessage_definitionÚexs        r   Úhelp_messagez#MessageDefinitionStore.help_messageS   sº   € à 1ð 
	ð 
	Ðð	Ø*.×*FÒ*FØ$ñ+ô +ð ð Ð&õ Ð,×8Ò8ÀDÐ8ÑIÔIÑJÔJÐJÝ˜"‘I”I�I�Ið	øõ
 'ð ð ð Ý�b‘	”	�	Ý�b‘	”	�	Ø����øøøøðøøøð
	ð 
	s   †A
AÁ
BÁA>Á>Bc                ó.  — |                       ¦   «         \  }}t          d¦  «         |D ]%}t          |                     d¬¦  «        ¦  «         Œ&t          d¦  «         |D ]%}t          |                     d¬¦  «        ¦  «         Œ&t          d¦  «         dS )z7Output full messages list documentation in ReST format.z,Emittable messages with current interpreter:FrD   z1
Non-emittable messages with current interpreter:rF   N)Úfind_emittable_messagesrG   rH   )r   Ú	emittableÚnon_emittableÚmsgs       r   Úlist_messagesz$MessageDefinitionStore.list_messagesa   s¡   € à#'×#?Ò#?Ñ#AÔ#AÑ ˆ	�=ÝÐ<Ñ=Ô=Ð=Øð 	5ð 	5ˆCÝ�#—/’/¨U�/Ñ3Ô3Ñ4Ô4Ð4Ð4ÝÐBÑCÔCÐCØ ð 	5ð 	5ˆCÝ�#—/’/¨U�/Ñ3Ô3Ñ4Ô4Ð4Ð4Ýˆb‰	Œ	ˆ	ˆ	ˆ	r   ú7tuple[list[MessageDefinition], list[MessageDefinition]]c                óø   — t          | j                             ¦   «         d„ ¬¦  «        }g }g }|D ]G}|                     | j        ¦  «        r|                     |¦  «         Œ2|                     |¦  «         ŒH||fS )z/Finds all emittable and non-emittable messages.c                ó   — | j         S r   )r)   )r5   s    r   ú<lambda>z@MessageDefinitionStore.find_emittable_messages.<locals>.<lambda>p   s   € ÈQÌW€ r   )Úkey)Úsortedr   r   Úmay_be_emittedr   r,   )r   r    rO   rP   r%   s        r   rN   z.MessageDefinitionStore.find_emittable_messagesl   s“   € õ ˜$Ô4×;Ò;Ñ=Ô=ÐCTÐCTÐUÑUÔUˆØˆ	ØˆØð 	.ð 	.ˆGØ×%Ò% d¤oÑ6Ô6ð .Ø× Ò  Ñ)Ô)Ð)Ð)à×$Ò$ WÑ-Ô-Ð-Ð-Ø˜-Ð'Ð'r   )r   r   r   r   )r   r   )r!   r
   r   r   )r%   r   r   r   )r.   r/   r   r0   )r.   r/   r   r/   )rA   rB   r   r   )r   r   )r   rS   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚsysÚversion_infor   Úpropertyr    r&   r$   Ú	functoolsÚ	lru_cacher8   r@   rL   rR   rN   r3   r   r   r   r      s  € € € € € ðð ð
 ADÔ@Pð
%ð 
%ð 
%ð 
%ð 
%ð ð3ð 3ð 3ñ „Xð3ð+ð +ð +ð +ðGð Gð Gð Gð €YÔØðñ ô ð

ð 

ð 

ñô ð

ð?ð ?ð ?ð ?ðð ð ð ð	ð 	ð 	ð 	ð(ð (ð (ð (ð (ð (r   r   )Ú
__future__r   r   ra   r^   Úcollections.abcr   r   Útypingr   Úpylint.exceptionsr   Ú!pylint.message.message_definitionr   Úpylint.message.message_id_storer	   Úpylint.checkersr
   r   r3   r   r   ú<module>rj      sð   ðð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø 
€
€
€
Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø  Ð  Ð  Ð  Ð  Ð  à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø :Ð :Ð :Ð :Ð :Ð :àð ,Ø+Ð+Ð+Ð+Ð+Ð+ðc(ð c(ð c(ð c(ð c(ñ c(ô c(ð c(ð c(ð c(r   