§
    öyIf«  ã                  ó¬   — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
mZ ddlmZ erddlmZ  G d	„ d
e
¦  «        Z G d„ dee
¦  «        Zdd„ZdS )zICheck source code is ascii only or has an encoding declaration (PEP 263).é    )ÚannotationsN)ÚTYPE_CHECKING)Únodes)ÚBaseRawFileCheckerÚBaseTokenChecker)ÚManagedMessage)ÚPyLinterc                  óF   — e Zd ZdZdZddddddifiZd	Zdd„Zdd„Zdd„Z	dS )ÚByIdManagedMessagesCheckerzIChecks for messages that are enabled or disabled by id instead of symbol.ÚmiscellaneousÚI0023ú%súuse-symbolic-message-insteadz1Used when a message is enabled or disabled by id.Údefault_enabledF© ÚreturnÚNonec                óB   — | j         j                             ¦   «          d S ©N)ÚlinterÚ_by_id_managed_msgsÚclear©Úselfs    úH/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/misc.pyÚ_clear_by_id_managed_msgsz4ByIdManagedMessagesChecker._clear_by_id_managed_msgs$   s   € ØŒÔ'×-Ò-Ñ/Ô/Ð/Ð/Ð/ó    úlist[ManagedMessage]c                ó   — | j         j        S r   )r   r   r   s    r   Ú_get_by_id_managed_msgsz2ByIdManagedMessagesChecker._get_by_id_managed_msgs'   s   € ØŒ{Ô.Ð.r   Únodeúnodes.Modulec                óÖ   — |                       ¦   «         }|D ]=\  }}}}}||j        k    r*|rdnd}d|› d|› d|› d�}	|                      d||	¬¦  «         Œ>|                      ¦   «          d	S )
zHInspect the source file to find messages activated or deactivated by id.ÚdisableÚenableú'z' is cryptic: use '# pylint: ú=z	' insteadr   ©ÚlineÚargsN)r    ÚnameÚadd_messager   )
r   r!   Úmanaged_msgsÚmod_nameÚmsgidÚsymbolÚlinenoÚis_disabledÚverbÚtxts
             r   Úprocess_modulez)ByIdManagedMessagesChecker.process_module*   s    € à×3Ò3Ñ5Ô5ˆØ<Hð 	Xð 	XÑ8ˆH�e˜V V¨[Ø˜4œ9Ò$Ð$Ø$/Ð=�y�y°X�ØV˜%ÐVÐV¸dÐVÐVÀVÐVÐVÐV�Ø× Ò Ð!?ÀfÐSVÐ ÑWÔWÐWøØ×&Ò&Ñ(Ô(Ð(Ð(Ð(r   N©r   r   )r   r   ©r!   r"   r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+   ÚmsgsÚoptionsr   r    r5   r   r   r   r   r      s‚   € € € € € ØSÐSà€DàØØ*Ø?Ø Ð&ð	
ð€Dð €Gð0ð 0ð 0ð 0ð/ð /ð /ð /ð)ð )ð )ð )ð )ð )r   r   c                  ól   ‡ — e Zd ZdZdZddiZddddd	d
œfddddddœffZd"ˆ fd„Zd#d„Zd$d„Z	d%d!„Z
ˆ xZS )&ÚEncodingCheckerz}BaseChecker for encoding issues.

    Checks for:
    * warning notes in the code like FIXME, XXX
    * encoding issues.
    r   ÚW0511)r   Úfixmez5Used when a warning note as FIXME or XXX is detected.ÚnotesÚcsvz<comma separated values>)ÚFIXMEÚXXXÚTODOzAList of note tags to take in consideration, separated by a comma.)ÚtypeÚmetavarÚdefaultÚhelpz	notes-rgxÚstringz<regexp>z9Regular expression of note tags to take in consideration.Ú )rG   rH   rJ   rI   r   r   c                óL  •— t          ¦   «                              ¦   «          d                     d„ | j        j        j        D ¦   «         ¦  «        }| j        j        j        rd|› d| j        j        j        › d�}nd|› d�}t          j        |t          j	        ¦  «        | _
        d S )Nú|c              3  ó>   K  — | ]}t          j        |¦  «        V — Œd S r   )ÚreÚescape)Ú.0Únotes     r   ú	<genexpr>z'EncodingChecker.open.<locals>.<genexpr>b   s*   è è € ÐNÐN¨T�œ 4™œÐNÐNÐNÐNÐNÐNr   z#\s*(z)(?=(:|\s|\Z)))ÚsuperÚopenÚjoinr   ÚconfigrB   Ú	notes_rgxrP   ÚcompileÚIÚ_fixme_pattern)r   rB   Úregex_stringÚ	__class__s      €r   rV   zEncodingChecker.open_   sš   ø€ Ý‰Œ�Š‰Œˆà—’ÐNÐN°T´[Ô5GÔ5MÐNÑNÔNÑNÔNˆØŒ;ÔÔ'ð 	:ØX EÐXÐX¨D¬KÔ,>Ô,HÐXÐXÐXˆLˆLà9 EÐ9Ð9Ð9ˆLå œj¨µr´tÑ<Ô<ˆÔÐÐr   r1   Úintr)   ÚbytesÚfile_encodingÚstrú
str | Nonec                ó  — 	 |                      |¦  «        S # t          $ r Y ndt          $ rX |                     d¦  «        r@dt	          |¦  «        v r/|t	          |¦  «        v rd|› d�}|                      d||¬¦  «         Y nw xY wd S )Nó   #ÚcodingzCannot decode using encoding 'z', bad encodingzsyntax-errorr(   )ÚdecodeÚUnicodeDecodeErrorÚLookupErrorÚ
startswithrb   r,   )r   r1   r)   ra   Úmsgs        r   Ú_check_encodingzEncodingChecker._check_encodingj   s»   € ð	HØ—;’;˜}Ñ-Ô-Ð-øÝ!ð 	ð 	ð 	ØˆDÝð 	Hð 	Hð 	Hà—’ Ñ%Ô%ðHà¥ D¡	¤	Ð)Ð)Ø!¥S¨¡Y¤YÐ.Ð.àU°}ÐUÐUÐU�Ø× Ò  °fÀ3Ð ÑGÔGÐGøøð	Høøøð ˆts   ‚ —
B£ABÂBr!   r"   c                óà   — |j         r|j         nd}|                     ¦   «         5 }t          |¦  «        D ]\  }}|                      |dz   ||¦  «         Œ 	 ddd¦  «         dS # 1 swxY w Y   dS )z1Inspect the source file to find encoding problem.Úasciié   N)ra   ÚstreamÚ	enumeraterl   )r   r!   Úencodingrp   r1   r)   s         r   r5   zEncodingChecker.process_module{   sÛ   € à)-Ô);ÐH�4Ô%Ð%Àˆà�[Š[‰]Œ]ð 	A˜fÝ )¨&Ñ 1Ô 1ð Að A‘�˜Ø×$Ò$ V¨a¡Z°°xÑ@Ô@Ð@Ð@ðAð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Að 	Að 	As   ¥0A#Á#A'Á*A'Útokensúlist[tokenize.TokenInfo]c                óf  — | j         j        j        sdS |D ]š}|j        t          j        k    rŒ|j        dd…                              ¦   «         }| j         	                    d| 
                    ¦   «         z   ¦  «        r2|                      d|j        d         dz   ||j        d         ¬¦  «         Œ›dS )z*Inspect the source to find fixme problems.Nro   ú#rA   r   )Ú
col_offsetr*   r)   )r   rX   rB   rG   ÚtokenizeÚCOMMENTrK   Úlstripr\   ÚsearchÚlowerr,   Ústart)r   rs   Ú
token_infoÚcomment_texts       r   Úprocess_tokenszEncodingChecker.process_tokensƒ   sÉ   € àŒ{Ô!Ô'ð 	ØˆFØ ð 
	ð 
	ˆJØŒ¥(Ô"2Ò2Ð2ØØ%Ô,¨Q¨R¨RÔ0×7Ò7Ñ9Ô9ˆLØÔ"×)Ò)¨#°×0BÒ0BÑ0DÔ0DÑ*DÑEÔEð Ø× Ò ØØ)Ô/°Ô2°QÑ6Ø%Ø#Ô)¨!Ô,ð	 !ñ ô ð øð
	ð 
	r   r6   )r1   r_   r)   r`   ra   rb   r   rc   r7   )rs   rt   r   r   )r8   r9   r:   r;   r+   r<   r=   rV   rl   r5   r€   Ú__classcell__)r^   s   @r   r?   r?   5   sæ   ø€ € € € € ðð ð €Dàð 
ð€Dð àØ5Ø3ð,ðð ð	
ð à Ø%ØSØð	ð ð	
ð€Gð0	=ð 	=ð 	=ð 	=ð 	=ð 	=ðð ð ð ð"Að Að Að Aðð ð ð ð ð ð ð r   r?   r   r	   r   r   c                óŽ   — |                       t          | ¦  «        ¦  «         |                       t          | ¦  «        ¦  «         d S r   )Úregister_checkerr?   r   )r   s    r   Úregisterr„   ”   sA   € Ø
×Ò�O¨FÑ3Ô3Ñ4Ô4Ð4Ø
×ÒÕ6°vÑ>Ô>Ñ?Ô?Ð?Ð?Ð?r   )r   r	   r   r   )r;   Ú
__future__r   rP   rx   Útypingr   Úastroidr   Úpylint.checkersr   r   Úpylint.typingr   Úpylint.lintr	   r   r?   r„   r   r   r   ú<module>r‹      s   ðð
 PÐ Oà "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø €€€Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ð Ð à @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø (Ð (Ð (Ð (Ð (Ð (àð %Ø$Ð$Ð$Ð$Ð$Ð$ð)ð )ð )ð )ð )Ð!3ñ )ô )ð )ð>\ð \ð \ð \ð \Ð&Ð(:ñ \ô \ð \ð~@ð @ð @ð @ð @ð @r   