§
    ÷yIfž  ã                  ó€   — d 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  G d„ d	ej        ¦  «        Zdd„ZdS )zPOptional checker to warn when loop variables are overwritten in the loop's body.é    )Úannotations)Únodes)Úcheckers)Úutils)ÚHIGH)ÚPyLinterc                  óÈ   ‡ — e Zd ZdZddiZdˆ fd„Z ej        d¦  «        dd„¦   «         Z ej        d¦  «        dd„¦   «         Z	 ej        d¦  «        dd„¦   «         Z
ˆ xZS )ÚRedefinedLoopNameCheckerúredefined-loop-nameÚW2901)z!Redefining %r from loop (line %s)r   z:Used when a loop variable is overwritten in the loop body.Úlinterr   ÚreturnÚNonec                óX   •— t          ¦   «                              |¦  «         g | _        d S ©N)ÚsuperÚ__init__Ú_loop_variables)Úselfr   Ú	__class__s     €úY/var/www/piapp/venv/lib/python3.11/site-packages/pylint/extensions/redefined_loop_name.pyr   z!RedefinedLoopNameChecker.__init__   s.   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ð ð 	ÔÐÐó    Únodeúnodes.AssignNamec                ób  — |                      ¦   «         }t          |t          j        t          j        f¦  «        sd S |                     ¦   «         }| j        D ]V\  }}}||urŒ|j        |v rBt          j	        ||¦  «        s-|  
                    d|j        |j        f|t          ¬¦  «          d S ŒWd S )Nr   ©Úargsr   Ú
confidence)Úassign_typeÚ
isinstancer   ÚAssignÚ	AugAssignÚscoper   Únamer   Úin_for_else_branchÚadd_messageÚ
fromlinenor   )r   r   r   Ú
node_scopeÚ	outer_forÚouter_variablesÚouter_for_scopes          r   Úvisit_assignnamez)RedefinedLoopNameChecker.visit_assignname"   sÔ   € à×&Ò&Ñ(Ô(ˆÝ˜+­¬µe´oÐ'FÑGÔGð 	ØˆFØ—Z’Z‘\”\ˆ
Ø;?Ô;Oð 	ð 	Ñ7ˆI�¨Ø Ð0Ð0ØØŒy˜OÐ+Ð+µEÔ4LØ˜4ñ5ô 5Ð+ð × Ò Ø)Øœ) YÔ%9Ð:ØÝ#ð	 !ñ ô ð ð ��øð	ð 	r   ú	nodes.Forc                ó¶  ‡ — d„ |j                              t          j        ¦  «        D ¦   «         }ˆ fd„|D ¦   «         }|                     ¦   «         }|D ]U}‰ j        D ]K\  }}}||urŒ||v r<t          j        ||¦  «        s'‰                      d||j	        f|t          ¬¦  «          nŒLŒV‰ j                             |||                     ¦   «         f¦  «         d S )Nc                ó   — g | ]	}|j         ‘Œ
S © )r$   )Ú.0Úas     r   ú
<listcomp>z6RedefinedLoopNameChecker.visit_for.<locals>.<listcomp>8   s   € ÐTÐTÐT !�q”vÐTÐTÐTr   c                ó\   •— g | ](}‰j         j        j                             |¦  «        °&|‘Œ)S r0   )r   ÚconfigÚdummy_variables_rgxÚmatch)r1   Úvarr   s     €r   r3   z6RedefinedLoopNameChecker.visit_for.<locals>.<listcomp>:   sE   ø€ ð 
ð 
ð 
àØ”;Ô%Ô9×?Ò?ÀÑDÔDð
Øð
ð 
ð 
r   r   r   )ÚtargetÚnodes_of_classr   Ú
AssignNamer#   r   r   r%   r&   r'   r   Úappend)r   r   Úassigned_tor(   Úvariabler)   r*   r+   s   `       r   Ú	visit_forz"RedefinedLoopNameChecker.visit_for6   s   ø€ àTÐT t¤{×'AÒ'AÅ%ÔBRÑ'SÔ'SÐTÑTÔTˆð
ð 
ð 
ð 
à"ð
ñ 
ô 
ˆð —Z’Z‘\”\ˆ
Ø#ð 	ð 	ˆHØ?CÔ?Sð ð Ñ;�	˜?¨OØ _Ð4Ð4ØØ˜Ð.Ð.µuÔ7OØ˜tñ8ô 8Ð.ð ×$Ò$Ø-Ø&¨	Ô(<Ð=Ø!Ý#'ð	 %ñ ô ð ð �EøøàÔ×#Ò# T¨;¸¿
º
¹¼Ð$EÑFÔFÐFÐFÐFr   c                ó8   — | j                              ¦   «          d S r   )r   Úpop)r   r   s     r   Ú	leave_forz"RedefinedLoopNameChecker.leave_forR   s   € àÔ× Ò Ñ"Ô"Ð"Ð"Ð"r   ©r   r   r   r   )r   r   r   r   )r   r-   r   r   )Ú__name__Ú
__module__Ú__qualname__r$   Úmsgsr   r   Úonly_required_for_messagesr,   r?   rB   Ú__classcell__)r   s   @r   r
   r
      sä   ø€ € € € € Ø €Dð 	ð 
ð€Dðð ð ð ð ð ð &€UÔ%Ð&;Ñ<Ô<ðð ð ñ =Ô<ðð& &€UÔ%Ð&;Ñ<Ô<ðGð Gð Gñ =Ô<ðGð6 &€UÔ%Ð&;Ñ<Ô<ð#ð #ð #ñ =Ô<ð#ð #ð #ð #ð #r   r
   r   r   r   r   c                óJ   — |                       t          | ¦  «        ¦  «         d S r   )Úregister_checkerr
   )r   s    r   ÚregisterrL   W   s%   € Ø
×ÒÕ4°VÑ<Ô<Ñ=Ô=Ð=Ð=Ð=r   NrC   )Ú__doc__Ú
__future__r   Úastroidr   Úpylintr   Úpylint.checkersr   Úpylint.interfacesr   Úpylint.lintr   ÚBaseCheckerr
   rL   r0   r   r   ú<module>rU      sÎ   ðð
 WÐ Và "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø  Ð  Ð  Ð  Ð  Ð  ðC#ð C#ð C#ð C#ð C#˜xÔ3ñ C#ô C#ð C#ðL>ð >ð >ð >ð >ð >r   