§
    ÷yIf
  ã                  ó    — d Z ddlmZ ddlmZmZ ddlZddlmZmZ ddl	m
Z
 ddlmZ ddlmZ erdd	lmZ  G d
„ de
j        ¦  «        Zdd„ZdS )z!Looks for overlapping exceptions.é    )Úannotations)ÚTYPE_CHECKINGÚAnyN)ÚnodesÚutil)Úcheckers)Úutils)Ú_annotated_unpack_infer)ÚPyLinterc                  óV   — e Zd ZdZdZddiZdZ ej        d¦  «        dd„¦   «         Z	dS )ÚOverlappingExceptionsCheckerz§Checks for two or more exceptions in the same exception handler
    clause that are identical or parts of the same inheritance hierarchy.

    (i.e. overlapping).
    zoverlap-exceptÚW0714)zOverlapping exceptions (%s)úoverlapping-exceptz8Used when exceptions in handler overlap or are identical© r   Únodeú	nodes.TryÚreturnÚNonec                ó¼  — |j         D �]Ò}|j        €Œt          |j        t          j        ¦  «        rŒ+	 t          t          |j        ¦  «        ¦  «        }n# t          j        $ r Y Œ_w xY wg }|D �]i\  }}t          |t          j	        ¦  «        rŒ!t          |t          j
        ¦  «        rt          j        |¦  «        r|j        }t          |t          j        ¦  «        sŒqd„ |                     ¦   «         D ¦   «         }|D ]Ï\  }}	d„ |	                     ¦   «         D ¦   «         }
||	k    rH|                      d|j        |                     ¦   «         › d|                     ¦   «         › d�¬¦  «         Œq|	|v s||
v rV||
v r|n|}|	|v r|n|}|                      d|j        |                     ¦   «         › d|                     ¦   «         › �¬¦  «         ŒÐ|||fgz  }�Œk�ŒÔdS )	zCheck for empty except.Nc                óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS r   ©Ú
isinstanceÚastroidÚClassDef©Ú.0Úancs     ú\/var/www/piapp/venv/lib/python3.11/site-packages/pylint/extensions/overlapping_exceptions.pyú
<listcomp>z:OverlappingExceptionsChecker.visit_try.<locals>.<listcomp>>   s:   € ð !ð !ð !ØµjÀÅgÔFVÑ6WÔ6Wð!Øð!ð !ð !ó    c                óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS r   r   r   s     r   r   z:OverlappingExceptionsChecker.visit_try.<locals>.<listcomp>C   s;   € ð *ð *ð *àÝ% c­7Ô+;Ñ<Ô<ð*Øð*ð *ð *r    r   z and z are the same)r   Úargsz is an ancestor class of )ÚhandlersÚtyper   r   ÚBoolOpÚlistr
   ÚInferenceErrorr   ÚUninferableBaseÚInstancer	   Úinherit_from_std_exÚ_proxiedr   Ú	ancestorsÚadd_messageÚ	as_string)Úselfr   ÚhandlerÚexcsÚhandled_in_clauseÚpartÚexcÚexc_ancestorsÚ	prev_partÚprev_excÚprev_exc_ancestorsÚancestorÚ
descendants                r   Ú	visit_tryz&OverlappingExceptionsChecker.visit_try'   sp  € ð ”}ð ,	3ñ ,	3ˆGØŒ|Ð#ØÝ˜'œ,­¬Ñ7Ô7ð ØðÝÕ3°G´LÑAÔAÑBÔB��øÝÔ)ð ð ð Ø�ðøøøð 8:ÐØ!ð !3ñ !3‘	��cÝ˜c¥4Ô#7Ñ8Ô8ð ØÝ˜c¥7Ô#3Ñ4Ô4ð '½Ô9RÐSVÑ9WÔ9Wð 'Øœ,�Cå! #¥wÔ'7Ñ8Ô8ð Øð!ð !Ø#&§=¢=¡?¤?ð!ñ !ô !�ð ,=ð ð Ñ'�I˜xð*ð *à#+×#5Ò#5Ñ#7Ô#7ð*ñ *ô *Ð&ð
 ˜h’�Ø×(Ò(Ø0Ø!(¤Ø$-×$7Ò$7Ñ$9Ô$9Ð!_Ð!_ÀÇÂÑ@PÔ@PÐ!_Ð!_Ð!_ð )ñ ô ð ð ð
 " ]Ð2Ð2°cÐ=OÐ6OÐ6OØ+.Ð2DÐ+DÐ+D 4 4È)˜Ø-5¸Ð-FÐ-F T TÈI˜
Ø×(Ò(Ø0Ø!(¤Ø$,×$6Ò$6Ñ$8Ô$8Ð!kÐ!kÐS]×SgÒSgÑSiÔSiÐ!kÐ!kð )ñ ô ð øð
 " t¨S k ]Ñ2Ð!Ñ!ñC!3ð,	3ð ,	3s   ´!AÁA(Á'A(N)r   r   r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚmsgsÚoptionsr	   Úonly_required_for_messagesr;   r   r    r   r   r      sh   € € € € € ðð ð €Dàð 
ð€Dð €Gà%€UÔ%Ð&:Ñ;Ô;ð.3ð .3ð .3ñ <Ô;ð.3ð .3ð .3r    r   Úlinterr   r   r   c                óJ   — |                       t          | ¦  «        ¦  «         d S )N)Úregister_checkerr   )rD   s    r   ÚregisterrG   Y   s%   € Ø
×ÒÕ8¸Ñ@Ô@ÑAÔAÐAÐAÐAr    )rD   r   r   r   )r?   Ú
__future__r   Útypingr   r   r   r   r   Úpylintr   Úpylint.checkersr	   Úpylint.checkers.exceptionsr
   Úpylint.lintr   ÚBaseCheckerr   rG   r   r    r   ú<module>rO      s  ðð
 (Ð 'à "Ð "Ð "Ð "Ð "Ð "à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø Ð Ð Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø >Ð >Ð >Ð >Ð >Ð >àð %Ø$Ð$Ð$Ð$Ð$Ð$ð@3ð @3ð @3ð @3ð @3 8Ô#7ñ @3ô @3ð @3ðFBð Bð Bð Bð Bð Br    