§
    ÷yIf¢%  ã                  ó¸   — d dl mZ d dlZd dl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mZmZ erd dlmZmZ eeeeef         f         Z G d	„ d
¦  «        ZdS )é    )ÚannotationsN)Údefaultdict)ÚIterator)ÚTYPE_CHECKINGÚDictÚLiteral)Únodes)Ú%INCOMPATIBLE_WITH_USELESS_SUPPRESSIONÚMSG_STATE_SCOPE_MODULEÚWarningScope)ÚMessageDefinitionÚMessageDefinitionStorec                  ó`   — e Zd ZdZ	 d+ddœd,d„Zd-d„Zd.d„Zd/d„Z	 d0d1d"„Zd2d'„Z	d3d)„Z
d4d*„ZdS )5Ú	FileStatez<Hold internal state specific to the currently analyzed file.NF)Úis_base_filestateÚmodnameÚstrÚ	msg_storer   Únodeúnodes.Module | Noner   ÚboolÚreturnÚNonec               óÐ   — || _         i | _        i | _        t          j        t
          ¦  «        | _        i | _        || _        |r|j	        | _
        nd | _
        || _        || _        d S ©N)Ú	base_nameÚ_module_msgs_stateÚ_raw_module_msgs_stateÚcollectionsr   ÚsetÚ_ignored_msgsÚ_suppression_mappingÚ_moduleÚtolinenoÚ_effective_max_line_numberÚ_msgs_storeÚ_is_base_filestate)Úselfr   r   r   r   s        úK/var/www/piapp/venv/lib/python3.11/site-packages/pylint/utils/file_state.pyÚ__init__zFileState.__init__   s{   € ð !ˆŒØ46ˆÔØ8:ˆÔ#åÔ#¥CÑ(Ô(ð 	Ôð ACˆÔ!ØˆŒØð 	3Ø.2¬mˆDÔ+Ð+à.2ˆDÔ+Ø$ˆÔØ"3ˆÔð	ð 	ó    Ú
msgs_storeúnodes.NodeNGÚmsgr   Ú	msg_stateúdict[int, bool]c                ó8  — |                      ¦   «         D ]}|                      ||||¦  «         Œt          |t          j        t          j        t          j        f¦  «        r|j        r|j        d         j        }n|j	        }|  
                    ||||¦  «         dS )z|Recursively walk (depth first) AST to collect block level options
        line numbers and set the state correctly.
        r   N)Úget_childrenÚ_set_state_on_block_linesÚ
isinstancer	   ÚModuleÚClassDefÚFunctionDefÚbodyÚ
fromlinenor$   Ú_set_message_state_in_block)r(   r,   r   r.   r/   ÚchildÚfirstchildlinenos          r)   r3   z#FileState._set_state_on_block_lines8   s§   € ð ×&Ò&Ñ(Ô(ð 	Nð 	NˆEØ×*Ò*¨:°u¸cÀ9ÑMÔMÐMÐMõ" �t�eœl­E¬N½EÔ<MÐNÑOÔOð	-à”	ð	-ð  $œy¨œ|Ô6ÐÐà#œ}ÐØ×(Ò(¨¨i¸Ð?OÑPÔPÐPÐPÐPr+   Úlinesr<   Úintc                óø  — |j         }|j        }t          |                     ¦   «         ¦  «        D �]H\  }}|}	||k    s||k     rŒ|j        t
          j        k    r[||k    rd}|                     |¦  «        \  }
}|
|j         k    r/|
|k    r)|j         | j         	                    |j
        d¦  «        v r|}
n|}
|}t          |
|dz   ¦  «        D ]¨}t          |t          j        ¦  «        r|j         |cxk    r|k     s1n t          |t          j        ¦  «        s8|j         |cxk     r|k     r&n n#|| j         	                    |j
        d¦  «        v rŒ‚||v r
||         }|}	|                      ||||	¦  «         Œ©||= �ŒJdS )z/Set the state of a message in a block of lines.T© é   N)r9   r$   ÚlistÚitemsÚscoper   ÚNODEÚblock_ranger   ÚgetÚmsgidÚranger4   r	   r5   Ú_set_message_state_on_line)r(   r.   r=   r   r<   ÚfirstÚlastÚlinenoÚstateÚoriginal_linenoÚfirst_Úlast_Úlines                r)   r:   z%FileState._set_message_state_in_block\   s×  € ð ”ˆØŒ}ˆÝ! %§+¢+¡-¤-Ñ0Ô0ð <	ñ <	‰MˆF�EØ$ˆOØ�vŠ~ˆ~ ¨¢ Øð Œy�LÔ-Ò-Ð-ØÐ,Ò,Ð,Ø �EØ $× 0Ò 0°Ñ 8Ô 8‘�˜ð* ˜dœoÒ-Ð-ØÐ"2Ò2Ð2Øœ¨4Ô+B×+FÒ+FÀsÄyÐRTÑ+UÔ+UÐUÐUà#�Føð  �Ø�Ý˜f e¨a¡iÑ0Ô0ð Sð S�õ # 4­¬Ñ6Ô6ð
ð !œO¨tÐ<Ð<Ò<Ð<°fÒ<Ð<Ð<Ð<õ ' t­U¬\Ñ:Ô:ð =ð !œO¨dÐ;Ð;Ò;Ð;°VÒ;Ð;Ð;Ð;Ð;à˜dÔ5×9Ò9¸#¼)ÀRÑHÔHÐHÐHØØ˜5�=�=Ø! $œK�EØ&*�Oà×/Ò/°°T¸5À/ÑRÔRÐRÐRà�f�‘ðy<	ð <	r+   rR   rN   rO   c                óâ   — |s|| j         |j        |f<   n"| j                              |j        |fd¦  «         	 || j        |j                 |<   dS # t          $ r ||i| j        |j        <   Y dS w xY w)z%Set the state of a message on a line.N)r"   rH   Úpopr   ÚKeyError)r(   r.   rR   rN   rO   s        r)   rJ   z$FileState._set_message_state_on_line¤   sš   € ð ð 	CØ;JˆDÔ% s¤y°$Ð&7Ñ8Ð8àÔ%×)Ò)¨3¬9°dÐ*;¸TÑBÔBÐBð	?Ø7<ˆDÔ# C¤IÔ.¨tÑ4Ð4Ð4øÝð 	?ð 	?ð 	?Ø26¸°ˆDÔ# C¤IÑ.Ð.Ð.Ð.ð	?øøøs   ¸A ÁA.Á-A.ÚpackageÚstatusrD   c                ó  — |dk    sJ ‚|dk    r%|                       | j        | j        |||i¦  «         n|                      ||||¦  «         	 || j        |j                 |<   dS # t          $ r ||i| j        |j        <   Y dS w xY w)zASet status (enabled/disable) for a given message at a given line.r   rR   N)r3   r&   r#   rJ   r   rH   rU   )r(   r.   rR   rW   rD   s        r)   Úset_msg_statuszFileState.set_msg_status¸   sÀ   € ð �aŠxˆxˆxˆxØ�FŠ?ˆ?à×*Ò*ØÔ  $¤,°°d¸F°^ñô ð ð ð ×+Ò+¨C°°v¸tÑDÔDÐDð	DØ;AˆDÔ'¨¬	Ô2°4Ñ8Ð8Ð8øÝð 	Dð 	Dð 	DØ6:¸F°^ˆDÔ'¨¬	Ñ2Ð2Ð2Ð2ð	Døøøs   ÁA$ Á$BÂBÚstate_scopeúLiteral[0, 1, 2] | NonerH   ú
int | Nonec                óÔ   — |t           k    r\t          |t          ¦  «        sJ ‚	 | j        ||f         }| j        ||f                              |¦  «         dS # t          $ r Y dS w xY wdS )zÖReport an ignored message.

        state_scope is either MSG_STATE_SCOPE_MODULE or MSG_STATE_SCOPE_CONFIG,
        depending on whether the message was disabled locally in the module,
        or globally.
        N)r   r4   r>   r"   r!   ÚaddrU   )r(   rZ   rH   rR   Ú	orig_lines        r)   Úhandle_ignored_messagez FileState.handle_ignored_messageÏ   s�   € ð Õ0Ò0Ð0Ý˜d¥CÑ(Ô(Ð(Ð(Ð(ðØ Ô5°u¸d°mÔD�	ØÔ" E¨9Ð#5Ô6×:Ò:¸4Ñ@Ô@Ð@Ð@Ð@øÝð ð ð Ø��ðøøøð 1Ð0s   ¤1A Á
A%Á$A%úhIterator[tuple[Literal['useless-suppression', 'suppressed-message'], int, tuple[str] | tuple[str, int]]]c              #  ó~  K  — | j                              ¦   «         D ]P\  }}|                     ¦   «         D ]6\  }}|s/||f| j        vr$|t          vrd||                     |¦  «        ffV — Œ7ŒQt          | j                             ¦   «         ¦  «        D ])\  \  }}}|D ]}d||                     |¦  «        |ffV — ŒŒ*d S )Nzuseless-suppressionzsuppressed-message)r   rC   r!   r
   Úget_msg_display_stringrB   )r(   r,   Úwarningr=   rR   ÚenableÚfrom_Úignored_liness           r)   Ú"iter_spurious_suppression_messagesz,FileState.iter_spurious_suppression_messagesá   s'  è è € ð #Ô9×?Ò?ÑAÔAð 		ð 		‰NˆG�UØ %§¢¡¤ð ð ‘��fàðà  $˜¨tÔ/AÐAÐAØÕ'LÐLÐLà/°Ø"×9Ò9¸'ÑBÔBð8ð ð ð ð øðõ 04°DÔ4F×4LÒ4LÑ4NÔ4NÑ/OÔ/Oð 	ð 	Ñ+ÑˆW�e˜mØ%ð ð �Ø*¨DØ×5Ò5°gÑ>Ô>Øð3ð ð ð ð ð ðð	ð 	r+   c                ó   — | j         S r   )r%   )r(   s    r)   Úget_effective_max_line_numberz'FileState.get_effective_max_line_numberý   s   € ØÔ.Ð.r+   r   )
r   r   r   r   r   r   r   r   r   r   )
r,   r   r   r-   r.   r   r/   r0   r   r   )
r.   r   r=   r0   r   r-   r<   r>   r   r   )
r.   r   rR   r>   rN   r   rO   r>   r   r   )rV   )
r.   r   rR   r>   rW   r   rD   r   r   r   )rZ   r[   rH   r   rR   r\   r   r   )r,   r   r   ra   )r   r\   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   r3   r:   rJ   rY   r`   rh   rj   r@   r+   r)   r   r      sì   € € € € € ØFÐFð %)ð	ð #(ðð ð ð ð ð ð4"Qð "Qð "Qð "QðHFð Fð Fð FðP?ð ?ð ?ð ?ð2 ðDð Dð Dð Dð Dð.ð ð ð ð$ð ð ð ð8/ð /ð /ð /ð /ð /r+   r   )Ú
__future__r   r   r   Úcollections.abcr   Útypingr   r   r   Úastroidr	   Úpylint.constantsr
   r   r   Úpylint.messager   r   r   r>   r   ÚMessageStateDictr   r@   r+   r)   ú<module>rv      s$  ðð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð IØHÐHÐHÐHÐHÐHÐHÐHð ˜˜T # t )œ_Ð,Ô-Ð ðc/ð c/ð c/ð c/ð c/ñ c/ô c/ð c/ð c/ð c/r+   