§
    öyIf>g  ã                  óæ  — U d Z ddlmZ ddlZddlZddlmZ ddl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mZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ erddlmZ dPd„Z	 dQdRd„ZdSd„Z i dd“dd“dd “d!d"d#d$d%d&gif“d'd(“d)d*“d+d,“d-d.“d/d0d1d2d%d3gif“d4d5“d6d7“d8d9“d:d;“d<d=“d>d?“d@dA“Z!dBe"dC<    G dD„ dE¦  «        Z# G dF„ dGe#¦  «        Z$ G dH„ dIe#¦  «        Z% G dJ„ dKej&        ¦  «        Z'dTdO„Z(dS )Uz,Checks for various exception related errors.é    )ÚannotationsN)Ú	Generator)ÚTYPE_CHECKINGÚAny)ÚnodesÚobjectsÚutil)ÚInferenceContext)ÚInferenceResultÚSuccessfulInferenceResult)Úcheckers)Úutils)ÚHIGHÚ	INFERENCE)ÚMessageDefinitionTuple)ÚPyLinterÚreturnúset[str]c                 óV   — dd„} t          j        t          | ¦  «        }d„ |D ¦   «         S )NÚobjr   r   Úboolc                óV   — t          | t          ¦  «        ot          | t          ¦  «        S ©N)Ú
isinstanceÚtypeÚ
issubclassÚBaseException)r   s    úN/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/exceptions.pyÚ	predicatez&_builtin_exceptions.<locals>.predicate   s!   € Ý˜#�tÑ$Ô$ÐG­°C½Ñ)GÔ)GÐGó    c                ó"   — h | ]\  }}|j         ’ŒS © )Ú__name__©Ú.0Ú_Úexcs      r   ú	<setcomp>z&_builtin_exceptions.<locals>.<setcomp>!   s   € Ð1Ð1Ð1™X˜a ˆCŒLÐ1Ð1Ð1r    )r   r   r   r   )ÚinspectÚ
getmembersÚbuiltins)r   Úmemberss     r   Ú_builtin_exceptionsr-      sB   € ðHð Hð Hð Hõ Ô ¥¨9Ñ5Ô5€GØ1Ð1¨Ð1Ñ1Ô1Ð1r    Ústmtúnodes.NodeNGÚcontextúInferenceContext | NoneúEGenerator[tuple[nodes.NodeNG, SuccessfulInferenceResult], None, None]c              #  óL  K  — t          | t          j        t          j        f¦  «        rB| j        D ]8}t          j        |¦  «        }|r t          |t          j        ¦  «        s||fV — Œ9dS |  	                    |¦  «        D ]#}t          |t          j        ¦  «        rŒ| |fV — Œ$dS )zìRecursively generate nodes inferred by the given statement.

    If the inferred value is a list or a tuple, recurse on the elements.
    Returns an iterator which yields tuples in the format
    ('original node', 'inferred node').
    N)
r   r   ÚListÚTupleÚeltsr   Ú
safe_inferr	   ÚUninferableBaseÚinfer)r.   r0   ÚeltÚinferreds       r   Ú_annotated_unpack_inferr<   $   sÆ   è è € õ �$�œ¥U¤[Ð1Ñ2Ô2ð Ø”9ð 	$ð 	$ˆCÝÔ'¨Ñ,Ô,ˆHØð $¥
¨8µTÔ5IÑ JÔ Jð $Ø˜8�mÐ#Ð#Ð#øØˆØ—J’J˜wÑ'Ô'ð ð ˆÝ�h¥Ô 4Ñ5Ô5ð 	ØØ�HˆnÐÐÐÐðð r    Úbodyúlist[nodes.NodeNG]r   c                ó4   — t          d„ | D ¦   «         ¦  «        S )z<Return whether the given statement node raises an exception.c              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r   )r   r   ÚRaise©r%   Únodes     r   ú	<genexpr>z_is_raising.<locals>.<genexpr>;   s.   è è € Ð>Ð>°�z˜$¥¤Ñ,Ô,Ð>Ð>Ð>Ð>Ð>Ð>r    )Úany)r=   s    r   Ú_is_raisingrF   9   s   € åÐ>Ð>¸Ð>Ñ>Ô>Ñ>Ô>Ð>r    ÚE0701)zBad except clauses order (%s)úbad-except-orderz¿Used when except clauses are not in the correct order (from the more specific to the more generic). If you don't fix the order, some exceptions may not be caught by the most specific handler.ÚE0702)z6Raising %s while only classes or instances are allowedúraising-bad-typezkUsed when something which is neither a class nor an instance is raised (i.e. a `TypeError` will be raised).ÚE0704)z2The raise statement is not inside an except clauseúmisplaced-bare-raiseag  Used when a bare raise is not used inside an except clause. This generates an error, since there are no active exceptions to be reraised. An exception to this rule is represented by a bare raise inside a finally clause, which might work, as long as an exception is raised inside the try block, but it is nevertheless a code smell that must not be relied upon.ÚE0705zDException cause set to something which is not an exception, nor Noneúbad-exception-causeziUsed when using the syntax "raise ... from ...", where the exception cause is not an exception, nor None.Ú	old_names)ÚE0703zbad-exception-contextÚE0710)zBRaising a new style class which doesn't inherit from BaseExceptionúraising-non-exceptionzOUsed when a new style class which doesn't inherit from BaseException is raised.ÚE0711)z8NotImplemented raised - should raise NotImplementedErrorúnotimplemented-raisedzAUsed when NotImplemented is raised instead of NotImplementedErrorÚE0712)z>Catching an exception which doesn't inherit from Exception: %súcatching-non-exceptionzcUsed when a class which doesn't inherit from Exception is used as an exception in an except clause.ÚW0702)zNo exception type(s) specifiedúbare-exceptaJ  A bare ``except:`` clause will catch ``SystemExit`` and ``KeyboardInterrupt`` exceptions, making it harder to interrupt a program with ``Control-C``, and can disguise other problems. If you want to catch all exceptions that signal program errors, use ``except Exception:`` (bare except is equivalent to ``except BaseException:``).ÚW0718z!Catching too general exception %súbroad-exception-caughtz×If you use a naked ``except Exception:`` clause, you might end up catching exceptions other than the ones you expect to catch. This can hide bugs or make it harder to debug programs when unrelated errors are hidden.)ÚW0703zbroad-exceptÚW0705)z,Catching previously caught exception type %súduplicate-exceptzQUsed when an except catches a type that was already caught by a previous handler.ÚW0706)z%The except handler raises immediatelyútry-except-raisezÇUsed when an except handler uses raise as its first or only operator. This is useless because it raises back the exception immediately. Remove the raise operator or the entire try-except-raise block!ÚW0707)z3Consider explicitly re-raising using %s'%s from %s'úraise-missing-fromah  Python's exception chaining shows the traceback of the current exception, but also of the original exception. When you raise a new exception after another exception was caught it's likely that the second exception is a friendly re-wrapping of the first exception. In such cases `raise from` provides a better link between the two tracebacks in the final error.ÚW0711)z;Exception to catch is the result of a binary "%s" operationúbinary-op-exceptionz~Used when the exception to catch is of the form "except A or B:".  If intending to catch multiple, rewrite as "except (A, B):"ÚW0715)z?Exception arguments suggest string formatting might be intendedúraising-format-tuplez§Used when passing multiple arguments to an exception constructor, the first of them a string literal containing what appears to be placeholders intended for formattingÚW0716)zInvalid exception operation. %súwrong-exception-operationzÇUsed when an operation is done against an exception, but the operation is not valid for the exception in question. Usually emitted when having binary operations between exceptions in except handlers.ÚW0719)z!Raising too general exception: %súbroad-exception-raisedaA  Raising exceptions that are too generic force you to catch exceptions generically too. It will force you to use a naked ``except Exception:`` clause. You might then end up catching exceptions other than the ones you expect to catch. This can hide bugs or make it harder to debug programs when unrelated errors are hidden.z!dict[str, MessageDefinitionTuple]ÚMSGSc                  ó*   — e Zd ZdZdd„Zdd
„Zdd„ZdS )ÚBaseVisitorz/Base class for visitors defined in this module.ÚcheckerÚExceptionsCheckerrC   únodes.Raiser   ÚNonec                ó"   — || _         || _        d S r   )Ú_checkerÚ_node)Úselfrm   rC   s      r   Ú__init__zBaseVisitor.__init__»   s   € ØˆŒØˆŒ
ˆ
ˆ
r    r   c                ó²   — |j         j                             ¦   «         }t          | d|z   d ¦  «        }|r ||¦  «         d S |                      |¦  «         d S )NÚvisit_)Ú	__class__r#   ÚlowerÚgetattrÚvisit_default)rt   rC   ÚnameÚdispatch_meths       r   ÚvisitzBaseVisitor.visit¿   se   € ØŒ~Ô&×,Ò,Ñ.Ô.ˆÝ  h°¡o°tÑ<Ô<ˆØð 	%ØˆM˜$ÑÔÐÐÐà×Ò˜tÑ$Ô$Ð$Ð$Ð$r    r&   r/   c                ó   — dS )z)Default implementation for all the nodes.Nr"   ©rt   r&   s     r   r{   zBaseVisitor.visit_defaultÇ   s   € € € r    N)rm   rn   rC   ro   r   rp   )rC   r   r   rp   )r&   r/   r   rp   )r#   Ú
__module__Ú__qualname__Ú__doc__ru   r~   r{   r"   r    r   rl   rl   ¸   sV   € € € € € Ø9Ð9ðð ð ð ð%ð %ð %ð %ð8ð 8ð 8ð 8ð 8ð 8r    rl   c                  ó"   — e Zd ZdZd
d„Zdd„Zd	S )ÚExceptionRaiseRefVisitorz4Visit references (anything that is not an AST leaf).rC   ú
nodes.Namer   rp   c                óh  — |j         dk    r)| j                             d| j        t          ¬¦  «         d S 	 d„ t          |¦  «        D ¦   «         }n# t          j        $ r Y d S w xY w|D ]I}| j                             |¦  «        r-| j                             d|j         | j        t          ¬¦  «         ŒJd S )NÚNotImplementedrT   ©rC   Ú
confidencec                óL   — g | ]!\  }}t          |t          j        ¦  «        ¯|‘Œ"S r"   ©r   r   ÚClassDef)r%   r&   Úcs      r   ú
<listcomp>z7ExceptionRaiseRefVisitor.visit_name.<locals>.<listcomp>Õ   s>   € ð ð ð á�A�qÝ˜a¥¤Ñ0Ô0ðØðð ð r    ri   ©ÚargsrC   rŠ   )
r|   rr   Úadd_messagers   r   r<   ÚastroidÚInferenceErrorÚ_is_overgeneral_exceptionr   )rt   rC   Ú
exceptionsÚ	exceptions       r   Ú
visit_namez#ExceptionRaiseRefVisitor.visit_nameÎ   sö   € ØŒ9Ð(Ò(Ð(ØŒM×%Ò%Ø'¨d¬jÅTð &ñ ô ð ð ˆFð	ðð å3°DÑ9Ô9ðñ ô ˆJˆJøõ
 Ô%ð 	ð 	ð 	ØˆFˆFð	øøøð $ð 	ð 	ˆIØŒ}×6Ò6°yÑAÔAð Ø”×)Ò)Ø,Ø"œØœÝ(ð	 *ñ ô ð øð	ð 	s   ¶A ÁA#Á"A#ú
nodes.Callc                óÚ  — t          |j        t          j        ¦  «        r|                      |j        ¦  «         t          |j        ¦  «        dk    r‘t          |j        d         t          j        ¦  «        rnt          |j        d         j        t          ¦  «        rK|j        d         j        }d|v sd|v r3d|v r1| j
                             d| j        t          ¬¦  «         d S d S d S d S d S d S )Né   r   ú%Ú{Ú}re   r‰   )r   Úfuncr   ÚNamer˜   Úlenr‘   ÚConstÚvalueÚstrrr   r’   rs   r   )rt   rC   Úmsgs      r   Ú
visit_callz#ExceptionRaiseRefVisitor.visit_callæ   sî   € Ý�d”i¥¤Ñ,Ô,ð 	'Ø�OŠO˜DœIÑ&Ô&Ð&å�”	‰NŒN˜QÒÐÝ˜4œ9 Qœ<­¬Ñ5Ô5ð å˜4œ9 Qœ<Ô-­sÑ3Ô3ð ð ”)˜A”,Ô$ˆCØ�cˆzˆz˜c S˜j˜j¨S°C¨Z¨ZØ”×)Ò)Ø*°´Íð *ñ ô ð ð ð ð ÐÐÐÐÐð
 )˜j¨Z¨Zr    N)rC   r†   r   rp   )rC   r™   r   rp   )r#   r�   r‚   rƒ   r˜   r¦   r"   r    r   r…   r…   Ë   sB   € € € € € Ø>Ð>ðð ð ð ð0ð ð ð ð ð r    r…   c                  ó>   — e Zd ZdZdd„Zdd	„ZeZdd„Zdd„Zdd„Z	dS )ÚExceptionRaiseLeafVisitorz1Visitor for handling leaf kinds of a raise value.rC   únodes.Constr   rp   c                ót   — | j                              d| j        |j        j        j        t          ¬¦  «         d S )NrJ   ©rC   r‘   rŠ   )rr   r’   rs   r£   rx   r#   r   ©rt   rC   s     r   Úvisit_constz%ExceptionRaiseLeafVisitor.visit_constø   sA   € ØŒ×!Ò!ØØ”Ø”Ô%Ô.Ý ð	 	"ñ 	
ô 	
ð 	
ð 	
ð 	
r    Úinstanceúobjects.ExceptionInstancec                ó>   — |j         }|                      |¦  «         d S r   )Ú_proxiedÚvisit_classdef)rt   r®   Úclss      r   Úvisit_instancez(ExceptionRaiseLeafVisitor.visit_instance   s$   € ØÔˆØ×Ò˜CÑ Ô Ð Ð Ð r    únodes.ClassDefc                ó¾   — t          j        |¦  «        sDt          j        |¦  «        r2|j        r-| j                             d| j        t          ¬¦  «         d S d S d S d S )NrR   r‰   )r   Úinherit_from_std_exÚhas_known_basesÚnewstylerr   r’   rs   r   r¬   s     r   r²   z(ExceptionRaiseLeafVisitor.visit_classdef  sƒ   € ÝÔ(¨Ñ.Ô.ð 	µ5Ô3HÈÑ3NÔ3Nð 	ØŒ}ð Ø”×)Ò)Ø+ØœÝ(ð *ñ ô ð ð ð ð	ð 	ð 	ð 	ðð r    r&   únodes.Tuplec                óV   — | j                              d| j        dt          ¬¦  «         d S )NrJ   Útupler«   )rr   r’   rs   r   r€   s     r   Úvisit_tuplez%ExceptionRaiseLeafVisitor.visit_tuple  s9   € ØŒ×!Ò!ØØ”ØÝ ð	 	"ñ 	
ô 	
ð 	
ð 	
ð 	
r    r/   c                óŒ   — t          |d|j        j        ¦  «        }| j                             d| j        |t          ¬¦  «         d S )Nr|   rJ   r«   )rz   rx   r#   rr   r’   rs   r   )rt   rC   r|   s      r   r{   z'ExceptionRaiseLeafVisitor.visit_default  sO   € Ý�t˜V T¤^Ô%<Ñ=Ô=ˆØŒ×!Ò!ØØ”ØÝ ð	 	"ñ 	
ô 	
ð 	
ð 	
ð 	
r    N)rC   r©   r   rp   )r®   r¯   r   rp   )rC   rµ   r   rp   )r&   rº   r   rp   )rC   r/   r   rp   )
r#   r�   r‚   rƒ   r­   r´   Úvisit_exceptioninstancer²   r½   r{   r"   r    r   r¨   r¨   õ   s†   € € € € € Ø;Ð;ð
ð 
ð 
ð 
ð!ð !ð !ð !ð
 -Ððð ð ð ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð 
ð 
r    r¨   c            
      ób  ‡ — e Zd ZdZdZeZddddddœffZd6ˆ fd„Z e	j
        dddddddd¦  «        d7d„¦   «         Zd7d„Zd7d„Zd7d„Zd8d „Zd9d"„Z e	j
        d#¦  «        d:d%„¦   «         Z e	j
        d#¦  «        d;d'„¦   «         Z e	j
        d(d)d*d+d,d-d.¦  «        d<d0„¦   «         Zd9d1„Zd=d5„Zˆ xZS )>rn   zException related checks.r–   zovergeneral-exceptions)zbuiltins.BaseExceptionzbuiltins.ExceptionÚcsvz<comma-separated class names>z0Exceptions that will emit a warning when caught.)Údefaultr   ÚmetavarÚhelpr   rp   c                ón   •— t          ¦   «         | _         t          ¦   «                              ¦   «          d S r   )r-   ÚsuperÚopen)rt   rx   s    €r   rÇ   zExceptionsChecker.open3  s&   ø€ Ý#6Ñ#8Ô#8ˆÔ Ý‰Œ�Š‰Œˆˆˆr    rL   rJ   rR   rT   rN   re   ra   ri   rC   ro   c                ó¤  — |j         €|                      |¦  «         d S |j        €|                      |¦  «         n|                      |¦  «         |j         }t          | |¦  «                             |¦  «         t          j        |¦  «        }|�t          |t          j        ¦  «        rd S t          | |¦  «                             |¦  «         d S r   )r'   Ú_check_misplaced_bare_raiseÚcauseÚ_check_raise_missing_fromÚ_check_bad_exception_causer…   r~   r   r7   r   r	   r8   r¨   )rt   rC   Úexprr;   s       r   Úvisit_raisezExceptionsChecker.visit_raise7  sÎ   € ð Œ8ÐØ×,Ò,¨TÑ2Ô2Ð2ØˆFàŒ:ÐØ×*Ò*¨4Ñ0Ô0Ð0Ð0à×+Ò+¨DÑ1Ô1Ð1àŒxˆÝ   tÑ,Ô,×2Ò2°4Ñ8Ô8Ð8åÔ# DÑ)Ô)ˆØÐ�z¨(µDÔ4HÑIÔIÐØˆFÝ! $¨Ñ-Ô-×3Ò3°HÑ=Ô=Ð=Ð=Ð=r    c                óÈ  — |                      ¦   «         }t          |t          j        ¦  «        r!|                     ¦   «         r|j        dk    rd S |}t          j        t          j        f}|r3t          |j        |¦  «        s|j        }|rt          |j        |¦  «        ¯t          j        f}|rt          |j        |¦  «        s|                      d|t          ¬¦  «         d S d S )NÚ__exit__rL   r‰   )
Úscoper   r   ÚFunctionDefÚ	is_methodr|   ÚExceptHandlerÚparentr’   r   )rt   rC   rÑ   ÚcurrentÚignoresÚexpecteds         r   rÉ   z-ExceptionsChecker._check_misplaced_bare_raiseS  sø   € à—
’
‘”ˆå�u�eÔ/Ñ0Ô0ð	à—’Ñ!Ô!ð	ð ”
˜jÒ(Ð(àˆFàˆõ Ô&­Ô(9Ð:ˆØð 	%�j¨¬¸ÑAÔAð 	%Ø”nˆGð ð 	%�j¨¬¸ÑAÔAð 	%õ Ô'Ð)ˆØð 	Q�j¨¬¸ÑBÔBð 	QØ×ÒÐ3¸$Í4ÐÑPÔPÐPÐPÐPð	Qð 	Qr    c                ó–  — t          j        |j        ¦  «        }|�t          |t          j        ¦  «        rdS t          |t          j        ¦  «        r(|j        �|  	                    d|t          ¬¦  «         dS dS t          |t          j        ¦  «        s3t          j        |¦  «        s!|  	                    d|t          ¬¦  «         dS dS dS )zyVerify that the exception cause is properly set.

        An exception cause can be only `None` or an exception.
        NrN   r‰   )r   r7   rÊ   r   r	   r8   r   r¢   r£   r’   r   r�   r·   )rt   rC   rÊ   s      r   rÌ   z,ExceptionsChecker._check_bad_exception_causeh  sá   € õ
 Ô  ¤Ñ,Ô,ˆØˆ=�J u­dÔ.BÑCÔCˆ=ØˆFå�e�Uœ[Ñ)Ô)ð 	UØŒ{Ð&Ø× Ò Ð!6¸TÍiÐ ÑXÔXÐXÐXÐXð 'Ð&å˜E¥5¤>Ñ2Ô2ð 	U½5Ô;TØñ<
ô <
ð 	Uð ×ÒÐ2¸Í)ÐÑTÔTÐTÐTÐTð	Uð 	Uð 	Uð 	Ur    c                óÎ  — |j         €d S t          j        |¦  «        }|sd S |j        €d}t	          |j        t          j        t          j        f¦  «        r|j         	                    ¦   «         }|  
                    d|d|› d�| 	                    ¦   «         dft          ¬¦  «         d S t	          |j         t          j        ¦  «        r$t	          |j         j        t          j        ¦  «        s9t	          |j         t          j        ¦  «        rY|j         j        |j        j        k    rA|  
                    d|d| 	                    ¦   «         |j        j        ft          ¬¦  «         d S d S d S )NÚ	Exceptionra   z'except z as exc' and r'   r«   Ú )r'   r   Ú!find_except_wrapper_node_in_scoper|   r   r   r   r    r5   Ú	as_stringr’   r   ÚCallrŸ   )rt   rC   Úcontaining_except_nodeÚclass_of_old_errors       r   rË   z+ExceptionsChecker._check_raise_missing_fromy  s�  € ØŒ8Ðð ˆFå!&Ô!HÈÑ!NÔ!NÐØ%ð 	ØˆFð "Ô&Ð.ð "-ÐÝÐ0Ô5½¼
ÅEÄKÐ7PÑQÔQð Mà%;Ô%@×%JÒ%JÑ%LÔ%LÐ"Ø×ÒØ$Øà@Ð1Ð@Ð@Ð@Ø—N’NÑ$Ô$Øðõ
  ð ñ 	ô 	ð 	ð 	ð 	õ �t”x¥¤Ñ,Ô,ð	å˜4œ8œ=­%¬*Ñ5Ô5ð	õ ˜$œ(¥E¤JÑ/Ô/ð	ð ””Ð!7Ô!<Ô!AÒAÐAð ×ÒØ$ØØ˜$Ÿ.š.Ñ*Ô*Ð,BÔ,GÔ,LÐMÝð	 ñ ô ð ð ð ð	ð 	ð BÐAr    Úhandlerúnodes.ExceptHandlerr'   r   Úpartr/   c                óL  — t          |t          j        ¦  «        rGd„ |j        D ¦   «         }t	          d„ |D ¦   «         ¦  «        rd S t          d„ |D ¦   «         ¦  «        rd S t          |t          j        ¦  «        sÉt          |t          j        ¦  «        r}|j        €vt          |j	        t          j        ¦  «        r|j	        j        �|j	         
                    |¦  «        r0|                      d|j	        |                     ¦   «         f¬¦  «         n0|                      d|j	        |                     ¦   «         f¬¦  «         d S t          j        |¦  «        sG|j        | j        vr;t          j        |¦  «        r)|                      d|j	        |j        f¬¦  «         d S d S d S d S )Nc                ó6   — g | ]}t          j        |¦  «        ‘ŒS r"   )r   r7   )r%   r:   s     r   r�   zCExceptionsChecker._check_catching_non_exception.<locals>.<listcomp>¯  s#   € ÐBÐBÐB°#�Ô(¨Ñ-Ô-ÐBÐBÐBr    c              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r   )r   r	   r8   rB   s     r   rD   zBExceptionsChecker._check_catching_non_exception.<locals>.<genexpr>°  s/   è è € ÐOÐO¸d•:˜d¥DÔ$8Ñ9Ô9ÐOÐOÐOÐOÐOÐOr    c              3  ól   K  — | ]/}|o(t          j        |¦  «        pt          j        |¦  «         V — Œ0d S r   )r   r·   r¸   rB   s     r   rD   zBExceptionsChecker._check_catching_non_exception.<locals>.<genexpr>³  s`   è è € ð ð ð ð ð YÝÔ.¨tÑ4Ô4ÐW½EÔ<QÐRVÑ<WÔ<WÐ8Wðð ð ð ð ð r    rV   ©rC   r‘   )r   r   r5   r6   rE   Úallr�   r¢   r£   r   Ú	parent_ofr’   rÞ   r   r·   r|   r-   r¸   )rt   râ   r'   rä   r;   s        r   Ú_check_catching_non_exceptionz/ExceptionsChecker._check_catching_non_exception§  sï  € õ �c�5œ;Ñ'Ô'ð 	àBÐB¸¼ÐBÑBÔBˆHÝÐOÐOÀhÐOÑOÔOÑOÔOð à�Ýð ð ð %ðñ ô ñ ô ð ð
 �å˜#�uœ~Ñ.Ô.ð 	õ ˜#�uœ{Ñ+Ô+ð °´	Ð0Aå˜wœ|­U¬[Ñ9Ô9ðØ>E¼lÔ>PÐ>XØ”\×+Ò+¨CÑ0Ô0ð ?Yð ×$Ò$Ø0Ø$œ\Ø"ŸnšnÑ.Ô.Ð0ð %ñ ô ð øð × Ò Ø,Ø œØŸ.š.Ñ*Ô*Ð,ð !ñ ô ð ð
 ˆFõ Ô)¨#Ñ.Ô.ð	à” Ô 8Ð8Ð8åÔ$ SÑ)Ô)ð Ø× Ò Ø,°7´<ÀsÄxÀkð !ñ ô ð ð ð ð	ð 	à8Ð8ðð r    ú	nodes.Tryc                ó|  ‡	— dd„}d}d }g }|j         D ]�}|rM ||¦  «        }|s d S |€ d S |D ]5}t          j        |¦  «        Š	t          ˆ	fd„|D ¦   «         ¦  «        rd} nŒ6t	          |j        d         g¦  «        r!|j        d         j        €d	}|} ||¦  «        }ŒŽ|r|                      d
|¬¦  «         d S d S )Nrâ   rã   r   úlist[InferenceResult] | Nonec                óÌ   — g }| j         rZt          j        | j         ¦  «        }t          |t          j        ¦  «        rt          d„ |j        D ¦   «         ¦  «        }n|r|g}nd S |S )Nc                ó^   — h | ]*}t          |t          j        t          j        f¦  «        ¯(|’Œ+S r"   )r   r   r    Ú	Attribute)r%   r—   s     r   r(   zdExceptionsChecker._check_try_except_raise.<locals>.gather_exceptions_from_handler.<locals>.<setcomp>å  sA   € ð ð ð à )Ý)¨)µe´jÅ%Ä/Ð5RÑSÔSðØ%ðð ð r    )r   r   r7   r   r   r5   Úlistr6   )râ   r–   Úexceptions_in_handlers      r   Úgather_exceptions_from_handlerzQExceptionsChecker._check_try_except_raise.<locals>.gather_exceptions_from_handlerÝ  sŒ   € ð 13ˆJØŒ|ð  Ý(-Ô(8¸¼Ñ(FÔ(FÐ%ÝÐ3µU´[ÑAÔAð  Ý!%ðð à-BÔ-Gðñ ô ñ"ô "�J�Jð +ð  Ø"7Ð!8�J�Jð  ˜4ØÐr    Fc              3  óf   •K  — | ]+}t          j        t          j        |¦  «        ‰¦  «        V — Œ,d S r   )r   Úis_subclass_ofr7   )r%   ÚeÚinferred_currents     €r   rD   z<ExceptionsChecker._check_try_except_raise.<locals>.<genexpr>  sP   øè è € ð ð àõ Ô,­UÔ-=¸aÑ-@Ô-@ÐBRÑSÔSðð ð ð ð ð r    r   Tr_   )rC   )râ   rã   r   rï   )Úhandlersr   r7   rE   rF   r=   r'   r’   )
rt   rC   rõ   Ú
bare_raiseÚhandler_having_bare_raiseÚexceptions_in_bare_handlerrâ   Úexcs_in_current_handlerÚexc_in_current_handlerrù   s
            @r   Ú_check_try_except_raisez)ExceptionsChecker._check_try_except_raiseÜ  s_  ø€ ð	ð 	ð 	ð 	ð* ˆ
Ø$(Ð!ØCEÐ"Ø”}ð 	Uð 	UˆGØð ð
 +IÐ*HÈÑ*QÔ*QÐ'Ø.ð Ø�E�EØ-Ð5à�E�EØ.Eð ð Ð*Ý',Ô'7Ð8NÑ'OÔ'OÐ$Ýð ð ð ð à!;ðñ ô ñ ô ð ð &+˜
Ø˜ðõ ˜GœL¨œOÐ,Ñ-Ô-ð Yà”< ”?Ô&Ð.Ø!%�JØ07Ð-Ø1OÐ1OÐPWÑ1XÔ1XÐ.øàð UØ× Ò Ð!3Ð:SÐ ÑTÔTÐTÐTÐTðUð Ur    rg   únodes.BinOpc                ól  — t          |j        t          j        ¦  «        �rt          t	          j        |j        ¦  «        t          j        t          j	        f¦  «        o<t          t	          j        |j
        ¦  «        t          j        t          j	        f¦  «        }|rE|j        dk    rd S d|j                             ¦   «         › d|j
                             ¦   «         › d�}n7d|j                             ¦   «         › d|j
                             ¦   «         › d�}|                      d||f¬¦  «         d S d S )Nú+úDid you mean '(z + ú)' instead?ú, rg   ré   )r   rÕ   r   rÔ   r   r7   Úleftr5   r	   r8   ÚrightÚoprÞ   r’   )rt   rC   Úboth_sides_tuple_or_uninferableÚ
suggestions       r   Úvisit_binopzExceptionsChecker.visit_binop  s.  € å�d”k¥5Ô#6Ñ7Ô7ñ 	YÝ.8ÝÔ  ¤Ñ+Ô+­e¬k½4Ô;OÐ-Pñ/ô /ð /åÝÔ  ¤Ñ,Ô,­u¬{½DÔ<PÐ.Qñô ð ,ð /ð lØ”7˜c’>�>Ø�FØl¨t¬y×/BÒ/BÑ/DÔ/DÐlÐlÈÌ×I]ÒI]ÑI_ÔI_ÐlÐlÐl�
�
ð l¨t¬y×/BÒ/BÑ/DÔ/DÐkÐkÈÌ
×H\ÒH\ÑH^ÔH^ÐkÐkÐk�
Ø×ÒÐ8¸tÈ:È-ÐÑXÔXÐXÐXÐXð	Yð 	Yr    únodes.Comparec                óþ   — t          |j        t          j        ¦  «        r]d|j                             ¦   «         › dd                     d„ |j        D ¦   «         ¦  «        › d�}|                      d||f¬¦  «         d S d S )Nr  r  c              3  óD   K  — | ]\  }}|                      ¦   «         V — Œd S r   )rÞ   )r%   r&   Úos      r   rD   z2ExceptionsChecker.visit_compare.<locals>.<genexpr>-  s.   è è € Ð@Ð@©t¨q°!˜QŸ[š[™]œ]Ð@Ð@Ð@Ð@Ð@Ð@r    r  rg   ré   )	r   rÕ   r   rÔ   r  rÞ   ÚjoinÚopsr’   )rt   rC   r  s      r   Úvisit_comparezExceptionsChecker.visit_compare'  s¥   € å�d”k¥5Ô#6Ñ7Ô7ð 	YðN $¤)×"5Ò"5Ñ"7Ô"7ð Nð NØ—9’9Ð@Ð@°t´xÐ@Ñ@Ô@Ñ@Ô@ðNð Nð Nð ð ×ÒÐ8¸tÈ:È-ÐÑXÔXÐXÐXÐXð	Yð 	Yr    rX   rZ   r_   rc   rH   rV   r]   únodes.TryStarc                ó0   — |                       |¦  «         dS )zCheck for empty except*.N)Ú	visit_tryr¬   s     r   Úvisit_trystarzExceptionsChecker.visit_trystar1  s   € ð 	�Š�tÑÔÐÐÐr    c           	     ó  — |                       |¦  «         g }t          |j        ¦  «        }t          |j        ¦  «        D �]@\  }}|j        €[t          |j        ¦  «        s|                      d|t          ¬¦  «         ||dz
  k     r d}|                      d||t          ¬¦  «         Œht          |j        t          j        ¦  «        r)|                      d||j        j        t          ¬¦  «         Œ°	 t          t          |j        ¦  «        ¦  «        }n# t          j        $ r Y Œäw xY w|D �]E\  }}	t          |	t          j        ¦  «        rt%          j        |	¦  «        r|	j        }	|                      ||	|¦  «         t          |	t          j        ¦  «        sŒmd	„ |	                     ¦   «         D ¦   «         }
|D ]:}||
v r4|j        › d
|	j        › �}|                      d|j        |t2          ¬¦  «         Œ;|                      |	¦  «        r<t          |j        ¦  «        s(|                      d|	j        |j        t2          ¬¦  «         |	|v r(|                      d|	j        |j        t2          ¬¦  «         �ŒG|d„ |D ¦   «         z  }�ŒBdS )zCheck for empty except.NrX   r‰   r›   z-empty except clause should always appear lastrH   r«   rc   c                óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS r"   rŒ   )r%   Úancs     r   r�   z/ExceptionsChecker.visit_try.<locals>.<listcomp>h  s:   € ð %ð %ð %àÝ% c­5¬>Ñ:Ô:ð%Øð%ð %ð %r    z is an ancestor class of rZ   r�   r]   c                ó   — g | ]\  }}|‘ŒS r"   r"   r$   s      r   r�   z/ExceptionsChecker.visit_try.<locals>.<listcomp>‰  s   € Ð&DÐ&DÐ&D©v¨q°# sÐ&DÐ&DÐ&Dr    )r   r¡   rú   Ú	enumerater   rF   r=   r’   r   r   r   ÚBoolOpr	  ró   r<   r“   r”   ÚInstancer   r·   r±   rì   r�   Ú	ancestorsr|   r   r•   )rt   rC   Úexceptions_classesÚnb_handlersÚindexrâ   r¥   r–   rä   r—   Úexc_ancestorsÚprevious_excs               r   r  zExceptionsChecker.visit_try>  s  € à×$Ò$ TÑ*Ô*Ð*Ø(*ÐÝ˜$œ-Ñ(Ô(ˆÝ'¨¬Ñ6Ô6ð F	Eñ F	E‰NˆE�7ØŒ|Ð#Ý" 7¤<Ñ0Ô0ð SØ×$Ò$ ]¸ÍTÐ$ÑRÔRÐRð ˜K¨!™OÒ,Ð,ØI�CØ×$Ò$Ø*°¸CÍDð %ñ ô ð øõ ˜GœL­%¬,Ñ7Ô7ð 9EØ× Ò Ø)Ø Ø œœÝ#ð	 !ñ ô ð ð ðÝ!%Õ&=¸g¼lÑ&KÔ&KÑ!LÔ!L�J�JøÝÔ-ð ð ð Ø�Hðøøøð (2ð *ñ *‘O�D˜)Ý!Ø!¥7Ô#3ñô ð 7åÔ3°IÑ>Ô>ð7ð %.Ô$6˜	à×6Ò6°wÀ	È4ÑPÔPÐPå% iµ´Ñ@Ô@ð !Ø ð%ð %à#,×#6Ò#6Ñ#8Ô#8ð%ñ %ô %�Mð );ð ð ˜Ø'¨=Ð8Ð8Ø%1Ô%6Ð"aÐ"aÐQZÔQ_Ð"aÐ"a˜CØ ×,Ò,Ø 2Ø%,¤\Ø%(Ý+4ð	 -ñ ô ð øð ×5Ò5°iÑ@Ô@ð ÍØœñJô Jð ð ×(Ò(Ø4Ø!*¤Ø!(¤Ý'0ð	 )ñ ô ð ð !Ð$6Ð6Ð6Ø×(Ò(Ø.Ø!*¤Ø!(¤Ý'0ð	 )ñ ô ð ùð #Ð&DÐ&D¸Ð&DÑ&DÔ&DÑDÐ"Ñ"ðMF	Eð F	Es   Ã1!DÄD%Ä$D%r—   rµ   r   c                óL   — |                      ¦   «         | j        j        j        v S r   )ÚqnameÚlinterÚconfigÚovergeneral_exceptions)rt   r—   s     r   r•   z+ExceptionsChecker._is_overgeneral_exception‹  s   € Ø�ŠÑ Ô  D¤KÔ$6Ô$MÐMÐMr    )r   rp   )rC   ro   r   rp   )râ   rã   r'   r   rä   r/   r   rp   )rC   rí   r   rp   )rC   r  r   rp   )rC   r  r   rp   )rC   r  r   rp   )r—   rµ   r   r   )r#   r�   r‚   rƒ   r|   rj   ÚmsgsÚoptionsrÇ   r   Úonly_required_for_messagesrÎ   rÉ   rÌ   rË   rì   r   r  r  r  r  r•   Ú__classcell__)rx   s   @r   rn   rn   "  s  ø€ € € € € Ø#Ð#à€DØ€Dð %àKØØ:ØJð	ð ð	
ð
€Gðð ð ð ð ð ð &€UÔ%ØØØØØØØØ ñ	ô 	ð>ð >ð >ñ	ô 	ð>ð$Qð Qð Qð Qð*Uð Uð Uð Uð",ð ,ð ,ð ,ð\3ð 3ð 3ð 3ðj7Uð 7Uð 7Uð 7Uðr &€UÔ%Ð&AÑBÔBðYð Yð Yñ CÔBðYð" &€UÔ%Ð&AÑBÔBðYð Yð Yñ CÔBðYð &€UÔ%ØØ ØØØØ Øñô ðð ð ñô ððKEð KEð KEð KEðZNð Nð Nð Nð Nð Nð Nð Nr    rn   r'  r   rp   c                óJ   — |                       t          | ¦  «        ¦  «         d S r   )Úregister_checkerrn   )r'  s    r   Úregisterr0  �  s%   € Ø
×ÒÕ-¨fÑ5Ô5Ñ6Ô6Ð6Ð6Ð6r    )r   r   r   )r.   r/   r0   r1   r   r2   )r=   r>   r   r   )r'  r   r   rp   ))rƒ   Ú
__future__r   r+   r)   Úcollections.abcr   Útypingr   r   r“   r   r   r	   Úastroid.contextr
   Úastroid.typingr   r   Úpylintr   Úpylint.checkersr   Úpylint.interfacesr   r   Úpylint.typingr   Úpylint.lintr   r-   r<   rF   rj   Ú__annotations__rl   r…   r¨   ÚBaseCheckerrn   r0  r"   r    r   ú<module>r=     s¢  ðð
 3Ð 2Ð 2à "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0àð %Ø$Ð$Ð$Ð$Ð$Ð$ð2ð 2ð 2ð 2ð <@ðð ð ð ð ð*?ð ?ð ?ð ?ð
w+Øð ðw+ð ð ðw+ð ð 	ðw+ð0 ØNØð	ð 
Ð9Ð:Ð;ðð1w+ð@ ð ðAw+ðL ð ðMw+ðV ð ðWw+ðb ð ðcw+ðt Ø+Ø ð	Mð 
Ð0Ð1Ð2ððuw+ðD ð ðEw+ðP ð ðQw+ð` ð ðaw+ðr ð ðsw+ð@ ð ðAw+ðN ð ðOw+ð\ ð ð]w+€ð wð wð wñ wðt8ð 8ð 8ð 8ð 8ñ 8ô 8ð 8ð&'ð 'ð 'ð 'ð '˜{ñ 'ô 'ð 'ðT*
ð *
ð *
ð *
ð *
 ñ *
ô *
ð *
ðZjNð jNð jNð jNð jN˜Ô,ñ jNô jNð jNðZ7ð 7ð 7ð 7ð 7ð 7r    