§
    öyIfô  ã                  óx   — d 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
mZ dZ G d„ de
j        ¦  «        Zdd„ZdS )a  All alphanumeric unicode character are allowed in Python but due
to similarities in how they look they can be confused.

See: https://peps.python.org/pep-0672/#confusing-features

The following checkers are intended to make users are aware of these issues.
é    )Úannotations)Únodes)Ú	constantsÚ
interfacesÚlint)Úbase_checkerÚutilsac  Used when the name contains at least one non-ASCII unicode character. See https://peps.python.org/pep-0672/#confusing-features for a background why this could be bad. 
If your programming guideline defines that you are programming in English, then there should be no need for non ASCII characters in Python Names. If not you can simply disable this check.c                  óð  — e Zd ZdZddeddgifdddefd	œZd
Zd(d„Z ej	        dd¦  «        d)d„¦   «         Z
 ej	        d¦  «        d*d„¦   «         ZeZ ej	        d¦  «        d+d„¦   «         Z ej	        d¦  «        d,d„¦   «         Z ej	        d¦  «        d-d„¦   «         Zd.d „Z ej	        dd¦  «        d/d"„¦   «         Z ej	        dd¦  «        d0d$„¦   «         Z ej	        d¦  «        d1d&„¦   «         Zd'S )2ÚNonAsciiNameCheckerz˜A strict name checker only allowing ASCII.

    Note: This check only checks Names, so it ignores the content of
          docstrings and comments!
    zB%s name "%s" contains a non-ASCII character, consider renaming it.únon-ascii-nameÚ	old_names)ÚC0144zold-non-ascii-name)z,%s name "%s" contains a non-ASCII character.únon-ascii-file-namez­Under python 3.5, PEP 3131 allows non-ascii identifiers, but not non-ascii file names.Since Python 3.5, even though Python supports UTF-8 files, some editors or tools don't.zP%s name "%s" contains a non-ASCII character, use an ASCII-only alias for import.únon-ascii-module-import)ÚC2401ÚW2402ÚC2403zNonASCII-CheckerÚ	node_typeÚstrÚnameú
str | NoneÚnodeúnodes.NodeNGÚreturnÚNonec                ó  — |€dS t          |¦  «                             ¦   «         s`t          j        |         }|                     ¦   «         |f}d}|dk    rd}n|dk    rd}|                      |||t          j        ¬¦  «         dS dS )z3Check whether a name is using non-ASCII characters.Nr   Úfiler   Úmoduler   )r   ÚargsÚ
confidence)r   Úisasciir   ÚHUMAN_READABLE_TYPESÚ
capitalizeÚadd_messager   ÚHIGH)Úselfr   r   r   Ú
type_labelr   Úmsgs          úS/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/non_ascii_names.pyÚ_check_namezNonAsciiNameChecker._check_nameB   s¦   € ð ˆ<àˆFå4‰yŒy× Ò Ñ"Ô"ð 	TÝ"Ô7¸	ÔBˆJØ×)Ò)Ñ+Ô+¨TÐ2ˆDà"ˆCð ˜FÒ"Ð"Ø+Ø˜hÒ&Ð&Ø/à×Ò˜S t°$Å:Ä?ÐÑSÔSÐSÐSÐSð	Tð 	Tó    r   únodes.Modulec                óp   — |                       d|j                             d¦  «        d         |¦  «         d S )Nr   ú.éÿÿÿÿ)r*   r   Úsplit©r&   r   s     r)   Úvisit_modulez NonAsciiNameChecker.visit_moduleW   s3   € à×Ò˜ ¤§¢°Ñ!5Ô!5°bÔ!9¸4Ñ@Ô@Ð@Ð@Ð@r+   ú*nodes.FunctionDef | nodes.AsyncFunctionDefc                ó^  — |                       d|j        |¦  «         |j        }|j        r&|j        D ]}|                       d|j        |¦  «         Œ|j        r&|j        D ]}|                       d|j        |¦  «         Œ|j        r&|j        D ] }|                       d|j        |¦  «         Œd S d S )NÚfunctionÚargument)r*   r   r   ÚposonlyargsÚ
kwonlyargs)r&   r   Ú	argumentsÚpos_only_argÚargÚkwargs         r)   Úvisit_functiondefz%NonAsciiNameChecker.visit_functiondef[   sø   € ð 	×Ò˜ T¤Y°Ñ5Ô5Ð5ð ”Iˆ	ð Ô ð 	NØ )Ô 5ð Nð NØ× Ò  ¨\Ô->ÀÑMÔMÐMÐMð Œ>ð 	<Ø ”~ð <ð <Ø× Ò  ¨S¬X°sÑ;Ô;Ð;Ð;ð Ôð 	@Ø"Ô-ð @ð @Ø× Ò  ¨U¬Z¸Ñ?Ô?Ð?Ð?ð	@ð 	@ð@ð @r+   únodes.Globalc                óH   — |j         D ]}|                      d||¦  «         Œd S )NÚconst©Únamesr*   )r&   r   r   s      r)   Úvisit_globalz NonAsciiNameChecker.visit_globalu   s8   € à”Jð 	2ð 	2ˆDØ×Ò˜W d¨DÑ1Ô1Ð1Ð1ð	2ð 	2r+   únodes.AssignNamec                óf  — |                      ¦   «         }t          |t          j        ¦  «        r.|j        |j        v r|                      d|j        |¦  «         dS dS t          |t          j        ¦  «        r|                      d|j        |¦  «         dS |                      d|j        |¦  «         dS )z"Check module level assigned names.ÚvariableÚattrN)	ÚframeÚ
isinstancer   ÚFunctionDefÚparentÚbodyr*   r   ÚClassDef)r&   r   rH   s      r)   Úvisit_assignnamez$NonAsciiNameChecker.visit_assignnamez   s·   € ð —
’
‘”ˆåeUÔ.Ñ/Ô/ð 	:ØŒ{˜eœjÐ(Ð(ð
 × Ò  ¨T¬Y¸Ñ=Ô=Ð=Ð=Ð=ð )Ð(õ ˜uœ~Ñ.Ô.ð 	:Ø×Ò˜V T¤Y°Ñ5Ô5Ð5Ð5Ð5ð ×Ò˜Z¨¬°DÑ9Ô9Ð9Ð9Ð9r+   únodes.ClassDefc                óú   — |                       d|j        |¦  «         |j                             ¦   «         D ]D\  }}t	          |                     |¦  «        ¦  «        s|                       d||d         ¦  «         ŒEd S )NÚclassrG   r   )r*   r   Úinstance_attrsÚitemsÚanyÚinstance_attr_ancestors)r&   r   rG   Úanodess       r)   Úvisit_classdefz"NonAsciiNameChecker.visit_classdef“   sƒ   € à×Ò˜ $¤)¨TÑ2Ô2Ð2Ø Ô/×5Ò5Ñ7Ô7ð 	:ð 	:‰LˆD&Ýt×3Ò3°DÑ9Ô9Ñ:Ô:ð :Ø× Ò  ¨¨v°a¬yÑ9Ô9Ð9øð	:ð 	:r+   únodes.ImportFrom | nodes.Importc                óV   — |j         D ] \  }}|p|}|                      d||¦  «         Œ!d S )Nr   rA   )r&   r   Úmodule_nameÚaliasr   s        r)   Ú_check_module_importz(NonAsciiNameChecker._check_module_importš   sG   € Ø"&¤*ð 	3ð 	3ÑˆK˜ØÐ'˜KˆDØ×Ò˜X t¨TÑ2Ô2Ð2Ð2ð	3ð 	3r+   únodes.Importc                ó0   — |                       |¦  «         d S ©N©r\   r1   s     r)   Úvisit_importz NonAsciiNameChecker.visit_importŸ   ó   € à×!Ò! $Ñ'Ô'Ð'Ð'Ð'r+   únodes.ImportFromc                ó0   — |                       |¦  «         d S r_   r`   r1   s     r)   Úvisit_importfromz$NonAsciiNameChecker.visit_importfrom£   rb   r+   ú
nodes.Callc                óR   — |j         D ]}|                      d|j        |¦  «         ŒdS )z+Check if the used keyword args are correct.r6   N)Úkeywordsr*   r;   )r&   r   Úkeywords      r)   Ú
visit_callzNonAsciiNameChecker.visit_call§   s<   € ð ”}ð 	?ð 	?ˆGØ×Ò˜Z¨¬°gÑ>Ô>Ð>Ð>ð	?ð 	?r+   N)r   r   r   r   r   r   r   r   )r   r,   r   r   )r   r3   r   r   )r   r>   r   r   )r   rD   r   r   )r   rO   r   r   )r   rX   r   r   )r   r]   r   r   )r   rc   r   r   )r   rf   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚNON_ASCII_HELPÚmsgsr   r*   r	   Úonly_required_for_messagesr2   r=   Úvisit_asyncfunctiondefrC   rN   rW   r\   ra   re   rj   © r+   r)   r   r      s"  € € € € € ðð ð QØØØÐ:Ð;Ð<ð	
ð

ð _Ø%Øð
ð)ð €Dð6 €DðTð Tð Tð Tð* &€UÔ%Ð&6Ð8MÑNÔNðAð Að Añ OÔNðAð &€UÔ%Ð&6Ñ7Ô7ð@ð @ð @ñ 8Ô7ð@ð. /Ðà%€UÔ%Ð&6Ñ7Ô7ð2ð 2ð 2ñ 8Ô7ð2ð &€UÔ%Ð&6Ñ7Ô7ð:ð :ð :ñ 8Ô7ð:ð0 &€UÔ%Ð&6Ñ7Ô7ð:ð :ð :ñ 8Ô7ð:ð3ð 3ð 3ð 3ð
 &€UÔ%Ð&6Ð8QÑRÔRð(ð (ð (ñ SÔRð(ð &€UÔ%Ð&6Ð8QÑRÔRð(ð (ð (ñ SÔRð(ð &€UÔ%Ð&6Ñ7Ô7ð?ð ?ð ?ñ 8Ô7ð?ð ?ð ?r+   r   Úlinterúlint.PyLinterr   r   c                óJ   — |                       t          | ¦  «        ¦  «         d S r_   )Úregister_checkerr   )rt   s    r)   Úregisterrx   ®   s%   € Ø
×ÒÕ/°Ñ7Ô7Ñ8Ô8Ð8Ð8Ð8r+   N)rt   ru   r   r   )rn   Ú
__future__r   Úastroidr   Úpylintr   r   r   Úpylint.checkersr   r	   ro   ÚBaseCheckerr   rx   rs   r+   r)   ú<module>r~      sÉ   ðð
ð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ð>ð ðM?ð M?ð M?ð M?ð M?˜,Ô2ñ M?ô M?ð M?ð`9ð 9ð 9ð 9ð 9ð 9r+   