§
    ÷yIfd ã                  óô  — U d Z ddlm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mZ ddlmZmZmZmZ dd	lZdd
lmZmZmZ ddlmZ ddlmZ ddlmZmZ ddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6 erddl7m8Z8 eej9        ej:        f         Z;h d£Z<ddhZ=ddhZ>ej?        d„ ej@        d„ ejA        d„ ejB        d„ ejC        d„ ejD        d„ iZE G d„ de¦  «        ZF G d„ d e¦  «        ZGdªd$„ZHd«d'„ZId¬d*„ZJd­d-„ZKd®d0„ZL G d1„ d2¦  «        ZM eM¦   «         ZNd¯d5„ZOd°d9„ZPd±d:„ZQd²d;„ZRd³d>„ZSd´dA„ZTdµdG„ZUd¶dI„ZVd·dN„ZWi dOdP“dQdR“dSdT“dUdV“dWdX“dYdZ“d[d\“d]d^“d_d`“dadb“dcdd“dedf“dgdh“didj“dkdl“dmdn“dodp“i dqdrdsdtdudvgif“dwdx“dydz“d{d|“d}d~“dd€“d�d‚“dƒd„“d…d†“d‡dˆ“d‰dŠ“d‹dŒ“d�dŽ“d�d�“d‘d’“d“d”“d•d–“¥d—d˜d™dšd›dœœ¥ZXd�eYdž<   d¸d „ZZ G d¡„ d¢¦  «        Z[ G d£„ d¤e¦  «        Z\	 d¹dºd©„Z]d	S )»z Classes checker for Python code.é    )Úannotations)Údefaultdict)ÚCallableÚSequence)Úcached_property)ÚchainÚzip_longest)ÚPattern)ÚTYPE_CHECKINGÚAnyÚ
NamedTupleÚUnionN)ÚbasesÚnodesÚutil)ÚLocalsDictNodeNG)ÚSuccessfulInferenceResult)ÚBaseCheckerÚutils)Ú	PYMETHODSÚclass_is_abstractÚdecorated_withÚdecorated_with_propertyÚget_outer_classÚhas_known_basesÚis_attr_privateÚis_attr_protectedÚis_builtin_objectÚis_comprehensionÚis_iterableÚis_property_setterÚis_property_setter_or_deleterÚnode_frame_classÚonly_required_for_messagesÚ
safe_inferÚunimplemented_abstract_methodsÚuninferable_final_decorators)ÚHIGHÚ	INFERENCE)ÚMessageDefinitionTuple)ÚPyLinter>   ÚboolÚrangeÚsliceÚ
memoryviewzbultins.propertyzfunctools.cached_propertyúbuiltins.propertyzbuiltins.classmethodc                ó"   — | j         |j         k    S ©N©Úvalue©ÚaÚbs     úY/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/classes/class_checker.pyú<lambda>r9   7   s   € ˜aœg¨¬Ò0€ ó    c                ó"   — | j         |j         k    S r2   ©Úqnamer5   s     r8   r9   r9   8   s   €  ¤¨A¬GÒ!3€ r:   c                ó"   — | j         |j         k    S r2   ©Úeltsr5   s     r8   r9   r9   9   s   € ˜aœf¨¬Ò.€ r:   c                ó"   — | j         |j         k    S r2   r?   r5   s     r8   r9   r9   :   s   € ˜QœV q¤vÒ-€ r:   c                ó"   — | j         |j         k    S r2   )Úitemsr5   s     r8   r9   r9   ;   s   € ˜QœW¨¬Ò/€ r:   c                óŠ   — t          |                      ¦   «         ¦  «        t          |                     ¦   «         ¦  «        k    S r2   )ÚsetÚinferr5   s     r8   r9   r9   <   s'   € �S §¢¡¤™^œ^­s°1·7²7±9´9©~¬~Ò=€ r:   c                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   dS )	Ú_CallSignaturezlist[str | None]Úargszdict[str | None, str | None]Úkwsú	list[str]Ústarred_argsÚstarred_kwsN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r:   r8   rH   rH   C   sB   € € € € € € ØÐÐÑØ%Ð%Ð%Ñ%ØÐÐÑØÐÐÑÐÐr:   rH   c                  ó8   — e Zd ZU ded<   ded<   ded<   ded<   dS )Ú_ParameterSignaturerK   rI   Ú
kwonlyargsÚstrÚvarargsÚkwargsNrN   rS   r:   r8   rU   rU   J   s7   € € € € € € Ø€O€O�OØÐÐÑØ€L€L�LØ€K€K�K€K€Kr:   rU   Úcallú
nodes.CallÚreturnc                ó†  — i }g }g }g }| j         pg D ]q}|j        |j        }}|€5t          |t          j        ¦  «        r|                     |j        ¦  «         ŒGt          |t          j        ¦  «        r|j        ||<   Œld ||<   Œr| j        D ]¥}t          |t          j	        ¦  «        r?t          |j        t          j        ¦  «        r |                     |j        j        ¦  «         Œ[t          |t          j        ¦  «        r|                     |j        ¦  «         Œ�|                     d ¦  «         Œ¦t          ||||¦  «        S r2   )ÚkeywordsÚargr4   Ú
isinstancer   ÚNameÚappendÚnamerI   ÚStarredrH   )rZ   rJ   rI   rM   rL   Úkeywordr_   r4   s           r8   Ú_signature_from_callrf   Q   s@  € Ø
€CØ€DØ€KØ€LØ”=Ð& Bð 	ð 	ˆØ”[ '¤-ˆUˆØˆ;�: e­U¬ZÑ8Ô8ˆ;ð ×Ò˜uœzÑ*Ô*Ð*Ð*Ý˜�uœzÑ*Ô*ð 	Ø”zˆC�‰HˆHàˆC�‰HˆHàŒyð ð ˆÝ�c�5œ=Ñ)Ô)ð 	­j¸¼ÅEÄJÑ.OÔ.Oð 	ð ×Ò ¤	¤Ñ/Ô/Ð/Ð/Ý˜�UœZÑ(Ô(ð 	Ø�KŠK˜œÑ!Ô!Ð!Ð!à�KŠK˜ÑÔÐÐå˜$  \°;Ñ?Ô?Ð?r:   Ú	argumentsúnodes.Argumentsc                ó¬   — | j         }| j        }d„ t          | j        | j        ¦  «        D ¦   «         }d„ | j        D ¦   «         }t          ||||¦  «        S )Nc                ó2   — g | ]}|j         d k    ¯|j         ‘ŒS ©Úself©rc   ©Ú.0r_   s     r8   ú
<listcomp>z-_signature_from_arguments.<locals>.<listcomp>q   s1   € ð ð ð àØŒ8�vÒÐð 	ŒàÐÐr:   c                ó   — g | ]	}|j         ‘Œ
S rS   rm   rn   s     r8   rp   z-_signature_from_arguments.<locals>.<listcomp>v   s   € Ð;Ð;Ð;˜s�#”(Ð;Ð;Ð;r:   )ÚkwargÚvarargr   ÚposonlyargsrI   rV   rU   )rg   rr   rs   rI   rV   s        r8   Ú_signature_from_argumentsru   n   sj   € ØŒO€EØÔ€Fðð å˜Ô.°	´Ñ?Ô?ðñ ô €Dð
 <Ð; iÔ&:Ð;Ñ;Ô;€JÝ˜t Z°¸Ñ?Ô?Ð?r:   Ú
definitionr,   c                ó4  ‡ ‡— ‰ j         r‰ j         ‰j        vrdS n	‰j        rdS ‰ j        r‰ j        ‰j        vrdS n	‰j        rdS t	          ˆfd„‰ j        D ¦   «         ¦  «        rdS ‰ j        ‰j        k    rdS t          ˆˆ fd„‰j        D ¦   «         ¦  «        S )z8Check if a definition signature is equivalent to a call.Fc              3  ó*   •K  — | ]}|‰j         vV — Œd S r2   )rJ   )ro   ÚkwrZ   s     €r8   ú	<genexpr>z1_definition_equivalent_to_call.<locals>.<genexpr>ˆ   s*   øè è € Ð
>Ð
> "ˆ2�T”XÐÐ
>Ð
>Ð
>Ð
>Ð
>Ð
>r:   c              3  ó<   •K  — | ]}|‰j         v p|‰j        v V — Œd S r2   )rI   rV   )ro   ry   rZ   rv   s     €€r8   rz   z1_definition_equivalent_to_call.<locals>.<genexpr>Ž   s6   øè è € ÐQÐQÀ"ˆr�T”YˆÐ= "¨
Ô(=Ð"=ÐQÐQÐQÐQÐQÐQr:   )	rY   rM   rX   rL   ÚanyrV   rI   ÚallrJ   )rv   rZ   s   ``r8   Ú_definition_equivalent_to_callr~   z   sÝ   øø€ ð Ôð ØÔ DÔ$4Ð4Ð4Ø�5ð 5à	Ô	ð ØˆuØÔð ØÔ TÔ%6Ð6Ð6Ø�5ð 7à	Ô	ð ØˆuÝ
Ð
>Ð
>Ð
>Ð
>¨
Ô(=Ð
>Ñ
>Ô
>Ñ>Ô>ð ØˆuØ„˜$œ)Ò#Ð#Øˆuõ ÐQÐQÐQÐQÐQÈÌÐQÑQÔQÑQÔQÐQr:   Úfunctionúnodes.FunctionDefc                ó²  — |                       ¦   «         r| j        rdS | j        }t          |¦  «        dk    rdS |d         }t	          |t
          j        t
          j        f¦  «        sdS |j        }t	          |t
          j	        ¦  «        rt	          |j
        t
          j        ¦  «        sdS t          |j
        j        ¦  «        }t	          |t          j        j        ¦  «        sdS |j
        j        | j        k    rdS | j                             ¦   «         }|j        |k    s4t	          |j        t          j        ¦  «        r|j        j        |j        k    rdS dS )zzCheck whether a function definition is a method consisting only of a
    call to the same function on the superclass.
    Fé   r   T)Ú	is_methodÚ
decoratorsÚbodyÚlenr`   r   ÚExprÚReturnr4   ÚCallÚfuncÚ	Attributer%   ÚexprÚastroidÚobjectsÚSuperÚattrnamerc   ÚparentÚscopeÚmro_pointerÚtypeÚInstance)r   r…   Ú	statementrZ   Ú
super_callÚcurrent_scopes         r8   Ú_is_trivial_super_delegationr™   ‘   sK  € ð
 ×ÒÑ Ô ðð Ôð	ð ˆuàŒ=€DÝ
ˆ4�y„y�A‚~€~ð ˆuà�Q”€IÝ�i¥%¤*­e¬lÐ!;Ñ<Ô<ð àˆuàŒ?€Då�t�UœZÑ(Ô(ðõ ˜$œ)¥U¤_Ñ5Ô5ðð
 ˆuõ ˜DœIœNÑ+Ô+€JÝ�j¥'¤/Ô"7Ñ8Ô8ð Øˆuð „yÔ˜Xœ]Ò*Ð*Øˆuð ”O×)Ò)Ñ+Ô+€MàÔ -Ò/Ð/Ý˜*œ/­7Ô+;Ñ<Ô<ð 	0àŒ?Ô =Ô#5Ò5Ð5àˆuàˆ4r:   Úmethodúlist[nodes.AssignName]c                ól   — | j         j         }|                      ¦   «         r| j        dv r
|dd …         }|S )N>   rš   Úclassmethodr‚   )rI   Úis_boundr”   )rš   Ú
positionals     r8   Ú_positional_parametersr    É   s>   € Ø”Ô!€JØ‡‚ÑÔð $˜Vœ[Ð,EÐEÐEØ   ”^ˆ
ØÐr:   c                  ó   — e Zd ZdZdS )Ú_DefaultMissingz=Sentinel value for missing arg default, use _DEFAULT_MISSING.N)rO   rP   rQ   Ú__doc__rS   r:   r8   r¢   r¢   Ð   s   € € € € € ØGÐGÐGÐGr:   r¢   ÚoriginalÚ
overriddenc                ó  — | j         �|j         €dS t          | j         | j        ¦  «        D ]Þ}	 |                      |j        ¦  «        }n!# t
          j        j        $ r
 t          }Y nw xY w	 |                     |j        ¦  «        }|t          u r dS n'# t
          j        j        $ r |t          u rY Œ†Y  dS w xY wt          |¦  «        }t          ||¦  «        s dS t                               |¦  «        }|€ dS  |||¦  «        s dS ŒßdS )a,  Check if original and overridden methods arguments have different default values.

    Return True if one of the overridden arguments has a default
    value different from the default value of the original argument
    If one of the method doesn't have argument (.args is None)
    return False
    NFT)rI   r   rV   Údefault_valuerc   r�   Ú
exceptionsÚ	NoDefaultÚ_DEFAULT_MISSINGr”   r`   ÚASTROID_TYPE_COMPARATORSÚget)r¤   r¥   ÚparamÚoriginal_defaultÚoverridden_defaultÚoriginal_typeÚ
is_same_fns          r8   Ú'_has_different_parameters_default_valuer²   ×   sk  € ð „}Ð 
¤Ð 7Øˆuå�x”} hÔ&9Ñ:Ô:ð ð ˆð	0Ø'×5Ò5°e´jÑAÔAÐÐøÝÔ!Ô+ð 	0ð 	0ð 	0Ý/ÐÐÐð	0øøøð
	Ø!+×!9Ò!9¸%¼*Ñ!EÔ!EÐØÕ#3Ð3Ð3à�t�tð 4øõ Ô!Ô+ð 	ð 	ð 	ØÕ#3Ð3Ð3à�à�4�4�4ð	øøøõ Ð-Ñ.Ô.ˆÝÐ,¨mÑ<Ô<ð 	à�4�4Ý8P×8TÒ8TØñ9
ô 9
ˆ
ð Ðà�4�4ØˆzÐ*Ð,>Ñ?Ô?ð 	à�4�4ð	ð ˆ5s#   ®A	Á	A'Á&A'Á+#BÂB6Â5B6Údummy_parameter_regexúPattern[str]rK   c                ó„  ‡— g }t          | |¦  «        }|D ]©\  }}|sdgc S |s;	 |j                             |j        ¦  «         Œ/# t          j        $ r dgcY c S w xY wd„ ||fD ¦   «         }t          ˆfd„|D ¦   «         ¦  «        rŒs|j        |j        k    r&|                     d|j        › d|j        › d�¦  «         Œª|S )NúNumber of parameters c                ó   — g | ]	}|j         ‘Œ
S rS   rm   )ro   r­   s     r8   rp   z-_has_different_parameters.<locals>.<listcomp>  s   € ÐLÐLÐL �”ÐLÐLÐLr:   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S r2   )Úmatch)ro   rc   r³   s     €r8   rz   z,_has_different_parameters.<locals>.<genexpr>  s2   øè è € ÐCÐC°TÐ$×*Ò*¨4Ñ0Ô0ÐCÐCÐCÐCÐCÐCr:   zParameter 'z' has been renamed to 'z' in)r	   r‘   r§   rc   r�   r©   r|   rb   )r¤   r¥   r³   ÚresultÚzippedÚoriginal_paramÚoverridden_paramÚnamess     `     r8   Ú_has_different_parametersr¿     s@  ø€ ð
 €FÝ˜ :Ñ.Ô.€FØ,2ð ð Ñ(ˆÐ(Øð 	-Ø+Ð,Ð,Ð,Ð,àð 	1ð1Ø Ô'×5Ò5Ð6FÔ6KÑLÔLÐLØøÝÔ$ð 1ð 1ð 1Ø/Ð0Ð0Ð0Ð0Ð0Ð0ð1øøøð MÐL¨.Ð:JÐ)KÐLÑLÔLˆÝÐCÐCÐCÐC¸UÐCÑCÔCÑCÔCð 	ØØÔÐ"2Ô"7Ò7Ð7Ø�MŠMð3˜nÔ1ð 3ð 3Ø'Ô,ð3ð 3ð 3ñô ð øð
 €Ms   ¥AÁAÁAc                óþ   ‡— d„ | D ¦   «         }d„ |D ¦   «         Št          ˆfd„|D ¦   «         ¦  «        rdgS ‰D ]B}||v rŒ	 |d         j                             |¦  «         Œ)# t          j        $ r dgcY c S w xY wg S )zDDetermine if the two methods have different keyword only parameters.c                ó   — g | ]	}|j         ‘Œ
S rS   rm   ©ro   Úis     r8   rp   z:_has_different_keyword_only_parameters.<locals>.<listcomp>)  s   € Ð/Ð/Ð/ �a”fÐ/Ð/Ð/r:   c                ó   — g | ]	}|j         ‘Œ
S rS   rm   rÂ   s     r8   rp   z:_has_different_keyword_only_parameters.<locals>.<listcomp>*  s   € Ð3Ð3Ð3 1˜œÐ3Ð3Ð3r:   c              3  ó    •K  — | ]}|‰vV — Œ	d S r2   rS   )ro   rc   Úoverridden_namess     €r8   rz   z9_has_different_keyword_only_parameters.<locals>.<genexpr>,  s)   øè è € Ð
CÐ
C¨Dˆ4Ð'Ð'Ð
CÐ
CÐ
CÐ
CÐ
CÐ
Cr:   r¶   r   )r|   r‘   r§   r�   r©   )r¤   r¥   Úoriginal_namesrc   rÆ   s       @r8   Ú&_has_different_keyword_only_parametersrÈ   $  sÔ   ø€ ð
 0Ð/ hÐ/Ñ/Ô/€NØ3Ð3¨
Ð3Ñ3Ô3Ðå
Ð
CÐ
CÐ
CÐ
C°NÐ
CÑ
CÔ
CÑCÔCð )Ø'Ð(Ð(à ð -ð -ˆØ�>Ð!Ð!Øð	-Ø�qŒMÔ ×.Ò.¨tÑ4Ô4Ð4Ð4øÝÔ ð 	-ð 	-ð 	-Ø+Ð,Ð,Ð,Ð,Ð,Ð,ð	-øøøð €Is   Á A#Á#A:Á9A:c                óô  ‡— g }t          | ¦  «        }t          |¦  «        }| j        j        }|j        j        rd„ |D ¦   «         Šˆfd„|D ¦   «         }|j        j        r.d„ |j        j        D ¦   «         Šˆfd„| j        j        D ¦   «         }t          |||¦  «        }t          ||j        j        ¦  «        }|rQ|rOd|d         v r:d|d         v r0|                     d¦  «         ||dd	…         z  }||dd	…         z  }n||z  }||z  }n|r||z  }|r||z  }| j        j        o|j        j         }	| j        j        o|j        j         }
|	s|
r|d
gz  }| j        t          v r| 
                    ¦   «          |S )aE  Determine if the two methods have different parameters.

    They are considered to have different parameters if:

       * they have different positional parameters, including different names

       * one of the methods is having variadics, while the other is not

       * they have different keyword only parameters.
    c                ó   — g | ]	}|j         ‘Œ
S rS   rm   ©ro   Úvs     r8   rp   z)_different_parameters.<locals>.<listcomp>V  s   € ÐBÐBÐB q˜AœFÐBÐBÐBr:   c                ó&   •— g | ]}|j         ‰v ¯|‘ŒS rS   rm   ©ro   rÌ   rÆ   s     €r8   rp   z)_different_parameters.<locals>.<listcomp>W  s-   ø€ ð 
ð 
ð 
Ø¨a¬fÐ8HÐ.HÐ.HˆAÐ.HÐ.HÐ.Hr:   c                ó   — g | ]	}|j         ‘Œ
S rS   rm   rË   s     r8   rp   z)_different_parameters.<locals>.<listcomp>\  s   € ÐGÐGÐG q˜AœFÐGÐGÐGr:   c                ó&   •— g | ]}|j         ‰v ¯|‘ŒS rS   rm   rÎ   s     €r8   rp   z)_different_parameters.<locals>.<listcomp>]  s-   ø€ ð 
ð 
ð 
Ø°1´6Ð=MÐ3MÐ3MˆAÐ3MÐ3MÐ3Mr:   zNumber r   r¶   r‚   NzVariadics removed in)r    rI   rV   rs   rr   r¿   rÈ   rb   rc   r   Úclear)r¤   r¥   r³   Úoutput_messagesÚoriginal_parametersÚoverridden_parametersÚoriginal_kwonlyargsÚdifferent_positionalÚdifferent_kwonlyÚ
kwarg_lostÚvararg_lostrÆ   s              @r8   Ú_different_parametersrÚ   ;  s2  ø€ ð €OÝ0°Ñ:Ô:ÐÝ2°:Ñ>Ô>Ðð #œ-Ô2Ðð „Ôð 
ØBÐBÐ,AÐBÑBÔBÐð
ð 
ð 
ð 
Ø*ð
ñ 
ô 
Ðð „Ôð 
ØGÐG¨J¬OÔ,FÐGÑGÔGÐð
ð 
ð 
ð 
Ø”}Ô/ð
ñ 
ô 
Ðõ 5ØÐ2Ð4Iñô Ðõ >Ø˜Zœ_Ô7ñô Ðð ð 0Ð0ð 0ØÐ,¨QÔ/Ð/Ð/°IÐAQÐRSÔATÐ4TÐ4TØ×"Ò"Ð#:Ñ;Ô;Ð;ØÐ3°A°B°BÔ7Ñ7ˆOØÐ/°°°Ô3Ñ3ˆOˆOàÐ3Ñ3ˆOØÐ/Ñ/ˆOˆOàð 	4ØÐ3Ñ3ˆOØð 	0ØÐ/Ñ/ˆOð ”Ô$ÐB¨Z¬_Ô-BÐ)B€JØ”-Ô&ÐE¨z¬Ô/EÐ+E€Kàð 4�[ð 4ØÐ2Ð3Ñ3ˆà„}�	Ð!Ð!ð 	×ÒÑÔÐàÐr:   Úclsúnodes.ClassDefc                ó<   — | j         t          v ot          | ¦  «        S r2   )rc   ÚINVALID_BASE_CLASSESr   ©rÛ   s    r8   Ú_is_invalid_base_classrà   ˆ  s   € ØŒ8Õ+Ð+ÐFÕ0AÀ#Ñ0FÔ0FÐFr:   ÚattrrW   c                óT  — |                       |¦  «        }|D ]�}	 |                     ¦   «         D ]`}t          |t          j        ¦  «        rD	 |                      d¦  «         |                      d¦  «           dS # t          j        $ r Y Œ\w xY wŒaŒy# t          j        $ r Y  dS w xY wdS )NÚ__get__Ú__set__TF)ÚgetattrrF   r`   r�   r•   ÚNotFoundErrorÚInferenceError)rÛ   rá   Ú
attributesÚ	attributeÚinferreds        r8   Ú_has_data_descriptorrë   Œ  sì   € Ø—’˜TÑ"Ô"€JØð ð ˆ	ð	Ø%ŸOšOÑ-Ô-ð $ð $�Ý˜h­Ô(8Ñ9Ô9ð $ð$Ø ×(Ò(¨Ñ3Ô3Ð3Ø ×(Ò(¨Ñ3Ô3Ð3ð  $˜t˜t˜tøõ #Ô0ð !ð !ð !Ø ˜ð!øøøð	$ð$øõ Ô%ð 	ð 	ð 	à�4�4�4ð	øøøð ˆ5s5   ›0BÁ*A:Á6BÁ:BÂ	BÂBÂBÂB%Â$B%rŠ   r   ÚklassÚmethodsúSequence[str]c                ó&  — t          | t          j        ¦  «        sdS |D ]ñ}	 |                     |¦  «        }n# t          j        $ r Y Œ*w xY w|D ]À}|                     t          j        ¦  «        D ]ž}	 t          |j	         
                    ¦   «         ¦  «        }n# t          j        t          f$ r Y ŒBw xY wt          |t          j        ¦  «        sŒa|j        }t          |t          j        ¦  «        r|j        }|j        | j        k    r   dS ŒŸŒÁŒòdS )z†Check if the func was called in any of the given methods,
    belonging to the *klass*.

    Returns True if so, False otherwise.
    FT)r`   r   ÚFunctionDefrå   r�   ræ   Únodes_of_classr‰   ÚnextrŠ   rF   rç   ÚStopIterationÚBoundMethodÚ_proxiedÚUnboundMethodrc   )	rŠ   rì   rí   rš   rê   Úinfer_methodrZ   ÚboundÚfunc_objs	            r8   Ú_called_in_methodsrú   Ÿ  sJ  € õ �d�EÔ-Ñ.Ô.ð ØˆuØð  ð  ˆð	Ø—}’} VÑ,Ô,ˆHˆHøÝÔ$ð 	ð 	ð 	ØˆHð	øøøà$ð 	 ð 	 ˆLØ$×3Ò3µE´JÑ?Ô?ð  ð  �ðÝ  ¤§¢Ñ!2Ô!2Ñ3Ô3�E�EøÝÔ.µÐ>ð ð ð Ø�Hðøøøå! %­Ô)<Ñ=Ô=ð ØØ œ>�Ý˜h­Ô(=Ñ>Ô>ð 1Ø'Ô0�HØ”= D¤IÒ-Ð-Ø˜4˜4˜4˜4ð .ð ð	 ð ˆ5s!   ¢8¸A
Á	A
Á3&BÂB3	Â2B3	rc   c                óò  — 	 |                      | ¦  «        }n# t          j        $ r Y dS w xY wd}|D ]Ä}t          |t          j        ¦  «        rŒ	 t          |                     ¦   «         ¦  «        }n# t          j        $ r Y ŒQw xY wt          |t          j
        ¦  «        rt          |¦  «        r dS |                     ¦   «         |k    rŒšt          |¦  «        }||                     ¦   «         k    rŒÂ dS dS )a/  Check if the given attribute *name* is a property in the given *klass*.

    It will look for `property` calls or for functions
    with the given name, decorated by `property` or `property`
    subclasses.
    Returns ``True`` if the name is a property in the given klass,
    ``False`` otherwise.
    Fr0   T)rå   r�   ræ   r`   r   ÚUninferableBaserò   rF   rç   r   rð   r   Úpytyper#   Údeclared_metaclass)rc   rì   rè   Úproperty_namerá   rê   rÛ   s          r8   Ú_is_attribute_propertyr   À  s(  € ðØ—]’] 4Ñ(Ô(ˆ
ˆ
øÝÔ ð ð ð Øˆuˆuðøøøà'€MØð ð ˆÝ�d�DÔ0Ñ1Ô1ð 	Øð	Ý˜DŸJšJ™LœLÑ)Ô)ˆHˆHøÝÔ%ð 	ð 	ð 	ØˆHð	øøøå�h¥Ô 1Ñ2Ô2ð 	Õ7NØñ8
ô 8
ð 	ð �4�4Ø�?Š?ÑÔ Ò-Ð-Øå˜xÑ(Ô(ˆØ�%×*Ò*Ñ,Ô,Ò,Ð,ØØˆtˆtØˆ5s   ‚ ˜+ª+Á!A2Á2BÂBÚslotsúlist[nodes.Const | None]Úassigned_valueú
nodes.Namec                óö   — t          |                     ¦   «         ¦  «        }t          |t          j        ¦  «        r=|                     ¦   «         }t          d„ t          | |¦  «        D ¦   «         ¦  «        rdS dS )Nc              3  óD   K  — | ]\  }}|o|o|j         |j         k    V — Œd S r2   r3   )ro   Ú
first_slotÚsecond_slots      r8   rz   z)_has_same_layout_slots.<locals>.<genexpr>ê  sO   è è € ð 
ð 
á)�˜[ð ÐP˜;ÐP¨:Ô+;¸{Ô?PÒ+Pð
ð 
ð 
ð 
ð 
ð 
r:   TF)rò   rF   r`   r   ÚClassDefr  r}   r	   )r  r  rê   Úother_slotss       r8   Ú_has_same_layout_slotsr  ä  s„   € õ �N×(Ò(Ñ*Ô*Ñ+Ô+€HÝ�(�EœNÑ+Ô+ð Ø—n’nÑ&Ô&ˆÝð 
ð 
å-8¸ÀÑ-LÔ-Lð
ñ 
ô 
ñ 
ô 
ð 	ð �4Øˆ5r:   ÚF0202)z+Unable to check methods signature (%s / %s)úmethod-check-failedzšUsed when Pylint has been unable to check methods signature compatibility for an unexpected reason. Please report this kind if you don't make sense of it.ÚE0202)z4An attribute defined in %s line %s hides this methodúmethod-hiddenz~Used when a class defines a method which is hidden by an instance attribute from an ancestor class or set by some client code.ÚE0203)z1Access to member %r before its definition line %súaccess-member-before-definitionzGUsed when an instance member is accessed before it's actually assigned.ÚW0201)z%Attribute %r defined outside __init__úattribute-defined-outside-initzGUsed when an instance attribute is defined outside the __init__ method.ÚW0212)z1Access to a protected member %s of a client classúprotected-accessz¦Used when a protected member (i.e. class member with a name beginning with an underscore) is access outside the class or a descendant of the class where it's defined.ÚW0213)z=Flag member %(overlap)s shares bit positions with %(sources)súimplicit-flag-aliaszdUsed when multiple integer values declared within an enum.IntFlag class share a common bit position.ÚE0211)zMethod %r has no argumentúno-method-argumentzbUsed when a method which should have the bound instance as first argument has no argument defined.ÚE0213)z.Method %r should have "self" as first argumentúno-self-argumentz¬Used when a method has an attribute different the "self" as first argument. This is considered as an error since this is a so common convention that you shouldn't break it!ÚC0202)z0Class method %s should have %s as first argumentúbad-classmethod-argumentzÚUsed when a class method has a first argument named differently than the value specified in valid-classmethod-first-arg option (default to "cls"), recommended to easily differentiate them from regular instance methods.ÚC0203)z4Metaclass method %s should have %s as first argumentúbad-mcs-method-argumentzÞUsed when a metaclass method has a first argument named differently than the value specified in valid-classmethod-first-arg option (default to "cls"), recommended to easily differentiate them from regular instance methods.ÚC0204)z:Metaclass class method %s should have %s as first argumentúbad-mcs-classmethod-argumentzîUsed when a metaclass class method has a first argument named differently than the value specified in valid-metaclass-classmethod-first-arg option (default to "mcs"), recommended to easily differentiate them from regular instance methods.ÚW0211)z'Static method with %r as first argumentúbad-staticmethod-argumentz¢Used when a static method has "self" or a value specified in valid-classmethod-first-arg option or valid-metaclass-classmethod-first-arg option as first argument.ÚW0221)ú%s %s %r methodúarguments-differz¥Used when a method has a different number of arguments than in the implemented interface or in an overridden method. Extra arguments with default values are ignored.ÚW0222)z#Signature differs from %s %r methodúsignature-differszgUsed when a method signature is different than in the implemented interface or in an overridden method.ÚW0223)zIMethod %r is abstract in class %r but is not overridden in child class %rúabstract-methodzbUsed when an abstract method (i.e. raise NotImplementedError) is not overridden in concrete class.ÚW0231)z0__init__ method from base class %r is not calledúsuper-init-not-calledzaUsed when an ancestor class method has an __init__ method which is not called by a derived class.ÚW0233)z9__init__ method from a non direct base class %r is calledúnon-parent-init-calledznUsed when an __init__ method is called on a class which is not in the direct ancestors for the analysed class.ÚW0246z1Useless parent or super() delegation in method %rúuseless-parent-delegationzžUsed whenever we can detect that an overridden method is useless, relying on parent or super() delegation to do the same thing as another method from the MRO.Ú	old_names)ÚW0235zuseless-super-delegationÚW0236)z7Method %r was expected to be %r, found it instead as %rúinvalid-overridden-methodz�Used when we detect that a method was overridden in a way that does not match its base class which could result in potential bugs at runtime.ÚW0237)r%  úarguments-renamedzoUsed when a method parameter has a different name than in the implemented interface or in an overridden method.ÚW0238)zUnused private member `%s.%s`úunused-private-memberzAEmitted when a private member of a class is defined but not used.ÚW0239)zUMethod %r overrides a method decorated with typing.final which is defined in class %rúoverridden-final-methodzCUsed when a method decorated with typing.final has been overridden.ÚW0240)zAClass %r is a subclass of a class decorated with typing.final: %rúsubclassed-final-classzBUsed when a class decorated with typing.final has been subclassed.ÚW0244)zRedefined slots %r in subclassúredefined-slots-in-subclassz-Used when a slot is re-defined in a subclass.ÚW0245)zSuper call without bracketsúsuper-without-bracketsznUsed when a call to super does not have brackets and thus is not an actual call and does not work as expected.ÚE0236)zCInvalid object %r in __slots__, must contain only non empty stringsúinvalid-slots-objectz=Used when an invalid (non-string) object occurs in __slots__.ÚE0237)z4Assigning to attribute %r not defined in class slotsúassigning-non-slotzCUsed when assigning to an attribute not defined in the class slots.ÚE0238)zInvalid __slots__ objectúinvalid-slotszhUsed when an invalid __slots__ is found in class. Only a string, an iterable or a sequence is permitted.ÚE0239)z$Inheriting %r, which is not a class.úinherit-non-classz?Used when a class inherits from something which is not a class.ÚE0240)z1Inconsistent method resolution order for class %rúinconsistent-mroz>Used when a class has an inconsistent method resolution order.ÚE0241)zDuplicate bases for class %rúduplicate-baseszBDuplicate use of base classes in derived classes raise TypeErrors.ÚE0242)z/Value %r in slots conflicts with class variableúclass-variable-slots-conflictzSUsed when a value in __slots__ conflicts with a class variable, property or method.ÚE0243)zNInvalid assignment to '__class__'. Should be a class definition but got a '%s'úinvalid-class-objectz[Used when an invalid object is assigned to a __class__ property. Only a class is permitted.ÚE0244)z#Extending inherited Enum class "%s"úinvalid-enum-extensionzfUsed when a class tries to extend an inherited Enum class. Doing so will raise a TypeError at runtime.)z9Consider using a decorator instead of calling classmethodúno-classmethod-decoratorzGUsed when a class method is defined without using the decorator syntax.)z:Consider using a decorator instead of calling staticmethodúno-staticmethod-decoratorzHUsed when a static method is defined without using the decorator syntax.)z/Class __slots__ should be a non-string iterableúsingle-string-used-for-slotszHUsed when a class __slots__ is a simple string, rather than an iterable.)zJClass %r inherits from object, can be safely removed from bases in python3úuseless-object-inheritancezoUsed when a class inherit from object, which under python3 is implicit, hence can be safely removed from bases.)z-Cannot have defined parameters for propertiesúproperty-with-parametersz�Used when we detect that a property also has parameters, which are useless, given that properties cannot be called with additional arguments.)ÚR0202ÚR0203ÚC0205ÚR0205ÚR0206z!dict[str, MessageDefinitionTuple]ÚMSGSú$defaultdict[str, list[_AccessNodes]]c                 ó*   — t          t          ¦  «        S r2   )r   ÚlistrS   r:   r8   Ú_scope_defaultra  à  s   € å•tÑÔÐr:   c                  ó*   — e Zd ZdZdd„Zdd„Zdd„ZdS )ÚScopeAccessMapz'Store the accessed variables per scope.r\   ÚNonec                ó8   — t          t          ¦  «        | _        d S r2   )r   ra  Ú_scopesrk   s    r8   Ú__init__zScopeAccessMap.__init__è  s   € õ �Ñ'Ô'ð 	Œˆˆr:   ÚnodeÚ_AccessNodesc                ó‚   — t          |¦  «        }|€dS | j        |         |j                                      |¦  «         dS )zSet the given node as accessed.N)r#   rf  r�   rb   ©rl   rh  Úframes      r8   Úset_accessedzScopeAccessMap.set_accessedí  sC   € õ ! Ñ&Ô&ˆØˆ=àˆFØŒ�UÔ˜DœMÔ*×1Ò1°$Ñ7Ô7Ð7Ð7Ð7r:   r’   rÜ   údict[str, list[_AccessNodes]]c                ó8   — | j                              |i ¦  «        S )z/Get the accessed variables for the given scope.)rf  r¬   )rl   r’   s     r8   ÚaccessedzScopeAccessMap.accessedö  s   € àŒ|×Ò  rÑ*Ô*Ð*r:   N©r\   rd  )rh  ri  r\   rd  )r’   rÜ   r\   rn  )rO   rP   rQ   r£   rg  rm  rp  rS   r:   r8   rc  rc  å  sV   € € € € € Ø1Ð1ð(ð (ð (ð (ð
8ð 8ð 8ð 8ð+ð +ð +ð +ð +ð +r:   rc  c                  óÔ  ‡ — e Zd ZdZdZe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fZd‡ˆ fd„Zdˆd„Z	e
d‰d „¦   «         Z ed!d"d#d$d%d&d'd(d)d*d+d,d-¦  «        dŠd0„¦   «         ZdŠd1„Zd‹d3„ZdŠd4„ZdŠd5„Z ed6d7d8¦  «        dŠd9„¦   «         ZdŠd:„ZdŠd;„ZdŠd<„ZdŒd>„Zd�d@„ZeZdŽdB„Zd�dC„Zd�dF„Zd�dJ„ZdŠdK„Zd‘dP„Zd’dS„Zd�dT„Z e Z!d“dU„Z"d“dV„Z# edWdXd8¦  «        d”dZ„¦   «         Z$d”d[„Z%d”d\„Z& ed]d^d_¦  «        d•db„¦   «         Z'd–dc„Z(d—de„Z)e*d˜df„¦   «         Z+d™dh„Z,e*dšdk„¦   «         Z-e*d›dm„¦   «         Z.e*dœdp„¦   «         Z/d�ds„Z0dždu„Z1dŸd|„Z2dŠd}„Z3d d„Z4d¡dƒ„Z5d¢d…„Z6d˜d†„Z7ˆ xZ8S )£ÚClassCheckerzùChecker for class nodes.

    Checks for :
    * methods without self as first argument
    * overridden methods signature
    * access only to existent members via self
    * attributes not defined in the __init__ method
    * unreachable code
    Úclasseszdefining-attr-methods)rg  Ú__new__ÚsetUpÚ
asyncSetUpÚ__post_init__Úcsvz<method names>zGList of method names used to declare (i.e. assign) instance attributes.)Údefaultr”   ÚmetavarÚhelpzvalid-classmethod-first-argrß   z<argument names>z=List of valid names for the first argument in a class method.z%valid-metaclass-classmethod-first-arg)ÚmcszGList of valid names for the first argument in a metaclass class method.zexclude-protected)Ú_asdictÚ_fieldsÚ_replaceÚ_sourceÚ_makezos._exitz<protected access exclusions>zQList of member names, which should be excluded from the protected access warning.z)check-protected-access-in-special-methodsFÚynz<y or n>z<Warn about protected attribute access inside special methodsÚlinterr+   r\   rd  c                ó~   •— t          ¦   «                              |¦  «         t          ¦   «         | _        g | _        d S r2   )Úsuperrg  rc  Ú	_accessedÚ_first_attrs)rl   r„  Ú	__class__s     €r8   rg  zClassChecker.__init__O  s6   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý'Ñ)Ô)ˆŒØ.0ˆÔÐÐr:   c                ój   — | j         j        j        | _        | j         j        j        }|dk    | _        d S )N)é   é   )r„  ÚconfigÚmixin_class_rgxÚ_mixin_class_rgxÚ
py_versionÚ
_py38_plus)rl   r�  s     r8   ÚopenzClassChecker.openT  s/   € Ø $¤Ô 2Ô BˆÔØ”[Ô'Ô2ˆ
Ø$¨Ò.ˆŒˆˆr:   r´   c                ó$   — | j         j        j        S r2   )r„  r�  Údummy_variables_rgxrk   s    r8   Ú
_dummy_rgxzClassChecker._dummy_rgxY  s   € àŒ{Ô!Ô5Ð5r:   r*  rF  rU  rB  rN  rH  rV  rJ  rL  r>  rR  r<  r  rh  rÜ   c                óØ   — |                       |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         dS )zInit visit variable _accessed.N)Ú_check_bases_classesÚ_check_slotsÚ_check_proper_basesÚ_check_typing_finalÚ_check_consistent_mro©rl   rh  s     r8   Úvisit_classdefzClassChecker.visit_classdef]  sn   € ð" 	×!Ò! $Ñ'Ô'Ð'Ø×Ò˜$ÑÔÐØ× Ò  Ñ&Ô&Ð&Ø× Ò  Ñ&Ô&Ð&Ø×"Ò" 4Ñ(Ô(Ð(Ð(Ð(r:   c                óò   — 	 |                      ¦   «          dS # t          j        $ r! |                      d|j        |¬¦  «         Y dS t          j        $ r! |                      d|j        |¬¦  «         Y dS w xY w)z<Detect that a class has a consistent mro or duplicate bases.rJ  ©rI   rh  rL  N)Úmror�   ÚInconsistentMroErrorÚadd_messagerc   ÚDuplicateBasesErrorrœ  s     r8   r›  z"ClassChecker._check_consistent_mrot  s¡   € ð	KØ�HŠH‰JŒJˆJˆJˆJøÝÔ+ð 	Lð 	Lð 	LØ×ÒÐ/°d´iÀdÐÑKÔKÐKÐKÐKÐKÝÔ*ð 	Kð 	Kð 	KØ×ÒÐ.°T´YÀTÐÑJÔJÐJÐJÐJÐJð	Køøøs   ‚ ˜,A6Á+A6Á5A6Úancestorc                ó<  ‡‡‡— |                      d¦  «        }|r•t          |d         t          j        ¦  «        ru|d         j        rh|d         j        D ]Z\  }}t          d„ |                      |j        ¦  «        D ¦   «         ¦  «        rŒ7|                      d|j        ‰t          ¬¦  «          | 	                    d¦  «        �rÔt          t          ¦  «        Š‰                     t          j        ¦  «        D ]l}t          |j        t          j        ¦  «        rKt          |j        j        dd ¦  «        }t          |t"          ¦  «        r‰|                              |¦  «         Œmt          t&          ¦  «        }‰D ]U}	d„ t)          t+          t-          |	¦  «        ¦  «        ¦  «        D ¦   «         }
|
D ]}||                              |	¦  «         ŒŒVt          t          ¦  «        }|                     ¦   «         D ]3}t3          |¦  «        ^}}|D ]}||                              |¦  «         ŒŒ4|D ]kŠ‰‰         D ]^}|                      d	|d
‰j        › d|j        › d‰› d�d                     ˆˆˆfd„|‰         D ¦   «         ¦  «        dœt          ¬¦  «         Œ_Œjd S d S )NÚ__members__r   c              3  óp   K  — | ]1}t          |j        t          j        ¦  «        o|j        j        d u V — Œ2d S r2   )r`   r‘   r   Ú	AnnAssignr4   ©ro   Úitems     r8   rz   z0ClassChecker._check_enum_base.<locals>.<genexpr>‚  sX   è è € ð ð ð õ ˜tœ{­E¬OÑ<Ô<ð 2ØœÔ)¨TÐ1ðð ð ð ð ð r:   rR  ©rI   rh  Ú
confidencezenum.IntFlagr4   c              3  ó,   K  — | ]\  }}|d k    ¯|V — ŒdS )Ú1NrS   )ro   rÃ   Úcs      r8   rz   z0ClassChecker._check_enum_base.<locals>.<genexpr>œ  s+   è è € ÐVÐV¡4 1 aÈQÐRUÊXÈX˜QÈXÈXÈXÈXÐVÐVr:   r  ú<ú.ú: ú>ú, c              3  ót   •K  — | ]2}d ‰j         › d‰|         d         j         › d|› d‰› d|› d‰|z  › d�V — Œ3dS )	r°  r±  r   r²  z> (z & z = ú)Nrm   )ro   ÚsourceÚassignmentsrh  Úoverlaps     €€€r8   rz   z0ClassChecker._check_enum_base.<locals>.<genexpr>¯  s«   øè è € ð 1ð 1ð %+ð!O D¤Ið !Oð !O°¸FÔ0CÀAÔ0FÔ0Kð !Oð !OÈvð !Oð !OØ$+ð!Oð !OØ06ð!Oð !OØ;BÀVÑ;Kð!Oð !Oð !Oð1ð 1ð 1ð 1ð 1ð 1r:   )r¹  Úsources©rh  rI   r¬  )rå   r`   r   ÚDictrC   r}   rc   r¢  r)   Úis_subtype_ofr   r`  rñ   Ú
AssignNamer‘   ÚAssignr4   Úintrb   rE   Ú	enumerateÚreversedÚbinÚaddÚvaluesÚsortedÚjoin)rl   rh  r¤  ÚmembersÚ_Ú	name_nodeÚassign_namer4   Ú	bit_flagsÚflagÚ	flag_bitsÚbitÚoverlapsÚflagsr·  Ú	conflictsÚconflictÚassignment_noder¸  r¹  s    `                @@r8   Ú_check_enum_basezClassChecker._check_enum_base}  s1  øøø€ Ø×"Ò" =Ñ1Ô1ˆØð 	•z '¨!¤*­e¬jÑ9Ô9ð 	¸gÀa¼jÔ>Nð 	Ø '¨¤
Ô 0ð ð ‘��9åð ð ð !)× 0Ò 0°´Ñ @Ô @ðñ ô ñ ô ð ð
 Ø× Ò Ø,Ø!œØÝ(ð	 !ñ ô ð ð à×!Ò! .Ñ1Ô1ñ &	å%¥dÑ+Ô+ˆKØ#×2Ò2µ5Ô3CÑDÔDð ?ð ?�Ý˜kÔ0µ%´,Ñ?Ô?ð ?Ý# KÔ$6Ô$<¸gÀtÑLÔL�EÝ! %­Ñ-Ô-ð ?Ø# EÔ*×1Ò1°+Ñ>Ô>Ð>øõ $¥CÑ(Ô(ˆIØ#ð -ð -�ØVÐV­9µX½cÀ$¹i¼iÑ5HÔ5HÑ+IÔ+IÐVÑVÔV�	Ø$ð -ð -�CØ˜c”N×&Ò& tÑ,Ô,Ð,Ð,ð-õ #¥4Ñ(Ô(ˆHØ"×)Ò)Ñ+Ô+ð 6ð 6�Ý%+¨E¡]¤]Ð"�˜Ø )ð 6ð 6�HØ˜XÔ&×-Ò-¨fÑ5Ô5Ð5Ð5ð6ð $ð ð �Ø'2°7Ô';ð ð �OØ×$Ò$Ø-Ø,à'Y¨4¬9Ð'YÐ'Y°Ô7KÐ'YÐ'YÈwÐ'YÐ'YÐ'YØ'+§y¢yð 1ð 1ð 1ð 1ð 1ð 1ð /7°wÔ.?ð1ñ 1ô 1ñ (ô (ðð õ $-ð %ñ ô ð ð ðð3&	ð &	ð0ð r:   c                ó`  — |j         D �]$}t          |¦  «        }|sŒt          |t          j        ¦  «        r+|                     d¦  «        s|                     d¦  «        rŒZt          |t          j        ¦  «        rt          |¦  «        r*|  	                    d| 
                    ¦   «         |¬¦  «         t          |t          j        ¦  «        r+|                     d¦  «        r|                      ||¦  «         |j        t          j        k    r|  	                    d|j        |¬¦  «         �Œ&dS )zWDetect that a class inherits something which is not
        a class or a type.
        zbuiltins.typez	.ProtocolrH  rŸ  z	enum.EnumrV  N)r   r%   r`   r�   r•   r½  r   r	  rà   r¢  Ú	as_stringrÕ  rc   ÚobjectrO   ©rl   rh  Úbaser¤  s       r8   r™  z ClassChecker._check_proper_bases¸  sM  € ð ”Jð 	ñ 	ˆDÝ! $Ñ'Ô'ˆHØð ØÝ˜(¥GÔ$4Ñ5Ô5ð Ø×&Ò& Ñ7Ô7ðà×)Ò)¨+Ñ6Ô6ðð å˜h­¬Ñ7Ô7ð XÕ;QØñ<ô <ð Xð × Ò Ð!4¸4¿>º>Ñ;KÔ;KÐRVÐ ÑWÔWÐWå˜(¥E¤NÑ3Ô3ð 6¸×8NÒ8NØñ9ô 9ð 6ð ×%Ò% d¨HÑ5Ô5Ð5àŒ}¥¤Ò/Ð/Ø× Ò Ø0°t´yÀtð !ñ ô ð ùð+	ð 	r:   c                ó  — | j         sdS |j        D ]w}t          |¦  «        }|sŒt          |t          j        ¦  «        rIt          |dg¦  «        st          |j        ¦  «        r$|  	                    d|j
        |j
        f|¬¦  «         ŒxdS )z]Detect that a class does not subclass a class decorated with
        `typing.final`.
        Nútyping.finalr<  rŸ  )r‘  r   r%   r`   r   r	  r   r'   r„   r¢  rc   rÙ  s       r8   rš  z ClassChecker._check_typing_finalÕ  s´   € ð Œð 	ØˆFØ”Jð 	ð 	ˆDÝ! $Ñ'Ô'ˆHØð Øå˜(¥E¤NÑ3Ô3ð Ý˜x¨.Ð)9Ñ:Ô:ðå/°Ô0CÑDÔDðð × Ò Ø,Øœ) X¤]Ð3Øð !ñ ô ð øð	ð 	r:   r8  r  r  c                ó®   — |                       |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         dS )zŽChecker for Class nodes.

        check that instance attributes are defined in __init__ and check
        access to existent members
        N)Ú_check_unused_private_functionsÚ_check_unused_private_variablesÚ _check_unused_private_attributesÚ%_check_attribute_defined_outside_initrœ  s     r8   Úleave_classdefzClassChecker.leave_classdefê  sZ   € ð 	×,Ò,¨TÑ2Ô2Ð2Ø×,Ò,¨TÑ2Ô2Ð2Ø×-Ò-¨dÑ3Ô3Ð3Ø×2Ò2°4Ñ8Ô8Ð8Ð8Ð8r:   c           	     ó,  — |                      t          j        ¦  «        D �]r}t          |j        ¦  «        sŒ|j                             ¦   «         }t          |t          j        ¦  «        r1|j        d„ |                      t          j        ¦  «        D ¦   «         v rŒ||                      t          j        t          j	        f¦  «        D �]
}t          |t          j        ¦  «        r|j        |j        k    r �n›t          |t          j	        ¦  «        rÀ|j
        |j        k    s|                     ¦   «         |k    rŒst          |j        t          j        ¦  «        r|j        j        dd|j        hv r �n t          |j        t          j        ¦  «        r@t          |j        ¦  «        }t          |t          j        ¦  «        r|j        |j        k    r nÁ�Œg }|}||k    r9|                     |j        ¦  «         |j                             ¦   «         }||k    °9d                     t#          |¦  «        ¦  «        › }|› d|j        › d|j                             ¦   «         › d�}	|                      d||j        |	                     d¦  «        f¬¦  «         �Œtd S )	Nc              3  ó$   K  — | ]}|j         V — Œd S r2   rm   )ro   Úns     r8   rz   z?ClassChecker._check_unused_private_functions.<locals>.<genexpr>  s5   è è € ð )ð )Ø �A”Fð)ð )ð )ð )ð )ð )r:   rl   rÛ   r±  ú(r¶  r8  ©rh  rI   )rñ   r   rð   r   rc   r‘   r’   r`   ra   r‹   r�   rŒ   r‰   r%   r	  rb   rÇ  rÂ  rI   r×  r¢  Úlstrip)
rl   rh  Úfunction_defÚparent_scopeÚchildrê   Ú
name_stackÚcurrÚouter_level_namesÚfunction_reprs
             r8   rÞ  z,ClassChecker._check_unused_private_functionsú  s›  € Ø ×/Ò/µÔ0AÑBÔBð 5	ñ 5	ˆLÝ" <Ô#4Ñ5Ô5ð ØØ'Ô.×4Ò4Ñ6Ô6ˆLÝ˜,­Ô(9Ñ:Ô:ð àÔ$ð )ð )Ø$0×$?Ò$?ÅÄ
Ñ$KÔ$Kð)ñ )ô )ð ð ð Ø×,Ò,­e¬j½%¼/Ð-JÑKÔKð +ñ +�õ ˜e¥U¤ZÑ0Ô0ð °U´ZÀ<ÔCTÒ5TÐ5TØ‘EÝ˜e¥U¤_Ñ5Ô5ð "ð œ¨,Ô*;Ò;Ð;Ø Ÿ;š;™=œ=¨LÒ8Ð8à õ " %¤*­e¬jÑ9Ô9ð ¸e¼j¼oØØØœ	ðRð ?ð ?ð
 ™õ " %¤*­e¬jÑ9Ô9ð "Ý#-¨e¬jÑ#9Ô#9˜å& xµ´Ñ@Ô@ð"à (¤°´Ò :Ð :à!˜Eùà�
Ø#�à˜d’l�lØ×%Ò% d¤iÑ0Ô0Ð0Øœ;×,Ò,Ñ.Ô.�Dð ˜d’l�lð (+§x¢xµ¸Ñ0DÔ0DÑ'EÔ'EÐ$GÐ!Ø#4Ð kÐ k°|Ô7HÐ kÐ kÈ<ÔK\×KfÒKfÑKhÔKhÐ kÐ kÐ k�Ø× Ò Ø+Ø%Øœ) ]×%9Ò%9¸#Ñ%>Ô%>Ð?ð !ñ ô ð ùðc5	ð 5	r:   c                ó~  — |                      t          j        ¦  «        D �]}t          |j        t          j        ¦  «        rŒ#t          |j        ¦  «        sŒ8|                      t          j        t          j	        f¦  «        D ]‘}t          |t          j        ¦  «        r|j        |j        k    r nŠt          |t          j	        ¦  «        rIt          |j
        t          j        ¦  «        s nO|j        |j        k    r|j
        j        dd|j        fv r n'Œ’|j        |j        f}|                      d||¬¦  «         �ŒdS )z9Check if private variables are never used within a class.rl   rÛ   r8  rç  N)rñ   r   r¾  r`   r‘   Ú	Argumentsr   rc   ra   r‹   rŒ   r�   r¢  )rl   rh  rË  rë  rI   s        r8   rß  z,ClassChecker._check_unused_private_variables2  sE  € à×.Ò.­uÔ/?Ñ@Ô@ð 	Wñ 	WˆKÝ˜+Ô,­e¬oÑ>Ô>ð ØÝ" ;Ô#3Ñ4Ô4ð ØØ×,Ò,­e¬j½%¼/Ð-JÑKÔKð Wð W�Ý˜e¥U¤ZÑ0Ô0ð °U´ZÀ;ÔCSÒ5SÐ5SØ�EÝ˜e¥U¤_Ñ5Ô5ð Ý% e¤jµ%´*Ñ=Ô=ð Ø˜Ø”~¨Ô)9Ò9Ð9¸e¼j¼oØØØœ	ðRð ?ð ?ð
 ˜øàœ	 ;Ô#3Ð4�Ø× Ò Ð!8¸{ÐQUÐ ÑVÔVÐVùð'	Wð 	Wr:   c                óˆ  — |                      t          j        ¦  «        D �] }t          |j        ¦  «        rt          |j        t          j        ¦  «        sŒ7dg}|                     ¦   «         }t          |t          j	        ¦  «        rG|j
        dk    r<|                     d„ |                      t          j        ¦  «        D ¦   «         ¦  «         |                      t          j        ¦  «        D ]«}|j        |j        k    rŒt          |j        t          j        ¦  «        sŒ3|j        j
        d|j
        hv r|j        j
        dd|j
        hv r nr|j        j
        |v r|j        j
        dk    r nR|j        j
        |j        j
        cxk    r|j
        k    rn Œ© n'Œ¬|j
        |j        f}|                      d||¬¦  «         �Œ¢d S )Nrl   ru  c                ód   — g | ]-}t          |j        t          j        ¦  «        ¯!|j        j        ‘Œ.S rS   )r`   r4   r   ra   rc   )ro   Úreturn_nodes     r8   rp   zAClassChecker._check_unused_private_attributes.<locals>.<listcomp>W  sC   € ð ð ð à'Ý% kÔ&7½¼ÑDÔDðØ#Ô)Ô.ðð ð r:   rÛ   r8  rç  )rñ   r   Ú
AssignAttrr   r�   r`   rŒ   ra   r’   rð   rc   Úextendrˆ   r‹   r¢  )rl   rh  Úassign_attrÚacceptable_obj_namesr’   ré   rI   s          r8   rà  z-ClassChecker._check_unused_private_attributesI  s
  € Ø×.Ò.­uÔ/?Ñ@Ô@ð 0	Wñ 0	WˆKÝ" ;Ô#7Ñ8Ô8ð Å
ØÔ ¥%¤*ñAô Að ð ð
 06¨hÐ Ø×%Ò%Ñ'Ô'ˆEÝ˜%¥Ô!2Ñ3Ô3ð ¸¼
ÀiÒ8OÐ8OØ$×+Ò+ðð à+0×+?Ò+?ÅÄÑ+MÔ+Mðñ ô ñô ð ð "×0Ò0µ´ÑAÔAð Wð W�	ØÔ%¨Ô)=Ò=Ð=Øå! )¤.µ%´*Ñ=Ô=ð ØàÔ#Ô(ØØ”Ið-ð ð ð  ”nÔ)¨e°V¸T¼YÐ-GÐGÐGà�Eð  Ô$Ô)Ð-AÐAÐAØ!œÔ+¨vÒ5Ð5ð �EàÔ#Ô(¨I¬NÔ,?ÐLÐLÒLÐLÀ4Ä9ÒLÐLÐLÐLÐLà�Eð Mð
 œ	 ;Ô#7Ð8�Ø× Ò Ð!8¸{ÐQUÐ ÑVÔVÐVùða0	Wð 0	Wr:   Úcnodec                óÔ  ‡	‡
— d| j         j        j        v r!| j                             |j        ¦  «        rd S | j                             |¦  «        }|j        dk    r|  	                    ||¦  «         | j          
                    d¦  «        sd S | j         j        j        Š
|                     ¦   «         Š	|j                             ¦   «         D �]\  }}|dk    rŒˆ	fd„|D ¦   «         }|sŒd„ |D ¦   «         }t          ˆ
fd„|D ¦   «         ¦  «        rŒF|                     |¦  «        D ]5}d}|j        |         D ]}|                     ¦   «         j        ‰
v rd}Œ |r nŠŒ6	 |                     |¦  «         Œ¨# t&          j        $ r` |D ]Y}|                     ¦   «         j        ‰
vr<t+          |                     ¦   «         |‰
¦  «        rŒA|                      d||¬	¦  «         ŒZY �Œw xY w�Œd S )
Nr  Ú	metaclassÚ__dict__c                ó°   •— g | ]R}t          |                     ¦   «         t          j        t          j        f¦  «        s|                     ¦   «         ‰u ¯P|‘ŒSS rS   )r`   r–   r   ÚDeleteÚ	AugAssignÚroot)ro   rå  Úcurrent_modules     €r8   rp   zFClassChecker._check_attribute_defined_outside_init.<locals>.<listcomp>—  s]   ø€ ð ð ð àÝ! !§+¢+¡-¤-µ%´,ÅÄÐ1PÑQÔQðð —F’F‘H”H Ð.Ð.ð ð /Ð.Ð.r:   c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r2   )rl  )ro   rh  s     r8   rz   zEClassChecker._check_attribute_defined_outside_init.<locals>.<genexpr>¢  s*   è è € Ð9Ð9 t�d—j’j‘l”lÐ9Ð9Ð9Ð9Ð9Ð9r:   c              3  óH   •K  — | ]}|j         ‰v pt          |¦  «        V — Œd S r2   )rc   r!   )ro   rl  Údefining_methodss     €r8   rz   zEClassChecker._check_attribute_defined_outside_init.<locals>.<genexpr>£  sM   øè è € ð ð àð ”
Ð.Ð.ÐKÕ2DÀUÑ2KÔ2Kðð ð ð ð ð r:   FTrŸ  )r„  r�  Úignored_checks_for_mixinsr�  r¹   rc   r‡  rp  r”   Ú_check_accessed_membersÚis_message_enabledÚdefining_attr_methodsr   Úinstance_attrsrC   r|   Úinstance_attr_ancestorsrl  Ú
local_attrr�   ræ   rú   r¢  )rl   rù  rp  rá   Ú	nodes_lstÚframesr‘   Úattr_definedrh  r  r  s            @@r8   rá  z2ClassChecker._check_attribute_defined_outside_init|  s›  øø€ ð -ØŒ{Ô!Ô;ð<ð <àÔ%×+Ò+¨E¬JÑ7Ô7ð<ð ˆFà”>×*Ò*¨5Ñ1Ô1ˆØŒ:˜Ò$Ð$Ø×(Ò(¨°Ñ9Ô9Ð9àŒ{×-Ò-Ð.NÑOÔOð 	ØˆFØœ;Ô-ÔCÐØŸš™œˆØ$Ô3×9Ò9Ñ;Ô;ð 3	ñ 3	‰OˆD�)à�zÒ!Ð!Øðð ð ð à"ðñ ô ˆIð ð Øð :Ð9¨yÐ9Ñ9Ô9ˆFÝð ð ð ð à#ðñ ô ñ ô ð ð ð  ×7Ò7¸Ñ=Ô=ð ð �Ø$�à"Ô1°$Ô7ð ,ð ,�DØ—z’z‘|”|Ô(Ð,<Ð<Ð<Ø'+˜øØð à�Eðð
Ø×$Ò$ TÑ*Ô*Ð*Ð*øÝÔ,ð ð ð Ø )ð ð ˜ØŸ:š:™<œ<Ô,Ð4DÐDÐDõ  2Ø $§
¢
¡¤¨eÐ5Eñ ô  ð )ð !)Ø ×,Ò,Ø @ÀtÐRVð -ñ ô ð øðñ ðøøøñ ðE3	ð 3	s   ÅE4Å4A+G#Ç"G#r€   c                ó$  — |                      ¦   «         sdS |                      |¦  «         |                      |¦  «         |j                             ¦   «         }|                      ||j        dk    ¦  «         |j        dk    r|                      ||¦  «         dS | 	                    |j        ¦  «        D ]i}	 ||j                 }n# t          $ r Y Œw xY wt          |t          j        ¦  «        sŒ<|                      |||¦  «         |                      ||¦  «          |j        �rg|j        j        D �]Y}t          |t          j        ¦  «        r|j        dv r dS t          |t          j        ¦  «        r|j        t(          v r dS t          |t          j        ¦  «        r|                      |¦  «        r dS t-          |¦  «        }|s dS t          |t          j        ¦  «        r;	 t/          |                     |¦  «        ¦  «        }n# t2          j        $ r Y  dS w xY w	 t          |t2          j        t          j        f¦  «        r-|                     d¦  «        r|                     d¦  «        r dS �ŒE# t2          j        $ r Y �ŒWw xY w	 |                     |j        ¦  «        d         }|                     ¦   «         }t          |t          j        ¦  «        r$|j        dk    r|j                             ¦   «         }t          |t          j        ¦  «        r'|                      | !                    ¦   «         ¦  «        sdS | "                    ¦   «         D ]h}|j        |j#        v rtI          |j        ¦  «        r dS | %                    |j        ¦  «        d	         D ] }	t          |	t          j        ¦  «        r  dS Œ!Œi| &                    ¦   «         j        |j'        f}
|  (                    d
|
|¬¦  «         dS # t2          j)        $ r Y dS w xY w)z#Check method arguments, overriding.Nrû  rg  >   ÚgetterÚsetterÚdeleterrã   rä   r   rš   r‚   r  rŸ  )*rƒ   Ú_check_useless_super_delegationÚ_check_property_with_parametersr‘   rl  Ú_check_first_arg_for_typer”   rc   Ú_check_initÚlocal_attr_ancestorsÚKeyErrorr`   r   rð   Ú_check_signatureÚ _check_invalid_overridden_methodr„   r‹   r�   ra   ÚALLOWED_PROPERTIESÚ_check_functools_or_notr%   rò   Úinfer_call_resultr�   rç   r•   r	  rå   ÚAttributeInferenceErrorÚinstance_attrr½  r=   Ú	ancestorsr	  r   Úlookupr   Ú
fromlinenor¢  ræ   )rl   rh  rì   r¥   Úparent_functionÚ	decoratorrê   Úoverridden_framer¤  ÚobjrI   s              r8   Úvisit_functiondefzClassChecker.visit_functiondefÆ  sw  € ð �~Š~ÑÔð 	ØˆFà×,Ò,¨TÑ2Ô2Ð2Ø×,Ò,¨TÑ2Ô2Ð2ð !%¤× 1Ò 1Ñ 3Ô 3ˆà×&Ò& t¨U¬Z¸;Ò-FÑGÔGÐGØŒ9˜
Ò"Ð"Ø×Ò˜T 5Ñ)Ô)Ð)ØˆFà×4Ò4°T´YÑ?Ô?ð 	ð 	ˆJðØ",¨T¬YÔ"7��øÝð ð ð ð �ð	øøøõ
 ˜o­uÔ/@ÑAÔAð ØØ×!Ò! $¨¸Ñ?Ô?Ð?Ø×1Ò1°$¸ÑHÔHÐHØàŒ?ñ %	Ø!œ_Ô2ð $ñ $�	Ý˜i­¬Ñ9Ô9ð ¸iÔ>Pð Uð ?ð ?ð �F�FÝ˜i­¬Ñ4Ô4ð Ø ”~Õ);Ð;Ð;ð ˜˜å˜i­¬Ñ9Ô9ð Ø×3Ò3°IÑ>Ô>ð Ø˜˜õ & iÑ0Ô0�Øð Ø�F�FÝ˜h­Ô(9Ñ:Ô:ð ðÝ#'¨×(BÒ(BÀ8Ñ(LÔ(LÑ#MÔ#M˜˜øÝ"Ô1ð ð ð Ø˜˜˜ðøøøðå" 8­gÔ.>ÅÄÐ-OÑPÔPðà$×,Ò,¨YÑ7Ô7ðð %×,Ò,¨YÑ7Ô7ðð
 ˜˜ùøÝÔ6ð ð ð Ø‘Dðøøøð
	Ø×,Ò,¨T¬YÑ7Ô7¸Ô:ˆJØ)×/Ò/Ñ1Ô1ÐåÐ+­UÔ->Ñ?Ô?ðCà$Ô)¨XÒ5Ð5à#3Ô#:×#@Ò#@Ñ#BÔ#BÐ åÐ+­U¬^Ñ<Ô<ðà×'Ò'Ð(8×(>Ò(>Ñ(@Ô(@ÑAÔAðð �ð "ŸOšOÑ-Ô-ð ð �Ø”9 Ô 7Ð7Ð7½OÈDÌIÑ<VÔ<VÐ7Ø�F�FØ#Ÿ?š?¨4¬9Ñ5Ô5°aÔ8ð ð �CÝ! #¥uÔ'8Ñ9Ô9ð Ø˜˜˜ððð —O’OÑ%Ô%Ô*¨JÔ,AÐBˆDØ×Ò˜_°4¸dÐÑCÔCÐCÐCÐCøÝÔ$ð 	ð 	ð 	ØˆDˆDð	øøøs\   Â9CÃ
CÃCÇ)"HÈH ÈH È$AI9É9JÊJÊB3O< Í9O< Î >O< Ï :O< Ï<PÐPr   c                óV  — t          |¦  «        sdS |j        d         j        }|j        dk    r*|j                             ¦   «         D ]}|j        dk    r dS Œ|j                             ¦   «         }d}|                     |j        ¦  «        D ]}}	 ||j                 }n# t          $ r Y Œw xY wt          |t          j        ¦  «        r?t          |j        |j        ¦  «        s%|j        j        €|                     ¦   «         dgk    r dS  t          |j        ¦  «        }t!          |¦  «        }|�Â|j        j        rB|j        j        r4t%          |j        j        ¦  «        t%          |j        j        ¦  «        k    rdS dd
„}	 |	|j        ¦  «        }
 |	|j        ¦  «        }|
r
|r|
|k    rdS |j        �=|j        �6|j                             ¦   «         |j                             ¦   «         k    rdS t+          ||¦  «        r&|                      d||j        ft.          ¬¦  «         dS dS )aR  Check if the given function node is an useless method override.

        We consider it *useless* if it uses the super() builtin, but having
        nothing additional whatsoever than not implementing the method at all.
        If the method uses super() to delegate an operation to the rest of the MRO,
        and if the method called is the same as the current one, the arguments
        passed to super() are the same as the parameters that were passed to
        this method, then the method could be removed altogether, by letting
        other implementation to take precedence.
        Nr   Ú__hash__Ú__eq__rl   rg   rh   r\   rK   c                óR   — t          | j        pg | j        ¦  «        }d„ |D ¦   «         S )Nc                ó:   — g | ]}|®|                      ¦   «         ‘ŒS r2   )r×  )ro   Úanns     r8   rp   zZClassChecker._check_useless_super_delegation.<locals>.form_annotations.<locals>.<listcomp>k  s!   € ÐRÐRÐR¨CÀ#À/˜Ÿš™œÀ/À/À/r:   )r   Úposonlyargs_annotationsr   )rg   r   s     r8   Úform_annotationszFClassChecker._check_useless_super_delegation.<locals>.form_annotationsg  s8   € Ý#ØÔ6Ð<¸"¸yÔ?Tñô �ð SÐR°;ÐRÑRÔRÐRr:   r0  r»  )rg   rh   r\   rK   )r™   r…   r4   rc   r‘   Ú	mymethodsrl  r  r  r`   r   rð   r²   rI   Úargnamesru   rf   rs   r†   Úreturnsr×  r~   r¢  r)   )rl   r   rZ   Úother_methodrì   Ú	meth_noder¥   ÚparamsrI   r/  Úcalled_annotationsÚoverridden_annotationss               r8   r  z,ClassChecker._check_useless_super_delegation+  s   € õ ,¨HÑ5Ô5ð 	ØˆFà#œ=¨Ô+Ô1ˆð Œ=˜JÒ&Ð&Ø (¤× 9Ò 9Ñ ;Ô ;ð ð �ØÔ$¨Ò0Ð0Ø�F�Fð 1ð ”×%Ò%Ñ'Ô'ˆØˆ	Ø×4Ò4°X´]ÑCÔCð 	ð 	ˆJðØ& x¤}Ô5�	�	øÝð ð ð ð �ð	øøøõ ˜y­%Ô*;Ñ<Ô<ð
õ ;Ø”N H¤Mñô ð	
ð ”NÔ'Ð/°H×4EÒ4EÑ4GÔ4GÈFÈ8Ò4SÐ4Sà��Øõ +¨8¬=Ñ9Ô9ˆÝ# DÑ)Ô)ˆàÐ àŒ~Ô$ð Ø”MÔ(ðå�x”}Ô)Ñ*Ô*­S°´Ô1DÑ-EÔ-EÒEÐEà�ðSð Sð Sð Sð "2Ð!1°(´-Ñ!@Ô!@ÐØ%5Ð%5°i´nÑ%EÔ%EÐ"Ø!ð Ð&<ð Ø%Ð)?Ò?Ð?Ø�Fð Ô Ð,ØÔ%Ð1ØÔ%×/Ò/Ñ1Ô1°XÔ5E×5OÒ5OÑ5QÔ5QÒQÐQð �å)¨&°$Ñ7Ô7ð 	Ø×ÒØ+ØØ”mÐ%Ý$ð	 ñ ô ð ð ð ð	ð 	s   ÂBÂ
B,Â+B,c                óÒ   — |j         j         rTt          |j         j         ¦  «        dk    r9t          |¦  «        r,t          |¦  «        s|                      d|¬¦  «         d S d S d S d S d S )Nr‚   rW  ©rh  )rI   r†   r   r!   r¢  rœ  s     r8   r  z,ClassChecker._check_property_with_parametersƒ  s†   € àŒIŒNð	Då�D”I”NÑ#Ô# aÒ'Ð'Ý'¨Ñ-Ô-ð (å& tÑ,Ô,ð (ð ×ÒÐ7¸dÐÑCÔCÐCÐCÐCð	Dð 	Dà'Ð'Ð'Ð'Ð'Ð'r:   Úfunction_nodeÚparent_function_nodec                óê  — t          |¦  «        pt          |¦  «        }t          |¦  «        pt          |¦  «        }|r(|s&|                      d|j        d|j        f|¬¦  «         n$|s"|r |                      d|j        ddf|¬¦  «         t          |t          j        ¦  «        }t          |t          j        ¦  «        }|r#|s!|                      d|j        ddf|¬¦  «         n$|s"|r |                      d|j        ddf|¬¦  «         t          |dg¦  «        st          |j
        ¦  «        rF| j        r=|                      d|j        |j                             ¦   «         j        f|¬¦  «         d S d S d S )	Nr4  ÚpropertyrŸ  rš   Úasyncz	non-asyncrÜ  r:  )r   r"   r¢  rc   r”   r`   r   ÚAsyncFunctionDefr   r'   r„   r‘  r‘   rl  )rl   r:  r;  Úparent_is_propertyÚcurrent_is_propertyÚparent_is_asyncÚcurrent_is_asyncs          r8   r  z-ClassChecker._check_invalid_overridden_methodŒ  s&  € õ
 5Ø ñ
ô 
ð Aå*Ð+?Ñ@Ô@ð 	õ 6Øñ
ô 
ð :å*¨=Ñ9Ô9ð 	ð ð 	Ð&9ð 	Ø×ÒØ+Ø#Ô(¨*°mÔ6HÐIØ"ð ñ ô ð ð ð
 $ð 	Ð(;ð 	Ø×ÒØ+Ø#Ô(¨(°JÐ?Ø"ð ñ ô ð õ %Ð%9½5Ô;QÑRÔRˆÝ% mµUÔ5KÑLÔLÐàð 	Ð#3ð 	Ø×ÒØ+Ø#Ô(¨'°;Ð?Ø"ð ñ ô ð ð ð !ð 	Ð%5ð 	Ø×ÒØ+Ø#Ô(¨+°wÐ?Ø"ð ñ ô ð õ Ð/°.Ð1AÑBÔBð	å+Ð,@Ô,KÑLÔLð	ð Œoð	ð ×ÒØ)Ø#Ô(Ð*>Ô*E×*KÒ*KÑ*MÔ*MÔ*RÐSØ"ð ñ ô ð ð ð ð		ð 	ð 	ð 	r:   r$  únodes.Attributer,   c                ó@  — |j         dk    rdS t          |j        t          j        ¦  «        sdS |j                             |j        j        ¦  «        \  }}|sdS |d         }t          |t          j        t          j	        f¦  «        sdS dt          |j        ¦  «        v S )Nr   Fr   Ú	functools)r�   r`   rŒ   r   ra   r!  rc   r�   ÚImportÚ
ImportFromÚdictr¾   )rl   r$  rÉ  Úimport_nodesÚimport_nodes        r8   r  z$ClassChecker._check_functools_or_not¾  sœ   € ØÔÐ!2Ò2Ð2Ø�5å˜)œ.­%¬*Ñ5Ô5ð 	Ø�5à#œ.×/Ò/°	´Ô0CÑDÔD‰ˆˆ<àð 	Ø�5Ø" 1”oˆå˜+­¬½Ô8JÐ'KÑLÔLð 	Ø�5à�d ;Ô#4Ñ5Ô5Ð5Ð5r:   c                ó¾  — d|j         vrd S |                     d¦  «        D �]:}t          |t          j        ¦  «        rŒt          |¦  «        s't          |¦  «        s|                      d|¬¦  «         ŒTt          |t          j	        ¦  «        r|                      d|¬¦  «         Œ†t          |d¦  «        sŒ—t          |t          j        ¦  «        rd„ |j        D ¦   «         }n|                     ¦   «         }t          |t          j        ¦  «        rŒò|D ].}	 |                      ||¦  «         Œ# t          j        $ r Y Œ+w xY w|                      |||¦  «         �Œ<d S )NÚ	__slots__rF  r9  rU  Úiteredc                ó   — g | ]
}|d          ‘ŒS ©r   rS   r©  s     r8   rp   z-ClassChecker._check_slots.<locals>.<listcomp>å  s   € Ð:Ð:Ð: d˜$˜qœ'Ð:Ð:Ð:r:   )ÚlocalsÚilookupr`   r   rü   r    r   r¢  r   ÚConstÚhasattrr¼  rC   rN  Ú_check_slots_eltr�   rç   Ú_check_redefined_slots)rl   rh  r  rÅ  Úelts        r8   r˜  zClassChecker._check_slotsÐ  sŽ  € Ø˜dœkÐ)Ð)ØˆFà—\’\ +Ñ.Ô.ð 	=ñ 	=ˆEå˜%¥Ô!5Ñ6Ô6ð ØÝ˜uÑ%Ô%ð Õ.>¸uÑ.EÔ.Eð Ø× Ò  °tÐ Ñ<Ô<Ð<Øå˜%¥¤Ñ-Ô-ð à× Ò Ð!?ÀdÐ ÑKÔKÐKØÝ˜5 (Ñ+Ô+ð àå˜%¥¤Ñ,Ô,ð (Ø:Ð:¨e¬kÐ:Ñ:Ô:��àŸš™œ�Ý˜&¥$Ô"6Ñ7Ô7ð ØØð ð �ðØ×)Ò)¨#¨tÑ4Ô4Ð4Ð4øÝÔ-ð ð ð Ø�Hðøøøà×'Ò'¨¨e°VÑ<Ô<Ð<Ñ<ð7	=ð 	=s   ÄD/Ä/EÅ EÚ
slots_nodeúnodes.NodeNGÚ
slots_listúlist[nodes.NodeNG]c                óÎ  ‡	— g }|D ]�}t          |t          j        ¦  «        r|                     |j        ¦  «         Œ7t          |¦  «        }t          |dd¦  «        }t          |t          ¦  «        r|                     |¦  «         Œ‚d„ |                     d¦  «        D ¦   «         }| 	                    |¦  «        Š	‰	r'|  
                    dˆ	fd„|D ¦   «         f|¬¦  «         dS dS )zGCheck if `node` redefines a slot which is defined in an ancestor class.r4   Nc                óN   — h | ]"}|                      ¦   «         pg D ]	}|j        ’Œ
Œ#S rS   )r  r4   )ro   r¤  Úslots      r8   ú	<setcomp>z6ClassChecker._check_redefined_slots.<locals>.<setcomp>  sP   € ð !
ð !
ð !
àØ ŸšÑ(Ô(Ð.¨Bð!
ð !
ð ð ŒJð!
ð !
ð !
ð !
r:   rM  r>  c                ó   •— g | ]}|‰v ¯|‘Œ	S rS   rS   )ro   rc   Úredefined_slotss     €r8   rp   z7ClassChecker._check_redefined_slots.<locals>.<listcomp>  s#   ø€ ÐOÐOÐO °t¸Ð7NÐ7N�tÐ7NÐ7NÐ7Nr:   rŸ  )r`   r   rS  rb   r4   r%   rå   rW   r  Úintersectionr¢  )
rl   rh  rX  rZ  Úslots_namesr^  Úinferred_slotÚinferred_slot_valueÚancestors_slots_namesra  s
            @r8   rV  z#ClassChecker._check_redefined_slotsñ  s)  ø€ ð "$ˆØð 	<ð 	<ˆDÝ˜$¥¤Ñ,Ô,ð <Ø×"Ò" 4¤:Ñ.Ô.Ð.Ð.å *¨4Ñ 0Ô 0�Ý&-¨m¸WÀdÑ&KÔ&KÐ#ÝÐ1µ3Ñ7Ô7ð <Ø×&Ò&Ð':Ñ;Ô;Ð;øð!
ð !
à ×5Ò5°kÑBÔBð!
ñ !
ô !
Ðð 0×<Ò<¸[ÑIÔIˆàð 	Ø×ÒØ-ØOÐOÐOÐO¨ÐOÑOÔOÐQØð ñ ô ð ð ð ð	ð 	r:   rW  r   c                ó¬  — |                      ¦   «         D �]=}t          |t          j        ¦  «        rŒt          |t          j        ¦  «        rt          |j        t          ¦  «        s1|                      d| 	                    ¦   «         |t          ¬¦  «         Œƒ|j        s0|                      d| 	                    ¦   «         |t          ¬¦  «         |j                             |j        ¦  «        }|rbt          |¦  «        dk    r1|d         j        }t          |t          j        ¦  «        r
|j        € d S |                      d|j        f|¬¦  «         �Œ?d S )NrB  r«  r‚   r   rN  rŸ  )rF   r`   r   rü   r   rS  r4   rW   r¢  r×  r)   rQ  r¬   r†   r‘   r¨  )rl   rW  rh  rê   Úclass_variabler‘   s         r8   rU  zClassChecker._check_slots_elt  sh  € ð Ÿ	š	™œð 	ñ 	ˆHÝ˜(¥DÔ$8Ñ9Ô9ð ØÝ˜h­¬Ñ4Ô4ð 	½JØ”¥ñ=ô =ð 	ð × Ò Ø*ØŸš™œØÝ(ð	 !ñ ô ð ð Ø”>ð Ø× Ò Ø*ØŸš™œØÝ(ð	 !ñ ô ð ð "œ[Ÿ_š_¨X¬^Ñ<Ô<ˆNØð å�~Ñ&Ô&¨!Ò+Ð+Ø+¨AÔ.Ô5�FÝ! &­%¬/Ñ:Ô:ð ¸v¼|Ð?SØ˜˜Ø× Ò Ø3¸8¼>Ð:KÐRUð !ñ ô ð ùð;	ð 	r:   c                ó€   — |                      ¦   «         r'|j        j        �| j                             ¦   «          dS dS dS )z¶On method node, check if this method couldn't be a function.

        ignore class, static and abstract methods, initializer,
        methods overridden from a parent class.
        N)rƒ   rI   rˆ  Úpoprœ  s     r8   Úleave_functiondefzClassChecker.leave_functiondef7  sK   € ð �>Š>ÑÔð 	(ØŒyŒ~Ð)ØÔ!×%Ò%Ñ'Ô'Ð'Ð'Ð'ð	(ð 	(Ø)Ð)r:   c                óô   — |                       |¦  «         |                      |¦  «        r| j                             |¦  «         dS | j                             d¦  «        sdS |                      |¦  «         dS )zÙCheck if the getattr is an access to a class member
        if so, register it.

        Also check for access to protected
        class member from outside its class (but ignore __special__
        methods)
        Nr  )Ú_check_super_without_bracketsÚ_uses_mandatory_method_paramr‡  rm  r„  r  Ú!_check_protected_attribute_accessrœ  s     r8   Úvisit_attributezClassChecker.visit_attributeC  sƒ   € ð 	×*Ò*¨4Ñ0Ô0Ð0ð ×,Ò,¨TÑ2Ô2ð 	ØŒN×'Ò'¨Ñ-Ô-Ð-ØˆFØŒ{×-Ò-Ð.@ÑAÔAð 	ØˆFà×.Ò.¨tÑ4Ô4Ð4Ð4Ð4r:   c                ó¸  — |                      ¦   «         }t          |t          j        ¦  «        sdS t          |j                              ¦   «         t          j        ¦  «        sdS t          |j        t          j        ¦  «        sdS t          |j        t          j        ¦  «        sdS |j        j	        dk    r$|  
                    d|j        t          ¬¦  «         dS dS )zCCheck if there is a function call on a super call without brackets.Nr†  r@  )rh  r¬  )rl  r`   r   rð   r‘   r	  r‰   rŒ   ra   rc   r¢  r(   rk  s      r8   rm  z*ClassChecker._check_super_without_bracketsV  sÄ   € ð —
’
‘”ˆÝ˜%¥Ô!2Ñ3Ô3ð 	ØˆFÝ˜%œ,×,Ò,Ñ.Ô.µ´Ñ?Ô?ð 	ØˆFÝ˜$œ+¥u¤zÑ2Ô2ð 	ØˆFÝ˜$œ)¥U¤ZÑ0Ô0ð 	ØˆFØŒ9Œ>˜WÒ$Ð$Ø×ÒÐ5¸D¼IÕRVÐÑWÔWÐWÐWÐWð %Ð$r:   rD  rP  únodes.AssignAttrc                ó  — t          |                     ¦   «         t          j        ¦  «        r/|                      |¦  «        r| j                             |¦  «         |                      |¦  «         |                      |¦  «         d S r2   )	r`   Úassign_typer   rÿ  rn  r‡  rm  Ú_check_in_slotsÚ_check_invalid_class_objectrœ  s     r8   Úvisit_assignattrzClassChecker.visit_assignattre  s…   € õ Ø×ÒÑÔ¥¤ñ
ô 
ð 	.à×/Ò/°Ñ5Ô5ð	.ð ŒN×'Ò'¨Ñ-Ô-Ð-Ø×Ò˜TÑ"Ô"Ð"Ø×(Ò(¨Ñ.Ô.Ð.Ð.Ð.r:   c                ó  — |j         dk    sd S t          |j        t          j        ¦  «        rpd}t          |j        j        ¦  «        D ]"\  }}t          |d¦  «        r|j         dk    r|}Œ#|dk    rd S t          |j        j        j	        j        |         ¦  «        }nt          |j        j	        ¦  «        }t          |t          j
        t          j        f¦  «        s|€d S |                      d||j        j        t           ¬¦  «         d S )Nr‰  éÿÿÿÿr�   rP  r»  )r�   r`   r‘   r   ÚTuplerÁ  r@   rT  r%   r4   r	  r   rü   r¢  r‰  rO   r)   )rl   rh  Úclass_indexrÃ   rW  rê   s         r8   rv  z(ClassChecker._check_invalid_class_objectp  s  € ØŒ} Ò+Ð+ØˆFÝ�d”k¥5¤;Ñ/Ô/ð 	5ØˆKÝ# D¤KÔ$4Ñ5Ô5ð $ð $‘��3Ý˜3 
Ñ+Ô+ð $°´ÀÒ0KÐ0KØ"#�KøØ˜bÒ Ð ð �Ý! $¤+Ô"4Ô":Ô"?ÀÔ"LÑMÔMˆHˆHå! $¤+Ô"3Ñ4Ô4ˆHå�x¥%¤.µ$Ô2FÐ!GÑHÔHð	àÐð ˆFØ×ÒØ"ØØÔ#Ô,Ý ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r:   c                óä  ‡— t          ‰j        ¦  «        }t          |t          j        ¦  «        sdS |j        }t          |¦  «        sdS d|j        vs|j        sdS t          d„ | 
                    ¦   «         D ¦   «         ¦  «        rdS t          d„ | 
                    ¦   «         D ¦   «         ¦  «        r5t          |dd¦  «        }|r"|                     |j        ¦  «        �||j        = |                     ¦   «         }|€dS t          d„ |                     ¦   «         D ¦   «         ¦  «        rdS t          ˆfd„|D ¦   «         ¦  «        �s$t          d„ |D ¦   «         ¦  «        �st          ‰j        |¦  «        rdS ‰j        d	k    rt#          j        ‰j        |¦  «        rdS ‰j        |j        v rq|j                             ‰j        ¦  «        D ]:}|                     ¦   «         }t          |t(          j        ¦  «        r
|j        s dS Œ;t/          |‰j        ¦  «        rdS ‰j        d	k    rt1          |‰j        j        ¦  «        rdS |                      d
‰j        f‰t6          ¬¦  «         dS dS dS )zTCheck that the given AssignAttr node
        is defined in the class slots.
        NrM  c              3  óz   K  — | ]6}|                      ¦   «         d k    ¯|j                             d¦  «        V — Œ7dS )zbuiltins.objectÚ__setattr__N)r=   rQ  r¬   ©ro   rÚ  s     r8   rz   z/ClassChecker._check_in_slots.<locals>.<genexpr>›  sP   è è € ð 
ð 
àØ�zŠz‰|Œ|Ð0Ò0Ð0ð ŒK�OŠO˜MÑ*Ô*à0Ð0Ð0Ð0ð
ð 
r:   c              3  óF   K  — | ]}|                      ¦   «         d k    V — ŒdS )ztyping.GenericNr<   r  s     r8   rz   z/ClassChecker._check_in_slots.<locals>.<genexpr>¤  s0   è è € ÐHÐH°Dˆt�zŠz‰|Œ|Ð/Ò/ÐHÐHÐHÐHÐHÐHr:   Ú__cachec              3  ó:   K  — | ]}d |j         vo|j        dvV — ŒdS )rM  )ÚGenericrØ  N)rQ  rc   )ro   r¤  s     r8   rz   z/ClassChecker._check_in_slots.<locals>.<genexpr>®  sO   è è € ð 
ð 
ð ð ˜xœÐ.ð ;Ø”Ð%:Ð:ð
ð 
ð 
ð 
ð 
ð 
r:   c              3  ó8   •K  — | ]}|j         ‰j        k    V — Œd S r2   )r4   r�   )ro   r^  rh  s     €r8   rz   z/ClassChecker._check_in_slots.<locals>.<genexpr>µ  s,   øè è € ÐAÐA°4�4”: ¤Ò.ÐAÐAÐAÐAÐAÐAr:   c              3  ó,   K  — | ]}|j         d k    V — ŒdS )rü  Nr3   )ro   r^  s     r8   rz   z/ClassChecker._check_in_slots.<locals>.<genexpr>¸  s)   è è € ÐBÐB°D�t”z ZÒ/ÐBÐBÐBÐBÐBÐBr:   r‰  rD  r«  )r%   rŒ   r`   r�   r•   rõ   r   rQ  Únewstyler|   r   rå   r¬   r  r   r   r�   r   Úis_class_attrr–   r   r¨  r4   rë   r  r‘   r¢  r)   )rl   rh  rê   rì   Úcacher  Ú
local_namer–   s    `      r8   ru  zClassChecker._check_in_slotsŒ  sæ  ø€ õ ˜dœiÑ(Ô(ˆÝ˜(¥GÔ$4Ñ5Ô5ð 	ØˆFàÔ!ˆÝ˜uÑ%Ô%ð 	ØˆFØ˜eœlÐ*Ð*°%´.Ð*ØˆFõ ð 
ð 
àŸ	š	™œð
ñ 
ô 
ñ 
ô 
ð 	ð
 ˆFõ ÐHÐH¸E¿IºI¹K¼KÐHÑHÔHÑHÔHð 	'Ý˜E 9¨dÑ3Ô3ˆEØð '˜Ÿš 5¤;Ñ/Ô/Ð;Ø˜%œ+Ð&à—’‘”ˆØˆ=ØˆFõ ð 
ð 
ð "ŸOšOÑ-Ô-ð
ñ 
ô 
ñ 
ô 
ð 	ð
 ˆFåÐAÐAÐAÐA¸5ÐAÑAÔAÑAÔAñ  	õ ÐBÐB¸EÐBÑBÔBÑBÔBñ Ý)¨$¬-¸Ñ?Ô?ð ð �FØ”= KÒ/Ð/µEÔ4GØ”M 5ñ5ô 5Ð/ð �FØ”= E¤LÐ0Ð0Ø&+¤l×&6Ò&6°t´}Ñ&EÔ&Eð #ð #˜
Ø$.×$8Ò$8Ñ$:Ô$:˜	å& yµ%´/ÑBÔBð#à$-¤Oð#ð #˜F˜FøÝ+¨E°4´=ÑAÔAð à˜Ø”= KÒ/Ð/Õ4JØ˜4œ;Ô,ñ5ô 5Ð/ð �FØ× Ò Ø(Øœ-Ð)ØÝ(ð	 !ñ ô ð ð ð ð7 	ð  	ðð r:   r  rS  rT  Úassign_nodeúnodes.Assignc                óÚ   — |                       |¦  «         |j        d         }t          |t          j        ¦  «        sd S |                      |¦  «        rd S |                      |¦  «         d S ©Nr   )Ú_check_classmethod_declarationÚtargetsr`   r   rõ  rn  ro  )rl   rŠ  rh  s      r8   Úvisit_assignzClassChecker.visit_assign×  st   € ð 	×+Ò+¨KÑ8Ô8Ð8ØÔ" 1Ô%ˆÝ˜$¥Ô 0Ñ1Ô1ð 	ØˆFà×,Ò,¨TÑ2Ô2ð 	ØˆFØ×.Ò.¨tÑ4Ô4Ð4Ð4Ð4r:   c                ó6  ‡— t          |j        t          j        ¦  «        sdS |j        j        }t          |t          j        ¦  «        r	|j        dvrdS |j        dk    rdnd}|                     ¦   «         }t          |t          j        ¦  «        sdS |j        j	        d         }t          |t          j        ¦  «        sdS |j        Št          ˆfd„|                     ¦   «         D ¦   «         ¦  «        r$|                      ||j        d         ¬¦  «         dS dS )	a\  Checks for uses of classmethod() or staticmethod().

        When a @classmethod or @staticmethod decorator should be used instead.
        A message will be emitted only if the assignment is at a class scope
        and only if the classmethod's argument belongs to the class where it
        is defined.
        `node` is an assign node.
        N)r�   Ústaticmethodr�   rS  rT  r   c              3  ó.   •K  — | ]}‰|j         k    V — Œd S r2   rm   )ro   ÚmemberÚmethod_names     €r8   rz   z>ClassChecker._check_classmethod_declaration.<locals>.<genexpr>  s*   øè è € ÐQÐQ¨fˆ{˜fœkÒ)ÐQÐQÐQÐQÐQÐQr:   r9  )r`   r4   r   r‰   rŠ   ra   rc   r’   r	  rI   r|   r0  r¢  r�  )rl   rh  rŠ   ÚmsgÚparent_classÚclassmeth_argr•  s         @r8   rŽ  z+ClassChecker._check_classmethod_declarationä  s2  ø€ õ ˜$œ*¥e¤jÑ1Ô1ð 	ØˆFð ŒzŒˆÝ˜$¥¤
Ñ+Ô+ð 	¨t¬yð A
ð 0
ð 0
ð ˆFð Œy˜MÒ)Ð)ð 'Ð&à,ð 	ð —z’z‘|”|ˆÝ˜,­¬Ñ7Ô7ð 	ØˆFð œ
œ¨Ô*ˆÝ˜-­¬Ñ4Ô4ð 	ØˆFà#Ô(ˆÝÐQÐQÐQÐQ¸×8NÒ8NÑ8PÔ8PÐQÑQÔQÑQÔQð 	8Ø×Ò˜S t¤|°A¤ÐÑ7Ô7Ð7Ð7Ð7ð	8ð 	8r:   ú"nodes.Attribute | nodes.AssignAttrc                ó  — |j         }t          |¦  «        r|| j        j        j        v rdS t          j        |¦  «        rdS t          |j        ¦  «        }|rEt          |t          j        t          j        f¦  «        r|j        › d|› �| j        j        j        v rdS t          |¦  «        }|€|                      d||¬¦  «         dS t          |j        t          j        ¦  «        r;t          |j        j        t          j        ¦  «        r|j        j        j        dk    rdS |                      |j        ¦  «        rdS d}|}|j                             ¦   «         }|                     d¦  «        }|                     ¦   «          |D ]"}|r||j        k    rd} nt/          |¦  «        }Œ#|�sR||j        v �sJ|j                             ¦   «         }	t          |	t          j        ¦  «        rat9          |	j        ¦  «        dk    rIt          |	j        d	         t          j        ¦  «        r$|	j        d	         j        }
t?          |
|¦  «        rdS |                       | !                    ¦   «         ¦  «        r3|  "                    |j        |¦  «        r|  #                    ||¦  «        rdS | $                    d
¦  «         }| j        j        j%        s|r|  &                    |¦  «        rdS |                      d||¬¦  «         dS dS dS )aµ  Given an attribute access node (set or get), check if attribute
        access is legitimate.

        Call _check_first_attr with node before calling
        this method. Valid cases are:
        * self._attr in a method or cls._attr in a classmethod. Checked by
        _check_first_attr.
        * Klass._attr inside "Klass" class.
        * Klass2._attr inside "Klass" class when Klass2 is a base class of
            Klass.
        Nr±  r  rç  r†  TFr‚   r   Ú__)'r�   r   r„  r�  Úexclude_protectedr   Ú"is_node_in_type_annotation_contextr%   rŒ   r`   r   r	  ÚModulerc   r#   r¢  r‰   rŠ   ra   Ú_is_type_self_callr×  ÚsplitÚreverser   Ú	basenamesr‘   r–   r¿  r†   r�  r¾  r   Ú_is_classmethodrl  Ú_is_inferred_instanceÚ_is_class_or_instance_attributeÚ
startswithÚ)check_protected_access_in_special_methodsÚ _is_called_inside_special_method)rl   rh  r�   rê   rì   Úinside_klassÚouter_klassÚcalleeÚparents_calleeÚstmtrc   Úlicit_protected_members               r8   ro  z.ClassChecker._check_protected_attribute_access  s>  € ð ”=ˆõ " (Ñ+Ô+ð	à˜4œ;Ô-Ô?Ð?Ð?àˆFõ Ô3°DÑ9Ô9ð 	ØˆFõ ˜dœiÑ(Ô(ˆàð	å˜8¥e¤nµe´lÐ%CÑDÔDð	ð ”=Ð-Ð- 8Ð-Ð-°´Ô1CÔ1UÐUÐUàˆFå  Ñ&Ô&ˆØˆ=à×ÒÐ/°dÀÐÑJÔJÐJØˆFõ �t”y¥%¤*Ñ-Ô-ð	å˜4œ9œ>­5¬:Ñ6Ô6ð	ð ”	”Ô# wÒ.Ð.àˆFð ×"Ò" 4¤9Ñ-Ô-ð 	ØˆFð ˆØˆØ”×$Ò$Ñ&Ô&ˆØŸš cÑ*Ô*ˆØ×ÒÑ Ô Ð Ø$ð 	7ð 	7ˆFØð  &¨KÔ,<Ò"<Ð"<Ø$�Ø�õ *¨+Ñ6Ô6ˆKˆKð ñ  	K ¨%¬/Ð 9Ñ 9ð ”;×(Ò(Ñ*Ô*ˆDå˜4¥¤Ñ.Ô.ðå˜œÑ%Ô%¨Ò*Ð*Ý˜tœ|¨AœµÔ0@ÑAÔAð +ð ”| A”Ô+�Ý)¨$°Ñ6Ô6ð Ø�Fð ×$Ò$ T§Z¢Z¡\¤\Ñ2Ô2ðà×.Ò.¨t¬y¸%Ñ@Ô@ðð ×8Ò8¸À5ÑIÔIðð
 �à)1×)<Ò)<¸TÑ)BÔ)BÐ%BÐ"à”KÔ&ÔPðà*ðð ×9Ò9¸$Ñ?Ô?ðð
 �à×ÒÐ/°dÀÐÑJÔJÐJÐJÐJðA 	Kð  	KÐ 9Ð 9r:   c                óJ   — |                       ¦   «         j        }|o|t          v S )zIReturns true if the node is located inside a special (aka dunder) method.)rl  rc   r   )rh  Ú
frame_names     r8   r¨  z-ClassChecker._is_called_inside_special_methodv  s$   € ð —Z’Z‘\”\Ô&ˆ
ØÐ5˜j­IÐ5Ð5r:   rŒ   c                ó  — t          |t          j        ¦  «        oft          |j        t          j        ¦  «        oG|j        j        dk    o7t          |j        ¦  «        dk    o|                      |j        d         ¦  «        S )Nr”   r‚   r   )	r`   r   r‰   rŠ   ra   rc   r†   rI   Ú_is_mandatory_method_param)rl   rŒ   s     r8   rŸ  zClassChecker._is_type_self_call|  sr   € å�t�UœZÑ(Ô(ð >Ý˜4œ9¥e¤jÑ1Ô1ð>à”	” &Ò(ð>õ �D”I‘” !Ò#ð>ð ×/Ò/°´	¸!´Ñ=Ô=ð	
r:   rŠ   r   c                ób   — t          | t          j        ¦  «        o| j        dk    p
| j        dk    S )z1Check if the given *func* node is a class method.r�   Ú__class_getitem__)r`   r   rð   r”   rc   )rŠ   s    r8   r£  zClassChecker._is_classmethod…  s5   € õ ˜$¥Ô 1Ñ2Ô2ð 
ØŒI˜Ò&ÐJ¨$¬)Ð7JÒ*Jð	
r:   rì   c                ój   — t          | ¦  «        }t          |t          j        ¦  «        sdS |j        |u S )z[Check if the inferred value of the given *expr* is an instance of
        *klass*.
        F)r%   r`   r�   r•   rõ   )rŒ   rì   rê   s      r8   r¤  z"ClassChecker._is_inferred_instanceŒ  s9   € õ
 ˜dÑ#Ô#ˆÝ˜(¥GÔ$4Ñ5Ô5ð 	Ø�5ØÔ  EÐ)Ð)r:   rc   rW   c                óŒ   — t          j        | |¦  «        rdS 	 |                     | ¦  «         dS # t          j        $ r Y dS w xY w)zÍCheck if the given attribute *name* is a class or instance member of the
        given *klass*.

        Returns ``True`` if the name is a property in the given klass,
        ``False`` otherwise.
        TF)r   r‡  r  r�   ræ   )rc   rì   s     r8   r¥  z,ClassChecker._is_class_or_instance_attribute–  sa   € õ Ô˜t UÑ+Ô+ð 	Ø�4ð	Ø×Ò Ñ%Ô%Ð%Ø�4øÝÔ$ð 	ð 	ð 	Ø�5�5ð	øøøs   ™0 °AÁArp  rn  c                ó&  ‡
‡— d}|                      ¦   «         D �]v\  }Š
	 |                     |¦  «         Œ# t          j        $ r Y nw xY w	 t	          |                     |¦  «        ¦  «         ŒV# t          $ r Y nw xY w	 |                     |¦  «        }ˆ
fd„|D ¦   «         }|sŒ�|d                              ¦   «         Šˆfd„t          |¦  «        D ¦   «         }t          |¦  «        dk    r‹|d         }|                     ¦   «         }|j        }‰
D ]e}	|	                     ¦   «         |u rM|	j        |k     rBt          j        |	                     ¦   «         ||¦  «        s|                      d|	||f¬¦  «         Œf�Œb# t          j        $ r Y �Œtw xY wdS )	z(Check that accessed members are defined.)ÚAttributeErrorÚ	ExceptionÚBaseExceptionc                ó   •— g | ]}|‰v¯|‘Œ	S rS   rS   )ro   r­  r  s     €r8   rp   z8ClassChecker._check_accessed_members.<locals>.<listcomp>Ã  s#   ø€ ÐOÐOÐO T¸ÀYÐ9NÐ9N˜DÐ9NÐ9NÐ9Nr:   r   c                óR   •— g | ]#\  }}|d k    s|                      ¦   «         ‰u¯!|‘Œ$S rP  )r’   )ro   rÃ   r­  r’   s      €r8   rp   z8ClassChecker._check_accessed_members.<locals>.<listcomp>Ë  sB   ø€ ð ð ð á˜˜4Ø˜A’v�v §¢¡¤°UÐ!:Ð!:ð à!:Ð!:Ð!:r:   r‚   r  rç  N)rC   r  r�   ræ   rò   r
  ró   r  r’   rÁ  r†   rl  r"  Úare_exclusiver–   r¢  )rl   rh  rp  Úexcsrá   ÚdefstmtsÚdefstmtrl  ÚlnoÚ_noder  r’   s             @@r8   r  z$ClassChecker._check_accessed_members¨  s  øø€ ð @ˆØ'Ÿ~š~Ñ/Ô/ð 7	ñ 7	‰OˆD�)ðà—’ Ñ%Ô%Ð%àøÝÔ(ð ð ð Ø�ðøøøðÝ�T×1Ò1°$Ñ7Ô7Ñ8Ô8Ð8àøÝ ð ð ð Ø�ðøøøð'Ø×-Ò-¨dÑ3Ô3�ð
 PÐOÐOÐO¨XÐOÑOÔO�Øð ð ð ! œ×)Ò)Ñ+Ô+�ðð ð ð å#,¨XÑ#6Ô#6ðñ ô �õ �x‘=”= AÒ%Ð%Ø& qœk�Gð $ŸMšM™OœO�EØ!Ô,�CØ!*ð ð ˜à!ŸKšK™MœM¨UÐ2Ð2Ø %Ô 0°3Ò 6Ð 6Ý$+Ô$9Ø %§¢Ñ 1Ô 1°7¸Dñ%ô %ð !7ð
 !×,Ò,Ø AØ%*Ø&*¨C [ð -ñ ô ð øùøõC Ô(ð ð ð Ø‘ðøøøð%7	ð 7	s3    6¶AÁAÁ"A/Á/
A<Á;A<Â E;Å;FÆFrû  c                ó<  — |j         j         €dS |j         j        r|j         j        d         j        }n)|j         j         r|                     ¦   «         d         }nd}| j                             |¦  «         | j        d         }|j        dk    rR|dk    s&|| j        j        j	        v s|| j        j        j
        v r|                      d||¬¦  «         dS d| j        d<   dS d|                     ¦   «         v rdS |j         j         sC|j         j        s7|j         j        s+|j         j        s|                      d	||j        ¬
¦  «         dS |ri|j        dk    r/|                      || j        j        j
        |d|j        ¦  «         dS |                      || j        j        j	        |d|j        ¦  «         dS |j        dk    s|j        dk    r/|                      || j        j        j	        |d|j        ¦  «         dS |dk    r|                      d||j        ¬
¦  «         dS dS )am  Check the name of first argument, expect:.

        * 'self' for a regular method
        * 'cls' for a class method or a metaclass regular method (actually
          valid-classmethod-first-arg value)
        * 'mcs' for a metaclass class method (actually
          valid-metaclass-classmethod-first-arg)
        * not one of the above for a static method
        Nr   ry  r’  rl   r#  rŸ  zbuiltins.staticmethodr  rç  r�   r!  r  r´  r  r  )rI   rt   rc   r1  rˆ  rb   r”   r„  r�  Úvalid_classmethod_first_argÚ%valid_metaclass_classmethod_first_argr¢  Údecoratornamesrs   rr   Ú_check_first_arg_config)rl   rh  rû  Ú	first_argÚfirsts        r8   r  z&ClassChecker._check_first_arg_for_typeæ  sŠ  € ð Œ9Œ>Ð!ØˆFØŒ9Ô ð 	Øœ	Ô-¨aÔ0Ô5ˆIˆIØŒYŒ^ð 	ØŸš™œ¨Ô*ˆIˆIàˆIØÔ× Ò  Ñ+Ô+Ð+ØÔ! "Ô%ˆàŒ9˜Ò&Ð&à˜VÒ#Ð#Ø ¤Ô 2Ô NÐNÐNØ ¤Ô 2Ô XÐXÐXà× Ò Ð!<À5ÈtÐ ÑTÔTÐTØ�Ø$(ˆDÔ˜bÑ!Ð!Ð!Ø$¨×(;Ò(;Ñ(=Ô(=Ð=Ð=ð ˆFð ŒIŒNð&	LàŒyÔ$ð&	Lð ŒyÔð&	Lð ŒyŒð	&	Lð ×ÒÐ1¸À4Ä9ÐÑMÔMÐMÐMÐMàð 	LàŒy˜MÒ)Ð)Ø×,Ò,ØØ”KÔ&ÔLØØ2Ø”Iñô ð ð ð ð ×,Ò,ØØ”KÔ&ÔBØØ-Ø”Iñô ð ð ð ð ŒY˜-Ò'Ð'¨4¬9Ð8KÒ+KÐ+KØ×(Ò(ØØ”Ô"Ô>ØØ*Ø”	ñô ð ð ð ð �fŠ_ˆ_Ø×ÒÐ/°dÀÄÐÑKÔKÐKÐKÐKð ˆ_r:   rÉ  ú
str | Noner�  rî   Úmessager•  c                ó   — ||vryt          |¦  «        dk    rt          |d         ¦  «        }n4d                     d„ |d d…         D ¦   «         ¦  «        }|› d|d         ›�}|                      |||f|¬¦  «         d S d S )Nr‚   r   r´  c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r2   )ÚreprrË   s     r8   rz   z7ClassChecker._check_first_arg_config.<locals>.<genexpr>@  s(   è è € Ð!?Ð!?¨a¥$ q¡'¤'Ð!?Ð!?Ð!?Ð!?Ð!?Ð!?r:   ry  z or rŸ  )r†   rÎ  rÇ  r¢  )rl   rÉ  r�  rh  rË  r•  Úvalids          r8   rÇ  z$ClassChecker._check_first_arg_config4  sž   € ð ˜ÐÐÝ�6‰{Œ{˜aÒÐÝ˜V AœY™œ��àŸ	š	Ð!?Ð!?°6¸#¸2¸#´;Ð!?Ñ!?Ô!?Ñ?Ô?�Ø Ð4Ð4 f¨R¤jÐ4Ð4�Ø×Ò˜W¨K¸Ð+?ÀdÐÑKÔKÐKÐKÐKð Ðr:   c                óJ  — dd„}t          |¦  «        rdS t          t          ||¦  «                             ¦   «         d„ ¬¦  «        }|D ]X\  }}|j                             ¦   «         }||u rŒ#||j        v rŒ-|                      d	|||j        |j        ft          ¬
¦  «         ŒYdS )z_Check that the given class node implements abstract methods from
        base classes.
        rš   r€   r\   r,   c                ó.   — |                       d¬¦  «        S )NF)Úpass_is_abstract)Úis_abstract)rš   s    r8   rÓ  z6ClassChecker._check_bases_classes.<locals>.is_abstractI  s   € Ø×%Ò%°uÐ%Ñ=Ô=Ð=r:   Nc                ó   — | d         S r�  rS   )rª  s    r8   r9   z3ClassChecker._check_bases_classes.<locals>.<lambda>R  s
   € ˜T !œW€ r:   )Úkeyr*  r»  )rš   r€   r\   r,   )
r   rÆ  r&   rC   r‘   rl  rQ  r¢  rc   r)   )rl   rh  rÓ  rí   rc   rš   Úowners          r8   r—  z!ClassChecker._check_bases_classesD  sé   € ð
	>ð 	>ð 	>ð 	>õ ˜TÑ"Ô"ð 	ØˆFåÝ*¨4°Ñ=Ô=×CÒCÑEÔEØ$Ð$ð
ñ 
ô 
ˆð $ð 	ð 	‰LˆD�&Ø”M×'Ò'Ñ)Ô)ˆEØ˜ˆ}ˆ}Øð �t”{Ð"Ð"àà×ÒØ!ØØ˜EœJ¨¬	Ð2Ý$ð	 ñ ô ð ð ð	ð 	r:   Ú
klass_nodec                ó¸  — | j                              d¦  «        s| j                              d¦  «        sdS t          |¦  «        }t          |¦  «        }t	          ¦   «         }|                     t          j        ¦  «        D �]Ü}|j        }t          |t          j
        ¦  «        r|j        dk    rŒ0t          |j        t          j        ¦  «        r<t          |j        j        t          j        ¦  «        r|j        j        j        dk    r dS 	 |j                             ¦   «         D �]}t          |t           j        ¦  «        rŒt          |t$          j        ¦  «        rGt          |j        t          j        ¦  «        r(t-          |j        ¦  «        r|j        j        dk    r  dS t          |t$          j        j        ¦  «        r  dS 	 |                     |¦  «        }	|                     t7          |	¦  «        ¦  «         ŒÛ# t8          $ r9 ||                     d¬¦  «        vr|                      d||j        ¬¦  «         Y �Œw xY w�ŒÈ# t$          j        $ r Y �ŒÚw xY w|                      ¦   «         D ]e\  }}	t7          |	¦  «        |v r dS tC          j"        |¦  «        r dS tG          |d	g¦  «        rŒB|                      d|j        |tH          ¬
¦  «         ŒfdS )z”Check that the __init__ method call super or ancestors'__init__
        method (unless it is used for type hinting with `typing.overload`).
        r,  r.  Nrg  r†  F©Úrecursrç  ztyping.overloadr«  )%r„  r  Ú_ancestors_to_callrI  rE   rñ   r   r‰   rŠ   r`   r‹   r�   rŒ   ra   rc   rF   r   rü   r�   r•   rõ   r	  r   rŽ   r�   rj  rÄ  r#   r  r   r¢  rç   rC   r   Úis_protocol_classr   r)   )
rl   rh  r×  Úto_callÚnot_called_yetÚparents_with_called_initsr­  rŒ   rì   rš   s
             r8   r  zClassChecker._check_inite  s  € ð Œ{×-Ò-Ø#ñ
ô 
ð 	à”+×0Ò0Ð1IÑJÔJð	ð ˆFÝ$ ZÑ0Ô0ˆÝ˜g™œˆÝ>A¹e¼eÐ!Ø×'Ò'­¬
Ñ3Ô3ð *	ñ *	ˆDØ”9ˆDÝ˜d¥E¤OÑ4Ô4ð ¸¼ÈÒ8SÐ8SØõ ˜4œ9¥e¤jÑ1Ô1ðå˜tœyœ~­u¬zÑ:Ô:ðð ”I”NÔ'¨7Ò2Ð2à��ðØ!œYŸ_š_Ñ.Ô.ð ñ �EÝ! %­Ô)=Ñ>Ô>ð !Ø õ # 5­'Ô*:Ñ;Ô;ðå& u¤~µu´~ÑFÔFðõ .¨e¬nÑ=Ô=ðð "œNÔ/°7Ò:Ð:à˜˜˜Ý! %­¬Ô)>Ñ?Ô?ð Ø˜˜˜ðØ!/×!3Ò!3°EÑ!:Ô!:˜à1×5Ò5Õ6FÀvÑ6NÔ6NÑOÔOÐOÐOøÝ#ð ð ð Ø ¨
×(<Ò(<ÀEÐ(<Ñ(JÔ(JÐJÐJØ ×,Ò,Ø 8¸tÈ%Ì*ð -ñ ô ð øùðøøøñ/øõ8 Ô)ð ð ð Ø‘ðøøøà+×1Ò1Ñ3Ô3ð 	ð 	‰MˆE�6õ   Ñ'Ô'Ð+DÐDÐDØ��åÔ& uÑ-Ô-ð Ø��å˜dÐ%6Ð$7Ñ8Ô8ð ØØ×ÒØ'Ø”ZØÝ$ð	 ñ ô ð ð ð	ð 	s=   ÄBI
Æ& I
Ç
7HÈI
È?IÉI
ÉIÉI
É
IÉIÚmethod1Ú	refmethodrÛ   c                óH  — t          |t          j        ¦  «        rt          |t          j        ¦  «        s|                      d||f|¬¦  «         dS |                     ¦   «         }t
          j                             ||¦  «        }t
          j                             ||¦  «        }|j        j        �|j        j        €dS t          |j
        ¦  «        rdS t          |¦  «        rdS t          ||| j        ¬¦  «        }d}t          |¦  «        dk    �rª|D �]¤}d|v �r%t          |j        j        ¦  «        }|j        j        r|dz  }|j        j        r|dz  }|j        j        r|t          |j        j        ¦  «        z  }t          |j        j        ¦  «        }	|j        j        r|	dz  }	|j        j        r|	dz  }	|j        j        r|	t          |j        j        ¦  «        z  }	d	}
|d
|	› d|j                             ¦   «         j
        › d|j
        › d|› d�	z   ||j                             ¦   «         j
        › d|j
        › �f}n_d|v r.d}
|||j                             ¦   «         j
        › d|j
        › �f}n-d	}
|||j                             ¦   «         j
        › d|j
        › �f}|                      |
||¬¦  «         �Œ¦dS t          |j        j        ¦  «        t          |j        j        ¦  «        k     r/|j        j        s%d}|                      d||j
        f|¬¦  «         dS dS dS )z8Check that the signature of the two given methods match.r  rŸ  N)r³   Ú
overridingr   ÚNumberr‚   r&  zwas z in 'r±  z' and is now z inÚrenamedr6  r¥   r(  )r`   r   rð   r¢  Úinstantiate_classr�   Úscoped_nodesÚfunction_to_methodrI   r   rc   r!   rÚ   r•  r†   rs   rr   rV   r‘   rl  Údefaults)rl   rà  rá  rÛ   ÚinstanceÚarg_differ_outputÚ
class_typer–  Útotal_args_method1Útotal_args_refmethodÚ
error_typeÚmsg_argss               r8   r  zClassChecker._check_signature­  sÎ  € õ �w¥Ô 1Ñ2Ô2ð	å˜9¥eÔ&7Ñ8Ô8ð	ð ×ÒØ%¨W°iÐ,@Àwð ñ ô ð ð ˆFà×(Ò(Ñ*Ô*ˆÝÔ&×9Ò9¸'À8ÑLÔLˆÝÔ(×;Ò;¸IÀxÑPÔPˆ	ð Œ<ÔÐ$¨	¬Ô(;Ð(CØˆFõ ˜7œ<Ñ(Ô(ð 	ØˆFõ ˜gÑ&Ô&ð 	ØˆFå1Ø�w°d´oð
ñ 
ô 
Ðð "ˆ
åÐ Ñ!Ô! AÒ%Ñ%Ø(ð &Jñ &J�Ø˜s�?‘?Ý),¨W¬\Ô->Ñ)?Ô)?Ð&Ø”|Ô*ð 0Ø*¨aÑ/Ð*Ø”|Ô)ð 0Ø*¨aÑ/Ð*Ø”|Ô.ð KØ*­c°'´,Ô2IÑ.JÔ.JÑJÐ*Ý+.¨y¬~Ô/BÑ+CÔ+CÐ(Ø ”~Ô,ð 2Ø,°Ñ1Ð,Ø ”~Ô+ð 2Ø,°Ñ1Ð,Ø ”~Ô0ð OØ,µ°I´NÔ4MÑ0NÔ0NÑNÐ,Ø!3�Jàð:Ð!5ð :ð :¸IÔ<L×<RÒ<RÑ<TÔ<TÔ<Yð :ð :Ð\eÔ\jð :ð :Ø"4ð:ð :ð :ñ:ð #Ø"œ>×/Ò/Ñ1Ô1Ô6ÐGÐG¸¼ÐGÐGð �H�Hð  #Ð%Ð%Ø!4�JàØ"Ø"œ>×/Ò/Ñ1Ô1Ô6ÐGÐG¸¼ÐGÐGð �H�Hð "4�JàØ"Ø"œ>×/Ò/Ñ1Ô1Ô6ÐGÐG¸¼ÐGÐGð �Hð
 × Ò  °(ÀÐ ÑIÔIÐIÑIðM&Jð &JõP �”Ô%Ñ&Ô&­¨Y¬^Ô-DÑ)EÔ)EÒEÐEØ”LÔ'ð Fð &ˆJØ×ÒØ#¨:°w´|Ð*DÈ7ð ñ ô ð ð ð ð	 FÐEÐEÐEr:   ú1nodes.Attribute | nodes.Assign | nodes.AssignAttrc                ó6   — |                       |j        ¦  «        S )zŸCheck that attribute lookup name use first attribute variable name.

        Name is `self` for method, `cls` for classmethod and `mcs` for metaclass.
        )r²  rŒ   rœ  s     r8   rn  z)ClassChecker._uses_mandatory_method_param	  s   € ð ×.Ò.¨t¬yÑ9Ô9Ð9r:   c                ó2  — | j         r| j         d         }n^t          j        |t          j        ¦  «        }|€dS |                     ¦   «         sdS |j        j        sdS |j        j        d         j        }t          |t          j	        ¦  «        o
|j        |k    S )zÂCheck if nodes.Name corresponds to first attribute variable name.

        Name is `self` for method, `cls` for classmethod and `mcs` for metaclass.
        Static methods return False.
        ry  NFr   )
rˆ  r   Úget_node_first_ancestor_of_typer   rð   rž   rI   rc   r`   ra   )rl   rh  Ú
first_attrÚclosest_funcs       r8   r²  z'ClassChecker._is_mandatory_method_param	  s¤   € ð Ôð 	8ØÔ*¨2Ô.ˆJˆJõ !Ô@Ø•eÔ'ñô ˆLð Ð#Ø�uØ×(Ò(Ñ*Ô*ð Ø�uØÔ$Ô)ð Ø�uØ%Ô*Ô/°Ô2Ô7ˆJÝ˜$¥¤
Ñ+Ô+ÐG°´	¸ZÒ0GÐGr:   )r„  r+   r\   rd  rq  )r\   r´   )rh  rÜ   r\   rd  )rh  rÜ   r¤  rÜ   r\   rd  )rù  rÜ   r\   rd  )rh  r€   r\   rd  )r   r€   r\   rd  )r:  r€   r;  r€   r\   rd  )r$  rD  r\   r,   )rh  rÜ   rX  rY  rZ  r[  r\   rd  )rW  r   rh  rÜ   r\   rd  )rh  rD  r\   rd  )rh  rr  r\   rd  )rŠ  r‹  r\   rd  )rh  r‹  r\   rd  )rh  r™  r\   rd  )rh  rY  r\   r,   )rŒ   rY  r\   r,   )rŠ   r   r\   r,   )rŒ   rY  rì   rÜ   r\   r,   ©rc   rW   rì   rÜ   r\   r,   )rh  rÜ   rp  rn  r\   rd  )rh  r€   rû  r,   r\   rd  )rÉ  rÊ  r�  rî   rh  r€   rË  rW   r•  rW   r\   rd  )rh  r€   r×  rÜ   r\   rd  )rà  r€   rá  r€   rÛ   rÜ   r\   rd  )rh  rñ  r\   r,   )9rO   rP   rQ   r£   rc   r]  ÚmsgsÚoptionsrg  r’  r   r•  r$   r�  r›  rÕ  r™  rš  râ  rÞ  rß  rà  rá  r'  Úvisit_asyncfunctiondefr  r  r  r  r˜  rV  rU  rk  Úleave_asyncfunctiondefrp  rm  rw  rv  ru  r�  rŽ  ro  r’  r¨  rŸ  r£  r¤  r¥  r  r  rÇ  r—  r  r  rn  r²  Ú__classcell__)r‰  s   @r8   rs  rs  û  s­  ø€ € € € € ðð ð €Dà€Dð $ðð Ø+ððð ð	
ð" *à#ØØ-ðð	ð ð		
ð 4à#ØØ-ðð	ð ð		
ð  ðð Ø:ð9ðð ð	
ð* 8à ØØ%ØVð	ð ð	
ðsB€GðH1ð 1ð 1ð 1ð 1ð 1ð
/ð /ð /ð /ð
 ð6ð 6ð 6ñ „_ð6ð  ÐØØØ&ØØ'ØØ$ØØØ%Ø Ø Øñô ð)ð )ð )ñô ð)ðKð Kð Kð Kð9ð 9ð 9ð 9ðvð ð ð ð:ð ð ð ð*  ÐØØ(Ø)ñô ð
	9ð 	9ð 	9ñô ð
	9ð6ð 6ð 6ð 6ðpWð Wð Wð Wð.1Wð 1Wð 1Wð 1WðfGð Gð Gð GðTað að að aðF /ÐðVð Vð Vð VðpDð Dð Dð Dð0ð 0ð 0ð 0ðd6ð 6ð 6ð 6ð$=ð =ð =ð =ðB ð  ð  ð  ðD"ð "ð "ð "ðH(ð (ð (ð (ð /Ðð5ð 5ð 5ð 5ð&Xð Xð Xð Xð  ÐØÐ4Ð6Wñô ð/ð /ð /ñô ð/ð
ð 
ð 
ð 
ð8Ið Ið Ið IðV  ÐØÐ6Ð8Sñô ð5ð 5ð 5ñô ð5ð%8ð %8ð %8ð %8ðNiKð iKð iKð iKðV ð6ð 6ð 6ñ „\ð6ð

ð 
ð 
ð 
ð ð
ð 
ð 
ñ „\ð
ð ð*ð *ð *ñ „\ð*ð ðð ð ñ „\ðð"<ð <ð <ð <ð|LLð LLð LLð LLð\Lð Lð Lð Lð ð ð ð ðBFð Fð Fð FðPUð Uð Uð Uðn:ð :ð :ð :ðHð Hð Hð Hð Hð Hð Hð Hr:   rs  rg  r×  r•  ú)dict[nodes.ClassDef, bases.UnboundMethod]c                ó  — i }|                       d¬¦  «        D ]o}	 t          |                     |¦  «        ¦  «        }t          |t          j        ¦  «        sŒ@|                     ¦   «         rŒU|||<   Œ[# t          j        $ r Y Œlw xY w|S )z™Return a dictionary where keys are the list of base classes providing
    the queried method, and so that should/may be called from the method node.
    FrÙ  )r   rò   Úigetattrr`   r�   rö   rÓ  rç   )r×  r•  rÝ  Ú	base_nodeÚ	init_nodes        r8   rÛ  rÛ  $	  s­   € ð :<€GØ×)Ò)°Ð)Ñ7Ô7ð 	ð 	ˆ	ð	Ý˜Y×/Ò/°Ñ<Ô<Ñ=Ô=ˆIÝ˜i­Ô)>Ñ?Ô?ð ØØ×$Ò$Ñ&Ô&ð ØØ!*ˆG�IÑÐøÝÔ%ð 	ð 	ð 	ØˆHð	øøøà€Ns   œ<A4ÁA4Á.A4Á4BÂB)rZ   r[   r\   rH   )rg   rh   r\   rU   )rv   rU   rZ   rH   r\   r,   )r   r€   r\   r,   )rš   r€   r\   r›   )r¤   rh   r¥   rh   r\   r,   )r¤   r›   r¥   r›   r³   r´   r\   rK   )r¤   r›   r¥   r›   r\   rK   )r¤   r€   r¥   r€   r³   r´   r\   rK   )rÛ   rÜ   r\   r,   )rÛ   rÜ   rá   rW   r\   r,   )rŠ   r   rì   rÜ   rí   rî   r\   r,   r÷  )r  r  r  r  r\   r,   )r\   r^  )rg  )r×  rÜ   r•  rW   r\   rý  )^r£   Ú
__future__r   Úcollectionsr   Úcollections.abcr   r   rF  r   Ú	itertoolsr   r	   Úrer
   Útypingr   r   r   r   r�   r   r   r   Úastroid.nodesr   Úastroid.typingr   Úpylint.checkersr   r   Úpylint.checkers.utilsr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   Úpylint.interfacesr(   r)   Úpylint.typingr*   Úpylint.lint.pylinterr+   r‹   rõ  ri  rÞ   r  ÚBUILTIN_DECORATORSrS  r	  rz  ÚListr¼  ra   r«   rH   rU   rf   ru   r~   r™   r    r¢   rª   r²   r¿   rÈ   rÚ   rà   rë   rú   r   r  r]  rR   ra  rc  rs  rÛ  rS   r:   r8   ú<module>r     sÐ  ðð
 'Ð &Ð &à "Ð "Ð "Ð "Ð "Ð "à #Ð #Ð #Ð #Ð #Ð #Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8à €€€Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø *Ð *Ð *Ð *Ð *Ð *Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð( .Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0àð .Ø-Ð-Ð-Ð-Ð-Ð-ð �U”_ eÔ&6Ð6Ô7€à?Ð?Ð?Ð Ø(Ð*EÐFÐ Ø)Ð+AÐBÐ à	„KÐ0Ð0Ø	„NÐ3Ð3Ø	„KÐ.Ð.Ø	„JÐ-Ð-Ø	„JÐ/Ð/Ø	„JÐ=Ð=ðÐ ðð ð ð ð �Zñ ô ð ðð ð ð ð ˜*ñ ô ð ð@ð @ð @ð @ð:	@ð 	@ð 	@ð 	@ðRð Rð Rð Rð.2ð 2ð 2ð 2ðpð ð ð ðHð Hð Hð Hð Hñ Hô Hð Hð #�?Ñ$Ô$Ð ð+ð +ð +ð +ð\ð ð ð ð>ð ð ð ð.Jð Jð Jð JðZGð Gð Gð Gðð ð ð ð&ð ð ð ðB!ð !ð !ð !ðHð ð ð ðk+Øð ðk+ð ð ðk+ð ð ðk+ð( ð ð)k+ð2 ð ð3k+ð@ ð ðAk+ðL ð ðMk+ðX ð ðYk+ðf ð ðgk+ðv ð ðwk+ðF ð ðGk+ðV ð ðWk+ðd ð ðek+ðr ð ðsk+ð~ ð ðk+ðJ ð ðKk+ðV ð ðWk+ð k+ðb Ø;Ø#ð	ð 
Ð<Ð=Ð>ððck+ðr ð ðsk+ð@ ð ðAk+ðL ð ðMk+ðV ð ðWk+ð` ð ðak+ðj ð ðkk+ðt ð ðuk+ð@ ð ðAk+ðJ ð ðKk+ðT ð ðUk+ð` ð ðak+ðj ð ðkk+ðt ð ðuk+ð~ ð ðk+ðH ð ðIk+ðT ð ðUk+ð k+ð`ð
ð
ð
ððKk+ð k+ð k+€ð kð kð kñ kð\ð ð ð ð
+ð +ð +ð +ð +ñ +ô +ð +ð,fHð fHð fHð fHð fH�;ñ fHô fHð fHðT1 4>ðð ð ð ð ð ð r:   