§
    öyIf²W  ã                  óä   — d Z ddlmZ ddlZddlmZ ddlmZ ddlZddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddhZ ed¦  «        ZdZd d„Zd!d„Zd"d„Zd#d„Z G d„ de¦  «        ZdS )$z+Basic Error checker from the basic checker.é    )ÚannotationsN)ÚIterator)ÚAny)Únodes)ÚInferenceResult)Úutils)Ú_BasicChecker)Ú	infer_all)ÚHIGHz_py_abc.ABCMetazabc.ABCMeta)Ú
__module__ztyping.ForwardRefÚ
break_nodeúnodes.BreakÚreturnúnodes.For | nodes.While | Nonec                óè   — t           j        t           j        f}| j        }t	          ||¦  «        r| t          |dg ¦  «        v r/|} |j        }|€n#t	          ||¦  «        ¯| t          |dg ¦  «        v °/|S )zçReturns the loop node that holds the break node in arguments.

    Args:
        break_node (astroid.Break): the break node of interest.

    Returns:
        astroid.For or astroid.While: the loop node holding the break node.
    Úorelse)r   ÚForÚWhileÚparentÚ
isinstanceÚgetattr)r   Ú
loop_nodesr   s      ú\/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/base/basic_error_checker.pyÚ_get_break_loop_noder      s›   € õ ”)�Uœ[Ð)€JØÔ€FÝ˜ Ñ,Ô,ð °
½gØ�˜"ñ?ô ?ð 1ð 1ð ˆ
Ø”ˆØˆ>Øõ ˜ Ñ,Ô,ð °
½gØ�˜"ñ?ô ?ð 1ð 1ð €Mó    Úloopúnodes.For | nodes.WhileÚboolc                ó   ‡ ‡— t           j        t           j        f}t           j        t           j        f}ˆ fd„‰                      ||¬¦  «        D ¦   «         Št          ˆfd„‰                      t           j        |¬¦  «        D ¦   «         ¦  «        S )zèReturns true if a loop may end with a break statement.

    Args:
        loop (astroid.For, astroid.While): the loop node inspected.

    Returns:
        bool: True if the loop may end with a break statement, False otherwise.
    c                ó    •— g | ]
}|‰k    ¯|‘ŒS © r!   )Ú.0Ú_noder   s     €r   ú
<listcomp>z%_loop_exits_early.<locals>.<listcomp><   s*   ø€ ð 7ð 7ð 7àØ�DŠ=ˆ=ð 	àˆ=ˆ=r   ©Ú
skip_klassc              3  ó>   •K  — | ]}t          |¦  «        ‰v¯|V — Œd S ©N)r   )r"   r#   Úinner_loop_nodess     €r   ú	<genexpr>z$_loop_exits_early.<locals>.<genexpr>A   sC   øè è € ð ð àÝ Ñ&Ô&Ð.>Ð>Ð>ð 	à>Ð>Ð>Ð>ðð r   )r   r   r   ÚFunctionDefÚClassDefÚnodes_of_classÚanyÚBreak)r   r   Údefinition_nodesr)   s   `  @r   Ú_loop_exits_earlyr1   1   s±   øø€ õ ”)�Uœ[Ð)€JÝÔ)­5¬>Ð:Ðð7ð 7ð 7ð 7à×(Ò(¨Ð@PÐ(ÑQÔQð7ñ 7ô 7Ðõ
 ð ð ð ð à×(Ò(­¬ÐAQÐ(ÑRÔRðñ ô ñ ô ð r   Únodeúnodes.ClassDefc                óL   — t          t          j        | ¦  «        ¦  «        dk    S )z�Determine if the given `node` has abstract methods.

    The methods should be made abstract by decorating them
    with `abc` decorators.
    r   )Úlenr   Úunimplemented_abstract_methods©r2   s    r   Ú_has_abstract_methodsr8   H   s"   € õ �uÔ3°DÑ9Ô9Ñ:Ô:¸QÒ>Ð>r   únodes.FunctionDefc                óª   — | j         rK| j         j        D ]>}t          |t          j        ¦  «        r"t	          |j        dd¦  «        | j        k    r dS Œ?dS )zÉReturn True if the object is a method redefined via decorator.

    For example:
        @property
        def x(self): return self._x
        @x.setter
        def x(self, value): self._x = value
    ÚnameNTF)Ú
decoratorsr   r   Ú	Attributer   Úexprr;   )r2   Ú	decorators     r   Úredefined_by_decoratorr@   Q   s^   € ð „ð ØœÔ.ð 	ð 	ˆIå˜9¥e¤oÑ6Ô6ðå˜IœN¨F°DÑ9Ô9¸T¼YÒFÐFà�t�tøØˆ5r   c            	      óÔ  — e Zd Zi dd“dd“dd“dd“d	d
“dd“ddddddif“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,ifi¥Zdsd/„Z ej        d0¦  «        dtd3„¦   «         Zdud7„Z ej        d8d9¦  «        dvd;„¦   «         Z	 ej        d<¦  «        dwd>„¦   «         Z
 ej        d?d@d0ddAdBd)¦  «        dxdD„¦   «         ZeZdxdE„ZdxdF„Z ej        dG¦  «        dydI„¦   «         Z ej        dJ¦  «        dzdL„¦   «         Z ej        dJ¦  «        d{dN„¦   «         Z ej        dOdP¦  «        d|dR„¦   «         Z ej        dO¦  «        d}dT„¦   «         Z ej        dU¦  «        d~dW„¦   «         Z ej        dU¦  «        ddY„¦   «         Z ej        dZ¦  «        d€d\„¦   «         Zd�d`„Z ej        da¦  «        d‚db„¦   «         Z ej        dc¦  «        dƒde„¦   «         Zd„dh„Zdzdi„Zd…dk„Zd†dn„Zd‡dq„ZdrS )ˆÚBasicErrorCheckerÚE0100)z__init__ method is a generatorúinit-is-generatorz^Used when the special class method __init__ is turned into a generator by a yield in its body.ÚE0101)zExplicit return in __init__úreturn-in-initzIUsed when the special class method __init__ has an explicit return value.ÚE0102)z%s already defined line %súfunction-redefinedz3Used when a function / class / method is redefined.ÚE0103)z%r not properly in loopúnot-in-loopz=Used when break or continue keywords are used outside a loop.ÚE0104)zReturn outside functionúreturn-outside-functionzEUsed when a "return" statement is found outside a function or method.ÚE0105)zYield outside functionúyield-outside-functionzDUsed when a "yield" statement is found outside a function or method.ÚE0106z%Return with argument inside generatorzreturn-arg-in-generatorzUsed when a "return" statement with an argument is found in a generator function or method (e.g. with some "yield" statements).Ú
maxversion)é   rQ   ÚE0107)z#Use of the non-existent %s operatorúnonexistent-operatorzzUsed when you attempt to use the C-style pre-increment or pre-decrement operator -- and ++, which doesn't exist in Python.ÚE0108)z1Duplicate argument name %s in function definitionúduplicate-argument-namezCDuplicate argument names in function definitions are syntax errors.ÚE0110)z4Abstract class %r with abstract methods instantiatedúabstract-class-instantiatedzeUsed when an abstract class with `abc.ABCMeta` as metaclass has abstract methods and is instantiated.ÚW0120)zcElse clause on loop without a break statement, remove the else and de-indent all the code inside itúuseless-else-on-loopz¨Loops should only have an else clause if they can exit early with a break statement, otherwise the statements under else should be on the same scope as the loop itself.ÚE0112)z.More than one starred expression in assignmentútoo-many-star-expressionszhEmitted when there are more than one starred expressions (`*x`) in an assignment. This is a SyntaxError.ÚE0113)z4Starred assignment target must be in a list or tupleúinvalid-star-assignment-targetzFEmitted when a star expression is used as a starred assignment target.ÚE0114)z4Can use starred expression only in assignment targetústar-needs-assignment-targetzCEmitted when a star expression is not used in an assignment target.ÚE0115)zName %r is nonlocal and globalúnonlocal-and-globalz0Emitted when a name is both nonlocal and global.ÚE0116)z0'continue' not supported inside 'finally' clauseúcontinue-in-finallyz]Emitted when the `continue` keyword is found inside a finally clause, which is a SyntaxError.ÚE0117)z&nonlocal name %s found without bindingúnonlocal-without-bindingz^Emitted when a nonlocal variable does not have an attached name somewhere in the parent scopesÚE0118z+Name %r is used prior to global declarationúused-prior-global-declarationzcEmitted when a name is used prior a global declaration, which results in an error since Python 3.6.Ú
minversion)rQ   é   r   ÚNonec                ó>   — | j         j        j        }|dk    | _        d S )N)rQ   é   )ÚlinterÚconfigÚ
py_versionÚ
_py38_plus)Úselfro   s     r   ÚopenzBasicErrorChecker.openÐ   s   € Ø”[Ô'Ô2ˆ
Ø$¨Ò.ˆŒˆˆr   rH   r2   r3   c                ó2   — |                       d|¦  «         d S )NÚclass)Ú_check_redefinition©rq   r2   s     r   Úvisit_classdefz BasicErrorChecker.visit_classdefÔ   s   € à× Ò  ¨$Ñ/Ô/Ð/Ð/Ð/r   Úassign_tupleúnodes.Tupler   c                óà   — d}|                      ¦   «         D ]R}t          |t          j        ¦  «        r|                      |¦  «        c S t          |t          j        ¦  «        r|dz  }ŒS|dk    S )Nr   é   )Úiteredr   r   ÚTupleÚ_too_many_starred_for_tupleÚStarred)rq   rx   Ústarred_countÚelems       r   r~   z-BasicErrorChecker._too_many_starred_for_tupleØ   sz   € ØˆØ ×'Ò'Ñ)Ô)ð 	#ð 	#ˆDÝ˜$¥¤Ñ,Ô,ð >Ø×7Ò7¸Ñ=Ô=Ð=Ð=Ð=Ý˜$¥¤Ñ.Ô.ð #Ø Ñ"�øØ˜qÒ Ð r   r[   r]   únodes.Assignc                ó,  — |j         d         }t          |j         d         t          j        ¦  «        r|                      d|¬¦  «         t          |t          j        ¦  «        sd S |                      |¦  «        r|                      d|¬¦  «         d S d S )Nr   r]   r7   r[   )Útargetsr   r   r   Úadd_messager}   r~   )rq   r2   Úassign_targets      r   Úvisit_assignzBasicErrorChecker.visit_assigná   s    € ð
 œ Qœˆå�d”l 1”o¥u¤}Ñ5Ô5ð 	JØ×ÒÐ=ÀDÐÑIÔIÐIå˜-­¬Ñ5Ô5ð 	ØˆFØ×+Ò+¨MÑ:Ô:ð 	EØ×ÒÐ8¸tÐÑDÔDÐDÐDÐDð	Eð 	Er   r_   únodes.Starredc                ó¦  — t          |j        t          j        ¦  «        rdS t          |j        t          j        t          j        t          j        t          j        f¦  «        rdS |                     ¦   «         }t          |t          j	        ¦  «        sdS |j
        |u s|j
                             |¦  «        r|                      d|¬¦  «         dS dS )z@Check that a Starred expression is used in an assignment target.Nr_   r7   )r   r   r   ÚCallÚListr}   ÚSetÚDictÚ	statementÚAssignÚvalueÚ	parent_ofr…   )rq   r2   Ústmts      r   Úvisit_starredzBasicErrorChecker.visit_starredð   s½   € õ �d”k¥5¤:Ñ.Ô.ð 	ð ˆFÝ�d”k¥E¤Jµ´½U¼YÍÌ
Ð#SÑTÔTð 	àˆFà�~Š~ÑÔˆÝ˜$¥¤Ñ-Ô-ð 	ØˆFàŒ:˜ÐÐ ¤×!5Ò!5°dÑ!;Ô!;ÐØ×ÒÐ;À$ÐÑGÔGÐGÐGÐGð Ðr   rD   rF   rU   ra   r9   c                óx  — |                       |¦  «         |                      |¦  «         t          |¦  «        s@t          j        |¦  «        s,|                      |                     ¦   «         rdpd|¦  «         |                     t          j	        t          j
        t          j        f¬¦  «        }|                     ¦   «         rs|j        dk    rh|                     ¦   «         r|                      d|¬¦  «         n<d„ |D ¦   «         }t          d„ |D ¦   «         ¦  «        r|                      d	|¬¦  «         i }t!          d |j        j        |j        j        g¦  «        }t&          j                             |¦  «        D ]:}|j        |v r%|                      d
||j        ft,          ¬¦  «         Œ0|||j        <   Œ;d S )NÚmethodÚfunctionr%   Ú__init__rD   r7   c                ó   — g | ]	}|j         ‘Œ
S r!   )r�   )r"   Úrs     r   r$   z7BasicErrorChecker.visit_functiondef.<locals>.<listcomp>  s   € Ð3Ð3Ð3 a˜!œ'Ð3Ð3Ð3r   c              3  óB   K  — | ]}t          j        |¦  «        °|V — Œd S r(   )r   Úis_none)r"   Úvs     r   r*   z6BasicErrorChecker.visit_functiondef.<locals>.<genexpr>  s1   è è € ÐAÐA˜Qµ´¸aÑ0@Ô0@ÐA�qÐAÐAÐAÐAÐAÐAr   rF   rU   )r2   ÚargsÚ
confidence)Ú_check_nonlocal_and_globalÚ_check_name_used_prior_globalr@   r   Ú(is_registered_in_singledispatch_functionru   Ú	is_methodr-   r   ÚReturnr+   r,   r;   Úis_generatorr…   r.   Úfilterr�   Ú
kwonlyargsÚ	itertoolsÚchainÚfrom_iterabler   )rq   r2   ÚreturnsÚvaluesÚarg_clustersÚ	argumentsÚargs          r   Úvisit_functiondefz#BasicErrorChecker.visit_functiondef  sé  € ð 	×'Ò'¨Ñ-Ô-Ð-Ø×*Ò*¨4Ñ0Ô0Ð0Ý%Øñ
ô 
ð 	XåÔ@ÀÑFÔFð	Xð ×$Ò$ T§^¢^Ñ%5Ô%5Ð%B¸(Ð%PÀjÐRVÑWÔWÐWà×%Ò%ÝŒL¥eÔ&7½¼Ð%Hð &ñ 
ô 
ˆð �>Š>ÑÔð 	B ¤	¨ZÒ 7Ð 7Ø× Ò Ñ"Ô"ð BØ× Ò Ð!4¸4Ð Ñ@Ô@Ð@Ð@à3Ð3¨7Ð3Ñ3Ô3�åÐAÐA &ÐAÑAÔAÑAÔAð BØ×$Ò$Ð%5¸DÐ$ÑAÔAÐAàˆÝ#)¨$°´´ÀÄÔAUÐ0VÑ#WÔ#Wˆ	Ý”?×0Ò0°Ñ;Ô;ð 		-ð 		-ˆCØŒx˜<Ð'Ð'Ø× Ò Ø-ØØœ(˜Ý#ð	 !ñ ô ð ð ð *-�˜SœXÑ&Ð&ð		-ð 		-r   c                óp  ‡— ˆfd„‰                      t          j        ¦  «        D ¦   «         }|sd S ‰                      t          j        ¦  «        D ]e}|                     ¦   «         ‰urŒ|j        }|                     |¦  «        }|sŒ8|j        }|r$||j        k    r|                      d||f¬¦  «         Œfd S )Nc                óV   •— i | ]%}|j         D ]}|                     ¦   «         ‰u ¯||“ŒŒ&S r!   )ÚnamesÚscope)r"   Úchildr;   r2   s      €r   ú
<dictcomp>zCBasicErrorChecker._check_name_used_prior_global.<locals>.<dictcomp>/  sQ   ø€ ð 
ð 
ð 
àØœð
ð 
ð Ø�{Š{‰}Œ} Ð$Ð$ð �%ð %Ð$Ð$Ð$r   rg   ©r2   r�   )	r-   r   ÚGlobalÚNamer³   r;   ÚgetÚ
fromlinenor…   )rq   r2   Úscope_globalsÚ	node_namer;   Úcorresponding_globalÚglobal_linenos    `     r   r    z/BasicErrorChecker._check_name_used_prior_global.  sõ   ø€ ð
ð 
ð 
ð 
à×,Ò,­U¬\Ñ:Ô:ð
ñ 
ô 
ˆð ð 	ØˆFà×,Ò,­U¬ZÑ8Ô8ð 	ð 	ˆIØ�ŠÑ Ô ¨Ð,Ð,Øà”>ˆDØ#0×#4Ò#4°TÑ#:Ô#:Ð Ø'ð Øà0Ô;ˆMØð  °Ô1EÒ!EÐ!EØ× Ò Ø3¸)È4È'ð !ñ ô ð øð	ð 	r   c                ó¦  ‡‡— dˆfd„Št           j        j        }t           |ˆfd„‰                     t
          j        ¦  «        D ¦   «         ¦  «        ¦  «        }|sdS t           |ˆfd„‰                     t
          j        ¦  «        D ¦   «         ¦  «        ¦  «        }|                     |¦  «        D ]}|  	                    d	|f‰¬
¦  «         ŒdS )z.Check that a name is both nonlocal and global.Úcurrentúnodes.Global | nodes.Nonlocalr   r   c                ó0   •— |                       ¦   «         ‰u S r(   )r³   )rÀ   r2   s    €r   Ú
same_scopez@BasicErrorChecker._check_nonlocal_and_global.<locals>.same_scopeK  s   ø€ Ø—=’=‘?”? dÐ*Ð*r   c              3  ó<   •K  — | ]} ‰|¦  «        ¯|j         V — Œd S r(   ©r²   ©r"   r´   rÃ   s     €r   r*   z?BasicErrorChecker._check_nonlocal_and_global.<locals>.<genexpr>P  óI   øè è € ð ð àØ�:˜eÑ$Ô$ðØ”ðð ð ð ð ð r   Nc              3  ó<   •K  — | ]} ‰|¦  «        ¯|j         V — Œd S r(   rÅ   rÆ   s     €r   r*   z?BasicErrorChecker._check_nonlocal_and_global.<locals>.<genexpr>[  rÇ   r   ra   ©r�   r2   )rÀ   rÁ   r   r   )
r§   r¨   r©   Úsetr-   r   ÚNonlocalr·   Úintersectionr…   )rq   r2   Ú	from_iterÚ	nonlocalsÚglobal_varsr;   rÃ   s    `    @r   rŸ   z,BasicErrorChecker._check_nonlocal_and_globalH  s3  øø€ ð	+ð 	+ð 	+ð 	+ð 	+ð 	+õ ”OÔ1ˆ	ÝØˆIð ð ð ð à!×0Ò0µ´Ñ@Ô@ðñ ô ñ ô ñ
ô 
ˆ	ð ð 	ØˆFåØˆIð ð ð ð à!×0Ò0µ´Ñ>Ô>ðñ ô ñ ô ñ
ô 
ˆð ×*Ò*¨;Ñ7Ô7ð 	Mð 	MˆDØ×ÒÐ2¸$¸ÀtÐÑLÔLÐLÐLð	Mð 	Mr   rL   únodes.Returnc                ó�   — t          |                     ¦   «         t          j        ¦  «        s|                      d|¬¦  «         d S d S )NrL   r7   )r   Úframer   r+   r…   rv   s     r   Úvisit_returnzBasicErrorChecker.visit_returnd  sL   € å˜$Ÿ*š*™,œ,­Ô(9Ñ:Ô:ð 	CØ×ÒÐ6¸TÐÑBÔBÐBÐBÐBð	Cð 	Cr   rN   únodes.Yieldc                ó0   — |                       |¦  «         d S r(   ©Ú_check_yield_outside_funcrv   s     r   Úvisit_yieldzBasicErrorChecker.visit_yieldi  ó   € à×&Ò& tÑ,Ô,Ð,Ð,Ð,r   únodes.YieldFromc                ó0   — |                       |¦  «         d S r(   rÖ   rv   s     r   Úvisit_yieldfromz!BasicErrorChecker.visit_yieldfromm  rÙ   r   rJ   rc   únodes.Continuec                ó2   — |                       |d¦  «         d S )NÚcontinue©Ú_check_in_looprv   s     r   Úvisit_continuez BasicErrorChecker.visit_continueq  s   € à×Ò˜D *Ñ-Ô-Ð-Ð-Ð-r   r   c                ó2   — |                       |d¦  «         d S )NÚbreakrà   rv   s     r   Úvisit_breakzBasicErrorChecker.visit_breaku  s   € à×Ò˜D 'Ñ*Ô*Ð*Ð*Ð*r   rY   ú	nodes.Forc                ó0   — |                       |¦  «         d S r(   ©Ú_check_else_on_looprv   s     r   Ú	visit_forzBasicErrorChecker.visit_fory  ó   € à× Ò  Ñ&Ô&Ð&Ð&Ð&r   únodes.Whilec                ó0   — |                       |¦  «         d S r(   rè   rv   s     r   Úvisit_whilezBasicErrorChecker.visit_while}  rë   r   rS   únodes.UnaryOpc                ó   — |j         dv rnt          |j        t          j        ¦  «        rQ|j        j         |j         k    r>|j        dz   |j        j        k    r(|                      d||j         dz  ¬¦  «         dS dS dS dS dS )z2Check use of the non-existent ++ and -- operators.z+-r{   rS   é   r¶   N)Úopr   Úoperandr   ÚUnaryOpÚ
col_offsetr…   rv   s     r   Úvisit_unaryopzBasicErrorChecker.visit_unaryop�  sŒ   € ð ŒW˜ˆ_ˆ_Ý˜4œ<­¬Ñ7Ô7ð à”” D¤GÒ+Ð+Ø” 1Ñ$¨¬Ô(?Ò?Ð?à×ÒÐ3¸$ÀTÄWÈqÁ[ÐÑQÔQÐQÐQÐQð ˆ_ˆ_ˆ_à+Ð+Ø?Ð?r   únodes.Nonlocalr;   Ústrc                óª  — |                      ¦   «         }|j        �|t          |t          j        t          j        f¦  «        s|                      d|f|¬¦  «         d S ||                      ¦   «         u s	||j        vr|j                              ¦   «         }Œ�d S t          |t          j        ¦  «        s!|                      d|f|t          ¬¦  «         d S d S )Nre   rÉ   )r�   r2   rž   )	r³   r   r   r   r,   r+   r…   Úlocalsr   )rq   r2   r;   Úcurrent_scopes       r   Ú_check_nonlocal_without_bindingz1BasicErrorChecker._check_nonlocal_without_bindingŒ  sê   € ØŸ
š
™œˆØÔ"Ð.Ý˜m­e¬n½eÔ>OÐ-PÑQÔQð Ø× Ò Ð!;À4À'ÐPTÐ ÑUÔUÐUØ�ð
  §
¢
¡¤Ð,Ð,°¸MÔ<PÐ0PÐ0PØ -Ô 4× :Ò :Ñ <Ô <�Øð ˆFå˜-­Ô):Ñ;Ô;ð 	Ø×ÒØ*°$°¸tÕPTð ñ ô ð ð ð ð	ð 	r   re   c                óF   — |j         D ]}|                      ||¦  «         Œd S r(   )r²   rü   )rq   r2   r;   s      r   Úvisit_nonlocalz BasicErrorChecker.visit_nonlocal¢  s6   € à”Jð 	=ð 	=ˆDØ×0Ò0°°tÑ<Ô<Ð<Ð<ð	=ð 	=r   rW   ú
nodes.Callc                ó`   — t          |j        ¦  «        D ]}|                      ||¦  «         ŒdS )zRCheck instantiating abstract class with
        abc.ABCMeta as metaclass.
        N)r
   ÚfuncÚ!_check_inferred_class_is_abstract)rq   r2   Úinferreds      r   Ú
visit_callzBasicErrorChecker.visit_call§  sD   € õ
 " $¤)Ñ,Ô,ð 	Cð 	CˆHØ×2Ò2°8¸TÑBÔBÐBÐBð	Cð 	Cr   r  r   c                óÜ  — t          |t          j        ¦  «        sd S t          j        |¦  «        }||u rd S t          |¦  «        }|sd S |                     ¦   «         }|€Q|                     ¦   «         D ]:}|                     ¦   «         dk    r |  	                    d|j
        f|¬¦  «          nŒ;d S |                     ¦   «         t          v r |  	                    d|j
        f|¬¦  «         d S d S )Nzabc.ABCrW   rÉ   )r   r   r,   r   Únode_frame_classr8   Ú	metaclassÚ	ancestorsÚqnamer…   r;   ÚABC_METACLASSES)rq   r  r2   ÚklassÚabstract_methodsr  Úancestors          r   r  z3BasicErrorChecker._check_inferred_class_is_abstract¯  s2  € õ ˜(¥E¤NÑ3Ô3ð 	ØˆFåÔ& tÑ,Ô,ˆØ�HÐÐð
 ˆFõ 1°Ñ:Ô:Ðàð 	ØˆFà×&Ò&Ñ(Ô(ˆ	àÐð %×.Ò.Ñ0Ô0ð ð �Ø—>’>Ñ#Ô# yÒ0Ð0Ø×$Ò$Ø5¸X¼]Ð<LÐSWð %ñ ô ð ð �Eð	 1ð ˆFà�?Š?ÑÔ¥Ð/Ð/Ø×ÒØ-°X´]Ð4DÈ4ð ñ ô ð ð ð ð 0Ð/r   c                ó¨   — t          |                     ¦   «         t          j        t          j        f¦  «        s|                      d|¬¦  «         d S d S )NrN   r7   )r   rÒ   r   r+   ÚLambdar…   rv   s     r   r×   z+BasicErrorChecker._check_yield_outside_funcÖ  sS   € Ý˜$Ÿ*š*™,œ,­Ô):½E¼LÐ(IÑJÔJð 	BØ×ÒÐ5¸DÐÑAÔAÐAÐAÐAð	Bð 	Br   r   c                ó�   — |j         r<t          |¦  «        s/|                      d||j         d         j        dz
  ¬¦  «         dS dS dS )z>Check that any loop with an else clause has a break statement.rY   r   r{   )r2   ÚlineN)r   r1   r…   Úlinenorv   s     r   ré   z%BasicErrorChecker._check_else_on_loopÚ  sp   € àŒ;ð 	Õ0°Ñ6Ô6ð 	Ø×ÒØ&Øð ”[ ”^Ô*¨QÑ.ð ñ ô ð ð ð ð	ð 	ð 	ð 	r   únodes.Continue | nodes.Breakr¼   c                óÎ  — |                      ¦   «         D ]·}t          |t          j        t          j        f¦  «        r||j        vr dS t          |t          j        t          j        f¦  «        r n\t          |t          j        ¦  «        rA||j	        v r8t          |t          j
        ¦  «        r| j        s|                      d|¬¦  «         Œ¸|                      d||¬¦  «         dS )z0Check that a node is inside a for or while loop.Nrc   r7   rJ   r¶   )Únode_ancestorsr   r   r   r   r   r,   r+   ÚTryÚ	finalbodyÚContinuerp   r…   )rq   r2   r¼   r   s       r   rá   z BasicErrorChecker._check_in_loopæ  sð   € ð ×)Ò)Ñ+Ô+ð 	Cð 	CˆFÝ˜&¥5¤9­e¬kÐ":Ñ;Ô;ð Ø˜vœ}Ð,Ð,Ø�F�Få˜&¥5¤>µ5Ô3DÐ"EÑFÔFð Ø�å˜6¥5¤9Ñ-Ô-ðCà˜FÔ,Ð,Ð,Ý˜t¥U¤^Ñ4Ô4ð -àœð -ð × Ò Ð!6¸TÐ ÑBÔBÐBøà×Ò˜¨T¸	ÐÑBÔBÐBÐBÐBr   Ú	redeftypeúnodes.Call | nodes.FunctionDefc                ó  — |j                              ¦   «         }d„ |j        |j                 D ¦   «         }t	          d„ |D ¦   «         |¦  «        }||u�r³t          j        ||¦  «        �sŸt          |t          j	        ¦  «        r|j        t          v rdS t          j        |¦  «        rdS t          |j         t          j        ¦  «        �rit          |j         j        t          j        ¦  «        r_|j         j        j        dk    rJt          |j         j        j        t          j        ¦  «        r!|j         j        j        j        |j        k    rdS t          |j         j        t          j        ¦  «        rÂt          |j         j        j        t          j        ¦  «        r™|j         j        j        j        |j        k    rz|j         j        j        d         d         dk    rYt          |j         j        j        d         d         t          j        ¦  «        r$|j         j        j        d         d         j        €dS 	 |                     |¦  «        }|d|…         D ]R}t          j        |¦  «        }|r:t          |t
          j        ¦  «        r |                     ¦   «         t8          k    r dS ŒSn# t:          $ r Y nw xY w| j        j        j         }	|	r|	 !                    |j        ¦  «        rdS |  "                    d|||j#        f¬	¦  «         dS dS dS )
z;Check for redefinition of a function / method / class name.c                óh   — g | ]/}t          |j        t          j        ¦  «        r|j        j        °-|‘Œ0S r!   )r   r   r   Ú	AnnAssignÚsimple)r"   Úis     r   r$   z9BasicErrorChecker._check_redefinition.<locals>.<listcomp>  sK   € ð 
ð 
ð 
àÝ˜qœx­¬Ñ9Ô9ð
ð ?@¼h¼oð
Øð
ð 
ð 
r   c              3  óB   K  — | ]}t          j        |¦  «        °|V — Œd S r(   )r   Úis_overload_stub)r"   Úlocals     r   r*   z8BasicErrorChecker._check_redefinition.<locals>.<genexpr>  s2   è è € ÐSÐS�uµUÔ5KÈEÑ5RÔ5RÐSˆUÐSÐSÐSÐSÐSÐSr   NÚnotr   Úisr{   rH   r¶   )$r   rÒ   rú   r;   ÚnextÚastroidÚare_exclusiver   r   r,   ÚREDEFINABLE_METHODSr   r!  ÚIfÚtestrô   rò   ró   r¸   ÚCompareÚleftÚopsÚConstr�   ÚindexÚ
safe_inferÚInstancer	  ÚTYPING_FORWARD_REF_QNAMEÚ
ValueErrorrm   rn   Údummy_variables_rgxÚmatchr…   rº   )
rq   r  r2   Úparent_frameÚredefinitionsÚdefined_selfÚredefinition_indexÚredefinitionr  r4  s
             r   ru   z%BasicErrorChecker._check_redefinitionû  s  € ð ”{×(Ò(Ñ*Ô*ˆð
ð 
à!Ô(¨¬Ô3ð
ñ 
ô 
ˆõ
 ØSÐS ÐSÑSÔSØñ
ô 
ˆð ˜tÐ#Ñ#­GÔ,AÀ$ÈÑ,UÔ,UÑ#õ ˜<­¬Ñ8Ô8ðà”IÕ!4Ð4Ð4à�õ Ô% dÑ+Ô+ð Ø�õ ˜$œ+¥u¤xÑ0Ô0ñ õ ˜tœ{Ô/µ´Ñ?Ô?ðàœÔ(Ô+¨uÒ4Ð4Ý" 4¤;Ô#3Ô#;½U¼ZÑHÔHð 5àœÔ(Ô0Ô5¸¼ÒBÐBà�Fõ
 ˜tœ{Ô/µ´Ñ?Ô?ðå" 4¤;Ô#3Ô#8½%¼*ÑEÔEðð œÔ(Ô-Ô2°d´iÒ?Ð?ØœÔ(Ô,¨QÔ/°Ô2°dÒ:Ð:Ý" 4¤;Ô#3Ô#7¸Ô#:¸1Ô#=½u¼{ÑKÔKð ;àœÔ(Ô,¨QÔ/°Ô2Ô8Ð@à�FðØ%2×%8Ò%8¸Ñ%>Ô%>Ð"ð %2Ð2EÐ3EÐ2EÔ$Fð ð �LÝ$Ô/°Ñ=Ô=�Hà ðå& xµÔ1AÑBÔBðð %ŸNšNÑ,Ô,Õ0HÒHÐHà˜˜øðøõ ð ð ð Ø�ðøøøð #'¤+Ô"4Ô"HÐØ"ð Ð':×'@Ò'@ÀÄÑ'KÔ'Kð Ø�Ø×ÒØ$ØØ Ô!8Ð9ð ñ ô ð ð ð ðm $Ð#Ð#Ð#s   È5J( Ê(
J5Ê4J5N)r   rj   )r2   r3   r   rj   )rx   ry   r   r   )r2   r‚   r   rj   )r2   rˆ   r   rj   )r2   r9   r   rj   )r2   rÐ   r   rj   )r2   rÔ   r   rj   )r2   rÚ   r   rj   )r2   rÝ   r   rj   )r2   r   r   rj   )r2   ræ   r   rj   )r2   rì   r   rj   )r2   rï   r   rj   )r2   r÷   r;   rø   r   rj   )r2   r÷   r   rj   )r2   rÿ   r   rj   )r  r   r2   rÿ   r   rj   )r2   r   r   rj   )r2   r  r¼   rø   r   rj   )r  rø   r2   r  r   rj   )Ú__name__r   Ú__qualname__Úmsgsrr   r   Úonly_required_for_messagesrw   r~   r‡   r“   r¯   Úvisit_asyncfunctiondefr    rŸ   rÓ   rØ   rÜ   râ   rå   rê   rî   rö   rü   rþ   r  r  r×   ré   rá   ru   r!   r   r   rB   rB   d   s3  € € € € € ðiØð 
ðið 	ð 
ðið 	ð 
ðið$ 	ð 
ð%ið. 	ð 
ð/ið8 	ð 
ð9iðB 	Ø3Ø%ðUà˜6Ð"ð
ðCiðP 	ð 
ðQið\ 	ð 
ð]iðf 	ð 
ðgiðr 	ð 
ðsiðB 	ð 
ðCiðN 	ð 
ðOiðX 	ð 
ðYiðb 	ð 
ðciðl 	ð 
ðmiðx 	ð 
ðyiðD 	Ø9Ø+ð:à˜6Ð"ð
ðEið i€DðV/ð /ð /ð /ð &€UÔ%Ð&:Ñ;Ô;ð0ð 0ð 0ñ <Ô;ð0ð!ð !ð !ð !ð &€UÔ%Ø#Ð%Eñô ð
Eð 
Eð 
Eñô ð
Eð &€UÔ%Ð&DÑEÔEðHð Hð Hñ FÔEðHð" &€UÔ%ØØØØ!Ø!ØØ'ñô ð-ð -ð -ñô ð-ðB /Ððð ð ð ð4Mð Mð Mð Mð8 &€UÔ%Ð&?Ñ@Ô@ðCð Cð Cñ AÔ@ðCð &€UÔ%Ð&>Ñ?Ô?ð-ð -ð -ñ @Ô?ð-ð &€UÔ%Ð&>Ñ?Ô?ð-ð -ð -ñ @Ô?ð-ð &€UÔ% mÐ5JÑKÔKð.ð .ð .ñ LÔKð.ð &€UÔ% mÑ4Ô4ð+ð +ð +ñ 5Ô4ð+ð &€UÔ%Ð&<Ñ=Ô=ð'ð 'ð 'ñ >Ô=ð'ð &€UÔ%Ð&<Ñ=Ô=ð'ð 'ð 'ñ >Ô=ð'ð &€UÔ%Ð&<Ñ=Ô=ðRð Rð Rñ >Ô=ðRðð ð ð ð, &€UÔ%Ð&@ÑAÔAð=ð =ð =ñ BÔAð=ð &€UÔ%Ð&CÑDÔDðCð Cð Cñ EÔDðCð%ð %ð %ð %ðNBð Bð Bð Bð
ð 
ð 
ð 
ðCð Cð Cð Cð*Jð Jð Jð Jð Jð Jr   rB   )r   r   r   r   )r   r   r   r   )r2   r3   r   r   )r2   r9   r   r   )Ú__doc__Ú
__future__r   r§   Úcollections.abcr   Útypingr   r&  r   Úastroid.typingr   Úpylint.checkersr   Ú"pylint.checkers.base.basic_checkerr	   Úpylint.checkers.utilsr
   Úpylint.interfacesr   r
  Ú	frozensetr(  r2  r   r1   r8   r@   rB   r!   r   r   ú<module>rJ     sr  ðð
 2Ð 1à "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *à !Ð !Ð !Ð !Ð !Ð !Ø <Ð <Ð <Ð <Ð <Ð <Ø +Ð +Ð +Ð +Ð +Ð +Ø "Ð "Ð "Ð "Ð "Ð "à$ mÐ4€à�i Ñ0Ô0Ð Ø.Ð ðð ð ð ð*ð ð ð ð.?ð ?ð ?ð ?ðð ð ð ð&að að að að a˜ñ aô að að að ar   