§
    öyIf“k  ã                  óÞ  — d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 ddl
mZmZ ddlmZ ddlmZmZ ddlZddlmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZmZmZmZ ddlm Z m!Z! ddl"m#Z# erddl$m%Z% eej&        e'e'ej(        f         Z) ej*        d¦  «         ej*        d¦  «        dœZ+dZ, e-d¦  «        Z. G d„ de¦  «        Z/d-d„Z0d.d„Z1d/d"„Z2d#d$hZ3d0d*„Z4 G d+„ d,e¦  «        Z5dS )1zBasic checker for Python code.é    )ÚannotationsN)ÚIterable)ÚEnumÚauto)ÚPattern)ÚTYPE_CHECKINGÚTuple)Únodes)Ú	constantsÚ
interfaces)Úutils)Ú_BasicChecker)ÚKNOWN_NAME_TYPESÚKNOWN_NAME_TYPES_WITH_STYLEÚNAMING_STYLESÚ_create_naming_options)Úis_property_deleterÚis_property_setter)ÚOptions)ÚPyLinterzJ^_{0,2}(?!T[A-Z])(?:[A-Z]+|(?:[A-Z]+[a-z]+)+T?(?<!Type))(?:_co(?:ntra)?)?$z9^_{0,2}(?!T[A-Z]|Type)[A-Z]+[a-z0-9]+(?:[A-Z][a-z0-9]+)*$)ÚtypevarÚ	typealiaszbuiltins.property)ztyping.TypeVarztyping_extensions.TypeVarc                  ó^   — e Zd Z e¦   «         Z e¦   «         Z e¦   «         Z e¦   «         ZdS )ÚTypeVarVarianceN)Ú__name__Ú
__module__Ú__qualname__r   Ú	invariantÚ	covariantÚcontravariantÚdouble_variant© ó    ú]/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/base/name_checker/checker.pyr   r   :   s:   € € € € € Ø�‘”€IØ�‘”€IØ�D‘F”F€MØ�T‘V”V€N€N€Nr#   r   Úconfigúargparse.NamespaceÚreturnútuple[set[str], set[str]]c                ó¶   — t           h}t          ¦   «         }| �>|                     | j        ¦  «         |                     d„ | j        D ¦   «         ¦  «         ||fS )zÇReturns a tuple of property classes and names.

    Property classes are fully qualified, such as 'abc.abstractproperty' and
    property names are the actual names, such as 'abstract_property'.
    Nc              3  óN   K  — | ] }|                      d d¦  «        d         V — Œ!dS )ú.é   éÿÿÿÿN)Úrsplit)Ú.0Úprops     r$   ú	<genexpr>z"_get_properties.<locals>.<genexpr>K   sF   è è € ð 
ð 
Ø(,ˆD�KŠK˜˜QÑÔ Ô#ð
ð 
ð 
ð 
ð 
ð 
r#   )ÚBUILTIN_PROPERTYÚsetÚupdateÚproperty_classes)r%   r5   Úproperty_namess      r$   Ú_get_propertiesr7   A   sw   € õ )Ð)ÐÝ"™uœu€NØÐØ×Ò Ô 7Ñ8Ô8Ð8Ø×Òð 
ð 
Ø06Ô0Gð
ñ 
ô 
ñ 	
ô 	
ð 	
ð ˜^Ð+Ð+r#   Únodeúnodes.AssignNameÚboolc                ó²  — | }|rGt          |j        t          j        ¦  «        s(|j        }|rt          |j        t          j        ¦  «        ¯(|rt	          j        |j        t          ¦  «        sdS |j        j        }|                     t          j        t          j	        f¦  «        D ]0}|j
        D ]&\  }}|r|| j        k    r  dS Œ|| j        k    r  dS Œ'Œ1dS )zÄDetect that the given node (AssignName) is inside an
    exception handler and redefines an import from the tryexcept body.

    Returns True if the node redefines an import, False otherwise.
    FT)Ú
isinstanceÚparentr
   ÚExceptHandlerr   Úerror_of_typeÚImportErrorÚnodes_of_classÚ
ImportFromÚImportÚnamesÚname)r8   ÚcurrentÚ	try_blockÚimport_noderE   Úaliass         r$   Ú_redefines_importrJ   Q   s  € ð €GØ
ð !�* W¤^µUÔ5HÑIÔIð !Ø”.ˆð ð !�* W¤^µUÔ5HÑIÔIð !àð �%Ô-¨g¬n½kÑJÔJð ØˆuØ”Ô%€IØ ×/Ò/µÔ1AÅ5Ä<Ð0PÑQÔQð ð ˆØ&Ô,ð 	ð 	‰KˆD�%Øð Ø˜DœIÒ%Ð%Ø˜4˜4˜4ð &à˜œÒ"Ð"Ø�t�t�tð #ð		ð ˆ5r#   únodes.FunctionDefÚstrc                óÂ  — t          |¦  «        \  }}|                      ¦   «         sdS t          | ¦  «        st          | ¦  «        rdS | j        r| j        j        ng }|D ]~}t          |t
          j        ¦  «        s#t          |t
          j        ¦  «        rH|j	        |v r?t          j        |¦  «        }|r)t          |d¦  «        r|                     ¦   «         |v r dS ŒdS )zóDetermine the name type whose regex the function's name should match.

    :param node: A function node.
    :param config: Configuration from which to pull additional property classes.

    :returns: One of ('function', 'method', 'attr')
    ÚfunctionÚattrÚqnameÚmethod)r7   Ú	is_methodr   r   Ú
decoratorsr
   r<   ÚNameÚ	AttributeÚattrnamer   Ú
safe_inferÚhasattrrP   )r8   r%   r5   r6   rS   Ú	decoratorÚinferreds          r$   Ú_determine_function_name_typer[   g   s  € õ (7°vÑ'>Ô'>Ñ$Ð�nØ�>Š>ÑÔð Øˆzå˜$ÑÔð Õ#6°tÑ#<Ô#<ð ð ˆvà*.¬/ÐA�”Ô&Ð&¸r€JØð ð ˆ	õ �i¥¤Ñ,Ô,ð 
	Ý�y¥%¤/Ñ2Ô2ð
	àÔ" nÐ4Ð4åÔ'¨	Ñ2Ô2ˆHàðå˜H gÑ.Ô.ðð —N’NÑ$Ô$Ð(8Ð8Ð8à�v�vøØˆ8r#   ÚexemptÚignoreÚmatchúre.Match[str] | NoneÚ	node_typeÚ
confidenceúinterfaces.Confidencec                ód   — | d uo,| j         d uo#| j         t          vo|dk    p|t          j        k    S )NrQ   )Ú	lastgroupÚEXEMPT_NAME_CATEGORIESr   ÚINFERENCE_FAILURE)r^   r`   ra   s      r$   Ú_is_multi_naming_matchrg   �   sO   € ð 	�TÐð 	RØŒO 4Ð'ð	RàŒOÕ#9Ð9ð	Rð ˜(Ò"ÐP jµJÔ4PÒ&Pð	r#   c                  óX  ‡ — e Zd ZU ddddddgifddd	d
œZddddddœfddddddœfddddddœfddddddœfddddddœfddd d!d"dœfd#d$dd%d&dœffZd'ed(<   e e¦   «         z   Zd'ed)<   dXˆ fd.„ZdYd/„Z	dZd1„Z
 ej        dd2¦  «        d[d5„¦   «         Zd\d7„Z ej        dd2¦  «        d]d9„¦   «         Z ej        dd2¦  «        d^d;„¦   «         ZeZ ej        dd2d<d=d>¦  «        d_d@„¦   «         Zd`dC„ZdadF„Z	 dbdcdN„ZdddP„ZdddQ„Zej        dfdedS„ZedfdU„¦   «         ZedfdV„¦   «         ZdgdW„Zˆ xZS )hÚNameChecker)z"%s name "%s" doesn't conform to %súinvalid-nameziUsed when the name doesn't conform to naming rules associated to its type (constant, variable, class...).zDisallowed name "%s"údisallowed-namezMUsed when the name matches bad-names or bad-names-rgxs- (unauthorized names).Ú	old_names)ÚC0102zblacklisted-name)z.Type variable name does not reflect variance%sútypevar-name-incorrect-varianceaY  Emitted when a TypeVar name doesn't reflect its type variance. According to PEP8, it is recommended to add suffixes '_co' and '_contra' to the variables used to declare covariant or contravariant behaviour respectively. Invariant (default) variables do not require a suffix. The message is also emitted when invariant variables do have a suffix.)z2TypeVar cannot be both covariant and contravariantútypevar-double-variancezgEmitted when both the "covariant" and "contravariant" keyword arguments are set to "True" in a TypeVar.)z<TypeVar name "%s" does not match assigned variable name "%s"útypevar-name-mismatchzWEmitted when a TypeVar is assigned to a variable that does not match its name argument.)ÚC0103ÚC0104ÚC0105ÚC0131ÚC0132z
good-names)ÚiÚjÚkÚexÚRunÚ_Úcsvz<names>zJGood variable names which should always be accepted, separated by a comma.)ÚdefaultÚtypeÚmetavarÚhelpzgood-names-rgxsÚ Ú
regexp_csvziGood variable names regexes, separated by a comma. If names match any regex, they will always be acceptedz	bad-names)ÚfooÚbarÚbazÚtotoÚtutuÚtatazHBad variable names which should always be refused, separated by a comma.zbad-names-rgxszgBad variable names regexes, separated by a comma. If names match any regex, they will always be refusedz
name-groupr"   z<name1:name2>zrColon-delimited sets of names that determine each other's naming style when the name regexes allow several styles.zinclude-naming-hintFÚynz<y or n>z?Include a hint for the correct naming format with invalid-name.zproperty-classes)zabc.abstractpropertyz<decorator names>zÙList of decorators that produce properties, such as abc.abstractproperty. Add to this list to register other decorators that produce valid properties. These decorators are taken in consideration only for invalid-name.r   Ú_optionsÚoptionsÚlinterr   r'   ÚNonec                óž   •— t          ¦   «                              |¦  «         i | _        i | _        i | _        i | _        g | _        g | _        d S ©N)ÚsuperÚ__init__Ú_name_groupÚ
_bad_namesÚ_name_regexpsÚ_name_hintsÚ_good_names_rgxs_compiledÚ_bad_names_rgxs_compiled)ÚselfrŒ   Ú	__class__s     €r$   r‘   zNameChecker.__init__  sP   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø+-ˆÔØFHˆŒØ9;ˆÔØ+-ˆÔØ@BˆÔ&Ø?AˆÔ%Ð%Ð%r#   c                ó~  — | j         j                             ¦   «          | j         j        j        D ]'}|                     d¦  «        D ]}d|› �| j        |<   ŒŒ(|                      ¦   «         \  }}|| _        || _	        d„ | j         j        j
        D ¦   «         | _        d„ | j         j        j        D ¦   «         | _        d S )Nú:Úgroup_c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r"   ©ÚreÚcompile©r/   Úrgxps     r$   ú
<listcomp>z$NameChecker.open.<locals>.<listcomp>%  s/   € ð *
ð *
ð *
Ø!%�BŒJ�tÑÔð*
ð *
ð *
r#   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r"   rž   r¡   s     r$   r£   z$NameChecker.open.<locals>.<listcomp>(  s/   € ð )
ð )
ð )
Ø!%�BŒJ�tÑÔð)
ð )
ð )
r#   )rŒ   ÚstatsÚreset_bad_namesr%   Ú
name_groupÚsplitr’   Ú_create_naming_rulesr”   r•   Úgood_names_rgxsr–   Úbad_names_rgxsr—   )r˜   ÚgroupÚ	name_typeÚregexpsÚhintss        r$   ÚopenzNameChecker.open  sç   € ØŒÔ×)Ò)Ñ+Ô+Ð+Ø”[Ô'Ô2ð 	?ð 	?ˆEØ"Ÿ[š[¨Ñ-Ô-ð ?ð ?�	Ø.>°uÐ.>Ð.>�Ô  Ñ+Ð+ð?ð ×2Ò2Ñ4Ô4‰ˆ�Ø$ˆÔØ ˆÔð*
ð *
Ø)-¬Ô);Ô)Kð*
ñ *
ô *
ˆÔ&ð)
ð )
Ø)-¬Ô);Ô)Jð)
ñ )
ô )
ˆÔ%Ð%Ð%r#   ú.tuple[dict[str, Pattern[str]], dict[str, str]]c                ó\  — i }i }t           D ]�}|t          v rAt          | j        j        |› d�¦  «        }t
          |                              |¦  «        ||<   nd}t          |         ||<   |› d�}t          | j        j        |d ¦  «        }|�|||<   |�|j        ›d�||<   Œ•|› d�||<   Œž||fS )NÚ_naming_styleÚ
predefinedÚ_rgxz patternz naming style)	r   r   ÚgetattrrŒ   r%   r   Ú	get_regexÚDEFAULT_PATTERNSÚpattern)r˜   r®   r¯   r­   Únaming_style_nameÚcustom_regex_setting_nameÚcustom_regexs          r$   r©   z NameChecker._create_naming_rules,  s  € Ø+-ˆØ "ˆå)ð 	Gð 	GˆIØÕ7Ð7Ð7Ý$+Ø”KÔ&¨9Ð(CÐ(CÐ(Cñ%ô %Ð!õ &3Ð3DÔ%E×%OÒ%OØñ&ô &�˜	Ñ"Ð"ð %1Ð!Ý%5°iÔ%@�˜	Ñ"à+4Ð(:Ð(:Ð(:Ð%Ý" 4¤;Ô#5Ð7PÐRVÑWÔWˆLØÐ'Ø%1�˜	Ñ"àÐ'Ø&2Ô&:Ð#FÐ#FÐ#F��iÑ Ð à&7Ð#FÐ#FÐ#F��iÑ Ð à˜ˆ~Ðr#   rj   r8   únodes.Modulec                ó~   — |                       d|j                             d¦  «        d         |¦  «         i | _        d S )NÚmoduler+   r-   )Ú_check_namerE   r¨   r“   )r˜   r8   s     r$   Úvisit_modulezNameChecker.visit_moduleH  s8   € à×Ò˜ 4¤9§?¢?°3Ñ#7Ô#7¸Ô#;¸TÑBÔBÐBØˆŒˆˆr#   r{   c                óŒ  — | j                              ¦   «         D �](}t          |¦  «        dk     rŒt          j        t
          ¦  «        }t          j        }t          | 	                    ¦   «         d„ ¬¦  «        \  }}|                     ¦   «         D ]G}|t          |¦  «                  
                    |¦  «         t          t          |¦  «        |¦  «        }ŒHt          ||         ¦  «        dk    r/t          ||         d„ ¬¦  «        }t          j        |dd …         Ž }n||         d         }|D ]}	 | j        |g|	¢R Ž  Œ�Œ*d S )Né   c                ó,   — t          | d         ¦  «        S )Nr,   )Úlen)Úitems    r$   ú<lambda>z*NameChecker.leave_module.<locals>.<lambda>U  s   € Í#ÈdÐSTÌgÉ,Ì,€ r#   )Úkeyr,   c                ó4   — t          d„ | D ¦   «         ¦  «        S )Nc              3  óJ   K  — | ]}|d          j         ®|d          j         V — ŒdS )r   N)Úlineno)r/   Úwarnings     r$   r1   z=NameChecker.leave_module.<locals>.<lambda>.<locals>.<genexpr>\  sB   è è € ð *ð *à#Ø" 1œ:Ô,Ð8ð   œ
Ô)à8Ð8Ð8Ð8ð*ð *r#   )Úmin)r¬   s    r$   rÇ   z*NameChecker.leave_module.<locals>.<lambda>\  s,   € ¥cð *ð *à',ð*ñ *ô *ñ 'ô '€ r#   r   )r“   ÚvaluesrÅ   ÚcollectionsÚdefaultdictÚlistÚsysÚmaxsizeÚmaxÚitemsÚappendrÍ   ÚsortedÚ	itertoolsÚchainÚ_raise_name_warning)
r˜   r{   Ú
all_groupsÚgroupsÚmin_warningsÚprevalent_groupr¬   Úby_lineÚwarningsÚargss
             r$   Úleave_modulezNameChecker.leave_moduleM  so  € Øœ/×0Ò0Ñ2Ô2ð 	Añ 	AˆJÝ�:‰Œ Ò"Ð"ØåÔ'­Ñ-Ô-ð õ œ;ˆLÝ!$ Z×%5Ò%5Ñ%7Ô%7Ð=VÐ=VÐ!WÑ!WÔ!WÑˆO˜QØ#×*Ò*Ñ,Ô,ð =ð =�Ø•s˜5‘z”zÔ"×)Ò)¨%Ñ0Ô0Ð0Ý"¥3 u¡:¤:¨|Ñ<Ô<��Ý�6˜,Ô'Ñ(Ô(¨1Ò,Ð,Ý Ø˜<Ô(ðð ðñ ô �õ 6?´_ÀgÈaÈbÈbÄkÐ5R��à! ,Ô/°Ô2�Ø ð Að A�Ø(�Ô(¨Ð@¸4Ð@Ð@Ð@Ð@Ð@ñAð/	Að 	Ar#   únodes.ClassDefc                óú   — |                       d|j        |¦  «         |j                             ¦   «         D ]D\  }}t	          |                     |¦  «        ¦  «        s|                       d||d         ¦  «         ŒEd S )NÚclassrO   r   )rÀ   rE   Úinstance_attrsrÕ   ÚanyÚinstance_attr_ancestors)r˜   r8   rO   Úanodess       r$   Úvisit_classdefzNameChecker.visit_classdefh  sƒ   € à×Ò˜ $¤)¨TÑ2Ô2Ð2Ø Ô/×5Ò5Ñ7Ô7ð 	:ð 	:‰LˆD�&Ý�t×3Ò3°DÑ9Ô9Ñ:Ô:ð :Ø× Ò  ¨¨v°a¬yÑ9Ô9Ð9øð	:ð 	:r#   rK   c                óè  — t           j        }|                     ¦   «         rvt          j        |j                             ¦   «         |j        ¦  «        rd S t          j        |j                             ¦   «         ¦  «        rt           j	        nt           j
        }|                      t          || j        j        ¬¦  «        |j        ||¦  «         |j        j        }|�|                      |¦  «         d S d S )N)r%   )r   ÚHIGHrR   r   Úoverrides_a_methodr=   ÚframerE   Úhas_known_basesÚ	INFERENCErf   rÀ   r[   rŒ   r%   rá   Ú_recursive_check_names)r˜   r8   ra   rá   s       r$   Úvisit_functiondefzNameChecker.visit_functiondefo  sê   € õ  ”_ˆ
Ø�>Š>ÑÔð 	ÝÔ'¨¬×(9Ò(9Ñ(;Ô(;¸T¼YÑGÔGð Ø�õ Ô(¨¬×):Ò):Ñ)<Ô)<Ñ=Ô=ð2•
Ô$Ð$åÔ1ð ð 	×ÒÝ)¨$°t´{Ô7IÐJÑJÔJØŒIØØñ		
ô 	
ð 	
ð ŒyŒ~ˆØÐØ×'Ò'¨Ñ-Ô-Ð-Ð-Ð-ð Ðr#   rn   ro   rp   r9   c                óP  — |                      ¦   «         }|                     ¦   «         }t          |t          j        ¦  «        r|                      d|j        |¦  «         dS t          |t          j        ¦  «        r|                      d|j        |¦  «         dS t          |t          j        ¦  «        r|                      d|j        |¦  «         dS t          |t          j	        ¦  «        �rxt          |t          j
        ¦  «        �rÔt          j        |j        ¦  «        }t          |j        t          j
        ¦  «        r†|                      |j        ¦  «        r)|                      d|j        d         j        |¦  «         dS |                      |j        ¦  «        r)|                      d|j        d         j        |¦  «         dS t          |j        t          j        ¦  «        �rWt          |j        t          j        ¦  «        �r7|j        j                             |¦  «        t+          |j        j        ¦  «        k     rý|j        j        |j        j                             |¦  «                 }|                      |¦  «        rQ|                      d|j        d         j        |j        j                             |¦  «                 j        |¦  «         dS |                      |¦  «        rQ|                      d|j        d         j        |j        j                             |¦  «                 j        |¦  «         dS dS t          |t          j        ¦  «        r|                      d|j        |¦  «         dS t/          |¦  «        s8t          |t          j        ¦  «        r|                      d|j        |¦  «         dS |                      d|j        |d	¬
¦  «         dS t          |t          j        ¦  «        rkt          j        |d¦  «        r|                      d|j        |¦  «         dS |                      |j        ¦  «        r |                      d|j        |¦  «         dS dS dS t          |t          j        ¦  «        r©|j        |v rš|j        |                     ¦   «         vr�t/          |¦  «        stt          |t          j        ¦  «        r8|                      |j        ¦  «        r|                      d|j        |¦  «         dS |                      d|j        |¦  «         dS dS dS dS t          |t          j        ¦  «        ret          j        |¦  «        st          j        |d¦  «        r|                      d|j        |¦  «         dS |                      d|j        |¦  «         dS dS )z"Check module level assigned names.Ú	inlinevarr   r   r   Nrå   ÚconstÚvariableT)Údisallowed_check_onlyÚFinalÚclass_constÚclass_attribute)rî   Úassign_typer<   r
   ÚComprehensionrÀ   rE   ÚTypeVarÚ	TypeAliasÚModuleÚAssignr   rW   Úvaluer=   Ú_assigns_typevarÚtargetsÚ_assigns_typealiasr	   ÚeltsÚindexrÅ   ÚClassDefrJ   ÚConstÚ	AnnAssignÚis_assign_name_annotated_withÚ
annotationÚFunctionDefÚargnamesÚis_enum_member)r˜   r8   rî   rû   Úinferred_assign_typeÚassigners         r$   Úvisit_assignnamezNameChecker.visit_assignnameŠ  sÀ  € ð —
’
‘”ˆØ×&Ò&Ñ(Ô(ˆõ �k¥5Ô#6Ñ7Ô7ð Z	EØ×Ò˜[¨$¬)°TÑ:Ô:Ð:Ð:Ð:å˜¥U¤]Ñ3Ô3ð W	EØ×Ò˜Y¨¬	°4Ñ8Ô8Ð8Ð8Ð8å˜¥U¤_Ñ5Ô5ð T	EØ×Ò˜[¨$¬)°TÑ:Ô:Ð:Ð:Ð:õ ˜�uœ|Ñ,Ô,ñ P	Eå˜+¥u¤|Ñ4Ô4ñ 9CÝ',Ô'7¸Ô8IÑ'JÔ'JÐ$õ ˜dœk­5¬<Ñ8Ô8ð Ø×,Ò,¨[Ô->Ñ?Ô?ð Ø×(Ò(¨°KÔ4GÈÔ4JÔ4OÐQUÑVÔVÐVØ˜Ø×.Ò.¨{Ô/@ÑAÔAð Ø×(Ò(¨°kÔ6IÈ!Ô6LÔ6QÐSWÑXÔXÐXØ˜õ ˜tœ{­E¬KÑ8Ô8ñ&å" ;Ô#4µe´kÑBÔBñ&ð œÔ(×.Ò.¨tÑ4Ô4µs¸;Ô;LÔ;QÑ7RÔ7RÒRÐRà*Ô0Ô5°d´kÔ6F×6LÒ6LÈTÑ6RÔ6RÔS�HØ×,Ò,¨XÑ6Ô6ð Ø×(Ò(Ø%Ø'Ô/°Ô2Ü! $¤+Ô"2×"8Ò"8¸Ñ">Ô">ô@ä!Ø ñô ð ð ˜Ø×.Ò.¨xÑ8Ô8ð Ø×(Ò(Ø'Ø'Ô/°Ô2Ü! $¤+Ô"2×"8Ò"8¸Ñ">Ô">ô@ä!Ø ñô ð ð ˜ðð õ  Ð 4µe´nÑEÔEð Ø×$Ò$ W¨d¬i¸Ñ>Ô>Ð>Ð>Ð>õ +¨4Ñ0Ô0ð µZØ(­%¬+ñ6ô 6ð ð ×$Ò$ W¨d¬i¸Ñ>Ô>Ð>Ð>Ð>à×$Ò$Ø" D¤I¨tÈ4ð %ñ ô ð ð ð õ
 ˜K­¬Ñ9Ô9ð CÝÔ6°t¸WÑEÔEð CØ×$Ò$ W¨d¬i¸Ñ>Ô>Ð>Ð>Ð>Ø×,Ò,¨[Ô-CÑDÔDð CØ×$Ò$ [°$´)¸TÑBÔBÐBÐBÐBð	Cð CðCð Cõ ˜�uÔ0Ñ1Ô1ð 	EàŒy˜EÐ!Ð! d¤i°u·~²~Ñ7GÔ7GÐ&GÐ&GÝ(¨Ñ.Ô.ð FÝ!Ø#¥U¤_ñô ð Fà×1Ò1°+Ô2HÑIÔIðFð ×(Ò(¨°d´iÀÑFÔFÐFÐFÐFà×(Ò(¨°T´YÀÑEÔEÐEÐEÐEð "Ð!Ð&GÐ&GðFð Fõ ˜�uœ~Ñ.Ô.ð 	EÝÔ# DÑ)Ô)ð E­UÔ-PØ�gñ.ô .ð Eð × Ò  °´	¸4Ñ@Ô@Ð@Ð@Ð@à× Ò Ð!2°D´I¸tÑDÔDÐDÐDÐDð	Eð 	Er#   rá   úlist[nodes.AssignName]c                óH   — |D ]}|                       d|j        |¦  «         ŒdS )z/Check names in a possibly recursive list <arg>.ÚargumentN)rÀ   rE   )r˜   rá   Úargs      r$   rñ   z"NameChecker._recursive_check_namesõ  s8   € àð 	8ð 	8ˆCØ×Ò˜Z¨¬°3Ñ7Ô7Ð7Ð7ð	8ð 	8r#   r`   rL   c                ó8   — | j                              ||¦  «        S r�   )r’   Úget)r˜   r`   s     r$   Ú_find_name_groupzNameChecker._find_name_groupú  s   € ØÔ×#Ò# I¨yÑ9Ô9Ð9r#   rÞ   ú
str | Noneúnodes.NodeNGrE   ra   rb   rÌ   c                ó„  — t           j        |         }| j        |         }|rd|› d|› �}| j        j        j        r|d| j        |         j        ›d�z  }|dk    r|                     ¦   «         ||fn|                     ¦   «         |f}	|  	                    |||	|¬¦  «         | j        j
                             |d¦  «         d S )Nzthe `z` group in the z (z	 pattern)rj   ©r8   rá   ra   r,   )r   ÚHUMAN_READABLE_TYPESr•   rŒ   r%   Úinclude_naming_hintr”   r¹   Ú
capitalizeÚadd_messager¥   Úincrease_bad_name)
r˜   rÞ   r8   r`   rE   ra   rÌ   Ú
type_labelÚhintrá   s
             r$   rÚ   zNameChecker._raise_name_warningý  sò   € õ Ô3°IÔ>ˆ
ØÔ 	Ô*ˆØð 	Bð B˜?ÐAÐA¸4ÐAÐAˆDØŒ;ÔÔ1ð 	LØÐK˜Ô+¨IÔ6Ô>ÐKÐKÐKÑKˆDð ˜.Ò(Ð(ð ×"Ò"Ñ$Ô$ d¨DÐ1Ð1à×'Ò'Ñ)Ô)¨4Ð0ð 	ð 	×Ò˜ t°$À:ÐÑNÔNÐNØŒÔ×+Ò+¨I°qÑ9Ô9Ð9Ð9Ð9r#   r:   c                ój   ‡— ‰| j         j        j        v pt          ˆfd„| j        D ¦   «         ¦  «        S )Nc              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S r�   ©r^   ©r/   r¹   rE   s     €r$   r1   z5NameChecker._name_allowed_by_regex.<locals>.<genexpr>  s@   øè è € ð <
ð <
Ø$+ˆG�MŠM˜$ÑÔð<
ð <
ð <
ð <
ð <
ð <
r#   )rŒ   r%   Ú
good_namesrç   r–   ©r˜   rE   s    `r$   Ú_name_allowed_by_regexz"NameChecker._name_allowed_by_regex  sR   ø€ Ø�t”{Ô)Ô4Ð4ð 
½ð <
ð <
ð <
ð <
Ø/3Ô/Mð<
ñ <
ô <
ñ 9
ô 9
ð 	
r#   c                ój   ‡— ‰| j         j        j        v pt          ˆfd„| j        D ¦   «         ¦  «        S )Nc              3  óB   •K  — | ]}|                      ‰¦  «        V — Œd S r�   r&  r'  s     €r$   r1   z8NameChecker._name_disallowed_by_regex.<locals>.<genexpr>  s@   øè è € ð ;
ð ;
Ø$+ˆG�MŠM˜$ÑÔð;
ð ;
ð ;
ð ;
ð ;
ð ;
r#   )rŒ   r%   Ú	bad_namesrç   r—   r)  s    `r$   Ú_name_disallowed_by_regexz%NameChecker._name_disallowed_by_regex  sR   ø€ Ø�t”{Ô)Ô3Ð3ð 
µsð ;
ð ;
ð ;
ð ;
Ø/3Ô/Lð;
ñ ;
ô ;
ñ 8
ô 8
ð 	
r#   r÷   c                ó´  ‡— dˆfd„}|                       |¬¦  «        rdS |                      |¬¦  «        rE| j        j                             ‰d¦  «         |                      d	||t          j        ¬
¦  «         dS | j        ‰         }| 	                    |¦  «        }t          |‰|¦  «        rd|                      ‰¦  «        }	| j                             |	i ¦  «        }
|
                     |j        g ¦  «        }|                     |‰||f¦  «         |€&|s$ ||¦  «        s|                      d|‰||¦  «         ‰dk    r|                      ||¦  «         dS dS )z)Check for a name using the type's regexp.r8   r  r'   r:   c                ót   •— ‰dk    r0t          j        | ¦  «        }t          |t          j        ¦  «        rdS dS )Nrö   TF)r   rW   r<   r
   r  )r8   rZ   r`   s     €r$   Ú _should_exempt_from_invalid_namezANameChecker._check_name.<locals>._should_exempt_from_invalid_name,  s<   ø€ Ø˜JÒ&Ð&Ý Ô+¨DÑ1Ô1�Ý˜h­¬Ñ7Ô7ð  Ø˜4Ø�5r#   )rE   Nr,   rk   r  r   )r8   r  r'   r:   )r*  r.  rŒ   r¥   r!  r   r   rì   r”   r^   rg   r  r“   Ú
setdefaultrd   rÖ   rÚ   Ú_check_typevar)r˜   r`   rE   r8   ra   r÷   r1  Úregexpr^   r§   Úbad_name_grouprà   s    `          r$   rÀ   zNameChecker._check_name"  s¤  ø€ ð	ð 	ð 	ð 	ð 	ð 	ð ×&Ò&¨DÐ&Ñ1Ô1ð 	ØˆFØ×)Ò)¨tÐ)Ñ4Ô4ð 	ØŒKÔ×/Ò/°	¸1Ñ=Ô=Ð=Ø×ÒØ!¨°4ÅJÄOð ñ ô ð ð ˆFØÔ# IÔ.ˆØ—’˜TÑ"Ô"ˆå! %¨°JÑ?Ô?ð 	AØ×.Ò.¨yÑ9Ô9ˆJØ!œ_×7Ò7¸
ÀBÑGÔGˆNà%×0Ò0°´À"ÑEÔEˆHØ�OŠO˜T 9¨d°JÐ?Ñ@Ô@Ð@ð ˆMØ)ð à4Ð4°TÑ:Ô:ð ð ×$Ò$ T¨4°¸DÀ*ÑMÔMÐMð ˜	Ò!Ð!Ø×Ò  dÑ+Ô+Ð+Ð+Ð+ð "Ð!r#   únodes.NodeNG | Nonec                óÚ   — t          | t          j        ¦  «        rPt          j        | j        ¦  «        }t          |t          j        ¦  «        r|                     ¦   «         t          v rdS dS )z'Check if a node is assigning a TypeVar.TF)	r<   ÚastroidÚCallr   rW   Úfuncr  rP   ÚTYPE_VAR_QNAME)r8   rZ   s     r$   r  zNameChecker._assigns_typevarP  s^   € õ �d�GœLÑ)Ô)ð 	ÝÔ'¨¬	Ñ2Ô2ˆHå˜8¥WÔ%5Ñ6Ô6ðà—N’NÑ$Ô$­Ð6Ð6à�tØˆur#   c                óX  — t          j        | ¦  «        }t          |t          j        ¦  «        rG|                     ¦   «         }|dk    rdS |dk    r$| €J ‚t          | j        t          j        ¦  «         S n4t          |t          j        ¦  «        r|                     ¦   «         dk    rdS dS )z)Check if a node is assigning a TypeAlias.ztyping.TypeAliasTz.UnionNF)	r   rW   r<   r
   r  rP   r=   r	  r  )r8   rZ   rP   s      r$   r  zNameChecker._assigns_typealias\  s¶   € õ Ô# DÑ)Ô)ˆÝ�h¥¤Ñ/Ô/ð 	Ø—N’NÑ$Ô$ˆEØÐ*Ò*Ð*Ø�tØ˜Ò Ð ð Ð'Ð'Ð'Ý% d¤kµ5´?ÑCÔCÐCÐCð	 !õ
 ˜¥%Ô"3Ñ4Ô4ð 	ð �~Š~ÑÔÐ#5Ò5Ð5Ø�tØˆur#   c           	     óÚ  — t          |j        t          j        ¦  «        r=|                     ¦   «         j        j        }|                     ¦   «         j        j        }n°t          |j        t          j        ¦  «        r�|                     ¦   «         j        j	        |j        j	         
                    |¦  «                 j        }|                     ¦   «         j        j	        |j        j	         
                    |¦  «                 j        }nd}d}t          j        }d}|D ]È}|t          j        k    rn|j        dk    r5|j        j        r)|t          j        k    rt          j        nt          j        }n?|j        dk    r4|j        j        r(|t          j        k    rt          j        nt          j        }|j        dk    r+t          |j        t          j        ¦  «        r|j        j        }ŒÉ|€/|r-t          |d         t          j        ¦  «        r|d         j        }|t          j        k    rG|                      d|t&          j        ¬¦  «         |                      d	|d
t&          j        ¬¦  «         �nL|t          j        k    rY|                     d¦  «        sDt-          j        dd|¦  «        › d�}|                      d	|d|› d|› d�t&          j        ¬¦  «         nã|t          j        k    rY|                     d¦  «        sDt-          j        dd|¦  «        › d�}|                      d	|d|› d|› d�t&          j        ¬¦  «         nz|t          j        k    rj|                     d¦  «        s|                     d¦  «        r@t-          j        dd|¦  «        }|                      d	|d|› d|› d�t&          j        ¬¦  «         |�-||k    r)|                      d|||ft&          j        ¬¦  «         dS dS dS )z"Check for TypeVar lint violations.r"   Nr   r    rE   r   ro   )r8   ra   rn   )r�   r  Ú_coz_contra$r�   z. "z" is covariant, use "z	" insteadÚ_contraz_co$z" is contravariant, use "z_contra$|_co$z" is invariant, use "rp   )r<   r=   r
   r   rû   r  Úkeywordsrá   r	   r  r  r   r   r!   r  r    r   r  r   r   rð   ÚendswithrŸ   Úsub)	r˜   rE   r8   r@  rá   ÚvarianceÚname_argÚkwÚsuggest_names	            r$   r3  zNameChecker._check_typevarp  s&  € å�d”k¥5¤<Ñ0Ô0ð 
	Ø×'Ò'Ñ)Ô)Ô/Ô8ˆHØ×#Ò#Ñ%Ô%Ô+Ô0ˆDˆDÝ˜œ¥U¤[Ñ1Ô1ð 	à× Ò Ñ"Ô"Ô(Ô-¨d¬kÔ.>×.DÒ.DÀTÑ.JÔ.JÔKÔTð ð ×#Ò#Ñ%Ô%Ô+Ô0°´Ô1A×1GÒ1GÈÑ1MÔ1MÔNÔSˆDˆDàˆHØˆDå"Ô,ˆØˆØð 	*ð 	*ˆBØ�?Ô9Ò9Ð9ØØ”˜;Ò&Ð&¨2¬8¬>Ð&ð  ¥?Ô#@Ò@Ð@õ $Ô-Ð-å(Ô7ð �ð
 ”˜?Ò*Ð*¨r¬x¬~Ð*ð  ¥?Ô#<Ò<Ð<õ $Ô1Ð1å(Ô7ð ð Œv˜ÒÐ¥J¨r¬x½¼Ñ$EÔ$EÐØœ8œ>�øàÐ Ð­°D¸´G½U¼[Ñ)IÔ)IÐØ˜A”w”}ˆHà•Ô5Ò5Ð5Ø×ÒØ)ØÝ%Ô/ð ñ ô ð ð
 ×ÒØ1ØØÝ%Ô/ð	 ñ ô ð ñ ð �Ô2Ò2Ð2¸4¿=º=ÈÑ;OÔ;OÐ2Ý œf Z°°TÑ:Ô:Ð?Ð?Ð?ˆLØ×ÒØ1ØØN˜DÐNÐN°|ÐNÐNÐNÝ%Ô/ð	 ñ ô ð ð ð �Ô6Ò6Ð6¸t¿}º}ÈYÑ?WÔ?WÐ6Ý œf V¨R°Ñ6Ô6Ð?Ð?Ð?ˆLØ×ÒØ1ØØR˜DÐRÐR¸<ÐRÐRÐRÝ%Ô/ð	 ñ ô ð ð ð �Ô2Ò2Ð2Ø�MŠM˜%Ñ Ô ð 3Ø$(§M¢M°)Ñ$<Ô$<ð 3õ œ6 /°2°tÑ<Ô<ˆLØ×ÒØ1ØØN˜DÐNÐN°|ÐNÐNÐNÝ%Ô/ð	 ñ ô ð ð Ð H°Ò$4Ð$4Ø×ÒØ'ØØ Ð%Ý%Ô/ð	 ñ ô ð ð ð ð  ÐÐ$4Ð$4r#   )rŒ   r   r'   r�   )r'   r�   )r'   r±   )r8   r½   r'   r�   )r{   r½   r'   r�   )r8   rã   r'   r�   )r8   rK   r'   r�   )r8   r9   r'   r�   )rá   r  r'   r�   )r`   rL   r'   rL   )rj   )rÞ   r  r8   r  r`   rL   rE   rL   ra   rb   rÌ   rL   r'   r�   )rE   rL   r'   r:   )r`   rL   rE   rL   r8   r  ra   rb   r÷   r:   r'   r�   )r8   r6  r'   r:   )rE   rL   r8   r9   r'   r�   ) r   r   r   ÚmsgsrŠ   Ú__annotations__r   r‹   r‘   r°   r©   r   Úonly_required_for_messagesrÁ   râ   rê   rò   Úvisit_asyncfunctiondefr  rñ   r  rÚ   r*  r.  r   rì   rÀ   Ústaticmethodr  r  r3  Ú__classcell__)r™   s   @r$   ri   ri   ›   sÌ  ø€ € € € € € ð
ð #ØØ[àØ1ððð		
ð	
ð
ð
ðC'ð '€DðV à<ØØ$ð)ð	ð ð		
ð àØ$Ø$ð0ð	ð ð		
ð àHØØ$ð(ð	ð ð		
ð àØ$Ø$ð/ð	ð ð		
ð àØØ*ð-ð	ð 	ð	
ð "à ØØ%ØYð	ð ð	
ð à4ØØ.ðUð	ð ð	
ðK€Hð Kð Kð Kñ KðX  Ð"8Ð"8Ñ":Ô":Ñ:€GÐ:Ð:Ð:Ñ:ðBð Bð Bð Bð Bð Bð
ð 
ð 
ð 
ð ð ð ð ð8 &€UÔ%Ð&7¸ÑHÔHðð ð ñ IÔHððAð Að Að Að6 &€UÔ%Ð&7¸ÑHÔHð:ð :ð :ñ IÔHð:ð &€UÔ%Ð&7¸ÑHÔHð.ð .ð .ñ IÔHð.ð0 /Ðà%€UÔ%ØØØ)Ø!Øñô ðbEð bEð bEñô ðbEðH8ð 8ð 8ð 8ð
:ð :ð :ð :ð &ð:ð :ð :ð :ð :ð6
ð 
ð 
ð 
ð

ð 
ð 
ð 
ð -7¬OØ&+ð,,ð ,,ð ,,ð ,,ð ,,ð\ ð	ð 	ð 	ñ „\ð	ð ðð ð ñ „\ðð&Sð Sð Sð Sð Sð Sð Sð Sr#   ri   )r%   r&   r'   r(   )r8   r9   r'   r:   )r8   rK   r%   r&   r'   rL   )r^   r_   r`   rL   ra   rb   r'   r:   )6Ú__doc__Ú
__future__r   ÚargparserÏ   rØ   rŸ   rÒ   Úcollections.abcr   Úenumr   r   r   Útypingr   r	   r8  r
   Úpylintr   r   Úpylint.checkersr   Ú"pylint.checkers.base.basic_checkerr   Ú.pylint.checkers.base.name_checker.naming_styler   r   r   r   Úpylint.checkers.utilsr   r   Úpylint.typingr   Úpylint.lint.pylinterr   ÚNodeNGrL   Ú
ConfidenceÚ_BadNamesTupler    r¸   r2   Ú	frozensetr;  r   r7   rJ   r[   re   rg   ri   r"   r#   r$   ú<module>r^     sµ  ðð
 %Ð $à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø Ð Ð Ð Ð Ð à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø !Ð !Ð !Ð !Ð !Ð !Ø <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð ð ð JÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ !Ð !Ð !Ð !Ð !Ð !àð .Ø-Ð-Ð-Ð-Ð-Ð-à�u”| S¨#¨zÔ/DÐDÔE€ð ˆrŒzØUñô ð �”ØDñô ð	ð Ð ð 'Ð Ø�ðñô €ðð ð ð ð �dñ ô ð ð,ð ,ð ,ð ,ð ð ð ð ð,"ð "ð "ð "ðL # HÐ-Ð ðð ð ð ðhð hð hð hð h�-ñ hô hð hð hð hr#   