§
    öyIfŠ ã            	      óÞ  — U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddlm	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mZ ddlZddlZdd	lmZ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( ddl)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3 erddl4m5Z5  ej6        d¦  «        Z7dZ8 ej6        d¦  «        Z9ddiZ:dZ;dZ< e=h d£¦  «        Z>ej?        j@        ej?        jA        ej?        jB        ej        jC        jD        fZEejF        ejG        ejH        ejI        ejJ        ejK        ejL        fZM G d„ de¦  «        ZNd€d"„ZOd�d'„ZPd‚d-„ZQdƒd0„ZRd„d4„ZSd…d5„ZTd†d9„ZUd‡d<„ZVdˆd>„ZWd‰dB„ZXi dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“dSdT“dUdV“dWdX“dYdZ“d[d\“d]d^“d_d`“dadb“dcdd“dedfdgdhdigifdjdkdldhdmgifdndodpdqdrdsœ¥ZYdteZdu<    G dv„ dwe¦  «        Z[ G dx„ dy¦  «        Z\ G dz„ d{e!¦  «        Z]dŠd„Z^dS )‹z#Variables checkers for Python code.é    )ÚannotationsN)Údefaultdict)Ú	GeneratorÚIterableÚIterator)ÚEnum)Úcached_property)ÚTYPE_CHECKINGÚAnyÚ
NamedTuple)ÚbasesÚextract_nodeÚnodesÚutil)Ú_base_nodes)ÚInferenceResult)ÚBaseCheckerÚutils)Úin_type_checking_blockÚis_module_ignoredÚis_postponed_evaluation_enabledÚis_sys_guardÚoverridden_method)Ú	PY39_PLUSÚTYPING_NEVERÚTYPING_NORETURN)ÚCONTROL_FLOWÚHIGHÚ	INFERENCEÚINFERENCE_FAILURE)ÚMessageDefinitionTuple)ÚPyLinterz^_{2}[a-z]+_{2}$Ú
__future__z_.*|^ignored_|^unused_Ú_py_abcÚabczbuiltins.rangeÚtyping>5   r   ÚSetÚDictÚListÚTextÚTypeÚDequeÚSizedÚTupleÚUnionÚAnyStrÚCounterÚGenericÚMappingÚPatternÚTypeVarÚBinaryIOÚCallableÚClassVarÚHashabler   r   ÚKeysViewÚOptionalÚSequenceÚ	AwaitableÚ	ContainerÚ	CoroutineÚ	FrozenSetr   Ú	ItemsViewÚ
ByteStringÚ
CollectionÚ
MutableSetr   Ú
ReversibleÚ
ValuesViewÚAbstractSetÚDefaultDictÚMappingViewÚSupportsAbsÚSupportsIntÚAsyncIterableÚAsyncIteratorÚSupportsBytesÚSupportsFloatÚSupportsRoundÚAsyncGeneratorÚContextManagerÚMutableMappingÚMutableSequenceÚSupportsComplexÚAsyncContextManagerc                  ó   — e Zd ZdZdZdZdS )ÚVariableVisitConsumerActionzîReported by _check_consumer() and its sub-methods to determine the
    subsequent action to take in _undefined_and_used_before_checker().

    Continue -> continue loop to next consumer
    Return -> return and thereby break the loop
    r   é   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚCONTINUEÚRETURN© ó    úM/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/variables.pyrX   rX   €   s$   € € € € € ðð ð €HØ€F€F€Fra   rX   Ústmtúnodes.ImportFromÚnameÚstrÚreturnúbool | Nonec                ó   — 	 |                       | j        ¦  «        }n# t          j        $ r Y dS w xY w|j                             |g ¦  «        D ]/}t          |t          j        ¦  «        r|j        t          k    r dS Œ0dS )z9Check if the name is a future import from another module.NT)
Údo_import_moduleÚmodnameÚastroidÚAstroidBuildingErrorÚlocalsÚgetÚ
isinstancer   Ú
ImportFromÚFUTURE)rc   re   ÚmoduleÚ
local_nodes       rb   Ú_is_from_future_importru   Œ   s•   € ðØ×&Ò& t¤|Ñ4Ô4ˆˆøÝÔ'ð ð ð Øˆtˆtðøøøð ”m×'Ò'¨¨bÑ1Ô1ð ð ˆ
Ý�j¥%Ô"2Ñ3Ô3ð 	¸
Ô8JÍfÒ8TÐ8TØ�4�4øØˆ4s   ‚ �0¯0Únodeúnodes.AssignÚinferredr   c                ó  — d}t          |t          ¦  «        rit          | t          j        ¦  «        r| j                             ¦   «         }n3t          | t          j        ¦  «        r| j                             ¦   «         }|S |                     ¦   «         j	        }|                      ¦   «         j	        |k    r;| j
        |j
        k    rd|                     ¦   «         › d�}n&|j
        r
d|j
        › �}n|j
        rd|j
        › d|› �}|S )z~Return extra information to add to the message for unpacking-non-sequence
    and unbalanced-tuple/dict-unpacking errors.
    Ú ú'zdefined at line z of )rp   Ú
DICT_TYPESr   ÚAssignÚvalueÚ	as_stringÚForÚiterÚrootre   Úlineno)rv   rx   ÚmoreÚinferred_modules       rb   Ú_get_unpacking_extra_infor†   ™   s  € ð €DÝ�(�JÑ'Ô'ð Ý�d�EœLÑ)Ô)ð 	)Ø”:×'Ò'Ñ)Ô)ˆDˆDÝ˜�eœiÑ(Ô(ð 	)Ø”9×&Ò&Ñ(Ô(ˆDØˆà—m’m‘o”oÔ*€OØ‡y‚y�{„{Ô˜?Ò*Ð*ØŒ;˜(œ/Ò)Ð)Ø.�x×)Ò)Ñ+Ô+Ð.Ð.Ð.ˆDˆDØŒ_ð 	8Ø7 h¤oÐ7Ð7ˆDøØ	Œð IØH (¤/ÐHÐH°ÐHÐHˆØ€Kra   ú
nodes.NameÚframeúnodes.LocalsDictNodeNGÚdefframeÚboolc                ó.  — dx}}|r |j         r|j                              ¦   «         }|r |j         r|j                              ¦   «         }t          |t          j        ¦  «        r'||ur#|t          j        | t          j        ¦  «        u rdS t          |t          j        ¦  «        rR|                     |¦  «        r| j	        |j	        k     S t          | j         t          j        t          j
        f¦  «        sdS g }|p||fD ]f}|}|r`t          |t          j        t          j        f¦  «        s|                     |¦  «         n$|j         r|j                              ¦   «         }nn|°`Œgt          t          |¦  «        ¦  «        dk    rdS |j	        |j	        k     S )aî  Detect that the given frames share a global scope.

    Two frames share a global scope when neither
    of them are hidden under a function scope, as well
    as any parent scope of them, until the root scope.
    In this case, depending from something defined later on
    will only work if guarded by a nested function definition.

    Example:
        class A:
            # B has the same global scope as `C`, leading to a NameError.
            # Return True to indicate a shared scope.
            class B(C): ...
        class C: ...

    Whereas this does not lead to a NameError:
        class A:
            def guard():
                # Return False to indicate no scope sharing.
                class B(C): ...
        class C: ...
    NFrY   )ÚparentÚscoperp   r   ÚClassDefr   Úget_node_first_ancestor_of_typeÚFunctionDefÚ	parent_ofrƒ   Ú	ArgumentsÚModuleÚappendÚlenÚset)rv   rˆ   rŠ   Ú	def_scoperŽ   Úbreak_scopesÚcurrent_scopeÚparent_scopes           rb   Ú_detect_global_scoperœ   °   s¶  € ð2 Ð€I�Øð %�”ð %Ø”×"Ò"Ñ$Ô$ˆØð ,�H”Oð ,Ø”O×)Ò)Ñ+Ô+ˆ	å�5�%œ.Ñ)Ô)ðà˜Ð"Ð"Ø•UÔ:¸4ÅÔARÑSÔSÐSÐSð ˆuÝ�%�Ô*Ñ+Ô+ð 	ð �?Š?˜8Ñ$Ô$ð 	1Ø”; ¤Ò0Ð0Ý˜$œ+­Ô(9½5¼?Ð'KÑLÔLð 	Ø�5à€LØ˜. 5¨)Ð4ð ð ˆð %ˆØð 	Ý˜l­U¬^½U¼\Ð,JÑKÔKð Ø×#Ò# LÑ1Ô1Ð1ØØÔ"ð Ø+Ô2×8Ò8Ñ:Ô:��àð ð 	øõ �3ˆ|ÑÔÑÔ Ò!Ð!ð ˆuð Œ<˜(œ/Ò)Ð)ra   únodes.Importú&Generator[InferenceResult, None, None]c                óz   — t           j                             ¦   «         }||_        |                      |d¬¦  «        S )NF)Úasname)rl   ÚcontextÚInferenceContextÚ
lookupnameÚinfer)rv   re   r¡   s      rb   Ú_infer_name_moduler¥   ü   s5   € õ Œo×.Ò.Ñ0Ô0€GØ€GÔØ�:Š:�g eˆ:Ñ,Ô,Ð,ra   Únot_consumedúdict[str, list[nodes.NodeNG]]ú(list[tuple[str, _base_nodes.ImportNode]]c                óÒ  — i }|                       ¦   «         D ]­\  }}t          d„ |D ¦   «         ¦  «        rŒ|D ]‹}t          |t          j        t          j        f¦  «        sŒ)|j        D ]Z}d}|d         }|dk    r|}n:d}|                     |¦  «        r|                     d¦  «        dk    rd}|s||v r|}|r	||vr|||<   Œ[ŒŒŒ®t          |                      ¦   «         d	„ ¬
¦  «        S )a  Try to fix imports with multiple dots, by returning a dictionary
    with the import names expanded.

    The function unflattens root imports,
    like 'xml' (when we have both 'xml.etree' and 'xml.sax'), to 'xml.etree'
    and 'xml.sax' respectively.
    c              3  ó¢   K  — | ]J}t          |t          j        ¦  «        o+t          |                     ¦   «         t          j        ¦  «        V — ŒKd S ©N)rp   r   Ú
AssignNameÚassign_typeÚ	AugAssign©Ú.0rc   s     rb   ú	<genexpr>z#_fix_dot_imports.<locals>.<genexpr>  sf   è è € ð 
ð 
ð õ �t�UÔ-Ñ.Ô.ð @Ý˜4×+Ò+Ñ-Ô-­u¬Ñ?Ô?ð
ð 
ð 
ð 
ð 
ð 
ra   Nr   Ú*Fú.éÿÿÿÿTc                ó   — | d         j         S ©NrY   )Ú
fromlineno)Úas    rb   ú<lambda>z"_fix_dot_imports.<locals>.<lambda>/  s   € ¨q°¬t¬€ ra   )Úkey)
ÚitemsÚanyrp   r   rq   ÚImportÚnamesÚ
startswithÚfindÚsorted)	r¦   r¾   re   Ústmtsrc   ÚimportsÚsecond_nameÚimport_module_nameÚname_matches_dotted_imports	            rb   Ú_fix_dot_importsrÇ     sY  € ð 02€EØ#×)Ò)Ñ+Ô+ð .ð .‰ˆˆeÝð 
ð 
ð ð
ñ 
ô 
ñ 
ô 
ð 	ð
 Øð 	.ð 	.ˆDÝ˜d¥UÔ%5µu´|Ð$DÑEÔEð ØØœ:ð .ð .�Ø"�Ø%,¨Q¤ZÐ"Ø%¨Ò,Ð,ð #'�K�Kà16Ð.à*×5Ò5°dÑ;Ô;ð:à.×3Ò3°CÑ8Ô8¸2Ò=Ð=à59Ð2à1ð 9°T¸W°_°_ð '9˜Øð . ;°eÐ#;Ð#;Ø)-�E˜+Ñ&øð+.ð	.õ2 �%—+’+‘-”-Ð%>Ð%>Ð?Ñ?Ô?Ð?ra   c                ó  — | t          |                     t          j        ¦  «        ¦  «        v rdS |                     t          j        t          j        f¦  «        }|D ](}|j        D ]\  }}|r|| k    r  dS Œ|r
|| k    r  dS ŒŒ)dS )zÀDetect imports in the frame, with the required *name*.

    Such imports can be considered assignments if they are not globals.
    Returns True if an import for the given name was found.
    FT)Ú_flattened_scope_namesÚnodes_of_classr   ÚGlobalr½   rq   r¾   )re   rˆ   rÃ   Úimport_nodeÚimport_nameÚimport_aliass         rb   Ú_find_frame_importsrÏ   2  s»   € ð Õ% e×&:Ò&:½5¼<Ñ&HÔ&HÑIÔIÐIÐIØˆuà×"Ò"¥E¤Lµ%Ô2BÐ#CÑDÔD€GØð ð ˆØ)4Ô):ð 	ð 	Ñ%ˆK˜ð ð Ø 4Ò'Ð'Ø˜4˜4˜4ð (àð  °Ò!4Ð!4Ø�t�t�tøð	ð ˆ5ra   ú%nodes.Global | _base_nodes.ImportNodeÚglobal_namesúset[str]c                óB   — | j         D ]\  }}|r||v r dS Œ||v r dS ŒdS )NTF)r¾   )rc   rÑ   rÍ   rÎ   s       rb   Ú_import_name_is_globalrÔ   H  sW   € ð &*¤Zð ð Ñ!ˆ�\ð ð 	Ø˜|Ð+Ð+Ø�t�tð ,à˜LÐ(Ð(Ø�4�4ð )àˆ5ra   Úiteratorú'Iterator[nodes.Global | nodes.Nonlocal]c                ór   — d„ | D ¦   «         }t          t          j                             |¦  «        ¦  «        S )Nc              3  ó>   K  — | ]}t          |j        ¦  «        V — Œd S r«   )r—   r¾   r¯   s     rb   r±   z)_flattened_scope_names.<locals>.<genexpr>Y  s*   è è € Ð3Ð3 $�c�$”*‰oŒoÐ3Ð3Ð3Ð3Ð3Ð3ra   )r—   Ú	itertoolsÚchainÚfrom_iterable)rÕ   Úvaluess     rb   rÉ   rÉ   V  s5   € ð 4Ð3¨(Ð3Ñ3Ô3€FÝ�yŒ×,Ò,¨VÑ4Ô4Ñ5Ô5Ð5ra   Ú	name_nodec                óÊ   ‡ — ‰                       ¦   «         }|                     t          j        ¦  «        }t	          ˆ fd„|D ¦   «         ¦  «        pt          ‰ j        |¦  «        S )zEChecks if name_node has corresponding assign statement in same scope.c              3  ó8   •K  — | ]}|j         ‰j         k    V — Œd S r«   ©re   )r°   r¸   rÝ   s     €rb   r±   z$_assigned_locally.<locals>.<genexpr>a  s,   øè è € Ð>Ð>¨AˆqŒv˜œÒ'Ð>Ð>Ð>Ð>Ð>Ð>ra   )rŽ   rÊ   r   r¬   r¼   rÏ   re   )rÝ   Úname_node_scopeÚassign_stmtss   `  rb   Ú_assigned_locallyrã   ]  sh   ø€ à—o’oÑ'Ô'€OØ"×1Ò1µ%Ô2BÑCÔC€LÝÐ>Ð>Ð>Ð>°Ð>Ñ>Ô>Ñ>Ô>ð ÕBUØŒ˜ñCô Cð ra   únodes.NodeNGrŽ   únodes.FunctionDefc                óT  — t           j        t           j        t           j        t           j        f}|                     t           j        |¬¦  «        D ]W}t          j        |j	        ¦  «        }t          j
        |¦  «        r(t          |dd ¦  «        dk    r| j        |j        k     r dS ŒXdS )N)Ú
skip_klassre   rn   TF)r   r‘   r�   r½   rq   rÊ   ÚCallr   Ú
safe_inferÚfuncÚis_builtin_objectÚgetattrrƒ   )rc   rŽ   Ú
skip_nodesÚcallrx   s        rb   Ú_has_locals_call_after_noderï   f  s�   € åÔÝŒÝŒÝÔð	€Jð ×$Ò$¥U¤Z¸JÐ$ÑGÔGð ð ˆÝÔ# D¤IÑ.Ô.ˆåÔ# HÑ-Ô-ð	å˜ &¨$Ñ/Ô/°8Ò;Ð;àŒ{˜Tœ[Ò(Ð(Ø�t�tøØˆ5ra   ÚE0601)z#Using variable %r before assignmentúused-before-assignmentaf  Emitted when a local variable is accessed before its assignment took place. Assignments in try blocks are assumed not to have occurred when evaluating associated except/finally blocks. Assignments in except blocks are assumed not to have occurred when evaluating statements outside the block, except when the associated try block contains a return statement.ÚE0602)zUndefined variable %rúundefined-variablez,Used when an undefined variable is accessed.ÚE0603)z%Undefined variable name %r in __all__úundefined-all-variablez>Used when an undefined variable name is referenced in __all__.ÚE0604)z7Invalid object %r in __all__, must contain only stringsúinvalid-all-objectz;Used when an invalid (non-string) object occurs in __all__.ÚE0605)z1Invalid format for __all__, must be tuple or listúinvalid-all-formatz(Used when __all__ has an invalid format.ÚE0611)zNo name %r in module %rúno-name-in-modulez-Used when a name cannot be found in a module.ÚW0601)z0Global variable %r undefined at the module levelúglobal-variable-undefinedzsUsed when a variable is defined through the "global" statement but the variable is not defined in the module scope.ÚW0602)z-Using global for %r but no assignment is doneúglobal-variable-not-assignedzÀWhen a variable defined in the global scope is modified in an inner scope, the 'global' keyword is required in the inner scope only if there is an assignment operation done in the inner scope.ÚW0603)zUsing the global statementúglobal-statementzˆUsed when you use the "global" statement to update a global variable. Pylint discourages its usage. That doesn't mean you cannot use it!ÚW0604)z.Using the global statement at the module levelúglobal-at-module-levelzTUsed when you use the "global" statement at the module level since it has no effect.ÚW0611)z	Unused %súunused-importz5Used when an imported module or variable is not used.ÚW0612)zUnused variable %rúunused-variablez-Used when a variable is defined but not used.ÚW0613)zUnused argument %rúunused-argumentz4Used when a function or method argument is not used.ÚW0614)z.Unused import(s) %s from wildcard import of %súunused-wildcard-importz]Used when an imported module or variable is not used from a `'from X import *'` style import.ÚW0621)z-Redefining name %r from outer scope (line %s)úredefined-outer-namezUUsed when a variable's name hides a name defined in an outer scope or except handler.ÚW0622)zRedefining built-in %rúredefined-builtinz5Used when a variable or function override a built-in.ÚW0631)z)Using possibly undefined loop variable %rúundefined-loop-variablez‚Used when a loop variable (i.e. defined by a for loop or a list comprehension or a generator expression) is used outside the loop.ziPossible unbalanced tuple unpacking with sequence %s: left side has %d label%s, right side has %d value%súunbalanced-tuple-unpackingz>Used when there is an unbalanced tuple unpacking in assignmentÚ	old_names)ÚE0632zold-unbalanced-tuple-unpackingz%Attempting to unpack a non-sequence%súunpacking-non-sequencezKUsed when something which is not a sequence is used in an unpack assignment)ÚW0633zold-unpacking-non-sequence)z Cell variable %s defined in loopúcell-var-from-loopz†A variable used in a closure is defined in a loop. This will result in all closures using the same value for the closed-over variable.)zPossibly unused variable %rúpossibly-unused-variablez¤Used when a variable is defined but might not be used. The possibility comes from the fact that locals() might be used, which could consume or not the said variable)z"Invalid assignment to %s in methodúself-cls-assignmentzKInvalid assignment to self or cls in instance or class method respectively.)z!Invalid index for iterable lengthúpotential-index-errorzREmitted when an index used on an iterable goes beyond the length of that iterable.)z_Possible unbalanced dict unpacking with %s: left side has %d label%s, right side has %d value%súunbalanced-dict-unpackingzIUsed when there is an unbalanced dict unpacking in assignment or for loop)ÚW0632ÚE0633ÚW0640ÚW0641ÚW0642ÚE0643ÚW0644z!dict[str, MessageDefinitionTuple]ÚMSGSc                  ó<   — e Zd ZU dZded<   ded<   ded<   ded<   d	S )
ÚScopeConsumerz)Store nodes and their consumption states.r§   Ú
to_consumeÚconsumedú$defaultdict[str, list[nodes.NodeNG]]Úconsumed_uncertainrf   Ú
scope_typeN)rZ   r[   r\   r]   Ú__annotations__r`   ra   rb   r%  r%    sC   € € € € € € Ø3Ð3à-Ð-Ð-Ñ-Ø+Ð+Ð+Ñ+Ø<Ð<Ð<Ñ<Ø€O€O�O€O€Ora   r%  c                  ó’  — e Zd ZdZd2d„Zd3d	„Zd4d„Zed5d„¦   «         Zed5d„¦   «         Z	ed6d„¦   «         Z
ed3d„¦   «         Zd7d„Zd8d„Zed9d„¦   «         Zed:d„¦   «         Zd;d„Zed<d"„¦   «         Zed=d%„¦   «         Zed9d&„¦   «         Zed9d'„¦   «         Zed>d*„¦   «         Zed?d.„¦   «         Zed@d/„¦   «         ZedAd0„¦   «         Zd1S )BÚNamesConsumerzQA simple class to handle consumed, to consume and scope type info of node locals.rv   rä   r*  rf   rg   ÚNonec                óž   — t          t          j        |j        ¦  «        i t          j        t
          ¦  «        |¦  «        | _        || _        d S r«   )r%  Úcopyrn   Úcollectionsr   ÚlistÚ_atomicrv   )Úselfrv   r*  s      rb   Ú__init__zNamesConsumer.__init__  s@   € Ý$ÝŒI�d”kÑ"Ô" B­Ô(?ÅÑ(EÔ(EÀzñ
ô 
ˆŒð ˆŒ	ˆ	ˆ	ra   c           	     ó¢  — d„ | j         j                             ¦   «         D ¦   «         }d„ | j         j                             ¦   «         D ¦   «         }d„ | j         j                             ¦   «         D ¦   «         }d                     |¦  «        }d                     |¦  «        }d                     |¦  «        }d|› d|› d|› d| j         j        › d	�	S )
Nc                ó"   — g | ]\  }}|› d |› �‘ŒS ©z->r`   ©r°   ÚkÚvs      rb   ú
<listcomp>z*NamesConsumer.__repr__.<locals>.<listcomp>  s&   € ÐPÐPÐP©¨¨1˜1˜˜ ˜˜ÐPÐPÐPra   c                ó"   — g | ]\  }}|› d |› �‘ŒS r8  r`   r9  s      rb   r<  z*NamesConsumer.__repr__.<locals>.<listcomp>  s&   € ÐKÐKÐK¡T Q¨˜�[�[˜Q�[�[ÐKÐKÐKra   c                ó"   — g | ]\  }}|› d |› �‘ŒS r8  r`   r9  s      rb   r<  z*NamesConsumer.__repr__.<locals>.<listcomp>   s3   € ð 
ð 
ð 
Ù ˜A˜qˆqˆKˆK�AˆKˆKð
ð 
ð 
ra   ú, z
to_consume : z
consumed : z
consumed_uncertain: z
scope_type : ú
)r3  r&  r»   r'  r)  Újoinr*  )r4  Ú_to_consumesÚ	_consumedÚ_consumed_uncertainÚto_consumesr'  r)  s          rb   Ú__repr__zNamesConsumer.__repr__  sý   € ØPÐP°´Ô0G×0MÒ0MÑ0OÔ0OÐPÑPÔPˆØKÐK¨T¬\Ô-B×-HÒ-HÑ-JÔ-JÐKÑKÔKˆ	ð
ð 
Ø$(¤LÔ$C×$IÒ$IÑ$KÔ$Kð
ñ 
ô 
Ðð —i’i Ñ-Ô-ˆØ—9’9˜YÑ'Ô'ˆØ!ŸYšYÐ':Ñ;Ô;ÐðØðð àðð ð (ðð ð ŒlÔ%ð	ð ð ð 	ra   úIterator[Any]c                ó*   — t          | j        ¦  «        S r«   )r�   r3  ©r4  s    rb   Ú__iter__zNamesConsumer.__iter__-  s   € Ý�D”LÑ!Ô!Ð!ra   r§   c                ó   — | j         j        S r«   )r3  r&  rI  s    rb   r&  zNamesConsumer.to_consume0  ó   € àŒ|Ô&Ð&ra   c                ó   — | j         j        S r«   )r3  r'  rI  s    rb   r'  zNamesConsumer.consumed4  s   € àŒ|Ô$Ð$ra   r(  c                ó   — | j         j        S )a†  Retrieves nodes filtered out by get_next_to_consume() that may not
        have executed.

        These include nodes such as statements in except blocks, or statements
        in try blocks (when evaluating their corresponding except and finally
        blocks). Checkers that want to treat the statements as executed
        (e.g. for unused-variable) may need to add them back.
        )r3  r)  rI  s    rb   r)  z NamesConsumer.consumed_uncertain8  s   € ð Œ|Ô.Ð.ra   c                ó   — | j         j        S r«   )r3  r*  rI  s    rb   r*  zNamesConsumer.scope_typeD  rL  ra   re   Úconsumed_nodesúlist[nodes.NodeNG]c                óz   ‡— ˆfd„| j         |         D ¦   «         }‰| j        |<   |r|| j         |<   dS | j         |= dS )z§Mark the given nodes as consumed for the name.

        If all of the nodes for the name were consumed, delete the name from
        the to_consume dictionary
        c                ó6   •— g | ]}|t          ‰¦  «        v¯|‘ŒS r`   )r—   )r°   ÚnrP  s     €rb   r<  z2NamesConsumer.mark_as_consumed.<locals>.<listcomp>N  s+   ø€ ÐWÐWÐW˜A¸!Å3À~ÑCVÔCVÐ:VÐ:V�aÐ:VÐ:VÐ:Vra   N)r&  r'  )r4  re   rP  Ú
unconsumeds     ` rb   Úmark_as_consumedzNamesConsumer.mark_as_consumedH  s\   ø€ ð XÐWÐWÐW ¤°Ô!6ÐWÑWÔWˆ
Ø,ˆŒ�dÑàð 	&Ø$.ˆDŒO˜DÑ!Ð!Ð!à” Ð%Ð%Ð%ra   r‡   úlist[nodes.NodeNG] | Nonec                ó  ‡‡— ‰j         }‰j        }| j                             |¦  «        }‰                     ¦   «         }|rjt          |t          j        ¦  «        rP||d         j        k    r?|d         j        j        d         }t          |t          j	        ¦  «        r|j         |k    rd}|r0t          |t          j
        ¦  «        r|j        ‰k    r|j        |v rd}t          ˆfd„‰                     ¦   «                              ¦   «         D ¦   «         ¦  «        r|S t                                ‰¦  «        r|S |rM|                      |‰¦  «        }| j        ‰j         xx         |z  cc<   t)          |¦  «        Šˆfd„|D ¦   «         }|rˆfd„|D ¦   «         }|rN|                      |‰|¦  «        }| j        ‰j         xx         |z  cc<   t)          |¦  «        Šˆfd„|D ¦   «         }|rN|                      |||¦  «        }| j        ‰j         xx         |z  cc<   t)          |¦  «        Šˆfd„|D ¦   «         }|rM|                      ||¦  «        }| j        ‰j         xx         |z  cc<   t)          |¦  «        Šˆfd„|D ¦   «         }|S )	aG  Return a list of the nodes that define `node` from this scope.

        If it is uncertain whether a node will be consumed, such as for statements in
        except blocks, add it to self.consumed_uncertain instead of returning it.
        Return None to indicate a special case that needs to be handled by the caller.
        r   Nc              3  óh   •K  — | ],}t          |t          j        ¦  «        o‰j        |j        v V — Œ-d S r«   ©rp   r   ÚNonlocalre   r¾   ©r°   Úchildrv   s     €rb   r±   z4NamesConsumer.get_next_to_consume.<locals>.<genexpr>u  sQ   øè è € ð 
ð 
àõ �u�eœnÑ-Ô-ÐJ°$´)¸u¼{Ð2Jð
ð 
ð 
ð 
ð 
ð 
ra   c                ó   •— g | ]}|‰v¯|‘Œ	S r`   r`   ©r°   rT  Úuncertain_nodes_sets     €rb   r<  z5NamesConsumer.get_next_to_consume.<locals>.<listcomp>„  ó$   ø€ ÐRÐRÐR °QÐ>QÐ5QÐ5Q˜1Ð5QÐ5QÐ5Qra   c                óº   •— g | ]W}t          |                     ¦   «         t          j        ¦  «        r'|                     ¦   «                              ‰¦  «        ¯U|‘ŒXS r`   )rp   Ú	statementr   ÚExceptHandlerr’   ©r°   rT  rv   s     €rb   r<  z5NamesConsumer.get_next_to_consume.<locals>.<listcomp>ˆ  sd   ø€ ð ð ð àÝ! !§+¢+¡-¤-µÔ1DÑEÔEðð —;’;‘=”=×*Ò*¨4Ñ0Ô0ð	Øðð ð ra   c                ó   •— g | ]}|‰v¯|‘Œ	S r`   r`   r_  s     €rb   r<  z5NamesConsumer.get_next_to_consume.<locals>.<listcomp>—  ra  ra   c                ó   •— g | ]}|‰v¯|‘Œ	S r`   r`   r_  s     €rb   r<  z5NamesConsumer.get_next_to_consume.<locals>.<listcomp>£  ra  ra   c                ó   •— g | ]}|‰v¯|‘Œ	S r`   r`   r_  s     €rb   r<  z5NamesConsumer.get_next_to_consume.<locals>.<listcomp>¯  ra  ra   )re   r�   r&  ro   rc  rp   r   r}   Útargetsr¬   r€   r�   Útargetr¼   rˆ   Úget_childrenÚVariablesCheckerÚ%_comprehension_between_frame_and_nodeÚ_uncertain_nodes_in_false_testsr)  r—   Ú!_uncertain_nodes_in_except_blocksÚ=_uncertain_nodes_in_try_blocks_when_evaluating_finally_blocksÚ<_uncertain_nodes_in_try_blocks_when_evaluating_except_blocks)	r4  rv   re   Úparent_nodeÚfound_nodesÚnode_statementÚlhsÚuncertain_nodesr`  s	    `      @rb   Úget_next_to_consumez!NamesConsumer.get_next_to_consumeV  sP  øø€ ð ŒyˆØ”kˆØ”o×)Ò)¨$Ñ/Ô/ˆØŸšÑ)Ô)ˆàð		#å˜;­¬Ñ5Ô5ð		#ð ˜{¨1œ~Ô4Ò4Ð4à˜a”.Ô'Ô/°Ô2ˆCå˜3¥Ô 0Ñ1Ô1ð#Ø69´hÀ$Ò6FÐ6Fà"�ð ð	å˜;­¬	Ñ2Ô2ð	ð Ô  DÒ(Ð(ØÔ" kÐ1Ð1àˆKõ ð 
ð 
ð 
ð 
àŸš™œ×2Ò2Ñ4Ô4ð
ñ 
ô 
ñ 
ô 
ð 	ð Ðõ ×AÒAÀ$ÑGÔGð 	ØÐð ð 	SØ"×BÒBÀ;ÐPTÑUÔUˆOØÔ# D¤IÐ.Ð.Ô.°/ÑAÐ.Ð.Ñ.Ý"% oÑ"6Ô"6ÐØRÐRÐRÐR kÐRÑRÔRˆKð ð 	ðð ð ð à$ðñ ô ˆKð ð 	SØ"×DÒDØ˜T >ñô ˆOð Ô# D¤IÐ.Ð.Ô.°/ÑAÐ.Ð.Ñ.Ý"% oÑ"6Ô"6ÐØRÐRÐRÐR kÐRÑRÔRˆKð ð 	Sà×RÒRØ °ñô ð ð
 Ô# D¤IÐ.Ð.Ô.°/ÑAÐ.Ð.Ñ.Ý"% oÑ"6Ô"6ÐØRÐRÐRÐR kÐRÑRÔRˆKð ð 	Sà×QÒQØ ñô ð ð
 Ô# D¤IÐ.Ð.Ô.°/ÑAÐ.Ð.Ñ.Ý"% oÑ"6Ô"6ÐØRÐRÐRÐR kÐRÑRÔRˆKàÐra   r‹   c                ó¾  ‡ — t          |t          j        ¦  «        r�|}|j        r7t	          d„ |                     t          j        ¦  «        D ¦   «         d¦  «        }|r|j        ng }t                               ‰ |¦  «        pt          ˆ fd„|D ¦   «         ¦  «        S t          |t          j
        t          j        t          j        f¦  «        rt                               ‰ |¦  «        S t          |t          j        ¦  «        sdS t          |                     t          j        ¦  «        ¦  «        rdS t                               ‰ |¦  «        rdS t          |j        t          j        ¦  «        r|j        j        n|j        }t)          j        |¦  «        }d}d}|D ]:}t          |t          j        ¦  «        sd}Œ|j        }	|p|	t.          k    o|	}|o|	 }Œ;|r"|r t                               ‰ |j        ¦  «        S |r"|r t                               ‰ |j        ¦  «        S t                               ‰ |j        ¦  «        pt                               ‰ |j        ¦  «        S )zyReturn True if there is a path under this `if_node`
        that is inferred to define `name`, raise, or return.
        c              3  ó   K  — | ]}|V — Œd S r«   r`   ©r°   r]  s     rb   r±   zINamesConsumer._inferred_to_define_name_raise_or_return.<locals>.<genexpr>¾  s"   è è € ÐGÐG˜u�UÐGÐGÐGÐGÐGÐGra   Nc              3  óN   •K  — | ]}t                                ‰|¦  «        V — Œ d S r«   ©r-  Ú)_defines_name_raises_or_returns_recursive©r°   Úhandlerre   s     €rb   r±   zINamesConsumer._inferred_to_define_name_raise_or_return.<locals>.<genexpr>Ä  sG   øè è € ð ð àõ ×GÒGÈÈgÑVÔVðð ð ð ð ð ra   FT)rp   r   ÚTryÚ	finalbodyÚnextrÊ   Úhandlersr-  r}  ÚallÚWithr€   ÚWhileÚIfr¼   ÚBreakÚ_defines_name_raises_or_returnsÚtestÚ	NamedExprr~   r   Ú	infer_allÚConstÚNotImplementedÚ_branch_handles_nameÚorelseÚbody)
re   rv   Útry_except_noderƒ  rŠ  Úall_inferredÚonly_search_ifÚonly_search_elserx   Úvals
   `         rb   Ú(_inferred_to_define_name_raise_or_returnz6NamesConsumer._inferred_to_define_name_raise_or_return³  s€  ø€ õ �d�EœIÑ&Ô&ð 	à"ˆOØŒ~ð Ý"&ØGÐG¨×(;Ò(;½E¼IÑ(FÔ(FÐGÑGÔGØñ#ô #�ð 4CÐJ�Ô/Ð/ÈˆHÝ ×JÒJØ�dñô ð åð ð ð ð à'ðñ ô ñ ô ðõ �d�UœZ­¬µE´KÐ@ÑAÔAð 	WÝ ×JÒJÈ4ÐQUÑVÔVÐVå˜$¥¤Ñ)Ô)ð 	Ø�5õ ˆt×"Ò"¥5¤;Ñ/Ô/Ñ0Ô0ð 	Ø�4õ ×8Ò8¸¸tÑDÔDð 	Ø�4å",¨T¬Y½¼Ñ"HÔ"HÐWˆtŒyŒˆÈdÌiˆÝ” tÑ,Ô,ˆØˆØÐà$ð 	<ð 	<ˆHÝ˜h­¬Ñ4Ô4ð Ø#(Ð ØØ”.ˆCØ+ÐN°µ~Ò0EÐ0MÈ#ˆNØ/Ð;¸°GÐÐð ð 	IÐ,ð 	IÝ ×5Ò5°d¸D¼KÑHÔHÐHàð 	G˜Nð 	GÝ ×5Ò5°d¸D¼IÑFÔFÐFå×1Ò1Ø�$”)ñ
ô 
ð Cå×/Ò/°°d´kÑBÔBð	Cra   r‘  úIterable[nodes.NodeNG]c                ó:   ‡ — t          ˆ fd„|D ¦   «         ¦  «        S )Nc           	   3  ó  •K  — | ]�}t                                ‰|¦  «        pat          |t          j        t          j        t          j        t          j        t          j        f¦  «        ot            	                    ‰|¦  «        V — Œ‚d S r«   )
r-  r‰  rp   r   r‡  r€  r…  r€   r†  r—  )r°   Úif_body_stmtre   s     €rb   r±   z5NamesConsumer._branch_handles_name.<locals>.<genexpr>ñ  s›   øè è € ð 
ð 
ð õ ×9Ò9¸$ÀÑMÔMð ÝØå”HÝ”IÝ”JÝ”IÝ”Kðñ	ô 	ð õ ×FÒFØ�lñô ð
ð 
ð 
ð 
ð 
ð 
ra   )r¼   )re   r‘  s   ` rb   r�  z"NamesConsumer._branch_handles_nameï  s=   ø€ åð 
ð 
ð 
ð 
ð !%ð
ñ 
ô 
ñ 
ô 
ð 	
ra   rs  c                óp  ‡— g }|D �].}t          |t          j        ¦  «        r|j        }n/t          |t          j        t          j        f¦  «        r‰j        }nŒTˆfd„|                     ¦   «         D ¦   «         }|sŒw|d         }t          ‰t          j        ¦  «        r)‰                     ¦   «         |                     ¦   «         urŒÂ|                     ‰¦  «        rŒØ|d         }t           
                    ‰|¦  «        rŒüt                               ||¦  «        r�Œ|                     |¦  «         �Œ0|S )a	  Identify nodes of uncertain execution because they are defined under
        tests that evaluate false.

        Don't identify a node if there is a path that is inferred to
        define the name, raise, or return (e.g. any executed if/elif/else branch).
        c                ór   •— g | ]3}t          |t          j        ¦  «        ¯|                     ‰¦  «        °1|‘Œ4S r`   )rp   r   r‡  r’   re  s     €rb   r<  zANamesConsumer._uncertain_nodes_in_false_tests.<locals>.<listcomp>  sQ   ø€ ð ð ð àÝ˜a¥¤Ñ*Ô*ðð 45·;²;¸tÑ3DÔ3DðØðð ð ra   r   r´   )rp   r   r¬   re   r½   rq   Únode_ancestorsrˆ   r’   r-  Ú_node_guarded_by_same_testr—  r•   )	r4  rs  rv   rv  Ú
other_nodere   Úall_ifÚ
closest_ifÚouter_ifs	     `      rb   rn  z-NamesConsumer._uncertain_nodes_in_false_tests  sW  ø€ ð ˆØ%ð !	/ñ !	/ˆJÝ˜*¥eÔ&6Ñ7Ô7ð Ø!”��Ý˜J­¬µuÔ7GÐ(HÑIÔIð Ø”y��àðð ð ð à#×2Ò2Ñ4Ô4ðñ ô ˆFð
 ð Øà œˆJå˜4¥Ô!1Ñ2Ô2ðà—J’J‘L”L¨
×(8Ò(8Ñ(:Ô(:Ð:Ð:àØ×#Ò# DÑ)Ô)ð Øà˜b”zˆHÝ×7Ò7¸¸hÑGÔGð Øõ ×EÒEÀdÈHÑUÔUð Ùà×"Ò" :Ñ.Ô.Ð.Ñ.àÐra   Úother_ifúnodes.Ifc                ó:  — |j                              ¦   «         }t          j        |j         ¦  «        }|                      ¦   «         D ]Ó}t          |t          j        ¦  «        sŒ|j                              ¦   «         |k    r dS t          |j         t          j        ¦  «        rŒ]t          j        |j         ¦  «        }t          |¦  «        t          |¦  «        k    r=t          d„ g |¢|¢R D ¦   «         ¦  «        rŒµd„ |D ¦   «         d„ |D ¦   «         k    rŒÐ dS ŒÔdS )a3  Identify if `node` is guarded by an equivalent test as `other_if`.

        Two tests are equivalent if their string representations are identical
        or if their inferred values consist only of constants and those constants
        are identical, and the if test guarding `node` is not a Name.
        Tc              3  óL   K  — | ]}t          |t          j        ¦  «         V — Œ d S r«   )rp   r   r�  ©r°   rŠ  s     rb   r±   z;NamesConsumer._node_guarded_by_same_test.<locals>.<genexpr>E  sE   è è € ð ð àõ # 4­¬Ñ5Ô5Ð5ðð ð ð ð ð ra   c                ó   — h | ]	}|j         ’Œ
S r`   ©r~   r¨  s     rb   ú	<setcomp>z;NamesConsumer._node_guarded_by_same_test.<locals>.<setcomp>J  s   € Ð8Ð8Ð8 4�D”JÐ8Ð8Ð8ra   c                ó   — h | ]	}|j         ’Œ
S r`   rª  r¨  s     rb   r«  z;NamesConsumer._node_guarded_by_same_test.<locals>.<setcomp>J  s'   € ð =ð =ð =Ø#'�D”Jð=ð =ð =ra   F)rŠ  r   r   rŒ  rž  rp   r   r‡  ÚNamer–   r¼   )rv   r¤  Úother_if_test_as_stringÚother_if_test_all_inferredÚancestorr“  s         rb   rŸ  z(NamesConsumer._node_guarded_by_same_test2  sT  € ð #+¤-×"9Ò"9Ñ";Ô";ÐÝ%*¤_°X´]Ñ%CÔ%CÐ"Ø×+Ò+Ñ-Ô-ð 	ð 	ˆHÝ˜h­¬Ñ1Ô1ð ØØŒ}×&Ò&Ñ(Ô(Ð,CÒCÐCØ�t�tÝ˜(œ-­¬Ñ4Ô4ð ØÝ œ?¨8¬=Ñ9Ô9ˆLÝ�<Ñ Ô ¥CÐ(BÑ$CÔ$CÒCÐCÝð ð à L ,Ð LÐ1KÐ LÐ Lðñ ô ñ ô ð ð Ø8Ð8¨<Ð8Ñ8Ô8ð =ð =Ø+Eð=ñ =ô =ò ð ð Ø�t�tð Dð ˆura   rt  ú_base_nodes.Statementc                ój  ‡— g }| D �]+}|                      ¦   «         }t          j        |t          j        ¦  «        }|sŒ9|                     ‰¦  «        rŒO|j        }t          d„ |j        D ¦   «         ¦  «        }t          d„ |j	        D ¦   «         ¦  «        }	t          d„ |j	        D ¦   «         ¦  «        }
t          d„ |j	        D ¦   «         ¦  «        }|rGt          |j        t          j        t          j        f¦  «        r|j                             |¦  «        r�Œ|s|	s|
rÜt          |j        t          j        ¦  «        r>||j        j        v r0|j                             |¦  «        r|                     |¦  «         nt          |j        t          j        ¦  «        r>||j        j	        v r0|j                             |¦  «        r|                     |¦  «         n"t!          ˆfd„|j        D ¦   «         ¦  «        r�Œùt$                               ‰|¦  «        r�Œ|                     |¦  «         �Œ-|S )z}Return any nodes in ``found_nodes`` that should be treated as uncertain
        because they are in an except block.
        c              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r«   ©rp   r   ÚReturn)r°   Útry_statements     rb   r±   zBNamesConsumer._uncertain_nodes_in_except_blocks.<locals>.<genexpr>i  sB   è è € ð $ð $à!õ ˜=­%¬,Ñ7Ô7ð$ð $ð $ð $ð $ð $ra   c              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r«   r´  ©r°   Úelse_statements     rb   r±   zBNamesConsumer._uncertain_nodes_in_except_blocks.<locals>.<genexpr>m  sB   è è € ð %ð %à"õ ˜>­5¬<Ñ8Ô8ð%ð %ð %ð %ð %ð %ra   c              3  óº   K  — | ]V}t          |t          j        ¦  «        o7t          |j        t          j        ¦  «        ot          j        |j        ¦  «        V — ŒWd S r«   )rp   r   ÚExprr~   rè   r   Úis_terminating_funcr¸  s     rb   r±   zBNamesConsumer._uncertain_nodes_in_except_blocks.<locals>.<genexpr>q  ss   è è € ð #ð #ð #õ ˜>­5¬:Ñ6Ô6ð DÝ˜~Ô3µU´ZÑ@Ô@ðDåÔ-¨nÔ.BÑCÔCð#ð #ð #ð #ð #ð #ra   c              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r«   )rp   r   ÚContinuer¸  s     rb   r±   zBNamesConsumer._uncertain_nodes_in_except_blocks.<locals>.<genexpr>w  sB   è è € ð 'ð 'à"õ ˜>­5¬>Ñ:Ô:ð'ð 'ð 'ð 'ð 'ð 'ra   c              3  óX   •K  — | ]$}t                                ‰j        |¦  «        V — Œ%d S r«   )r-  r}  re   )r°   r  rv   s     €rb   r±   zBNamesConsumer._uncertain_nodes_in_except_blocks.<locals>.<genexpr>”  sP   øè è € ð ð ð  õ "×KÒKØœ	 7ñô ðð ð ð ð ð ra   )rc  r   r�   r   rd  r’   r�   r¼   r‘  r�  rp   r€   r†  r€  r�  r•   r„  rƒ  r-  Ú_check_loop_finishes_via_except)rs  rv   rt  rv  r   Úother_node_statementÚclosest_except_handlerÚclosest_try_exceptÚtry_block_returnsÚelse_block_returnsÚelse_block_exitsÚelse_block_continuess    `          rb   ro  z/NamesConsumer._uncertain_nodes_in_except_blocksR  sÔ  ø€ ð ˆØ%ð D	/ñ D	/ˆJØ#-×#7Ò#7Ñ#9Ô#9Ð å%*Ô%JØ$¥eÔ&9ñ&ô &Ð"ð *ð Øà%×/Ò/°Ñ5Ô5ð ØØ,BÔ,IÐå #ð $ð $à%7Ô%<ð$ñ $ô $ñ !ô !Ðõ "%ð %ð %à&8Ô&?ð%ñ %ô %ñ "ô "Ðõ  #ð #ð #ð '9Ô&?ð	#ñ #ô #ñ  ô  Ðõ $'ð 'ð 'à&8Ô&?ð'ñ 'ô 'ñ $ô $Ð ð
 %ðå˜~Ô4µu´yÅ%Ä+Ð6NÑOÔOðð 'Ô-×7Ò7¸ÑGÔGðñ
 à ð Ð$6ð Ð:Jð õ ˜~Ô4µe´iÑ@Ô@ðà&¨.Ô*?Ô*IÐIÐIØ*Ô1×;Ò;¸NÑKÔKð Jð $×*Ò*¨:Ñ6Ô6Ð6Ð6õ ˜~Ô4µe´iÑ@Ô@ðà&¨.Ô*?Ô*FÐFÐFØ*Ô1×;Ò;¸NÑKÔKð Gð $×*Ò*¨:Ñ6Ô6Ð6Ð6õ ð ð ð ð ð $6Ô#>ð	ñ ô ñ ô ð ñ å×<Ò<¸TÐCUÑVÔVð Ùð ×"Ò" :Ñ.Ô.Ð.Ñ.ØÐra   c                ó˜  ‡ — t          |t          j        t          j        t          j        f¦  «        rdS t          |t          j        ¦  «        r8|j        r1t          |j        t          j        ¦  «        r|j        j	        ‰ k    rdS t          |t          j
        ¦  «        rk|j        D ]c}t          j        |¦  «        D ]L}t          |t          j        ¦  «        r|j        }t          |t          j        ¦  «        r|j	        ‰ k    r  dS ŒMŒdt          |t          j        ¦  «        r:t!          ˆ fd„|                     t          j        ¦  «        D ¦   «         ¦  «        rdS t          |t          j        t          j        f¦  «        r"t!          ˆ fd„|j        D ¦   «         ¦  «        rdS t          |t          j        ¦  «        r"t!          ˆ fd„|j        D ¦   «         ¦  «        rdS t          |t          j        t          j        f¦  «        r|j	        ‰ k    rdS t          |t          j        ¦  «        r|j	        r|j	        j	        ‰ k    rdS dS )NTc              3  ó8   •K  — | ]}|j         j        ‰k    V — Œd S r«   )rj  re   )r°   Úchild_named_exprre   s     €rb   r±   z@NamesConsumer._defines_name_raises_or_returns.<locals>.<genexpr>¶  sB   øè è € ð ð à$ð !Ô'Ô,°Ò4ðð ð ð ð ð ra   c              3  óX   •K  — | ]$}|d          r|d          ‰k    p|d         ‰k    V — Œ%dS )rY   r   Nr`   )r°   Ú	node_namere   s     €rb   r±   z@NamesConsumer._defines_name_raises_or_returns.<locals>.<genexpr>»  s_   øè è € ð F
ð F
àð �qŒ\Ð2˜i¨œl¨dÒ2ÐM¸	À!¼ÈÒ8LðF
ð F
ð F
ð F
ð F
ð F
ra   c              3  óz   •K  — | ]5}t          |d          t          j        ¦  «        o|d          j        ‰k    V — Œ6dS )rY   N©rp   r   r¬   re   )r°   Úitemre   s     €rb   r±   z@NamesConsumer._defines_name_raises_or_returns.<locals>.<genexpr>À  sX   øè è € ð 0
ð 0
àõ �t˜A”w¥Ô 0Ñ1Ô1ÐJ°d¸1´g´lÀdÒ6Jð0
ð 0
ð 0
ð 0
ð 0
ð 0
ra   F)rp   r   ÚRaiseÚAssertrµ  Ú	AnnAssignr~   rj  r¬   re   r}   ri  r   Úget_all_elementsÚStarredr‡  r¼   rÊ   r‹  r½   rq   r¾   r…  r»   r�   r‘   rd  )re   rv   rj  Úelts   `   rb   r‰  z-NamesConsumer._defines_name_raises_or_returns£  s…  ø€ å�d�Uœ[­%¬,½¼ÐEÑFÔFð 	Ø�4å�t�Uœ_Ñ-Ô-ð	à”
ð	õ ˜4œ;­Ô(8Ñ9Ô9ð	ð ”Ô  DÒ(Ð(à�4Ý�d�EœLÑ)Ô)ð 	$Øœ,ð $ð $�Ý Ô1°&Ñ9Ô9ð $ð $�CÝ! #¥u¤}Ñ5Ô5ð (Ø!œi˜Ý! #¥uÔ'7Ñ8Ô8ð $¸S¼XÈÒ=MÐ=MØ#˜t˜t˜tøð	$õ
 �d�EœHÑ%Ô%ð 	Ýð ð ð ð à(,×(;Ò(;½E¼OÑ(LÔ(Lðñ ô ñ ô ð ð �tÝ�d�Uœ\­5Ô+;Ð<Ñ=Ô=ð 	Å#ð F
ð F
ð F
ð F
à!œZðF
ñ F
ô F
ñ C
ô C
ð 	ð �4Ý�d�EœJÑ'Ô'ð 	­Cð 0
ð 0
ð 0
ð 0
àœ
ð0
ñ 0
ô 0
ñ -
ô -
ð 	ð �4Ý�d�Uœ^­UÔ->Ð?Ñ@Ô@ð 	ÀTÄYÐRVÒEVÐEVØ�4å�t�UÔ0Ñ1Ô1ð	à”	ð	ð ”	” $Ò&Ð&à�4Øˆura   c                óœ  ‡ — |                      ¦   «         D ]µ}t                               ‰ |¦  «        r dS t          |t          j        t          j        f¦  «        r0t          ˆ fd„|                      ¦   «         D ¦   «         ¦  «        r dS t          |t          j        ¦  «        r%|j	        st           
                    ‰ |¦  «        r dS Œ¶dS )zaReturn True if some child of `node` defines the name `name`,
        raises, or returns.
        Tc              3  óN   •K  — | ]}t                                ‰|¦  «        V — Œ d S r«   )r-  r‰  )r°   Únested_stmtre   s     €rb   r±   zJNamesConsumer._defines_name_raises_or_returns_recursive.<locals>.<genexpr>Ú  sG   øè è € ð ð à#õ "×AÒAÀ$ÈÑTÔTðð ð ð ð ð ra   F)rk  r-  r‰  rp   r   r‡  r…  r¼   r€  r�  r}  )re   rv   rc   s   `  rb   r}  z7NamesConsumer._defines_name_raises_or_returns_recursiveÏ  sï   ø€ ð ×%Ò%Ñ'Ô'ð 	ð 	ˆDÝ×<Ò<¸TÀ4ÑHÔHð Ø�t�tÝ˜$¥¤­5¬:Ð 6Ñ7Ô7ð  Ýð ð ð ð à'+×'8Ò'8Ñ':Ô':ðñ ô ñ ô ð  ð  ˜4˜4å˜4¥¤Ñ+Ô+ðàœðõ "×KÒKÈDÐRVÑWÔWðð
 �t�tøØˆura   Úother_node_try_exceptú	nodes.Tryc                ó  ‡ — |j         sdS t          j        ‰ t          j        t          j        f¦  «        }|€dS t          ˆ fd„|j         D ¦   «         ¦  «        sdS |j         D ] }t          |t          j        ¦  «        r|} nŒ!dS dd
„} |||¦  «        sM| 	                    ¦   «         D ]6}t          |t          j        t          j        f¦  «        r |||¦  «        r nŒ7dS |j
        D ]}t                               ||¦  «        r nŒ dS dS )aM  Check for a specific control flow scenario.

        Described in https://github.com/pylint-dev/pylint/issues/5683.

        A scenario where the only non-break exit from a loop consists of the very
        except handler we are examining, such that code in the `else` branch of
        the loop can depend on it being assigned.

        Example:

        for _ in range(3):
            try:
                do_something()
            except:
                name = 1  <-- only non-break exit from loop
            else:
                break
        else:
            print(name)
        FNc              3  óJ   •K  — | ]}|‰u p|                      ‰¦  «        V — Œd S r«   ©r’   )r°   r¹  rv   s     €rb   r±   z@NamesConsumer._check_loop_finishes_via_except.<locals>.<genexpr>  sO   øè è € ð 
ð 
àð ˜dÐ"ÐD n×&>Ò&>¸tÑ&DÔ&Dð
ð 
ð 
ð 
ð 
ð 
ra   rÙ  rÚ  Úloopúnodes.For | nodes.Whilerg   r‹   c                óD   ‡ — t          ˆ fd„|j        D ¦   «         ¦  «        S )zAReturn True if `other_node_try_except` is a descendant of `loop`.c              3  óJ   •K  — | ]}|‰u p|                      ‰¦  «        V — Œd S r«   rÝ  )r°   Úloop_body_statementrÙ  s     €rb   r±   z[NamesConsumer._check_loop_finishes_via_except.<locals>._try_in_loop_body.<locals>.<genexpr>  sW   øè è € ð ð ð (ð $Ð'<Ð<ð HØ&×0Ò0Ð1FÑGÔGðð ð ð ð ð ra   )r¼   r‘  )rÙ  rÞ  s   ` rb   Ú_try_in_loop_bodyzHNamesConsumer._check_loop_finishes_via_except.<locals>._try_in_loop_body  sA   ø€ õ ð ð ð ð ð ,0¬9ðñ ô ñ ô ð ra   T)rÙ  rÚ  rÞ  rß  rg   r‹   )r�  r   r�   r   r€   r†  r¼   rp   rˆ  rž  r‘  r-  Ú+_recursive_search_for_continue_before_break)rv   rÙ  Úclosest_loopÚinner_else_statementÚ
break_stmtrã  r°  Ú	loop_stmts   `       rb   rÀ  z-NamesConsumer._check_loop_finishes_via_exceptç  sŒ  ø€ ð0 %Ô+ð 	Ø�5åÔ1°$½¼ÅEÄKÐ8PÑQÔQð 	ð ÐØ�5Ýð 
ð 
ð 
ð 
à".Ô"5ð
ñ 
ô 
ñ 
ô 
ð 	ð
 �5Ø$9Ô$@ð 	ð 	Ð ÝÐ.µ´Ñ<Ô<ð Ø1�
Ø�ðð
 �5ð	ð 	ð 	ð 	ð !Ð Ð!6¸ÑEÔEð 	Ø(×7Ò7Ñ9Ô9ð ð �Ý˜h­¬µE´KÐ(@ÑAÔAð Ø(Ð(Ð)>ÀÑIÔIð Ø˜øð �uà%Ô*ð 	ð 	ˆIÝ×HÒHØ˜:ñô ð ð �ðð �4Øˆura   rc   rç  únodes.Breakc                ó  — | |u rdS t          | t          j        ¦  «        rdS |                      ¦   «         D ]G}t          | t          j        t          j        f¦  «        rŒ)t                               ||¦  «        r dS ŒHdS )z”Return True if any Continue node can be found in descendants of `stmt`
        before encountering `break_stmt`, ignoring any nested loops.
        FT)rp   r   r¾  rk  r€   r†  r-  rä  )rc   rç  r]  s      rb   rä  z9NamesConsumer._recursive_search_for_continue_before_break1  s˜   € ð �:ÐÐØ�5Ý�d�EœNÑ+Ô+ð 	Ø�4Ø×&Ò&Ñ(Ô(ð 	ð 	ˆEÝ˜$¥¤­E¬KÐ 8Ñ9Ô9ð ØÝ×HÒHØ�zñô ð ð �t�tðð ˆura   c                ó\  ‡‡— g }t          j        |t          j        ¦  «        Š‰€|S | D ]�}|                     ¦   «         }|‰u rŒt          j        |t          j        ¦  «        \  Š}‰€Œ@|‰j        vrŒJt          ˆˆfd„‰j	        D ¦   «         ¦  «        sŒl| 
                    |¦  «         Œ‚|S )zàReturn any nodes in ``found_nodes`` that should be treated as uncertain.

        Nodes are uncertain when they are in a try block and the ``node_statement``
        being evaluated is in one of its except handlers.
        Nc              3  óV   •K  — | ]#}‰‰j         v p|‰                     ¦   «         v V — Œ$d S r«   )rƒ  rž  )r°   Ú&other_node_try_ancestor_except_handlerrÂ  Úother_node_try_ancestors     €€rb   r±   z]NamesConsumer._uncertain_nodes_in_try_blocks_when_evaluating_except_blocks.<locals>.<genexpr>j  s^   øè è € ð ð ð ;ð 'Ð*AÔ*JÐJð ;Ø9Ø)×8Ò8Ñ:Ô:ð;ðð ð ð ð ð ra   )r   r�   r   rd  rc  Ú-get_node_first_ancestor_of_type_and_its_childr€  r‘  r¼   rƒ  r•   )rs  rt  rv  r   rÁ  Ú%other_node_try_ancestor_visited_childrÂ  rî  s         @@rb   rq  zJNamesConsumer._uncertain_nodes_in_try_blocks_when_evaluating_except_blocksE  s  øø€ ð /1ˆÝ!&Ô!FØ�EÔ/ñ"
ô "
Ðð "Ð)Ø"Ð"Ø%ð 	/ð 	/ˆJØ#-×#7Ò#7Ñ#9Ô#9Ð à#Ð'=Ð=Ð=Øõ
 ÔCØ$¥e¤iñô ñØ'Ø5ð 'Ð.Øà5Ø.Ô3ð4ð 4ð õ ð ð ð ð ð ð ?VÔ>^ð	ñ ô ñ ô ð ð à×"Ò" :Ñ.Ô.Ð.Ð.ØÐra   c                óÄ  ‡‡	— g }t          j        |t          j        ¦  «        \  Š	}‰	€|S |‰	j        vr|S | D ]§}|                     ¦   «         }t          j        |t          j        ¦  «        \  }}|€Œ;||j        vrŒE|‰	ur!t          ˆ	fd„|j        D ¦   «         ¦  «        sŒj|j        r!t          ˆfd„|j        D ¦   «         ¦  «        rŒ’| 
                    |¦  «         Œ¨|S )Nc              3  óJ   •K  — | ]}|‰u p|                      ‰¦  «        V — Œd S r«   rÝ  )r°   Úother_node_final_statementÚclosest_try_finally_ancestors     €rb   r±   z^NamesConsumer._uncertain_nodes_in_try_blocks_when_evaluating_finally_blocks.<locals>.<genexpr>Ÿ  sZ   øè è € ð ð ð
 3ð	 /Ð2NÐNð Ø1×;Ò;Ø4ñô ðð ð ð ð ð ra   c              3  óN   •K  — | ]}t                                ‰|¦  «        V — Œ d S r«   r|  r~  s     €rb   r±   z^NamesConsumer._uncertain_nodes_in_try_blocks_when_evaluating_finally_blocks.<locals>.<genexpr>©  sO   øè è € ð @ð @àõ ×GÒGÈÈgÑVÔVð@ð @ð @ð @ð @ð @ra   )r   rï  r   r€  r�  rc  r‘  r¼   rƒ  r„  r•   )
rs  rt  re   rv  Ú%child_of_closest_try_finally_ancestorr   rÁ  Úother_node_try_finally_ancestorÚ(child_of_other_node_try_finally_ancestorrô  s
     `      @rb   rp  zKNamesConsumer._uncertain_nodes_in_try_blocks_when_evaluating_finally_blocksu  s‚  øø€ ð /1ˆõ Ô?Ø�EœIñ
ô 
ñ	
Ø(Ø1ð (Ð/Ø"Ð"à1Ø/Ô9ð:ð :ð #Ð"Ø%ð &	/ð &	/ˆJØ#-×#7Ò#7Ñ#9Ô#9Ð õ ÔCØ$¥e¤iñô ñØ/Ø8ð /Ð6Øð 9Ø6Ô;ð<ð <ð ð 0Ð7SÐSÐSÝð ð ð ð ð
 7VÔ6_ðñ ô ñ ô ð Tð à.Ô7ð ½Cð @ð @ð @ð @à>ÔGð@ñ @ô @ñ =ô =ð ð à×"Ò" :Ñ.Ô.Ð.Ð.ØÐra   N)rv   rä   r*  rf   rg   r.  )rg   rf   )rg   rG  )rg   r§   )rg   r(  )re   rf   rP  rQ  rg   r.  )rv   r‡   rg   rW  )re   rf   rv   rä   rg   r‹   )re   rf   r‘  r˜  rg   r‹   )rs  rQ  rv   rä   rg   rQ  )rv   rä   r¤  r¥  rg   r‹   )rs  rQ  rv   rä   rt  r±  rg   rQ  )rv   rä   rÙ  rÚ  rg   r‹   )rc   r±  rç  ré  rg   r‹   )rs  rQ  rt  r±  rg   rQ  )rs  rQ  rt  r±  re   rf   rg   rQ  )rZ   r[   r\   r]   r5  rF  rJ  Úpropertyr&  r'  r)  r*  rV  rw  Ústaticmethodr—  r�  rn  rŸ  ro  r‰  r}  rÀ  rä  rq  rp  r`   ra   rb   r-  r-    si  € € € € € Ø[Ð[ðð ð ð ðð ð ð ð "ð "ð "ð "ð ð'ð 'ð 'ñ „Xð'ð ð%ð %ð %ñ „Xð%ð ð	/ð 	/ð 	/ñ „Xð	/ð ð'ð 'ð 'ñ „Xð'ð&ð &ð &ð &ð[ð [ð [ð [ðz ð9Cð 9Cð 9Cñ „\ð9Cðv ð
ð 
ð 
ñ „\ð
ð&-ð -ð -ð -ð^ ðð ð ñ „\ðð> ðNð Nð Nñ „\ðNð` ð)ð )ð )ñ „\ð)ðV ðð ð ñ „\ðð. ðGð Gð Gñ „\ðGðR ðð ð ñ „\ðð& ð-ð -ð -ñ „\ð-ð^ ð:ð :ð :ñ „\ð:ð :ð :ra   r-  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de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	 e
j        d&¦  «        dÔd)„¦   «         ZdÔd*„ZdÕd,„Z e
j        d-d.d/d0d1d2d3d4¦  «        dÕd5„¦   «         ZdÖd7„ZdÖd8„Zd×d:„ZdØd<„ZdÙd>„ZdÚd?„ZdÛdA„ZdÜdB„ZdÝdD„ZdÞdE„ZdßdG„ZdßdH„ZeZeZ e
j        dIdJdKdLd/¦  «        dàdN„¦   «         ZdádP„ZdâdR„Z dãdT„Z! e
j        dU¦  «        dädW„¦   «         Z" e
j        dU¦  «        dädX„¦   «         Z#dåd\„Z$dæda„Z%dçdh„Z&dèdi„Z'dédl„Z( e
j        dm¦  «        dêdo„¦   «         Z) e
j        dm¦  «        dëdq„¦   «         Z* e
j        drdsdtdu¦  «        dìdw„¦   «         Z+dídy„Z,dîdz„Z-dìd{„Z.dïd}„Z/dðd„Z0e1dñd€„¦   «         Z2e1dòd‚„¦   «         Z3e1dñdƒ„¦   «         Z4e5dód„„¦   «         Z6e5dód…„¦   «         Z7e5dôdŒ„¦   «         Z8e5dõd�„¦   «         Z9död�„Z:e5d÷d�„¦   «         Z;e5død’„¦   «         Z<e5dùd–„¦   «         Z=e5dúd—„¦   «         Z>dúd˜„Z?dûdš„Z@düdŸ„ZAdýd¡„ZBdþd¤„ZCdÿd¥„ZD�d d¦„ZEdöd§„ZFe5�dd¨„¦   «         ZG�ddª„ZH�dd¬„ZIdìd­„ZJ�dd±„ZKe5�dd´„¦   «         ZLe5�dd¶„¦   «         ZM�dd¹„ZN�ddº„ZO�d	d¿„ZP�d
dÂ„ZQ�ddÄ„ZR�ddÅ„ZS�ddÇ„ZT�ddË„ZU�ddÍ„ZV�ddÐ„ZW e
j        d-d3¦  «        �ddÒ„¦   «         ZXˆ xZYS (  rl  a  BaseChecker for variables.

    Checks for
    * unused variables / imports
    * undefined variables
    * redefinition of variable from builtins or from an outer scope or except handler
    * use of variable before assignment
    * __all__ consistency
    * self/cls assignment
    Ú	variableszinit-importFÚynz<y or n>zBTells whether we should check for unused import in __init__ files.)ÚdefaultÚtypeÚmetavarÚhelpzdummy-variables-rgxz;_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_Úregexpz<regexp>zYA regular expression matching the name of dummy variables (i.e. expected to not be used).zadditional-builtinsr`   Úcsvz<comma separated list>z€List of additional names supposed to be defined in builtins. Remember that you should avoid defining new builtins when possible.Ú	callbacks)Úcb_Ú_cbz<callbacks>z|List of strings which can identify a callback function by name. A callback name must start or end with one of those strings.zredefining-builtins-modules)z	six.moveszpast.builtinszfuture.builtinsÚbuiltinsÚiozQList of qualified module names which can have objects that can redefine builtins.zignored-argument-namesz:Argument names that match this expression will be ignored.zallow-global-unused-variablesTzGTells whether unused global variables should be treated as a violation.zallowed-redefined-builtinsz(List of names allowed to shadow builtinsÚlinterr"   rg   r.  c                ó’   •— t          ¦   «                              |¦  «         g | _        g | _        g | _        	 i | _        d| _        d S ©NF)Úsuperr5  Ú_to_consumeÚ_type_annotation_namesÚ_except_handler_names_queueÚ_evaluated_type_checking_scopesÚ_postponed_evaluation_enabled)r4  r	  Ú	__class__s     €rb   r5  zVariablesChecker.__init__  sZ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø02ˆÔØ13ˆÔ#ð ð 	Ô(ð 	2ð ð 	Ô,ð .3ˆÔ*Ð*Ð*ra   r  rv   ú	nodes.Forc                óx  — t          |j        t          j        ¦  «        sd S |j        j        }t          j        |j        ¦  «        }t          |t          ¦  «        sd S |  	                    |¦  «        }|sd S t          |t          j        j        ¦  «        rIt          |¦  «        dk    rt          d„ |D ¦   «         ¦  «        rd S t          d„ |D ¦   «         ¦  «        rd S t          |t          j        ¦  «        r8t          |j        t          j        ¦  «        rt          |¦  «        dk    rd S d S d S t          d„ |D ¦   «         ¦  «        }|D ]m}|                      |¦  «        }|o|t          |¦  «        k    }t          |¦  «        |k    r.|s,t'          ||¦  «        }	|                      |||||	¦  «          d S Œnd S )Né   c              3  óF   K  — | ]}t          |j        ¦  «        d k    V — ŒdS )r  N)r–   Úelts)r°   Úxs     rb   r±   z-VariablesChecker.visit_for.<locals>.<genexpr>>  s/   è è € Ð(JÐ(J¸a­¨Q¬V©¬¸Ò)9Ð(JÐ(JÐ(JÐ(JÐ(JÐ(Jra   c              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r«   ©rp   r   rÔ  ©r°   rj  s     rb   r±   z-VariablesChecker.visit_for.<locals>.<genexpr>C  s.   è è € ÐKÐK¸•:˜f¥e¤mÑ4Ô4ÐKÐKÐKÐKÐKÐKra   c              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r«   r  r  s     rb   r±   z-VariablesChecker.visit_for.<locals>.<genexpr>O  s?   è è € ð %ð %Ø6<•
˜6¥5¤=Ñ1Ô1ð%ð %ð %ð %ð %ð %ra   )rp   rj  r   r.   r  r   ré   r�   r|   Ú_nodes_to_unpackrl   ÚobjectsÚ	DictItemsr–   r„  r¼   r(   r­  Ú_get_value_lengthr†   Ú_report_unbalanced_unpacking)
r4  rv   ri  rx   rÜ   Úis_starred_targetsr~   Úvalue_lengthÚis_valid_star_unpackÚdetailss
             rb   Ú	visit_forzVariablesChecker.visit_for'  s  € õ ˜$œ+¥u¤{Ñ3Ô3ð 	ØˆFà”+Ô"ˆåÔ# D¤IÑ.Ô.ˆÝ˜(¥JÑ/Ô/ð 	ØˆFà×&Ò& xÑ0Ô0ˆØð 	àˆFå�h¥¤Ô 9Ñ:Ô:ð 	õ
 �7‰|Œ|˜qÒ Ð ¥SÐ(JÐ(JÀ6Ð(JÑ(JÔ(JÑ%JÔ%JÐ Ø�õ ÐKÐKÀ7ÐKÑKÔKÑKÔKð Ø�å�h¥¤
Ñ+Ô+ð 	Ý˜$œ)¥U¤ZÑ0Ô0ð õ �w‘<”< 1Ò$Ð$Ø�Fðð ð %Ð$õ "%ð %ð %Ø@Gð%ñ %ô %ñ "ô "Ðð  ð 
ð 
�Ø#×5Ò5°eÑ<Ô<�Ø'9ð (¸lÍcØñOô Oò ?Ð$õ �w‘<”< <Ò/Ð/Ð8LÐ/Ý7¸¸hÑGÔG�GØ×5Ò5Ø˜h¨°¸wñô ð ð �E�Eøð
ð 
ra   c                ó0   — |                       |¦  «         d S r«   ©Ú_store_type_annotation_names©r4  rv   s     rb   Ú	leave_forzVariablesChecker.leave_for^  ó   € Ø×)Ò)¨$Ñ/Ô/Ð/Ð/Ð/ra   únodes.Modulec                ó@  — t          |d¦  «        g| _        t          |¦  «        | _        |j                             ¦   «         D ]Y\  }}t          j        |¦  «        r@|                      |d         ¦  «        s|dk    rŒ;|  	                    d||d         ¬¦  «         ŒZdS )zoVisit module : update consumption analysis variable
        checks globals doesn't overrides builtins.
        rs   r   r]   r  ©Úargsrv   N)
r-  r  r   r  rn   r»   r   Ú
is_builtinÚ _should_ignore_redefined_builtinÚadd_message)r4  rv   re   rÂ   s       rb   Úvisit_modulezVariablesChecker.visit_modulea  s´   € õ *¨$°Ñ9Ô9Ð:ˆÔÝ-LÈTÑ-RÔ-RˆÔ*àœ;×,Ò,Ñ.Ô.ð 	Pð 	P‰KˆD�%ÝÔ Ñ%Ô%ð PØ×8Ò8¸¸q¼ÑBÔBð ÀdÈiÒFWÐFWØØ× Ò Ð!4¸4ÀeÈAÄhÐ ÑOÔOÐOøð		Pð 	Pra   r  r  r  rõ   r÷   rù   r  ró   c                ót  — t          | j        ¦  «        dk    sJ ‚|                      |¦  «         | j                             ¦   «         j        }d|j        v r|                      ||¦  «         |                      |¦  «         | j        j	        j
        s	|j        rdS |                      |¦  «         g | _        dS )zLeave module: check globals.rY   Ú__all__N)r–   r  Ú_check_metaclassesÚpopr&  rn   Ú
_check_allÚ_check_globalsr	  ÚconfigÚinit_importÚpackageÚ_check_importsr  )r4  rv   r¦   s      rb   Úleave_modulezVariablesChecker.leave_modulen  sÄ   € õ �4Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)à×Ò Ñ%Ô%Ð%ØÔ'×+Ò+Ñ-Ô-Ô8ˆà˜œÐ#Ð#Ø�OŠO˜D ,Ñ/Ô/Ð/ð 	×Ò˜LÑ)Ô)Ð)ð Œ{Ô!Ô-ð 	°$´,ð 	ØˆFà×Ò˜LÑ)Ô)Ð)Ø&(ˆÔ#Ð#Ð#ra   únodes.ClassDefc                óV   — | j                              t          |d¦  «        ¦  «         dS )z2Visit class: update consumption analysis variable.ÚclassN©r  r•   r-  r*  s     rb   Úvisit_classdefzVariablesChecker.visit_classdefŒ  s)   € àÔ×Ò¥¨d°GÑ <Ô <Ñ=Ô=Ð=Ð=Ð=ra   c                ó   — |                      t          j        ¦  «        D ]Ä}t          |j        t          j        ¦  «        r£t          |j        j        t          j        ¦  «        rt          |j        j        j        t          j        ¦  «        rV|j        j        j        }| j	        D ]=}|j
        |j        v r-|                     |j
        |j        |j
                 ¦  «          nŒ>ŒÅ| j	                             ¦   «          dS )z2Leave class: update consumption analysis variable.N)rÊ   r   r­  rp   r�   rè   rê   Ú	AttributeÚexprr  re   r&  rV  r8  )r4  rv   rÝ   Úhidden_name_nodeÚconsumers        rb   Úleave_classdefzVariablesChecker.leave_classdef�  sÿ   € ð ×,Ò,­U¬ZÑ8Ô8ð 	ð 	ˆIå˜9Ô+­U¬ZÑ8Ô8ðå˜yÔ/Ô4µe´oÑFÔFðõ ˜yÔ/Ô4Ô9½5¼:ÑFÔFðð
 $-Ô#3Ô#8Ô#=Ð Ø $Ô 0ð ð �HØ'Ô,°Ô0CÐCÐCØ ×1Ò1Ø,Ô1Ø$Ô/Ð0@Ô0EÔFñô ð ð ˜ð Døð 	Ô×ÒÑÔÐÐÐra   únodes.Lambdac                óV   — | j                              t          |d¦  «        ¦  «         dS )z3Visit lambda: update consumption analysis variable.ÚlambdaNrC  r*  s     rb   Úvisit_lambdazVariablesChecker.visit_lambda¤  s)   € àÔ×Ò¥¨d°HÑ =Ô =Ñ>Ô>Ð>Ð>Ð>ra   Ú_c                ó8   — | j                              ¦   «          dS )z3Leave lambda: update consumption analysis variable.N©r  r8  ©r4  rO  s     rb   Úleave_lambdazVariablesChecker.leave_lambda¨  ó   € ð 	Ô×ÒÑÔÐÐÐra   únodes.GeneratorExpc                óV   — | j                              t          |d¦  «        ¦  «         dS )z4Visit genexpr: update consumption analysis variable.ÚcomprehensionNrC  r*  s     rb   Úvisit_generatorexpz#VariablesChecker.visit_generatorexp­  ó)   € àÔ×Ò¥¨d°OÑ DÔ DÑEÔEÐEÐEÐEra   c                ó8   — | j                              ¦   «          dS )z4Leave genexpr: update consumption analysis variable.NrQ  rR  s     rb   Úleave_generatorexpz#VariablesChecker.leave_generatorexp±  rT  ra   únodes.DictCompc                óV   — | j                              t          |d¦  «        ¦  «         dS )z5Visit dictcomp: update consumption analysis variable.rW  NrC  r*  s     rb   Úvisit_dictcompzVariablesChecker.visit_dictcomp¶  rY  ra   c                ó8   — | j                              ¦   «          dS )z5Leave dictcomp: update consumption analysis variable.NrQ  rR  s     rb   Úleave_dictcompzVariablesChecker.leave_dictcompº  rT  ra   únodes.SetCompc                óV   — | j                              t          |d¦  «        ¦  «         dS )z4Visit setcomp: update consumption analysis variable.rW  NrC  r*  s     rb   Úvisit_setcompzVariablesChecker.visit_setcomp¿  rY  ra   c                ó8   — | j                              ¦   «          dS )z4Leave setcomp: update consumption analysis variable.NrQ  rR  s     rb   Úleave_setcompzVariablesChecker.leave_setcompÃ  rT  ra   rå   c                ó6  — | j                              t          |d¦  «        ¦  «         | j                             d¦  «        s| j                             d¦  «        sdS |                     ¦   «         j        }|                     ¦   «         D �]\  }}||v r«t          |t          j
        ¦  «        s‘||         d         }t          |t          j        ¦  «        r|j        t          k    rŒ]t          d„ ||         D ¦   «         ¦  «        rŒ}|j        }|                      ||¦  «        s|                      d||f|¬¦  «         Œµt%          j        |¦  «        rB|                      |¦  «        s-|                      |¦  «        s|                      d||¬¦  «         �ŒdS )zFVisit function: update consumption analysis variable and check locals.Úfunctionr  r  Nr   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r«   )r   )r°   Ú
definitions     rb   r±   z5VariablesChecker.visit_functiondef.<locals>.<genexpr>Ý  s<   è è € ð ð Ø;EÕ*¨:Ñ6Ô6ðð ð ð ð ð ra   r/  )r  r•   r-  r	  Úis_message_enabledr‚   Úglobalsr»   rp   r   rË   rq   rk   rr   r¼   r·   Ú_is_name_ignoredr3  r   r1  Ú_allowed_redefined_builtinr2  )r4  rv   Úglobsre   rc   ri  Úlines          rb   Úvisit_functiondefz"VariablesChecker.visit_functiondefÈ  sÊ  € àÔ×Ò¥¨d°JÑ ?Ô ?Ñ@Ô@Ð@àŒK×*Ò*Ð+AÑBÔBð	àŒ{×-Ò-Ð.AÑBÔBð	ð ˆFØ—	’	‘”Ô#ˆØŸ*š*™,œ,ð 	Lñ 	L‰JˆD�$Ø�uˆ}ˆ}¥Z°µe´lÑ%CÔ%Cˆ}Ø" 4œ[¨œ^�
å˜z­5Ô+;Ñ<Ô<ðà"Ô*­fÒ4Ð4ð õ ð ð ØINÈtÌðñ ô ñ ô ð ð à!Ô,�Ø×,Ò,¨T°4Ñ8Ô8ð Ø×$Ò$Ø.°d¸D°\Èð %ñ ô ð øõ
 Ô  Ñ&Ô&ðLà×7Ò7¸Ñ=Ô=ðLð ×=Ò=¸dÑCÔCðLð × Ò Ð!4¸4ÀdÐ ÑKÔKÐKùð;	Lð 	Lra   c           	     ó  — |                       |¦  «         |j        r|                      |j        ¦  «         |j        r|j        D ]}|                      |¦  «         Œ| j                             ¦   «         j        }| j                             d¦  «        s6| j                             d¦  «        s| j                             d¦  «        sdS t          j
        |¦  «        rdS |                     ¦   «         }|r|                     ¦   «         rdS t          |                     t          j        ¦  «        ¦  «        }t          |                     t          j        ¦  «        ¦  «        }t%          ¦   «         }|                     t          j        ¦  «        D ]=}|j        D ]3}	t          j        |	j        ¦  «        D ]}
|                     |
¦  «         ŒŒ4Œ>|                     ¦   «         D ]%\  }
}|                      |
||d         |||¦  «         Œ&dS )z5Leave function: check function's locals are consumed.r  r  r	  Nr   )r7  Útype_comment_returnsÚ_store_type_annotation_nodeÚtype_comment_argsr  r8  r&  r	  rj  r   Úis_errorÚ	is_methodÚis_abstractrÉ   rÊ   r   rË   r[  r—   ÚComprehensionScopeÚ
generatorsÚfind_assigned_names_recursiverj  Úaddr»   Ú_check_is_unused)r4  rv   Úargument_annotationr¦   rv  rÑ   Únonlocal_namesÚcomprehension_target_namesÚcomprehension_scopeÚ	generatorre   rÂ   s               rb   Úleave_functiondefz"VariablesChecker.leave_functiondefð  s:  € à×Ò Ñ%Ô%Ð%àÔ$ð 	HØ×,Ò,¨TÔ-FÑGÔGÐGØÔ!ð 	FØ'+Ô'=ð Fð FÐ#Ø×0Ò0Ð1DÑEÔEÐEÐEàÔ'×+Ò+Ñ-Ô-Ô8ˆàŒK×*Ò*Ð+<Ñ=Ô=ð	àŒ{×-Ò-Ð.HÑIÔIð	ð Œ{×-Ò-Ð.?Ñ@Ô@ð	ð
 ˆFõ Œ>˜$ÑÔð 	ØˆFð —N’NÑ$Ô$ˆ	Øð 	˜×)Ò)Ñ+Ô+ð 	ØˆFå-¨d×.AÒ.AÅ%Ä,Ñ.OÔ.OÑPÔPˆÝ/°×0CÒ0CÅEÄNÑ0SÔ0SÑTÔTˆÝ/2©u¬uÐ"à#'×#6Ò#6µuÔ7OÑ#PÔ#Pð 	9ð 	9ÐØ0Ô;ð 9ð 9�	Ý!Ô?À	Ô@PÑQÔQð 9ð 9�DØ.×2Ò2°4Ñ8Ô8Ð8Ð8ð9ð9ð (×-Ò-Ñ/Ô/ð 	ð 	‰KˆD�%Ø×!Ò!ØØØ�a”ØØØ*ñô ð ð ð	ð 	ra   rý   rÿ   r  r  únodes.Globalc                ó  — |                      ¦   «         }t          |t          j        ¦  «        r|                      d|t
          ¬¦  «         dS |                     ¦   «         }d}|                     ¦   «         j        }|j	        D �]^}	 | 
                    |¦  «        }n# t          j        $ r g }Y nw xY wt          d„ |                     |d¦  «        D ¦   «         ¦  «         }t          j        ||¦  «        s8t          j        ||¦  «        s#|r!|                      d||t
          ¬¦  «         d	}Œ¬|D ]�}	t          |	t          j        ¦  «        r(|	j        |j        v r|                      d
||¬¦  «          nl|	                      ¦   «         |u r nTt          |	t          j        t          j        f¦  «        r|	j        |u r n#ŒŽ|r |                      d||t
          ¬¦  «         d	}�Œ`|r|                      d|t
          ¬¦  «         dS dS )z0Check names imported exists in the global scope.r  ©rv   Ú
confidenceNTc              3  ób   K  — | ]*}t          |t          j        t          j        f¦  «        V — Œ+d S r«   )rp   r   r½   rq   )r°   Úlocals     rb   r±   z0VariablesChecker.visit_global.<locals>.<genexpr>9  sJ   è è € ð 4ð 4àõ ˜5¥5¤<µÔ1AÐ"BÑCÔCð4ð 4ð 4ð 4ð 4ð 4ra   r`   rÿ   ©r0  rv   r†  Fr  r/  rý   r  )rˆ   rp   r   r”   r3  r   r‚   rŽ   rn   r¾   rì   rl   ÚNotFoundErrorr¼   ro   r   Úis_reassigned_after_currentÚis_deleted_after_currentr¬   re   Úspecial_attributesr�   r‘   r�   )
r4  rv   rˆ   rs   Údefault_messageÚlocals_re   Úassign_nodesÚnot_defined_locally_by_importÚanodes
             rb   Úvisit_globalzVariablesChecker.visit_global!  sr  € ð —
’
‘”ˆÝ�e�Uœ\Ñ*Ô*ð 	Ø×ÒÐ5¸DÍTÐÑRÔRÐRØˆFà—’‘”ˆØˆØ—*’*‘,”,Ô%ˆØ”Jð 2	,ñ 2	,ˆDð"Ø%Ÿ~š~¨dÑ3Ô3��øÝÔ(ð "ð "ð "à!���ð"øøøõ 14ð 4ð 4à$Ÿ[š[¨¨rÑ2Ô2ð4ñ 4ô 4ñ 1ô 1ð -Ð)õ
 Ô5°d¸DÑAÔAðåÔ6°t¸TÑBÔBðð 2ðð
 × Ò Ø2ØØÝ#ð	 !ñ ô ð ð #(�Øà%ð ,ð ,�å˜u¥eÔ&6Ñ7Ô7ðàœ
 fÔ&?Ð?Ð?à×$Ò$Ð%8¸tÈ$Ð$ÑOÔOÐOØ�EØ—;’;‘=”= FÐ*Ð*à�Eå˜u¥u¤~µuÔ7HÐ&IÑJÔJðàœ¨Ð.Ð.ð �Eøà0ð ,à×$Ò$Ø3Ø!Ø!Ý#'ð	 %ñ ô ð ð ',�Oùàð 	MØ×ÒÐ/°dÅtÐÑLÔLÐLÐLÐLð	Mð 	Ms   ÂBÂB2Â1B2únodes.AssignNamec                óŒ   — t          |                     ¦   «         t          j        ¦  «        r|                      |¦  «         d S d S r«   )rp   r­   r   r®   Ú
visit_namer*  s     rb   Úvisit_assignnamez!VariablesChecker.visit_assignnamei  sD   € Ý�d×&Ò&Ñ(Ô(­%¬/Ñ:Ô:ð 	"Ø�OŠO˜DÑ!Ô!Ð!Ð!Ð!ð	"ð 	"ra   únodes.DelNamec                ó0   — |                       |¦  «         d S r«   )r–  r*  s     rb   Úvisit_delnamezVariablesChecker.visit_delnamem  s   € Ø�Š˜ÑÔÐÐÐra   ú-nodes.Name | nodes.AssignName | nodes.DelNamec                óò   — |                      ¦   «         }|j        €0|                     ¦   «         j                             d¦  «        rJ ‚dS |                      ||¦  «         |                      |¦  «         dS )z½Don't add the 'utils.only_required_for_messages' decorator here!

        It's important that all 'Name' nodes are visited, otherwise the
        'NamesConsumers' won't be correct.
        Nz.py)rc  r·   r‚   ÚfileÚendswithÚ"_undefined_and_used_before_checkerÚ_loopvar_name)r4  rv   rc   s      rb   r–  zVariablesChecker.visit_namep  su   € ð �~Š~ÑÔˆØŒ?Ð"à—y’y‘{”{Ô'×0Ò0°Ñ7Ô7Ð7Ð7Ð7ØˆFà×/Ò/°°dÑ;Ô;Ð;Ø×Ò˜4Ñ Ô Ð Ð Ð ra   r  únodes.ExceptHandlerc                ó(  — |j         rt          |j         t          j        ¦  «        sd S | j        D ]@\  }}|j         j         |j         k    r&|                      d|j         |j        f|¬¦  «          nŒA| j                             ||j         f¦  «         d S )Nr  r/  )re   rp   r   r¬   r  r3  r·   r•   )r4  rv   Úouter_exceptÚouter_except_assign_names       rb   Úvisit_excepthandlerz$VariablesChecker.visit_excepthandler  sµ   € àŒyð 	¥
¨4¬9µeÔ6FÑ GÔ Gð 	ØˆFà6:Ô6Vð 	ð 	Ñ2ˆLÐ2ØŒyŒ~Ð!9Ô!>Ò>Ð>Ø× Ò Ø*Ø2Ô7¸Ô9PÐQØð !ñ ô ð ð
 �ð ?ð 	Ô(×/Ò/°°t´yÐ0AÑBÔBÐBÐBÐBra   c                óˆ   — |j         rt          |j         t          j        ¦  «        sd S | j                             ¦   «          d S r«   )re   rp   r   r¬   r  r8  r*  s     rb   Úleave_excepthandlerz$VariablesChecker.leave_excepthandler�  sB   € àŒyð 	¥
¨4¬9µeÔ6FÑ GÔ Gð 	ØˆFØÔ(×,Ò,Ñ.Ô.Ð.Ð.Ð.ra   r‡   rc   rä   c                óV  — |                      ¦   «         }t          | j        ¦  «        dz
  }| j        |         j        }t	          |dd¦  «        D ]™}| j        |         }|                      ||||k    ¦  «        rŒ+|                      |||||¦  «        \  }}	|	r0|	|j        |j                 z  }	| 	                    |j        |	¦  «         |t          j        u rŒˆ|t          j        u r d S Œš|j        t          j        j        v s t!          j        |j        ¦  «        s‰|j        | j        j        j        v ss|j        dk    r+t+          d„ |                     ¦   «         D ¦   «         ¦  «        sAt!          j        |t0          ¦  «        s%|                      d|j        |¬¦  «         d S d S d S d S d S d S )NrY   r´   r  c              3  ór   K  — | ]2}t          |t          j        ¦  «        ¯|                     ¦   «         V — Œ3d S r«   )rp   r   r‘   rv  ©r°   Úis     rb   r±   zFVariablesChecker._undefined_and_used_before_checker.<locals>.<genexpr>¼  sQ   è è € ð ð àÝ! !¥UÔ%6Ñ7Ô7ðØ—K’K‘M”Mðð ð ð ð ð ra   ró   r/  )rŽ   r–   r  r*  ÚrangeÚ_should_node_be_skippedÚ_check_consumerr)  re   rV  rX   r^   r_   r   r”   Úscope_attrsr   r1  r	  r;  Úadditional_builtinsr¼   rž  Únode_ignores_exceptionÚ	NameErrorr3  )
r4  rv   rc   rˆ   Ústart_indexÚbase_scope_typer«  Úcurrent_consumerÚactionÚnodes_to_consumes
             rb   rŸ  z3VariablesChecker._undefined_and_used_before_checker•  sø  € ð —
’
‘”ˆÝ˜$Ô*Ñ+Ô+¨aÑ/ˆð Ô*¨;Ô7ÔBˆå�{ B¨Ñ+Ô+ð 	ð 	ˆAØ#Ô/°Ô2Ðð ×+Ò+¨DÐ2BÀAÈÒDTÑUÔUð Øà'+×';Ò';Ø�d˜EÐ#3°_ñ(ô (Ñ$ˆFÐ$ð  ð Oð
 !Ð$4Ô$GÈÌ	Ô$RÑRÐ Ø ×1Ò1°$´)Ð=MÑNÔNÐNØÕ4Ô=Ð=Ð=ØØÕ4Ô;Ð;Ð;Ø��ð <ð ŒI�œÔ1Ð1Ð1ÝÔ ¤	Ñ*Ô*ð 2àŒy˜DœKÔ.ÔBÐBÐBà”	˜[Ò(Ð(Ýð ð à!×0Ò0Ñ2Ô2ðñ ô ñ ô ð )õ Ô.¨tµYÑ?Ô?ð )ð ×ÒÐ1¸¼	ÈÐÑMÔMÐMÐMÐMð 2Ð1Ð1Ð1àBÐBà(Ð(Ð(Ð(ra   rI  r-  Úis_start_indexr‹   c                óü  ‡— |j         dk    ryt          j        |j        ‰¦  «        s|s|                      ‰¦  «        rdS t          ‰j        t          j        ¦  «        r&t          ‰j        j        t          j	        ¦  «        rdS nv|j         dk    rD|  
                    ‰|j        ¦  «        r)t          ˆfd„|j        j        D ¦   «         ¦  «        rdS dS |j         dk    rt          j        ‰|j        ¦  «        rdS dS )z¦Tests a consumer and node for various conditions in which the node shouldn't
        be checked for the undefined-variable and used-before-assignment checks.
        rB  Trg  c              3  óB   •K  — | ]}‰j         |j         j         k    V — Œd S r«   rà   )r°   Úparamrv   s     €rb   r±   z;VariablesChecker._should_node_be_skipped.<locals>.<genexpr>à  s.   øè è € ÐWÐW°E�4”9 ¤
¤Ò/ÐWÐWÐWÐWÐWÐWra   FrM  )r*  r   Úis_ancestor_namerv   Ú_ignore_class_scoperp   r�   r   ÚKeywordr�   Ú_defined_in_function_definitionr¼   Útype_paramsÚis_default_argument)r4  rv   rI  r¸  s    `  rb   r­  z(VariablesChecker._should_node_be_skippedÅ  s#  ø€ ð Ô 'Ò)Ð)õ Ô% h¤m°TÑ:Ô:ð Ø"ðØ'+×'?Ò'?ÀÑ'EÔ'Eðð �tõ ˜$œ+¥u¤}Ñ5Ô5ð ½*Ø”Ô"¥E¤Nñ;ô ;ð ð �tøàÔ  JÒ.Ð.°4×3WÒ3WØ�(”-ñ4
ô 4
Ð.õ ÐWÐWÐWÐW¸X¼]Ô=VÐWÑWÔWÑWÔWð Ø�uð
 �4àÔ  HÒ,Ð,µÔ1JØ�(”-ñ2
ô 2
Ð,ð �4àˆura   rˆ   r‰   rµ  r´  rf   ú=tuple[VariableVisitConsumerAction, list[nodes.NodeNG] | None]c           
     ó4  — |j         |j        v rVt          j        |j        ¦  «        st          |t          j        ¦  «        s#|                      |¦  «         t          j
        dfS |                     |¦  «        }|€t          j        dfS |sL|                      ||¦  «         |j        |j                  }|                      ||¦  «        }t          j
        |fS |                      |¦  «         t          j        |d         ¦  «        }|                     ¦   «         }	|	                     ¦   «         }
||
u o>|
                     |¦  «        o)t          |
t          j        ¦  «        o|j         |
j         k    }|rnt          j        |t          j        ¦  «        rOt          j        |¦  «        r-|                     ¦   «         j                             ¦   «         |
urt          j
        dfS |                      ||||	||
||¦  «        \  }}}|rt          j        dfS |�rt          j        |¦  «        �söt9          j        ||	d¦  «        �sß|	|u o%t          |t          j        t          j        f¦  «        }|s|s|st          |	t          j         ¦  «        r“t          j!        |tD          ¦  «        sw| j#        rQt          |t          j$        t          j%        t          j&        f¦  «        r |j         | '                    ¦   «         j(        v s|rt          j        |gfS t          j        dfS �nn|dk    r™| j#        r&t          |t          j$        t          j%        f¦  «        sjt          |t          j$        ¦  «        rt          j        |t          j%        ¦  «        s1|  )                    d|j         |tT          ¬¦  «         t          j
        |fS �nÏ|dk    r[t          |t          j        ¦  «        rA|j         |j(        v r3|j+        |	j+        k    r#|  )                    d|j         |tT          ¬¦  «         �nl|  ,                    |j         ¦  «        sœ|  -                    ||	¦  «        r†|                     ¦   «         j(         .                    |j         ¦  «        r$|  )                    d|j         |tT          ¬¦  «         n#|  )                    d|j         |tT          ¬¦  «         t          j
        |fS t          |	t          j        ¦  «        r|  /                    ||	|¦  «        S t          |t          j0        ¦  «        rkt          |j        t          j1        ¦  «        rL|  2                    ||j        ¦  «        r1|  )                    d|j         |tf          ¬¦  «         t          j
        |fS t          j
        |fS )z>Checks a consumer for conditions that should trigger messages.Nr   )r²  rM  rñ   r‰  ró   )4re   r'  r   Úis_func_decoratorrv   rp   r   rx  Ú_check_late_binding_closurerX   r_   rw  r^   Ú_report_unfound_name_definitionr)  Ú-_filter_type_checking_import_from_consumptionÚassign_parentrc  rˆ   r’   r�   r�   ÚLambdarÁ  rŽ   r�   Ú_is_variable_violationÚis_defined_beforerl   Úare_exclusiveÚDelNamer¬   ÚDeleter±  r²  r  rÒ  r‘   r“   r‚   rn   r3  r   r·   Ú_is_builtinÚ_is_only_type_assignmentro   Ú_is_first_level_self_referencer‹  ÚIfExpÚ_is_never_evaluatedr   )r4  rv   rc   rˆ   rµ  r´  rs  r·  ÚdefnodeÚdefstmtrŠ   Úis_recursive_klassÚmaybe_before_assignÚannotation_returnÚuse_outer_definitionÚdefined_by_stmts                   rb   r®  z VariablesChecker._check_consumerð  s  € ð Œ9Ð(Ô1Ð1Ð1õ Ô&Ð'7Ô'<Ñ=Ô=ð BÅZØ•eÔ.ñFô Fð Bð ×0Ò0°Ñ6Ô6Ð6Ý3Ô:¸DÐAÐAà&×:Ò:¸4Ñ@Ô@ˆØÐÝ/Ô8¸$Ð?Ð?Øð 	Ø×0Ò0°Ð7GÑHÔHÐHð  0ÔBÀ4Ä9ÔMÐØ#×QÒQØÐ&ñ ô  Ðõ ,Ô2Ø ðð ð
 	×(Ò(¨Ñ.Ô.Ð.åÔ% k°!¤nÑ5Ô5ˆØ×#Ò#Ñ%Ô%ˆØ—=’=‘?”?ˆð �XÐð +Ø×"Ò" 4Ñ(Ô(ð+å˜8¥U¤^Ñ4Ô4ð+ð ”	˜Xœ]Ò*ð	 	ð ð	>åÔ5°d½E¼LÑIÔIð	>õ Ô-¨dÑ3Ô3ð		>ð
 —:’:‘<”<Ô&×,Ò,Ñ.Ô.°hÐ>Ð>õ( 0Ô6¸Ð=Ð=ð ×'Ò'ØØØØØØØØñ	
ô 	
ñ		
ØØØ ð  ð 	@Ý/Ô8¸$Ð?Ð?ð  ñd	MåÔ+¨DÑ1Ô1ñd	Mõ Ô)¨$°¸ÑHÔHñd	Mð &¨˜oð µ*Ø•u”}¥eÔ&6Ð7ñ3ô 3ˆOð #ð@à"ð@ð %ð@õ ˜g¥u¤|Ñ4Ô4ð	@õ Ô3°D½)ÑDÔDð Lð Ô:ðLå&Ø å %¤Ý %Ô 1Ý %¤ðñô ðLð !œI¨¯ª©¬Ô);Ð;Ð;à*ð RÝ$?Ô$HÈ4È&Ð#QÐQÝ ;Ô DÀdÐKÐKùà  HÒ,Ð,ð Ô6ðMå" 4­%¬/½5Ô;LÐ)MÑNÔNðMõ ˜t¥U¤_Ñ5Ô5ð	Mõ
 Ô=¸dÅEÔDUÑVÔVðMð ×$Ò$Ø0Ø!œYØ!Ý#'ð	 %ñ ô ð õ 8Ô>ÀÐLÐLùà  HÒ,Ð,õ ˜u¥e¤nÑ5Ô5ð
àœ	 U¤\Ð1Ð1Øœ¨7Ô+=Ò=Ð=à×$Ò$Ø0Ø!œYØ!Ý#'ð	 %ñ ô ð ùð ×!Ò! $¤)Ñ,Ô,ð 	M°×1NÒ1NØ�'ñ2
ô 2
ð 	Mð �zŠz‰|Œ|Ô"×&Ò& t¤yÑ1Ô1ð Ø× Ò Ø,°4´9À4ÕTXð !ñ ô ð ð ð × Ò Ø(¨t¬y¸tÕPTð !ñ ô ð õ 0Ô6¸ÐDÐDå˜¥¤Ñ0Ô0ð 	MØ×6Ò6°t¸WÀkÑRÔRÐRå˜¥¤Ñ1Ô1ð 		MÝ˜'œ.­%¬+Ñ6Ô6ð MØ×+Ò+¨G°W´^ÑDÔDð MØ×$Ò$Ø,Ø!œYØ!Ý#,ð	 %ñ ô ð õ 8Ô>ÀÐLÐLå+Ô2°KÐ@Ð@ra   c                ó†  — | j         rt          j        |¦  «        rdS |                      |j        ¦  «        rdS |                      |¦  «        rdS |j        | j        v r(|                     ¦   «         | j        |j                 v rdS |j        |j        v rt          nt          }|                      d|j        ||¬¦  «         dS )zqReports used-before-assignment when all name definition nodes
        get filtered out by NamesConsumer.
        Nrñ   r‰  )r  r   Ú"is_node_in_type_annotation_contextrÏ  re   Ú#_is_variable_annotation_in_functionr  rŽ   r)  r   r   r3  )r4  rv   rµ  r†  s       rb   rÆ  z0VariablesChecker._report_unfound_name_definition·  sé   € ð Ô.ð	åÔ8¸Ñ>Ô>ð	ð ˆFØ×Ò˜DœIÑ&Ô&ð 	ØˆFØ×3Ò3°DÑ9Ô9ð 	ØˆFàŒI˜Ô=Ð=Ð=Ø—
’
‘” Ô DÀTÄYÔ OÐOÐOàˆFð !œIÐ)9Ô)LÐLÐL�LˆLÕRVð 	ð 	×ÒØ$Ø”ØØ!ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
ra   r·  rQ  c                ó  ‡— t          d„ |D ¦   «         d¦  «        Š‰rZ|                      |¦  «        sE| j                             |j        g ¦  «                             |                     ¦   «         ¦  «         ˆfd„|D ¦   «         }|S )zsDo not consume type-checking import node as used-before-assignment
        may invoke in different scopes.
        c              3  ó„   K  — | ];}t          |t          j        t          j        f¦  «        ¯(t	          |¦  «        ¯7|V — Œ<d S r«   )rp   r   r½   rq   r   )r°   rT  s     rb   r±   zQVariablesChecker._filter_type_checking_import_from_consumption.<locals>.<genexpr>Ý  sb   è è € ð ð àÝ˜a¥%¤,µÔ0@Ð!AÑBÔBðõ +¨1Ñ-Ô-ð	Øðð ð ð ð ð ra   Nc                ó    •— g | ]
}|‰k    ¯|‘ŒS r`   r`   )r°   rT  Útype_checking_imports     €rb   r<  zRVariablesChecker._filter_type_checking_import_from_consumption.<locals>.<listcomp>ë  s$   ø€ ÐUÐUÐU !¸1Ð@TÒ;TÐ;T˜AÐ;TÐ;TÐ;Tra   )r‚  rÝ  r  Ú
setdefaultre   r•   rŽ   )r4  rv   r·  rá  s      @rb   rÇ  z>VariablesChecker._filter_type_checking_import_from_consumptionÖ  s²   ø€ õ  $ðð à)ðñ ô ð ñ 
ô  
Ðð  ð 	¨×(PÒ(PÐQUÑ(VÔ(Vð 	ØÔ0×;Ò;¸D¼IÀrÑJÔJ×QÒQØ—
’
‘”ñô ð ð VÐUÐUÐUÐ'7ÐUÑUÔUÐØÐra   rû   r�   c                óø  — | j         st          j        |¦  «        rdS t          |¦  «        rdS t	          |j        t          j        ¦  «        rt          |j        ¦  «        rdS |j	        D ]Ž\  }}| 
                    d¦  «        }	 t          t          ||d         ¦  «        ¦  «        }n# t          j        $ r Y ŒPw xY wt	          |t          j        ¦  «        sŒo|                      |||dd…         ¦  «         Œ�dS )ú!Check modules attribute accesses.Nr³   r   rY   )Ú_analyse_fallback_blocksr   Úis_from_fallback_blockr   rp   r�   r   r‡  r   r¾   Úsplitr‚  r¥   rl   ÚResolveErrorr”   Ú_check_module_attrs)r4  rv   re   rO  Úpartsrs   s         rb   Úvisit_importzVariablesChecker.visit_importî  s  € ð Ô,ð 	µÔ1MÈdÑ1SÔ1Sð 	ð ˆFå! $Ñ'Ô'ð 	ØˆFÝ�d”k¥5¤8Ñ,Ô,ð 	µ¸d¼kÑ1JÔ1Jð 	ØˆFà”zð 	>ð 	>‰GˆD�!Ø—J’J˜s‘O”OˆEðÝÕ0°°u¸Q´xÑ@Ô@ÑAÔA��øÝÔ'ð ð ð Ø�ðøøøå˜f¥e¤lÑ3Ô3ð ØØ×$Ò$ T¨6°5¸¸¸´9Ñ=Ô=Ð=Ð=ð	>ð 	>s   Â#B*Â*B<Â;B<rd   c                ó(  — | j         st          j        |¦  «        rdS t          |¦  «        rdS t	          |j        t          j        ¦  «        rt          |j        ¦  «        rdS |j	         
                    d¦  «        }	 |                     |d         ¦  «        }n# t          j        $ r Y dS w xY w|                      |||dd…         ¦  «        }|sdS |j        D ]6\  }}|dk    rŒ|                      ||| 
                    d¦  «        ¦  «         Œ7dS )rä  Nr³   r   rY   r²   )rå  r   ræ  r   rp   r�   r   r‡  r   rk   rç  rj   rl   rm   ré  r¾   )r4  rv   Ú
name_partsrs   re   rO  s         rb   Úvisit_importfromz!VariablesChecker.visit_importfrom  sC  € ð Ô,ð 	µÔ1MÈdÑ1SÔ1Sð 	ð ˆFõ " $Ñ'Ô'ð 	ØˆFÝ�d”k¥5¤8Ñ,Ô,ð 	µ¸d¼kÑ1JÔ1Jð 	ØˆFà”\×'Ò'¨Ñ,Ô,ˆ
ð	Ø×*Ò*¨:°a¬=Ñ9Ô9ˆFˆFøÝÔ+ð 	ð 	ð 	ØˆFˆFð	øøøà×)Ò)¨$°¸
À1À2À2¼ÑGÔGˆØð 	ØˆFØ”zð 	Dð 	D‰GˆD�!Ø�sŠ{ˆ{ØØ×$Ò$ T¨6°4·:²:¸c±?´?ÑCÔCÐCÐCð	Dð 	Ds   Á?B ÂB.Â-B.r  r  r  Úunbalanced_dict_unpackingrw   c                ó   — |                       |¦  «         t          |j        d         t          j        t          j        f¦  «        sdS |j        d                              ¦   «         }t          d„ |D ¦   «         ¦  «        rdS 	 t          j	        |j
        ¦  «        }|�|                      |||¦  «         dS dS # t          j        $ r Y dS w xY w)z‡Check unbalanced tuple unpacking for assignments and unpacking
        non-sequences as well as in case self/cls get assigned.
        r   Nc              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r«   r  r  s     rb   r±   z0VariablesChecker.visit_assign.<locals>.<genexpr>1  s.   è è € ÐGÐG°V�z˜&¥%¤-Ñ0Ô0ÐGÐGÐGÐGÐGÐGra   )Ú_check_self_cls_assignrp   ri  r   r.   r)   Úiteredr¼   r   ré   r~   Ú_check_unpackingrl   ÚInferenceError)r4  rv   ri  rx   s       rb   Úvisit_assignzVariablesChecker.visit_assign   sã   € ð 	×#Ò# DÑ)Ô)Ð)Ý˜$œ, qœ/­E¬K½¼Ð+DÑEÔEð 	ØˆFà”,˜q”/×(Ò(Ñ*Ô*ˆõ ÐGÐG¸wÐGÑGÔGÑGÔGð 	ØˆFð	ÝÔ'¨¬
Ñ3Ô3ˆHØÐ#Ø×%Ò% h°°gÑ>Ô>Ð>Ð>Ð>ð $Ð#øåÔ%ð 	ð 	ð 	ØˆFˆFð	øøøs   Â2B: Â:CÃCúnodes.ListCompc                óV   — | j                              t          |d¦  «        ¦  «         dS )z5Visit listcomp: update consumption analysis variable.rW  NrC  r*  s     rb   Úvisit_listcompzVariablesChecker.visit_listcomp<  rY  ra   c                ó8   — | j                              ¦   «          dS )z5Leave listcomp: update consumption analysis variable.NrQ  rR  s     rb   Úleave_listcompzVariablesChecker.leave_listcomp@  rT  ra   c                ó0   — |                       |¦  «         d S r«   r(  r*  s     rb   Úleave_assignzVariablesChecker.leave_assignE  r,  ra   ú
nodes.Withc                ó0   — |                       |¦  «         d S r«   r(  r*  s     rb   Ú
leave_withzVariablesChecker.leave_withH  r,  ra   únodes.Argumentsc                óD   — |j         D ]}|                      |¦  «         Œd S r«   )rt  rs  )r4  rv   Ú
annotations      rb   Úvisit_argumentsz VariablesChecker.visit_argumentsK  s5   € ØÔ0ð 	9ð 	9ˆJØ×,Ò,¨ZÑ8Ô8Ð8Ð8ð	9ð 	9ra   c                ó>   — t          | j        j        j        ¦  «        S r«   )r‹   r	  r;  Úanalyse_fallback_blocksrI  s    rb   rå  z)VariablesChecker._analyse_fallback_blocksP  s   € å�D”KÔ&Ô>Ñ?Ô?Ð?ra   úIterable[str]c                ó$   — | j         j        j        S r«   )r	  r;  Úignored_modulesrI  s    rb   Ú_ignored_modulesz!VariablesChecker._ignored_modulesT  s   € àŒ{Ô!Ô1Ð1ra   c                ó>   — t          | j        j        j        ¦  «        S r«   )r‹   r	  r;  Úallow_global_unused_variablesrI  s    rb   Ú_allow_global_unused_variablesz/VariablesChecker._allow_global_unused_variablesX  s   € å�D”KÔ&ÔDÑEÔEÐEra   c                óÀ  — d}t          |t          j        ¦  «        rÁ|                      ¦   «         |u r«| |j        j        v p7| |j        j        v p)| |j        j        v p| |j        j        u p| |j        j	        u pd|j         
                    | ¦  «        pJ|j        o|j         
                    | ¦  «        p)|j        o"| |j        u p|j         
                    | ¦  «        }|S r  )rp   r   r‘   rc  r0  r   Úposonlyargs_annotationsÚkwonlyargs_annotationsÚvarargannotationÚkwargannotationr’   Ú
decoratorsÚreturns)rv   rˆ   Ú%in_annotation_or_default_or_decorators      rb   r¿  z0VariablesChecker._defined_in_function_definition\  s	  € ð 16Ð-Ý�e�UÔ.Ñ/Ô/ð 	°D·N²NÑ4DÔ4DÈÐ4MÐ4Mð ˜EœJÔ2Ð2ð :Ø˜uœzÔAÐAð:à˜uœzÔ@Ð@ð:ð ˜uœzÔ:Ð:ð:ð ˜uœzÔ9Ð9ðð ”:×'Ò'¨Ñ-Ô-ðð Ô$ÐI¨Ô)9×)CÒ)CÀDÑ)IÔ)Iðð ”Mð QØ ¤Ð.ÐO°%´-×2IÒ2IÈ$Ñ2OÔ2Oð 2ð 5Ð4ra   c                ó6  — | }| j         }|��||u rdS t          |t          j        ¦  «        r||j        urdS t          |t          j        ¦  «        r||j        urdS t          |t          j        ¦  «        r|j        r||j        d         u sdS |}|j         }|­�dS )z’Return True if node within a lambda/comprehension body (or similar) and thus
        should not have access to class attributes in frame.
        NFTr   )	r�   rp   r   rÉ  r0  ÚComprehensionr�   rx  ry  )rv   rˆ   r]  r�   s       rb   Ú _in_lambda_or_comprehension_bodyz1VariablesChecker._in_lambda_or_comprehension_bodys  sÄ   € ð ˆØ”ˆØÐ Ø˜ˆˆØ�uÝ˜&¥%¤,Ñ/Ô/ð °EÀÄÐ4LÐ4Là�tÝ˜&¥%Ô"5Ñ6Ô6ð ¸5ÈÌÐ;SÐ;Sà�tÝ˜&¥%Ô":Ñ;Ô;ð ØÔ!ðØ&+¨vÔ/@ÀÔ/CÐ&CÐ&Cð �tØˆEØ”]ˆFð! Ð ð" ˆura   rÔ  r±  rÕ  rŠ   rÖ  útuple[bool, bool, bool]c                ó¬  ‡ ‡— d}d}	d}
||urt          ‰ ||¦  «        }�n |j        €0‰ j        |j        v st	          j        ‰ j        ¦  «        d         rd}nét          |t          j        ¦  «        p+t          ‰  	                    ¦   «         t          j
        ¦  «        ot          ‰ ¦  «        }|sV|                     ¦   «                              ‰ j        ¦  «        d         r$d}||k    ot          ‰t          j        ¦  «         }
n<‰ j        |j        v r.t!          ˆ fd„|                     ¦   «         D ¦   «         ¦  «         }|dk    rtt          |t          j        ¦  «        rZ‰ j        |j        v rLt          ‰t          j        ¦  «        o.‰ ‰j        v o%|j        ‰ j                 d         j        |j        k      }�n—t          |t          j        ¦  «        r®t          |t          j        ¦  «        r”‰ |j        u rZ|                     |j        ¦  «        r@d}	|j        j        |j        v r)|j        ‰ j                 d         j        |j        k     rd}nd}t          ‰ j        t          j        ¦  «        r|j        |j        k    }�nÏ|rd}�nÉ|o|j        |j        k    }|�r´|j        |j        k    �r£t          |t          j        ¦  «        r*||u r&|                     ‰ ¦  «        r‰|j        v s||urd}�n_t          |t4          ¦  «        r;t6                               |¦  «        r!||u r|                     ‰ ¦  «        r||u rd}�nt          ‰t          j        ¦  «        rõ||u rñ|                     |¦  «        rÜ||u rØ‰j        ‰ j        k    r‰j        ‰ j        k     s‚‰j        ‰ j        k     srt>          s¡‰j        ‰ j        k    r‘t          |t          j         t          j!        t          j"        t          j#        f¦  «        rUt          |j$        t          j%        ¦  «        r6‰j$        ‰ u p,t!          ˆfd„‰  &                    ¦   «         D ¦   «         ¦  «        }||	|
fS )NTFrY   c              3  óh   •K  — | ],}t          |t          j        ¦  «        o‰j        |j        v V — Œ-d S r«   rZ  r\  s     €rb   r±   z:VariablesChecker._is_variable_violation.<locals>.<genexpr>¸  sQ   øè è € ð .ð .àõ ˜u¥e¤nÑ5Ô5ÐR¸$¼)ÀuÄ{Ð:Rð.ð .ð .ð .ð .ð .ra   rM  r   c              3  ó*   •K  — | ]}|‰j         u V — Œd S r«   rª  )r°   ÚancrÔ  s     €rb   r±   z:VariablesChecker._is_variable_violation.<locals>.<genexpr>'	  sC   øè è € ð Gð GØ14˜˜wœ}Ð,ðGð Gð Gð Gð Gð Gra   )'rœ   r�   re   r¯  rl   Úbuiltin_lookuprp   r   r‘   rˆ   rÉ  rã   r‚   Úlookupr  rn   r¼   rk  r�   r“   Údefaultsr·   r  r’   rƒ   rÀ  ÚNODES_WITH_VALUE_ATTRrl  Ú _maybe_used_and_assigned_at_oncer‹  Ú
col_offsetr   r}   rÒ  r®   rµ  r~   Ú	JoinedStrrž  )rv   rÔ  rc   rÕ  rˆ   rŠ   r´  rÖ  r×  rØ  rÙ  Úforbid_lookups   ``          rb   rÊ  z'VariablesChecker._is_variable_violation�  sú  øø€ ð #ÐØ!ÐØ$ÐØ˜Ð Ð Ý"6°t¸UÀHÑ"MÔ"MÐÑØŒ_Ð$ð ”	˜XÔ1Ð1Ð1ÝÔ)¨$¬)Ñ4Ô4°QÔ7ð 2ð ',Ð#øõ ˜5¥%Ô"3Ñ4Ô4ð :Ý˜dŸjšj™lœl­E¬LÑ9Ô9ð*õ $ DÑ)Ô)ð ð !ð 
 X§]¢]¡_¤_×%;Ò%;¸D¼IÑ%FÔ%FÀqÔ%Ið 
Ø&+Ð#Ø'+¨w¢ð (½zØ�UÔ0ñ@ô @ð <Ð$Ð$ð ”˜hœoÐ-Ð-Ý*-ð .ð .ð .ð .à!)×!6Ò!6Ñ!8Ô!8ð.ñ .ô .ñ +ô +ð 'Ð#ð ˜xÒ'Ð'Ý˜5¥%¤.Ñ1Ô1ð (à”	˜Uœ\Ð)Ð)õ ˜7¥E¤OÑ4Ô4ð OØ˜GÔ,Ð,ðOà”L ¤Ô+¨AÔ.Ô9¸GÔ<NÒNð#ÐÑõ
 ˜¥%¤.Ñ1Ô1ð W	µjØ•5Ô$ñ7
ô 7
ð W	ð
 �u”}Ð$Ð$¨×);Ò);¸E¼MÑ)JÔ)JÐ$Ø$(Ð!à”MÔ&¨(¬/Ð9Ð9Ø œ¨¬	Ô2°1Ô5Ô<¸u¼|ÒKÐKð +0Ð'Ð'à*.Ð'Ý˜$œ+¥u¤Ñ7Ô7ð LØ&*¤o¸Ô9KÒ&KÐ#ùØð E	Ø"&ÐÑð $ÐM¨¬¸7Ô;MÒ(Mð  ð #ñ ? t¤¸'Ô:LÒ'LÑ'Lå˜x­Ô):Ñ;Ô;ð>à Ð)Ð)Ø ×*Ò*¨4Ñ0Ô0ð *ð   8Ô#7Ð7Ð7ð   wÐ.Ð.ð +0Ð'Ñ'å˜wÕ(=Ñ>Ô>ð2å(×IÒIÈ'ÑRÔRð2ð  Ð)Ð)Ø ×*Ò*¨4Ñ0Ô0ð *à ˜˜ð
 +0Ð'Ñ'åØ¥¤ñô ð'ð  Ð)Ð)Ø ×*Ò*¨4Ñ0Ô0ð *à ˜˜ð $œN¨d¬kÒ9Ð9Ø 'Ô 2°T´_Ò DÐ Dà#œN¨T¬[Ò8Ð8õ
 !*ð 9ð !(¤°$´+Ò =Ð =Ý *Ø 'å$)¤LÝ$)¤OÝ$)¤OÝ$)¤Lð	!"ñ!ô !ð !>õ !+¨7¬=½%¼/Ñ JÔ Jð !>ð& +2¬-¸4Ð*?ð +Å3ð Gð Gð Gð GØ8<×8KÒ8KÑ8MÔ8MðGñ Gô Gñ Dô DÐ'ð #Ð$5Ð7KÐKÐKra   c                ó<  — t          | t          j        ¦  «        rt          d„ | j        D ¦   «         ¦  «        S t          | t          j        ¦  «        rdS t          | t          j        ¦  «        rdS t          | j        t          j        ¦  «        r#t          d„ | j        j	        D ¦   «         ¦  «        S | j        }t          |t          j        ¦  «        rdS t          |t          j
        ¦  «        r!t          |j        t          j        ¦  «        rdS t          |t          j        ¦  «        r t          d„ |j        D ¦   «         ¦  «        rdS t          |t          j        ¦  «        sdS t          d„ |                     t          j        ¬¦  «        D ¦   «         ¦  «        S )zeCheck if `defstmt` has the potential to use and assign a name in the
        same statement.
        c              3  ó$   K  — | ]}|j         V — Œd S r«   )Úguard)r°   Úcases     rb   r±   zDVariablesChecker._maybe_used_and_assigned_at_once.<locals>.<genexpr>3	  s$   è è € Ð<Ð< d�t”zÐ<Ð<Ð<Ð<Ð<Ð<ra   Tc              3  óª   K  — | ]N}t          |g t          ¢t          j        ‘t          j        ‘R ¦  «        ¯2t
                               |¦  «        V — ŒOd S r«   )rp   r!  r   rÒ  ÚMatchrl  r"  ©r°   rÕ  s     rb   r±   zDVariablesChecker._maybe_used_and_assigned_at_once.<locals>.<genexpr>9	  sl   è è € ð ð àÝ˜cÐ#UÕ%:Ð#U½E¼KÐ#UÍÌÐ#UÐ#UÑVÔVðÝ ×AÒAÀ#ÑFÔFðð ð ð ð ð ra   c              3  ó–   K  — | ]D}t          |d          t          j        ¦  «        pt          |d         t          j        ¦  «        V — ŒEdS )r   rY   N©rp   r   rÒ  )r°   rÏ  s     rb   r±   zDVariablesChecker._maybe_used_and_assigned_at_once.<locals>.<genexpr>C	  s[   è è € ð 1
ð 1
àõ �t˜A”w¥¤Ñ,Ô,ÐPµ
¸4À¼7ÅEÄKÑ0PÔ0Pð1
ð 1
ð 1
ð 1
ð 1
ð 1
ra   Fc              3  ó  K  — | ]ƒ}t          d „ |j        D ¦   «         ¦  «        p`t          d„ |j        D ¦   «         ¦  «        pBt          |j        t
          j        ¦  «        o#t          |j        j        t
          j        ¦  «        V — Œ„dS )c              3  óT   K  — | ]#}t          |j        t          j        ¦  «        V — Œ$d S r«   )rp   r~   r   rÒ  )r°   Úkwargs     rb   r±   zNVariablesChecker._maybe_used_and_assigned_at_once.<locals>.<genexpr>.<genexpr>K	  s0   è è € ÐPÐP¸•
˜5œ;­¬Ñ4Ô4ÐPÐPÐPÐPÐPÐPra   c              3  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r«   r.  )r°   Úargs     rb   r±   zNVariablesChecker._maybe_used_and_assigned_at_once.<locals>.<genexpr>.<genexpr>L	  s.   è è € ÐEÐE°C•:˜c¥5¤;Ñ/Ô/ÐEÐEÐEÐEÐEÐEra   N)	r¼   Úkeywordsr0  rp   rê   r   rF  rG  rÒ  )r°   rî   s     rb   r±   zDVariablesChecker._maybe_used_and_assigned_at_once.<locals>.<genexpr>J	  s¢   è è € ð 
ð 
ð õ ÐPÐPÀ$Ä-ÐPÑPÔPÑPÔPð ÝÐEÐE¸4¼9ÐEÑEÔEÑEÔEðõ ˜4œ9¥e¤oÑ6Ô6ð <Ý˜tœyœ~­u¬{Ñ;Ô;ð
ð 
ð 
ð 
ð 
ð 
ra   )Úklass)rp   r   r+  r¼   ÚcasesrÒ  Ú	TypeAliasr~   ÚBaseContainerr  rÉ  r‘  r(   r»   rè   rÊ   )rÕ  r~   s     rb   r"  z1VariablesChecker._maybe_used_and_assigned_at_once-	  s©  € õ
 �g�uœ{Ñ+Ô+ð 	=ÝÐ<Ð<¨g¬mÐ<Ñ<Ô<Ñ<Ô<Ð<Ý�g�uœ{Ñ+Ô+ð 	Ø�4Ý�g�uœÑ/Ô/ð 	Ø�4Ý�g”m¥UÔ%8Ñ9Ô9ð 	Ýð ð à"œ=Ô-ðñ ô ñ ô ð ð
 ”ˆÝ�e�Uœ[Ñ)Ô)ð 	Ø�4Ý�e�Uœ\Ñ*Ô*ð 	­z¸%¼*ÅeÄkÑ/RÔ/Rð 	Ø�4Ý�e�UœZÑ(Ô(ð 	­Sð 1
ð 1
àœð1
ñ 1
ô 1
ñ .
ô .
ð 	ð �4Ý˜%¥¤Ñ,Ô,ð 	Ø�5Ýð 
ð 
ð ×,Ò,µ5´:Ð,Ñ>Ô>ð
ñ 
ô 
ñ 
ô 
ð 	
ra   re   c                óP   — || j         j        j        v pt          j        |¦  «        S r«   )r	  r;  r°  r   r1  ©r4  re   s     rb   rÏ  zVariablesChecker._is_builtinT	  s&   € Ø�t”{Ô)Ô=Ð=ÐWÅÔAQÐRVÑAWÔAWÐWra   c                ó¤  ‡ ‡— t          |t          j        ¦  «        r|j        rdS |                     ¦   «         }‰                      ¦   «         }‰ }||j        u�rv|                     ¦   «         }|                     t          j        ¦  «        D ]z}||u rŒt          ˆ fd„|                     t          j
        ¦  «        D ¦   «         ¦  «        r;t          ˆ fd„|                     t          j        ¦  «        D ¦   «         ¦  «        r dS Œ{|j                             ‰ j        g ¦  «        }|D ]”Š||k    r‰j        ‰ j        k    r n{t          ‰j        t          j        ¦  «        r‰j        j        rOt          ‰j        t          j        ¦  «        r-t          ˆfd„‰                      ¦   «         D ¦   «         ¦  «        s dS Œ•|j        }||j        u�°vdS )z>Check if variable only gets assigned a type and never a value.Fc              3  ó4   •K  — | ]}‰j         |j        v V — Œd S r«   )re   r¾   )r°   Únlrv   s     €rb   r±   z<VariablesChecker._is_only_type_assignment.<locals>.<genexpr>j	  s@   øè è € ð ð àð ”I ¤Ð)ðð ð ð ð ð ra   c              3  ó8   •K  — | ]}‰j         |j         k    V — Œd S r«   rà   )r°   Úanrv   s     €rb   r±   z<VariablesChecker._is_only_type_assignment.<locals>.<genexpr>m	  s@   øè è € ð ð àð ”I ¤Ò(ðð ð ð ð ð ra   c              3  ó4   •K  — | ]}|‰j         j        u V — Œd S r«   )r�   r~   )r°   r  Úref_nodes     €rb   r±   z<VariablesChecker._is_only_type_assignment.<locals>.<genexpr>‰	  s>   øè è € ð ð Ø9<˜˜xœÔ4Ð4ðð ð ð ð ð ra   T)rp   r   rÒ  r~   rˆ   r�   rŽ   rÊ   r‘   r¼   r[  r¬   rn   ro   re   rƒ   r‹  rž  )	rv   rÕ  Údefstmt_frameÚ
node_framer�   r›   Ú
inner_funcÚ
local_refsrA  s	   `       @rb   rÐ  z)VariablesChecker._is_only_type_assignmentW	  s&  øø€ õ
 ˜'¥5¤?Ñ3Ô3ð 	°w´}ð 	Ø�5àŸš™œˆØ—Z’Z‘\”\ˆ
àˆØ˜MÔ0Ð0Ñ0Ø!Ÿ<š<™>œ>ˆLð +×9Ò9½%Ô:KÑLÔLð 
!ð 
!�
Ø Ð-Ð-ØÝð ð ð ð à(×7Ò7½¼ÑGÔGðñ ô ñ ô ð !õ ð ð ð ð à(×7Ò7½Ô8HÑIÔIðñ ô ñ ô ð!ð !˜5˜5øà%Ô,×0Ò0°´¸BÑ?Ô?ˆJØ&ð !ð !�ð ! JÒ.Ð.°8´?ÀTÄ[Ò3PÐ3PØ�Eõ # 8¤?µE´OÑDÔDð!à”Ô,ð!õ ˜xœµ´Ñ@Ô@ð!õ ð ð ð ð Ø@D×@SÒ@SÑ@UÔ@Uðñ ô ñ ô ð!ð !˜5˜5øØ!Ô(ˆFðW ˜MÔ0Ð0Ñ0ðX ˆtra   rs  c                óÖ  — |                       ¦   «         j        |k    r¿|                      ¦   «         |                       ¦   «         k    r•t          j        | ¦  «        r0t          j        | ¦  «        st          j        dfS t          j        dfS t          | j        t          j        ¦  «        r2t          | j        j        t          j        ¦  «        rt          j        dfS t          j        |fS )z„Check if a first level method's annotation or default values
        refers to its own class, and return a consumer action.
        N)rˆ   r�   rc  r   rÜ  r   rX   r^   r_   rp   r   rè   r“   )rv   rÕ  rs  s      rb   rÑ  z/VariablesChecker._is_first_level_self_reference‘	  sÏ   € ð �:Š:‰<Œ<Ô 'Ò)Ð)¨d¯nªnÑ.>Ô.>À$Ç*Â*Á,Ä,Ò.NÐ.Nõ Ô7¸Ñ=Ô=ð BÝÔ<¸TÑBÔBð HÝ7Ô@À$ÐGÐGÝ3Ô:¸DÐAÐAå˜$œ+¥u¤zÑ2Ô2ð DµzØ”Ô"¥E¤Oñ8ô 8ð Dõ 4Ô<¸dÐCÐCÝ+Ô2°KÐ@Ð@ra   únodes.NamedExprÚdefnode_parentúnodes.IfExpc                óÄ   — t          j        |j        ¦  «        }t          |t          j        ¦  «        r,|j        du r| |j        k    rdS |j        du r| |j        k    rdS dS )z`Check if a NamedExpr is inside a side of if ... else that never
        gets evaluated.
        TF)	r   ré   rŠ  rp   r   r�  r~   r�  r‘  )rÔ  rH  Úinferred_tests      rb   rÓ  z$VariablesChecker._is_never_evaluated¦	  sp   € õ Ô(¨Ô)<Ñ=Ô=ˆÝ�m¥U¤[Ñ1Ô1ð 	ØÔ" dÐ*Ð*¨w¸.Ô:OÒ/OÐ/OØ�tØÔ" eÐ+Ð+°¸>Ô;NÒ0NÐ0NØ�tØˆura   c                ó‚   — t          j        | t          j        ¦  «        }|ot          j        |t          j        ¦  «        S r«   )r   r�   r   rÒ  r‘   )rv   Úis_annotations     rb   rÝ  z4VariablesChecker._is_variable_annotation_in_functionµ	  s;   € åÔ=¸dÅEÄOÑTÔTˆàð ÝÔ5Ø�uÔ0ñô ð	
ra   c                óv  — |j         }|                     ¦   «                              ¦   «         }|                      ||¦  «        }t	          j        ||¦  «        }|s|r|j                             ¦   «         j        }n|j        }t          |t          j
        ¦  «        s|o|                      ||¦  «         o||v  S )a  Return True if the node is in a local class scope, as an assignment.

        Detect if we are in a local class scope, as an assignment.
        For example, the following is fair game.

        class A:
           b = 1
           c = lambda b=b: b * b

        class B:
           tp = 1
           def func(self, arg: tp):
               ...
        class C:
           tp = 2
           def func(self, arg=tp):
               ...
        class C:
           class Tp:
               pass
           class D(Tp):
               ...
        )re   rc  rŽ   r¿  r   r¼  r�   rn   rp   r   r�   r  )r4  rv   re   rˆ   r  Úin_ancestor_listÚframe_localss          rb   r½  z$VariablesChecker._ignore_class_scope¿	  sÌ   € ð0 ŒyˆØ—’Ñ Ô ×&Ò&Ñ(Ô(ˆØ04×0TÒ0TØ�%ñ1
ô 1
Ð-õ !Ô1°%¸Ñ>Ô>ÐØ0ð 	(Ð4Dð 	(Ø œ<×-Ò-Ñ/Ô/Ô6ˆLˆLà œ<ˆLå˜�uœ~Ñ.Ô.ÐWÐ2Wð %Ø×9Ò9¸$ÀÑFÔFÐFð%à˜Ð$ð
ð 	
ra   úastroid.Namec           	     óÄ  ‡— d„ |                      |j        ¦  «        d         D ¦   «         }|                     ¦   «         Št          ‰t          j        t          j        f¦  «        rt          ˆfd„|D ¦   «         ¦  «        rd S |r¨|d         j        |d          	                    ¦   «         k    r |d         j         
                    |¦  «        s_|d         j        sRt          |d         j        t          j        ¦  «        s0|d                              ¦   «          
                    |¦  «        rg }n
|d d…         }t          |dd …         ¦  «        D ]{\  }}	 ||                              ¦   «         }n# t          j        j        $ r Y Œ7w xY w| 
                    |¦  «        rt%          j        ||¦  «        sŒf|                     |¦  «         Œ||}t+          |¦  «        dk    rd S |d                              ¦   «         }t          |t          j        t          j        t          j        f¦  «        r(|                     ¦   «         |                     ¦   «         usd S t          |t          j        ¦  «        s|                      d|j        |¬¦  «         d S |j        D �]K}t          |t          j        t          j        t          j        t          j        f¦  «        r d S t          |t          j         ¦  «        rït          |j!        t          j"        ¦  «        rÐt%          j#        |j!        j$        ¦  «        }	t          |	t          j        ¦  «        r˜|	j%        r‘t%          j#        |	j%        ¦  «        }
t          |
t          j        ¦  «        r)|
 &                    ¦   «         h tN          £tP          £d’v r d S t          |
tR          j*        ¦  «        r|
 &                    ¦   «         dk    r d S �ŒMt%          j+        |t          j,        ¦  «        }|rnt%          j+        |t          j        ¦  «        }|rMt%          j+        |t          j-        ¦  «        }|€n+|j                             ¦   «         ‰u r|j        |j.        v rd S 	 t_          |j0         1                    ¦   «         ¦  «        }t          |t          j*        ¦  «        r�| &                    ¦   «         dk    rx|j0        }t          |j0        t          j2        ¦  «        r|j0        j3        }t          |t          j"        ¦  «        r,t_          |j4        d          1                    ¦   «         ¦  «        }t          |t          j*        ¦  «        r| &                    ¦   «         tj          k    rd S t          j6        t          j7        t          j8        t          j9        t          j:        j;        f}t          ||¦  «        s|                      d|j        |¬¦  «         d S ty          |d	ty          |d
g ¦  «        ¦  «        }|s|                      d|j        |¬¦  «         d S d S # t          j=        $ r! |                      d|j        |¬¦  «         Y d S w xY w)Nc                ó2   — g | ]}t          |d ¦  «        ¯|‘ŒS )r­   )Úhasattr)r°   Úss     rb   r<  z2VariablesChecker._loopvar_name.<locals>.<listcomp>ê	  s'   € ÐTÐTÐT˜½'À!À]Ñ:SÔ:SÐT�!ÐTÐTÐTra   rY   c              3  óf   •K  — | ]+}|                      ¦   «                              ‰¦  «        V — Œ,d S r«   )rŽ   r’   )r°   ÚasmtrŽ   s     €rb   r±   z1VariablesChecker._loopvar_name.<locals>.<genexpr>ð	  sR   øè è € ð H
ð H
Ø.2ˆD�JŠJ‰LŒL×"Ò" 5Ñ)Ô)ðH
ð H
ð H
ð H
ð H
ð H
ra   r   r  r/  ztyping._SpecialFormzbuiltins.enumerater  r»   )>r  re   rŽ   rp   r   rÉ  r‘   r¼   r�   r‚   r’   Úis_statementr”   rc  Ú	enumeraterl   Ú
exceptionsÚParentMissingErrorr   Úin_for_else_branchr•   r–   r­   r€   r  ÚGeneratorExpr3  r�  rµ  rÐ  rˆ  r¾  r»  r~   rè   ré   rê   r  Úqnamer   r   r   ÚInstancer�   r‹  rx  rn   r‚  r�   r¤   rÒ  r‘  r0  ÚBUILTIN_RANGEr)   r.   r(   r'   r  r@   rì   rõ  )r4  rv   ÚastmtsÚ_astmtsr«  rc   Úastmt_statementÚassignÚ	else_stmtÚinferred_funcÚinferred_returnÚmaybe_walrusÚmaybe_comprehensionr€  rx   Úlikely_callÚ	sequencesÚelementsrŽ   s                     @rb   r   zVariablesChecker._loopvar_nameè	  sn  ø€ àTÐT˜TŸ[š[¨¬Ñ3Ô3°AÔ6ÐTÑTÔTˆð
 —
’
‘”ˆÝ�e�eœl­EÔ,=Ð>Ñ?Ô?ð 	ÅCð H
ð H
ð H
ð H
Ø6<ðH
ñ H
ô H
ñ E
ô E
ð 	ð ˆFð ð	!ð �q”	Ô  F¨1¤I§N¢NÑ$4Ô$4Ò4Ð4Ø˜1”IÔ$×.Ò.¨tÑ4Ô4ð 5ð �q”	Ô&ð	 5õ
 " &¨¤)Ô"2µE´LÑAÔAð 5ð ˜1”I×'Ò'Ñ)Ô)×3Ò3°DÑ9Ô9ð 5ð ˆGˆGà˜R˜a˜R”jˆGÝ  ¨¨¨¤Ñ,Ô,ð 		!ð 		!‰GˆAˆtðØ"(¨¤)×"5Ò"5Ñ"7Ô"7��øÝÔ%Ô8ð ð ð Ø�ðøøøà×(Ò(¨Ñ.Ô.ð µuÔ7OØ ñ8ô 8ð ð Ø�NŠN˜4Ñ Ô Ð Ð ØˆÝˆv‰;Œ;˜!ÒÐØˆFà˜”×&Ò&Ñ(Ô(ˆå�v¥¤	­5Ô+>ÅÔ@RÐSÑTÔTð	à× Ò Ñ"Ô"¨$¯.ª.Ñ*:Ô*:Ð:Ð:àˆFå˜&¥%¤)Ñ,Ô,ð 	Ø×ÒÐ6¸T¼YÈTÐÑRÔRÐRØˆFØœð 	ñ 	ˆIÝØ�EœL­%¬+µu´{ÅEÄNÐSñô ð ð ��å˜)¥U¤ZÑ0Ô0ð µZØ”¥¤ñ6ô 6ð õ !&Ô 0°´Ô1EÑ FÔ F�å˜}­eÔ.?Ñ@Ô@ðà%Ô-ðõ ',Ô&6°}Ô7LÑ&MÔ&M�OÝ!Ø'­Ô):ñô ð à)×/Ò/Ñ1Ô1ð 6Ý(ð6å%ð6ð .ð6ð ð ð
 ˜˜õ # ?µE´NÑCÔCðà+×1Ò1Ñ3Ô3Ð7LÒLÐLà˜˜ùåÔ<¸TÅ5Ä?ÑSÔSˆØð 	Ý"'Ô"GØ�eÔ1ñ#ô #Ðð #ð Ý&+Ô&KØ'­Ô)Añ'ô 'Ð#ð 'Ð.àà'Ô.×4Ò4Ñ6Ô6¸%Ð?Ð?Øœ	Ð%8Ô%?Ð?Ð?à�Fð$	WÝ˜FœK×-Ò-Ñ/Ô/Ñ0Ô0ˆHõ ˜8¥WÔ%5Ñ6Ô6ðAà—N’NÑ$Ô$Ð(<Ò<Ð<à$œk�Ý˜fœk­5¬;Ñ7Ô7ð 3Ø"(¤+Ô"2�KÝ˜k­5¬:Ñ6Ô6ð AÝ# KÔ$4°QÔ$7×$=Ò$=Ñ$?Ô$?Ñ@Ô@�Hõ
 ˜8¥WÔ%5Ñ6Ô6ðà—N’NÑ$Ô$­Ò5Ð5ð �õ ”
Ý”Ý”
Ý”	Ý”Ô)ðˆIõ ˜h¨	Ñ2Ô2ð Ø× Ò Ð!:ÀÄÐQUÐ ÑVÔVÐVØ�å˜x¨µ¸À7ÈBÑ1OÔ1OÑPÔPˆHØð WØ× Ò Ð!:ÀÄÐQUÐ ÑVÔVÐVÐVÐVðWð Wøõ/ Ô%ð 	Sð 	Sð 	SØ×ÒÐ6¸T¼YÈTÐÑRÔRÐRÐRÐRÐRð	Søøøs%   ÅE2Å2F	ÆF	Ñ6CX/ Ø/,YÙYrÑ   rÒ   r~  r  c                ó"  ‡— |                       |‰¦  «        rd S t          |t          j        ¦  «        rQ‰dk    rKt	          |j        d         ¦  «        dk    r-t          |j        d         d         t          j        ¦  «        rd S t          |t          j        t          j        t          j	        f¦  «        r|rt          ||¦  «        rd S ‰|v rd S ‰| j        v rd S |                     ¦   «         }‰|v rg|j        dk    rAd}|j                             ¦   «         D ]!}	t!          |	d¦  «        o
|	j        dk    }|r nŒ"|rd S |                      ‰||||¦  «         d S |j        rGt          |j        t          j        t          j        t          j        t          j        f¦  «        r‰|v rd S d x}
}t          |t          j        t          j	        f¦  «        rRt	          |j        ¦  «        dk    r"t/          ˆfd„|j        D ¦   «         d ¦  «        }n|j        d         }|r	|\  }
}|p|
Št1          ||                     ¦   «         ¦  «        rd	}n—t          |t          j        ¦  «        r)|�|
› d
|› �}nd‰› �}|                      d||¬¦  «         d S t          |t          j	        ¦  «        r8|�|
› d|j        › d|› �}n‰› d|j        › �}|                      d||¬¦  «         d S d}t          |t          j        ¦  «        r	|j        rd S t;          j        |¦  «        rd S t          |j        t          j        ¦  «        r?tA          ˆfd„|j         !                    t          j"        ¦  «        D ¦   «         ¦  «        rd S |                      |‰|¬¦  «         d S )Nr  rY   r   Ú__new__Fre   r5  c              3  ó$   •K  — | ]
}‰|v ¯|V — Œd S r«   r`   )r°   r¾   re   s     €rb   r±   z4VariablesChecker._check_is_unused.<locals>.<genexpr>·
  s'   øè è € ÐHÐH 5¸$À%¸-¸-˜¸-¸-¸-¸-ÐHÐHra   r  ú imported as úimport r  r/  ú imported from ú as r  c              3  ó.   •K  — | ]}|j         ‰k    V — Œd S r«   rà   )r°   rT  re   s     €rb   r±   z4VariablesChecker._check_is_unused.<locals>.<genexpr>Ú
  sB   øè è € ð Dð DØ#$�”˜$’ðDð Dð Dð Dð Dð Dra   )#rl  rp   r   r‘   r–   rn   r�   rË   r½   rq   rÔ   r  Úargnamesre   r�   rk  rT  Ú_check_unused_argumentsr}   rÒ  r.   r€   r¾   r‚  rï   rŽ   r3  rk   r  r   Úis_overload_stubrd  r¼   rÊ   r­  )r4  re   rv   rc   rÑ   r~  r  ru  Úis_init_defrT  r^  r    Úimport_namesÚmessage_nameÚmsgs    `             rb   r|  z!VariablesChecker._check_is_unusedz
  s%  ø€ ð × Ò   tÑ,Ô,ð 	ØˆFõ �t�UÔ.Ñ/Ô/ð	à˜Ò#Ð#Ý�D”K Ô,Ñ-Ô-°Ò2Ð2Ý˜4œ; {Ô3°AÔ6½¼ÑGÔGð 3ð ˆFõ �d�Uœ\­5¬<½Ô9IÐJÑKÔKð 	àð Õ 6°t¸\Ñ JÔ Jð Ø�ð Ð-Ð-Ð-ØˆFð �4Ô.Ð.Ð.ØˆFà—=’=‘?”?ˆà�8ÐÐØŒy˜IÒ%Ð%Ø#�àœ×1Ò1Ñ3Ô3ð ð �AÝ")¨!¨VÑ"4Ô"4Ð"O¸!¼&ÀJÒ:N�KØ"ð Ø˜ðð ð Ø�FØ×(Ò(¨¨t°T¸8À^ÑTÔTÐTÐTÐTàŒ{ð �zØ”�eœl­E¬O½U¼[Í%Ì)ÐTñ ô  ð ð ˜>Ð)Ð)Ø�Fà!Ð!ˆE�FÝ˜$¥¤­uÔ/?Ð @ÑAÔAð 
+å�t”z‘?”? QÒ&Ð&Ý#'ØHÐHÐHÐH¨D¬JÐHÑHÔHÈ$ñ$ô $�L�Lð $(¤:¨a¤=�LØð +Ø$0‘M�E˜6Ø!˜? U�Då*¨4°·²±´Ñ>Ô>ð 1Ø9��å˜d¥E¤LÑ1Ô1ð ØÐ)Ø!&Ð=Ð=°VÐ=Ð=˜˜à.¨Ð.Ð.˜Ø×$Ò$ _¸3ÀTÐ$ÑJÔJÐJØ�FÝ˜d¥EÔ$4Ñ5Ô5ð ØÐ)Ø!&ÐQÐQ°t´|ÐQÐQÈÐQÐQ˜˜à!%ÐDÐD°d´lÐDÐD˜Ø×$Ò$ _¸3ÀTÐ$ÑJÔJÐJØ�FØ0�å˜$¥Ô 1Ñ2Ô2ð °t´ð Ø�õ Ô% dÑ+Ô+ð Ø�õ ˜$œ+¥uÔ':Ñ;Ô;ð Åð Dð Dð Dð DØ(,¬×(BÒ(BÅ5Ä:Ñ(NÔ(NðDñ Dô Dñ Aô Að ð �à×Ò˜\°¸4ÐÑ@Ô@Ð@Ð@Ð@ra   ú&re.Pattern[str] | re.Match[str] | Nonec                ó   — | j         j        j        }t          |t          j        ¦  «        rt          |j        t          j        ¦  «        st          |t          j        ¦  «        r| j         j        j        }n|}|o| 	                    |¦  «        S r«   )
r	  r;  Údummy_variables_rgxrp   r   r¬   r�   r“   Úignored_argument_namesÚmatch)r4  rc   re   Úauthorized_rgxÚregexs        rb   rl  z!VariablesChecker._is_name_ignoredá
  s�   € ð œÔ+Ô?ˆå�t�UÔ-Ñ.Ô.ð	#å˜4œ;­¬Ñ8Ô8ð	#õ ˜$¥¤Ñ0Ô0ð	#ð
 &*¤[Ô%7Ô%NˆEˆEà"ˆEð Ð*˜Ÿš TÑ*Ô*Ð*ra   ru  ú	list[str]c                óØ  ‡— ‰                      ¦   «         }‰j                             ¦   «         }|r=t          |t          j        ¦  «        r#t          j        |¦  «        rt          nt          }nt          }|rf‰j        dk    r||d         k    rd S t          |‰j        ¦  «        }	|	�||	                     ¦   «         v rd S ‰j        t          j        v r‰j        dvrd S t!          ˆfd„| j        j        j        D ¦   «         ¦  «        rd S t          j        ‰¦  «        rd S t          j        ‰¦  «        rd S t          j        |¦  «        rd S ||v rd S |                      d|||¬¦  «         d S )Nrú  r   )r5  rn  c              3  ó€   •K  — | ]8}‰j                              |¦  «        p‰j                              |¦  «        V — Œ9d S r«   )re   r¿   rž  )r°   Úcbrv   s     €rb   r±   z;VariablesChecker._check_unused_arguments.<locals>.<genexpr>  s\   øè è € ð 
ð 
àð ŒI× Ò  Ñ$Ô$Ð>¨¬	×(:Ò(:¸2Ñ(>Ô(>ð
ð 
ð 
ð 
ð 
ð 
ra   r	  r‰  )rv  r�   rˆ   rp   r   r�   r   Úhas_known_basesr   r    r   rÿ  r   re   ru  Ú	PYMETHODSr¼   r	  r;  r  Ú(is_registered_in_singledispatch_functionrw  Úis_protocol_classr3  )
r4  re   rv   rc   ru  r~  rv  r5  r†  Ú
overriddens
     `       rb   rv  z(VariablesChecker._check_unused_argumentsò
  s³  ø€ ð —N’NÑ$Ô$ˆ	Ø”×!Ò!Ñ#Ô#ˆØð 	� E­5¬>Ñ:Ô:ð 	å"Ô2°5Ñ9Ô9ÐP•	�	Õ?Pð ˆJõ ˆJàð 	àŒy˜NÒ*Ð*¨t°xÀ´{Ò/BÐ/BØ�å*¨5°$´)Ñ<Ô<ˆJØÐ%¨$°*×2EÒ2EÑ2GÔ2GÐ*GÐ*GØ�ØŒy�EœOÐ+Ð+°´	ð Bð 1ð 1ð �åð 
ð 
ð 
ð 
à”kÔ(Ô2ð
ñ 
ô 
ñ 
ô 
ð 	ð ˆFåÔ9¸$Ñ?Ô?ð 	ØˆFõ Ô! $Ñ'Ô'ð 	ØˆFõ Ô" 5Ñ)Ô)ð 	ØˆFà�>Ð!Ð!ØˆFà×ÒÐ*°¸DÈZÐÑXÔXÐXÐXÐXra   c                ó¨  — | j                              d¦  «        sdS |                     ¦   «         }t          j        ||¦  «        r|j                             ¦   «         }t          |t          j        t          j	        f¦  «        r|j
        |j        v rdS |                     |j
        ¦  «        \  }}|r|                     |¦  «        sdS t          j        |¦  «        r|                      d||j
        ¬¦  «         dS |d         }|}|rCt          |t          j        ¦  «        s)||u rdS |j        }|rt          |t          j        ¦  «        ¯)|r{|                     |¦  «        rht          j        |¦  «        sV|j        rQt          |                     ¦   «         t          j        ¦  «        s'|                      d||j
        ¬¦  «         dS dS dS dS dS dS )a:  Check whether node is a cell var that is assigned within a containing loop.

        Special cases where we don't care about the error:
        1. When the node's function is immediately called, e.g. (lambda: i)()
        2. When the node's function is returned from within the loop, e.g. return lambda: i
        r  N©rv   r0  r   )r	  rj  rˆ   r   rÁ  r�   rp   r   rÉ  r‘   re   rn   r  r’   Úis_comprehensionr3  r€   Úis_being_calledrc  rµ  )r4  rv   Ú
node_scopeÚassign_scoperÂ   Úassignment_nodeÚ	maybe_fors          rb   rÅ  z,VariablesChecker._check_late_binding_closure'  s.  € ð Œ{×-Ò-Ð.BÑCÔCð 	ØˆFà—Z’Z‘\”\ˆ
õ Ô$ T¨:Ñ6Ô6ð 	3Ø#Ô*×0Ò0Ñ2Ô2ˆJõ ˜:­¬µeÔ6GÐ'HÑIÔIð	àŒy˜JÔ-Ð-Ð-àˆFà"Ÿkšk¨$¬)Ñ4Ô4Ñˆ�eØð 	˜L×2Ò2°:Ñ>Ô>ð 	ØˆFåÔ! ,Ñ/Ô/ð 	VØ×ÒÐ1¸À4Ä9ÐÑMÔMÐMÐMÐMð $ AœhˆOà'ˆIØð V¥J¨y½%¼)Ñ$DÔ$Dð VØ Ð,Ð,Ø�EØ%Ô,�	ð ð V¥J¨y½%¼)Ñ$DÔ$Dð Vð ðVà!×+Ò+¨JÑ7Ô7ðVõ "Ô1°*Ñ=Ô=ðVð #Ô)ð	Võ
 ' z×';Ò';Ñ'=Ô'=½u¼|ÑLÔLðVð ×$Ò$Ð%9ÀÈ4Ì9Ð$ÑUÔUÐUÐUÐUðVð Vð Vð Vð Vð Vð Vð Vð Vð Vra   c                ój   — t          |t          j        ¦  «        sdS |j        | j        j        j        v S r  )rp   r   rq   rk   r	  r;  Úredefining_builtins_modules)r4  rc   s     rb   r2  z1VariablesChecker._should_ignore_redefined_builtinY  s1   € Ý˜$¥Ô 0Ñ1Ô1ð 	Ø�5ØŒ|˜tœ{Ô1ÔMÐMÐMra   c                ó(   — || j         j        j        v S r«   )r	  r;  Úallowed_redefined_builtinsr:  s     rb   rm  z+VariablesChecker._allowed_redefined_builtin^  s   € Ø�t”{Ô)ÔDÐDÐDra   c                ó–   — t          j        | t          j        ¦  «        }|duo&|                      ¦   «                              |¦  «        S )z]Return True if a ComprehensionScope intervenes between `node` and its
        frame.
        N)r   r�   r   rx  rˆ   r’   )rv   Úclosest_comprehension_scopes     rb   rm  z6VariablesChecker._comprehension_between_frame_and_nodea  sP   € õ
 ',Ô&KØ•%Ô*ñ'
ô '
Ð#ð +°$Ð6ð 
¸4¿:º:¹<¼<×;QÒ;QØ'ñ<
ô <
ð 	
ra   Útype_annotationc                óž  — t          |t          j        ¦  «        r!| j                             |j        ¦  «         dS t          |t          j        ¦  «        r|                      |j        ¦  «         dS t          |t          j	        ¦  «        sdS t          |j
        t          j        ¦  «        r_t          |j
        j        t          j        ¦  «        r;|j
        j        j        t          k    r!| j                             t          ¦  «         dS | j                             d„ |                     t          j        ¦  «        D ¦   «         ¦  «         dS )z?Given a type annotation, store all the name nodes it refers to.Nc              3  ó$   K  — | ]}|j         V — Œd S r«   rà   )r°   r  s     rb   r±   z?VariablesChecker._store_type_annotation_node.<locals>.<genexpr>‚  s5   è è € ð +
ð +
Ø *ˆJŒOð+
ð +
ð +
ð +
ð +
ð +
ra   )rp   r   r­  r  r•   re   rF  rs  rG  Ú	Subscriptr~   ÚTYPING_MODULEÚextendrÊ   )r4  rš  s     rb   rs  z,VariablesChecker._store_type_annotation_nodem  s4  € å�o¥u¤zÑ2Ô2ð 	ØÔ'×.Ò.¨Ô/CÑDÔDÐDØˆFå�o¥u¤Ñ7Ô7ð 	Ø×,Ò,¨_Ô-AÑBÔBÐBØˆFå˜/­5¬?Ñ;Ô;ð 	ØˆFõ �Ô,­e¬oÑ>Ô>ð	å˜?Ô0Ô5µu´zÑBÔBð	ð  Ô%Ô*Ô/µ=Ò@Ð@àÔ'×.Ò.­}Ñ=Ô=Ð=ØˆFàÔ#×*Ò*ð +
ð +
Ø.=×.LÒ.LÍUÌZÑ.XÔ.Xð+
ñ +
ô +
ñ 	
ô 	
ð 	
ð 	
ð 	
ra   ú%nodes.For | nodes.Assign | nodes.Withc                óP   — |j         }|sd S |                      |j         ¦  «         d S r«   )rš  rs  )r4  rv   rš  s      rb   r)  z-VariablesChecker._store_type_annotation_names†  s6   € ð Ô.ˆØð 	ØˆFØ×(Ò(¨Ô)=Ñ>Ô>Ð>Ð>Ð>ra   c                ó  — t          ¦   «         }|j        D ]u}t          |t          j        ¦  «        r|                     |j        ¦  «         Œ7t          |t          j        ¦  «        r$|                     d„ |j	        D ¦   «         ¦  «         Œv| 
                    ¦   «         }| 
                    ¦   «         j        ot          d„ |j        D ¦   «         ¦  «        }|r+| 
                    ¦   «         j         
                    ¦   «         }t          |t          j        ¦  «        r*|                     ¦   «         rd|                     ¦   «         vsdS |                     ¦   «         }|sdS |d         }||v r|                      d||f¬¦  «         dS dS )z'Check that self/cls don't get assigned.c              3  óX   K  — | ]%}t          |t          j        ¦  «        ¯|j        V — Œ&d S r«   rÎ  r,  s     rb   r±   z:VariablesChecker._check_self_cls_assign.<locals>.<genexpr>•  sJ   è è € ð $ð $Ø!$µzÀ#ÅuÔGWÑ7XÔ7Xð$Ø”Hð$ð $ð $ð $ð $ð $ra   c              3  óN   K  — | ] }t          |t          j        ¦  «        ¯|V — Œ!d S r«   )rp   r   r[  rz  s     rb   r±   z:VariablesChecker._check_self_cls_assign.<locals>.<genexpr>™  sG   è è € ð ?
ð ?
Ø­Z¸½u¼~Ñ-NÔ-Nð?
Øð?
ð ?
ð ?
ð ?
ð ?
ð ?
ra   zbuiltins.staticmethodNr   r  r�  )r—   ri  rp   r   r¬   r{  re   r.   Úupdater  rŽ   r�   r¼   r‘  r‘   rv  Údecoratornamesru  r3  )r4  rv   Úassign_namesrj  rŽ   Únonlocals_with_same_nameÚargument_namesÚself_cls_names           rb   rò  z'VariablesChecker._check_self_cls_assignŽ  s¯  € å(+©¬ˆØ”lð 	ð 	ˆFÝ˜&¥%Ô"2Ñ3Ô3ð Ø× Ò  ¤Ñ-Ô-Ð-Ð-Ý˜F¥E¤KÑ0Ô0ð Ø×#Ò#ð $ð $Ø(.¬ð$ñ $ô $ñ ô ð øð —
’
‘”ˆØ#'§:¢:¡<¤<Ô#6ð $
½3ð ?
ð ?
Ø$œzð?
ñ ?
ô ?
ñ <
ô <
Ð ð $ð 	0Ø—J’J‘L”LÔ'×-Ò-Ñ/Ô/ˆEõ �u�eÔ/Ñ0Ô0ð	à—’Ñ!Ô!ð	ð (¨u×/CÒ/CÑ/EÔ/EÐEÐEàˆFØŸšÑ)Ô)ˆØð 	ØˆFØ& qÔ)ˆØ˜LÐ(Ð(Ø×ÒÐ2¸À]ÐDTÐÑUÔUÐUÐUÐUð )Ð(ra   rx   r   ri  c                ó„  — t          j        |¦  «        rdS t          j        |¦  «        rdS t          |t          j        ¦  «        rdS t          |j        t          j        ¦  «        r;t          |j	        t          j
        ¦  «        r|j	        j        |j        j        k    rdS |                      |¦  «        }t          ||¦  «        }|�Jt          |¦  «        t          |¦  «        k    r(|                      |||t          |¦  «        |¦  «         dS dS t          j        |¦  «        s|                      ||¦  «         dS dS )zRCheck for unbalanced tuple unpacking
        and unpacking non sequences.
        N)r   Úis_inside_abstract_classrŽ  rp   r   ÚUninferableBaser�   r   r“   r~   r­  re   Úvarargr  r†   r–   r!  Úis_iterableÚ_report_unpacking_non_sequence)r4  rx   rv   ri  rÜ   r%  s         rb   rô  z!VariablesChecker._check_unpacking¬  sN  € õ Ô)¨$Ñ/Ô/ð 	ØˆFÝÔ! $Ñ'Ô'ð 	ØˆFÝ�h¥Ô 4Ñ5Ô5ð 	ØˆFå�x”­¬Ñ8Ô8ð	å˜4œ:¥u¤zÑ2Ô2ð	ð ”
” 8¤?Ô#9Ò9Ð9ð ˆFð ×&Ò& xÑ0Ô0ˆÝ+¨D°(Ñ;Ô;ˆàÐÝ�7‰|Œ|�s 6™{œ{Ò*Ð*Ø×1Ò1Ø˜( G­S°©[¬[¸'ñô ð ð ð ð +Ð*õ
 Ô" 8Ñ,Ô,ð 	?Ø×/Ò/°°gÑ>Ô>Ð>Ð>Ð>ð	?ð 	?ra   Ú
value_nodeÚintc                óÜ  — t                                | ¦  «        }|�t          |¦  «        S t          | t          j        ¦  «        r5t          | j        t          t          f¦  «        rt          | j        ¦  «        S t          | t          j	        ¦  «        rW| j
        j        pd}| j
        j        j        | j
        j        j        z
  }t          t          j        ||z  ¦  «        ¦  «        }|S dS r¶   )rl  r  r–   rp   r   r�  r~   rf   Úbytesr�  ÚsliceÚstepÚupperÚlowerr²  ÚmathÚceil)r±  Úvalue_subnodesr¶  Úsplice_rangeÚsplice_lengths        rb   r   z"VariablesChecker._get_value_lengthÍ  sÔ   € å)×:Ò:¸:ÑFÔFˆØÐ%Ý�~Ñ&Ô&Ð&Ý�j¥%¤+Ñ.Ô.ð 	)µ:ØÔ�s¥E˜lñ4
ô 4
ð 	)õ �zÔ'Ñ(Ô(Ð(Ý�j¥%¤/Ñ2Ô2ð 	!ØÔ#Ô(Ð-¨AˆDØ%Ô+Ô1Ô7¸*Ô:JÔ:PÔ:VÑVˆLÝ¥¤	¨,¸Ñ*=Ñ >Ô >Ñ?Ô?ˆMØ Ð Øˆqra   rW  c                óf  — t          | t          j        t          j        t          j        gt
          ¢R ¦  «        r|                      ¦   «         S t          | t          j        ¦  «        rIt          d„ |  
                    ¦   «         D ¦   «         ¦  «        rd„ |                      ¦   «         D ¦   «         S dS )z/Return the list of values of the `Assign` node.c              3  óF   K  — | ]}|                      ¦   «         d k    V — ŒdS )ztyping.NamedTupleN)r^  )r°   r°  s     rb   r±   z4VariablesChecker._nodes_to_unpack.<locals>.<genexpr>â  sC   è è € ð 6
ð 6
Ø8@ˆH�NŠNÑÔÐ 3Ò3ð6
ð 6
ð 6
ð 6
ð 6
ð 6
ra   c                óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS r`   )rp   r   r¬   rª  s     rb   r<  z5VariablesChecker._nodes_to_unpack.<locals>.<listcomp>å  s*   € ÐPÐPÐP˜!µ
¸1½eÔ>NÑ0OÔ0OÐP�AÐPÐPÐPra   N)rp   r   r.   r)   r'   r|   ró  rl   r_  r¼   Ú	ancestorsrÜ   )rv   s    rb   r  z!VariablesChecker._nodes_to_unpackÝ  s«   € õ �d�Uœ[­%¬*µe´iÐMÅ*ÐMÐMÑNÔNð 	!Ø—;’;‘=”=Ð Ý�d�GÔ,Ñ-Ô-ð 	Qµ#ð 6
ð 6
ØDHÇNÂNÑDTÔDTð6
ñ 6
ô 6
ñ 3
ô 3
ð 	Qð QÐP˜tŸ{š{™}œ}ÐPÑPÔPÐPØˆtra   Úvalues_countr%  c                óÖ   — |t          |¦  «        t          |¦  «        dk    rdnd||dk    rdndf}t          |t          ¦  «        rdnd}|                      |||t          ¬¦  «         d S )NrY   rz   rU  r  r  )rv   r0  r†  )r–   rp   r|   r3  r   )r4  rv   rx   ri  rÂ  r%  r0  Úsymbols           rb   r!  z-VariablesChecker._report_unbalanced_unpackingè  s‰   € ð Ý�‰LŒLÝ�g‘,”, !Ò#Ð#ˆBˆB¨ØØ !Ò#Ð#ˆBˆB¨ð
ˆõ ˜(¥JÑ/Ô/ð.Ð'Ð'à-ð 	ð
 	×Ò˜ d°Å)ÐÑLÔLÐLÐLÐLra   c                ón   — |r|                      d¦  «        sd|› �}|                      d||¬¦  «         d S )Nú r  r�  )r¿   r3  )r4  rv   r%  s      rb   r°  z/VariablesChecker._report_unpacking_non_sequenceÿ  sL   € Øð 	$˜7×-Ò-¨cÑ2Ô2ð 	$Ø#˜'�m�mˆGØ×ÒÐ1¸À7ÐÑKÔKÐKÐKÐKra   ú_base_nodes.ImportNoders   Úmodule_namesúnodes.Module | Nonec                óÐ  — |�r
|                      d¦  «        }|dk    rd}nì	 |                     |¦  «        d         }t          |t          j        ¦  «        s=t          |                     ¦   «         ¦  «        }t          |t          j        ¦  «        sdS nu# t          j        $ rR t          | 
                    ¦   «         › d|› �| j        ¦  «        rY dS |                      d||j        f|¬¦  «         Y dS t          j        $ r Y dS w xY w|�°
|r:|r|j        nd}|                      d|d                     |¦  «        |f¬¦  «         dS t          |t          j        ¦  «        r|S dS )z Check that module_names (list of string) are accessible through the
        given module, if the latest access name corresponds to a module, return it.
        r   Ú__dict__Nr³   rû   r/  r�  )r8  rì   rp   r   r”   r‚  r¤   rl   rŠ  r   r^  r
  r3  re   rõ  rA  )r4  rv   rs   rÈ  re   rk   s         rb   ré  z$VariablesChecker._check_module_attrs  s°  € ð ñ 	Ø×#Ò# AÑ&Ô&ˆDØ�zÒ!Ð!Ø�ØðØŸš¨Ñ-Ô-¨aÔ0�Ý! &­%¬,Ñ7Ô7ð $Ý! &§,¢,¡.¤.Ñ1Ô1�FÝ% f­e¬lÑ;Ô;ð $Ø#˜tøøÝÔ(ð ð ð õ %¨¯ª©¬Ð%?Ð%?¸Ð%?Ð%?ÀÔAVÑWÔWð  Ø˜4˜4Ø× Ò Ø'¨t°V´[Ð.AÈð !ñ ô ð ð �t�tÝÔ)ð ð ð Ø�t�tðøøøð) ñ 	ð, ð 	Ø%+Ð;�f”k�k°ˆGØ×ÒØ#¨$°c·h²h¸|Ñ6LÔ6LÈgÐ5Vð ñ ô ð ð �4Ý�f�eœlÑ+Ô+ð 	ØˆMØˆts   £A0B Â;DÃDÃ6DÄDr¦   r§   c                óÌ  — 	 t          |                     d¦  «        ¦  «        }n# t          j        $ r Y d S w xY wt	          |t
          j        ¦  «        rd S |                     ¦   «         dvr)|j        |j	        }}|  
                    d|||¬¦  «         d S t          |dd¦  «        D �]»}	 t          |                     ¦   «         ¦  «        }n# t          j        $ r Y Œ7w xY wt	          |t
          j        ¦  «        rŒV|j        sŒ^t	          |t          j        ¦  «        rt	          |j        t"          ¦  «        s+|  
                    d|                     ¦   «         |¬¦  «         Œ½|j        }||v r||= ŒÌ||j        vræ|j        s|  
                    d	|f|¬¦  «         Œöt*          j                             |j        ¦  «        d
         }t*          j                             |¦  «        dk    rx|j        dz   |z   }		 t          j                             |	                     d¦  «        ¦  «         �Œ…# t<          $ r |  
                    d	|f|¬¦  «         Y �Œ«t>          $ r Y �Œ·w xY w�Œ½d S )Nr6  >   úbuiltins.listúbuiltins.tuplerù   )ro  r#  rv   r  r`   r÷   r/  rõ   r   r5  r³   ) r‚  Úigetattrrl   rõ  rp   r   r­  ÚpytypeÚtolinenor#  r3  rì   r¤   r�   r   r�  r~   rf   r   rn   r=  ÚosÚpathÚsplitextr�  Úbasenamere   ÚmodutilsÚfile_from_modpathrç  ÚImportErrorÚSyntaxError)
r4  rv   r¦   Úassignedro  ÚcolrÕ  Úelt_namerÕ  re   s
             rb   r9  zVariablesChecker._check_all-  sÃ  € ð	Ý˜DŸMšM¨)Ñ4Ô4Ñ5Ô5ˆHˆHøÝÔ%ð 	ð 	ð 	ØˆFˆFð	øøøå�h¥Ô 4Ñ5Ô5ð 	ØˆFØ�?Š?ÑÔÐ$GÐGÐGØ Ô)¨8Ô+>�#ˆDØ×ÒÐ1¸ÈÐSWÐÑXÔXÐXØˆFÝ˜8 V¨RÑ0Ô0ð )	!ñ )	!ˆCðÝ §	¢	¡¤Ñ,Ô,��øÝÔ)ð ð ð Ø�ðøøøå˜(¥DÔ$8Ñ9Ô9ð ØØ”?ð Øå˜h­¬Ñ4Ô4ð ½JØ”¥ñ=ô =ð ð × Ò Ð!5¸C¿MºM¹O¼OÐRUÐ ÑVÔVÐVØà”~ˆHà˜<Ð'Ð'Ø  Ð*Øà˜tœ{Ð*Ð*Ø”|ð !Ø×$Ò$Ø0¸°{Èð %ñ ô ð ð õ  "œw×/Ò/°´	Ñ:Ô:¸1Ô=�HÝ”w×'Ò'¨Ñ1Ô1°ZÒ?Ð?Ø#œy¨3™°Ñ9˜ð
!Ý#Ô,×>Ò>¸t¿zºzÈ#¹¼ÑOÔOÐOÑOøÝ*ð ð ð Ø ×,Ò,Ø 8À¸{ÐQTð -ñ ô ð ð ñ õ  +ð !ð !ð !ð !™Dð	!øøøùðK)	!ð )	!s6   ‚"% ¥8·8Â+!CÃCÃCÇ82H,È,#IÉ	IÉIúdict[str, nodes.NodeNG]c                ó¨   — | j         rd S |                     ¦   «         D ]3\  }}|D ]+}t          |¦  «        rŒ|                      d|f|¬¦  «         Œ,Œ4d S )Nr  r/  )r  r»   r   r3  )r4  r¦   re   Únode_lstrv   s        rb   r:  zVariablesChecker._check_globalse  sŠ   € ØÔ.ð 	ØˆFØ*×0Ò0Ñ2Ô2ð 	Mð 	M‰NˆD�(Ø ð Mð M�Ý)¨$Ñ/Ô/ð ØØ× Ò Ð!2¸$¸ÀtÐ ÑLÔLÐLÐLðMð	Mð 	Mra   c                óº  — t          |¦  «        }t          ¦   «         }t          j        t          ¦  «        }|D �]\  }}|j        D �]}|d         x}}	|	dk    r|}|d         }
||v rŒ"|||
fvrŒ)|                     |¦  «         |	| j        v p|
| j        v }|
o4| j        j	        j
        o#| j        j	        j
                             |
¦  «        }t          |t          j        ¦  «        s!t          |t          j        ¦  «        ry|j        srt          |t          j        ¦  «        rt"                               |	¦  «        rŒ÷|s|rŒü|
€d|	› �}n|	› d|
› �}t'          |¦  «        s|                      d||¬¦  «         �Œ4t          |t          j        ¦  «        r³|j        t*          k    r£t"                               |	¦  «        r�Œzt-          ||¦  «        r�ŒŒ|s|r�Œ’|	dk    r$||j        |f                              |¦  «         �Œ¼|
€|	› d|j        › �}n|	› d|j        › d	|
› �}t'          |¦  «        s|                      d||¬¦  «         �Œ�Œ|                     ¦   «         D ]y\  }}t3          |¦  «        dk    r	|d         }n2d
                     d„ |d d…         D ¦   «         ¦  «        › d|d         › �}|                      d||d         f|d         ¬¦  «         Œz| `d S )Nr   r²   rY   rq  rp  r  r/  rr  rs  r?  c              3  ó   K  — | ]}|V — Œd S r«   r`   rª  s     rb   r±   z2VariablesChecker._check_imports.<locals>.<genexpr>Á  s"   è è € Ð =Ð = q Ð =Ð =Ð =Ð =Ð =Ð =ra   r´   z and r  )rÇ   r—   r1  r   r2  r¾   r{  r  r	  r;  r~  r€  rp   r   r½   rq   rk   ÚSPECIAL_OBJÚsearchr   r3  rr   ru   r•   r»   r–   rA  r  )r4  r¦   Úlocal_namesÚcheckedÚunused_wildcard_importsre   rc   rÃ   Ú	real_nameÚimported_nameÚas_nameÚis_type_annotation_importÚis_dummy_importr{  rs   Úunused_listÚ
arg_strings                    rb   r>  zVariablesChecker._check_importso  sµ  € Ý& |Ñ4Ô4ˆÝ‘%”%ˆõ Ô#¥DÑ)Ô)ð 	 ð &ð D	Sñ D	S‰JˆD�$Øœ:ð CSñ CS�Ø,3°A¬JÐ6�	˜MØ  CÒ'Ð'Ø $�IØ! !œ*�Ø Ð'Ð'ØØ 	¨7Ð3Ð3Ð3ØØ—’˜IÑ&Ô&Ð&ð " TÔ%@Ð@ð >Ø $Ô"=Ð=ð *ð ð NØœÔ*Ô>ðNàœÔ*Ô>×DÒDÀWÑMÔMð  õ ˜d¥E¤LÑ1Ô1ð -SÝ˜t¥UÔ%5Ñ6Ô6ð-SØ?C¼|ð-Sõ " $­Ô(8Ñ9Ô9ð !½k×>PÒ>PØ%ñ?ô ?ð !ð
 !à0ð !°Oð !ð !à�Ø7¨Ð7Ð7˜˜à!.ÐFÐF¸WÐFÐF˜Ý1°$Ñ7Ô7ð OØ×(Ò(¨¸sÈÐ(ÑNÔNÐNùÝ ¥eÔ&6Ñ7Ô7ð S¸D¼LÍFÒ<RÐ<RÝ"×)Ò)¨-Ñ8Ô8ð !ñ !å-¨d°DÑ9Ô9ð !ñ !à0ð !°Oð !ñ !à$¨Ò+Ð+Ø/°´¸tÐ0DÔE×LÒLÈTÑRÔRÐRÑRà"˜?Ø%2Ð"QÐ"QÀ4Ä<Ð"QÐ"Q˜C˜Cà%2Ð"^Ð"^À4Ä<Ð"^Ð"^ÐU\Ð"^Ð"^˜CÝ5°dÑ;Ô;ð SØ ×,Ò,¨_À3ÈTÐ,ÑRÔRÐRùñGCSðL $;×#@Ò#@Ñ#BÔ#Bð 		ð 		ÑˆF�KÝ�;ÑÔ 1Ò$Ð$Ø(¨œ^�
�
ð —y’yÐ =Ð =¨K¸¸¸Ô,<Ð =Ñ =Ô =Ñ=Ô=ÐUÐUÀKÐPRÄOÐUÐUð ð ×ÒØ(°
¸FÀ1¼IÐ/FÈVÐTUÌYð ñ ô ð ð ð ÐÐÐra   ú nodes.Module | nodes.FunctionDefc                óú   — g }|                      ¦   «         D ]E}t          |t          j        ¦  «        r)|                     |                      ||¦  «        ¦  «         ŒF|D ]\  }}|                     |d¦  «         ŒdS )z,Update consumption analysis for metaclasses.N)rk  rp   r   r�   rŸ  Ú_check_classdef_metaclassesr8  )r4  rv   r'  Ú
child_nodeÚscope_localsre   s         rb   r7  z#VariablesChecker._check_metaclassesÈ  s•   € àDFˆà×+Ò+Ñ-Ô-ð 	Tð 	TˆJÝ˜*¥e¤nÑ5Ô5ð TØ—’ × @Ò @ÀÈTÑ RÔ RÑSÔSÐSøð #+ð 	)ð 	)ÑˆL˜$Ø×Ò˜T 4Ñ(Ô(Ð(Ð(ð	)ð 	)ra   r5  rr  ú/list[tuple[dict[str, list[nodes.NodeNG]], str]]c                ó„  — |j         sg S g }|                     ¦   «         }d}t          |j         t          j        ¦  «        r|j         j        }nêt          |j         t          j        ¦  «        r[|j         j        rO|j         j        }t          |t          j        ¦  «        s!|j        }t          |t          j        ¦  «        ¯!|j        }npt          |j         t          j        ¦  «        r6t          |j         j	        t          j        ¦  «        r|j         j	        j        }n|r| 
                    ¦   «         j        }d}t                               ||¦  «        }|r’| j        d d d…         D ]M\  }}	}	}	|                     |g ¦  «        }
|
D ]-}|j        |j        k    r|                     ||f¦  «         d} nŒ.ŒN|j                             |g ¦  «        }|D ]}|j        |j        k    rd} nŒ|sU|sS|t          j        j        v s@t'          j        |¦  «        s,|| j        j        j        v s|                      d||f¬¦  «         |S )Nrz   Fr´   Tró   r�  )Ú
_metaclassÚ	metaclassrp   r   r­  re   rF  rG  rè   rê   r‚   ÚMETACLASS_NAME_TRANSFORMSro   r  rƒ   r•   rn   r”   r¯  r   r1  r	  r;  r°  r3  )r4  r5  rr  r'  rö  re   ÚattrÚfoundrò  rO  rs  Ú
found_nodeÚnodes_in_parent_scopeÚfound_node_parents                 rb   rð  z,VariablesChecker._check_classdef_metaclassesÕ  sy  € ð Ôð 	àˆIàDFˆØ—O’OÑ%Ô%ˆ	ØˆÝ�eÔ&­¬
Ñ3Ô3ð 	)ØÔ#Ô(ˆDˆDÝ˜Ô(­%¬/Ñ:Ô:ð 
	)¸uÔ?OÔ?Tð 
	)ØÔ#Ô(ˆDÝ  ¥u¤zÑ2Ô2ð !Ø”y�õ ! ¥u¤zÑ2Ô2ð !à”9ˆDˆDÝ˜Ô(­%¬*Ñ5Ô5ð 	)½*ØÔÔ!¥5¤:ñ;
ô ;
ð 	)ð Ô#Ô(Ô-ˆDˆDØð 	)Ø—>’>Ñ#Ô#Ô(ˆDàˆÝ(×,Ò,¨T°4Ñ8Ô8ˆØð 	à)-Ô)9¸$¸$¸B¸$Ô)?ð ð Ñ%�˜a  AØ*×.Ò.¨t°RÑ8Ô8�Ø"-ð ð �JØ!Ô(¨E¬LÒ8Ð8Ø Ÿš¨°tÐ(<Ñ=Ô=Ð=Ø $˜Ø˜ð 9øð
 %0Ô$6×$:Ò$:¸4ÀÑ$DÔ$DÐ!Ø%:ð ð Ð!Ø$Ô+¨u¬|Ò;Ð;Ø �EØ�Eð <ð ð		Màð		Mð �œÔ0Ð0Ð0ÝÔ# DÑ)Ô)ð 1à˜4œ;Ô-ÔAÐAÐAð ×ÒÐ1¸ÀTÀGÐÑLÔLÐLàˆra   únodes.Subscriptc                ód   — t          j        |j        ¦  «        }|                      ||¦  «         d S r«   )r   ré   rµ  Ú_check_potential_index_error©r4  rv   Úinferred_slices      rb   Úvisit_subscriptz VariablesChecker.visit_subscript  s0   € ÝÔ)¨$¬*Ñ5Ô5ˆà×)Ò)¨$°Ñ?Ô?Ð?Ð?Ð?ra   r  únodes.NodeNG | Nonec                óP  — t          |t          j        ¦  «        rt          |j        t          ¦  «        sdS t          |j        t          j        t          j        f¦  «        rDt          |j        j        ¦  «        |j        dz   k     r|  	                    d|t          ¬¦  «         dS dS )z,Check for the potential-index-error message.NrY   r  r…  )rp   r   r�  r~   r²  r.   r)   r–   r  r3  r   r   s      rb   rÿ  z-VariablesChecker._check_potential_index_error  s«   € õ
 ˜.­%¬+Ñ6Ô6ð 	½jØÔ ¥#ñ?
ô ?
ð 	ð ˆFõ �d”j¥5¤;µ´
Ð";Ñ<Ô<ð 	å�4”:”?Ñ#Ô# nÔ&:¸QÑ&>Ò>Ð>Ø× Ò Ø+°$Å9ð !ñ ô ð ð ˆFð	ð 	ra   únodes.Constc                óø  — |                      ¦   «         dk    rdS t          j        |¦  «        sdS |j        }t	          |t
          j        ¦  «        r|j        }t	          |t
          j        ¦  «        r;t          | 	                    ¦   «         d¦  «        }|�t          j
        |d¦  «        rdS 	 t          |j        ¦  «        }|                      |¦  «         dS # t          $ r Y dS t          j        $ r Y dS w xY w)z£Take note of names that appear inside string literal type annotations
        unless the string is a parameter to `typing.Literal` or `typing.Annotation`.
        zbuiltins.strN)Ú	AnnotatedÚLiteral)rÐ  r   rÜ  r�   rp   r   r.   r�  r‚  rk  Úis_typing_memberr   r~   rs  Ú
ValueErrorrl   ÚAstroidSyntaxError)r4  rv   r�   Úoriginr  s        rb   Úvisit_constzVariablesChecker.visit_const#  s  € ð �;Š;‰=Œ=˜NÒ*Ð*ØˆFÝÔ7¸Ñ=Ô=ð 	ØˆFð ”ˆÝ�f�eœkÑ*Ô*ð 	#Ø”]ˆFÝ�f�eœoÑ.Ô.ð 	Ý˜&×-Ò-Ñ/Ô/°Ñ6Ô6ˆFØÐ!¥eÔ&<ØÐ0ñ'ô 'Ð!ð �ð	Ý% d¤jÑ1Ô1ˆJØ×,Ò,¨ZÑ8Ô8Ð8Ð8Ð8øÝð 	ð 	ð 	àˆDˆDÝÔ)ð 	ð 	ð 	àˆDˆDð	øøøs   Â/)C Ã
C9Ã'C9Ã8C9©r	  r"   rg   r.  )rv   r  rg   r.  )rv   r-  rg   r.  )rv   r@  rg   r.  )rv   rK  rg   r.  )rO  rK  rg   r.  )rv   rU  rg   r.  )rO  rU  rg   r.  )rv   r\  rg   r.  )rO  r\  rg   r.  )rv   ra  rg   r.  )rO  ra  rg   r.  )rv   rå   rg   r.  )rv   rƒ  rg   r.  )rv   r”  rg   r.  )rv   r˜  rg   r.  )rv   r›  rg   r.  )rv   r¡  rg   r.  )rv   r‡   rc   rä   rg   r.  )rv   r‡   rI  r-  r¸  r‹   rg   r‹   )rv   r‡   rc   rä   rˆ   r‰   rµ  r-  r´  rf   rg   rÂ  )rv   rä   rµ  r-  rg   r.  )rv   rä   r·  rQ  rg   rQ  )rv   r�   rg   r.  )rv   rd   rg   r.  )rv   rw   rg   r.  )rv   r÷  rg   r.  )rO  r÷  rg   r.  )rv   rþ  rg   r.  )rv   r  rg   r.  )rg   r‹   )rg   r  )rv   rä   rˆ   rä   rg   r‹   )rv   r‡   rÔ  rä   rc   r±  rÕ  r±  rˆ   r‰   rŠ   r‰   r´  rf   rÖ  r‹   rg   r  )rÕ  r±  rg   r‹   )re   rf   rg   r‹   )rv   r‡   rÕ  r±  rg   r‹   )rv   r‡   rÕ  r@  rs  rQ  rg   rÂ  )rÔ  rG  rH  rI  rg   r‹   )rv   rä   rg   r‹   )rv   rQ  rg   r.  )re   rf   rv   rå   rc   rä   rÑ   rÒ   r~  r  r  r  rg   r.  )rc   rä   re   rf   rg   r|  )re   rf   rv   rå   rc   rä   ru  rƒ  r~  r  rg   r.  )rv   r‡   rg   r.  )rc   rä   rg   r‹   )rv   r‡   rg   r‹   )rš  rä   rg   r.  )rv   r   rg   r.  )rx   r   rv   rw   ri  rQ  rg   r.  )r±  rä   rg   r²  )rv   rä   rg   rW  )rv   rä   rx   r   ri  rQ  rÂ  r²  r%  rf   rg   r.  )rv   rä   r%  rf   rg   r.  )rv   rÇ  rs   r-  rÈ  rƒ  rg   rÉ  )rv   r-  r¦   r§   rg   r.  )r¦   rÝ  rg   r.  )r¦   r§   rg   r.  )rv   rî  rg   r.  )r5  r@  rr  rî  rg   ró  )rv   rý  rg   r.  )rv   rý  r  r  rg   r.  )rv   r  rg   r.  )ZrZ   r[   r\   r]   re   r#  ÚmsgsÚIGNORED_ARGUMENT_NAMESÚoptionsr5  r   Úonly_required_for_messagesr&  r+  r4  r?  rD  rJ  rN  rS  rX  r[  r^  r`  rc  re  rp  r‚  Úvisit_asyncfunctiondefÚleave_asyncfunctiondefr“  r—  rš  r–  r¥  r§  rŸ  r­  r®  rÆ  rÇ  rë  rî  rö  rù  rû  rý  r   r  r	   rå  r
  r  rú  r¿  r  rÊ  r"  rÏ  rÐ  rÑ  rÓ  rÝ  r½  r   r|  rl  rv  rÅ  r2  rm  rm  rs  r)  rò  rô  r   r  r!  r°  ré  r9  r:  r>  r7  rð  r  rÿ  r  Ú__classcell__)r  s   @rb   rl  rl  ´  s¥	  ø€ € € € € ð	ð 	ð €DØ€Dð à ØØ%ð"ð	ð ð		
ð "àXØ Ø%ð<ð	ð ð		
ð "àØØ3ð!ð	ð ð
	
ð à)ØØ(ð1ð	ð ð
	
ð *ðð Ø3ð.ðð ð	
ð" %à1Ø Ø%ØTð	ð ð	
ð ,àØØ%Øað	ð ð	
ð )àØØ3ØBð	ð ð	
ð[V€Gðp3ð 3ð 3ð 3ð 3ð 3ð &€UÔ%Ø#ñô ð2ð 2ð 2ñô ð2ðh0ð 0ð 0ð 0ðPð Pð Pð Pð &€UÔ%ØØ ØØ ØØØØñ	ô 	ð)ð )ð )ñ	ô 	ð)ð(>ð >ð >ð >ðð ð ð ð(?ð ?ð ?ð ?ðð ð ð ð
Fð Fð Fð Fðð ð ð ð
Fð Fð Fð Fðð ð ð ð
Fð Fð Fð Fðð ð ð ð
&Lð &Lð &Lð &LðP,ð ,ð ,ð ,ð\ /ÐØ.Ðà%€UÔ%Ø#Ø&ØØ Øñô ð?Mð ?Mð ?Mñô ð?MðB"ð "ð "ð "ðð ð ð ð!ð !ð !ð !ð &€UÔ%Ð&<Ñ=Ô=ðCð Cð Cñ >Ô=ðCð &€UÔ%Ð&<Ñ=Ô=ð/ð /ð /ñ >Ô=ð/ð
.Nð .Nð .Nð .Nð`(ð (ð (ð (ðVEAð EAð EAð EAðN
ð 
ð 
ð 
ð> ð  ð  ð  ð0 &€UÔ%Ð&9Ñ:Ô:ð>ð >ð >ñ ;Ô:ð>ð, &€UÔ%Ð&9Ñ:Ô:ðDð Dð Dñ ;Ô:ðDð4 &€UÔ%Ø$Ø ØØ#ñ	ô ðð ð ñô ðð,Fð Fð Fð Fðð ð ð ð
0ð 0ð 0ð 0ð0ð 0ð 0ð 0ð9ð 9ð 9ð 9ð
 ð@ð @ð @ñ „_ð@ð ð2ð 2ð 2ñ „_ð2ð ðFð Fð Fñ „_ðFð ð5ð 5ð 5ñ „\ð5ð, ðð ð ñ „\ðð6 ð[Lð [Lð [Lñ „\ð[Lðz ð$
ð $
ð $
ñ „\ð$
ðLXð Xð Xð Xð ð7ð 7ð 7ñ „\ð7ðr ðAð Að Añ „\ðAð( ðð ð ñ „\ðð ð
ð 
ð 
ñ „\ð
ð&
ð &
ð &
ð &
ðROWð OWð OWð OWðdeAð eAð eAð eAðN+ð +ð +ð +ð"3Yð 3Yð 3Yð 3Yðj0Vð 0Vð 0Vð 0VñdNð Nð Nð Nð
Eð Eð Eð Eð ñ	
ð 	
ð 	
ñ „\ð	
ñ
ð 
ð 
ð 
ñ2?ð ?ð ?ð ?ðVð Vð Vð Vñ<?ð ?ð ?ð ?ðB ñð ð ñ „\ðð ñð ð ñ „\ðñMð Mð Mð Mñ.Lð Lð Lð Lñ
'ð 'ð 'ð 'ñR6!ð 6!ð 6!ð 6!ñpMð Mð Mð MñWð Wð Wð Wñr)ð )ð )ð )ñ4ð 4ð 4ð 4ñl@ð @ð @ð @ñ
ð ð ð ð& &€UÔ%ØØñô ñð ð ñ	ô ðð ð ð ð ra   rl  r	  r"   r.  c                óJ   — |                       t          | ¦  «        ¦  «         d S r«   )Úregister_checkerrl  )r	  s    rb   Úregisterr  F  s%   € Ø
×ÒÕ,¨VÑ4Ô4Ñ5Ô5Ð5Ð5Ð5ra   )rc   rd   re   rf   rg   rh   )rv   rw   rx   r   rg   rf   )rv   r‡   rˆ   r‰   rŠ   r‰   rg   r‹   )rv   r�   re   rf   rg   rž   )r¦   r§   rg   r¨   )re   rf   rˆ   r‰   rg   r‹   )rc   rÐ   rÑ   rÒ   rg   r‹   )rÕ   rÖ   rg   rÒ   )rÝ   r‡   rg   r‹   )rc   rä   rŽ   rå   rg   r‹   r  )_r]   r#   r   r1  r0  rÙ   r¹  rÒ  Úrer   Úcollections.abcr   r   r   Úenumr   Ú	functoolsr	   r&   r
   r   r   rl   Úastroid.exceptionsr   r   r   r   Úastroid.nodesr   Úastroid.typingr   Úpylint.checkersr   r   Úpylint.checkers.utilsr   r   r   r   r   Úpylint.constantsr   r   r   Úpylint.interfacesr   r   r   r    Úpylint.typingr!   Úpylint.lintr"   Úcompilerâ  rr   r  r÷  r`  rž  Ú	frozensetÚTYPING_NAMESr  Ú
DictValuesÚDictKeysr  Únode_classesr(   r|   r}   rÒ  r®   r»  rµ  r+  r7  r!  rX   ru   r†   rœ   r¥   rÇ   rÏ   rÔ   rÉ   rã   rï   r#  r+  r%  r-  rl  r  r`   ra   rb   ú<module>r,     s
  ðð
 *Ð )Ð )à "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø #Ð #Ð #Ð #Ð #Ð #Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à €€€Ø Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø %Ð %Ð %Ð %Ð %Ð %Ø *Ð *Ð *Ð *Ð *Ð *à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ð ð ð FÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ 0Ð 0Ð 0Ð 0Ð 0Ð 0àð %Ø$Ð$Ð$Ð$Ð$Ð$àˆbŒjÐ+Ñ,Ô,€Ø	€à#˜œÐ$<Ñ=Ô=Ð ð '¨Ð.Ð Ø €Ø€Øˆyð6ð 6ð 6ñ8ô 8€ðv „OÔØ„OÔØ„OÔØ„MÔÔ#ð	€
ð 
„LØ	„OØ	„OØ	„JØ	„LØ	„KØ	„OðÐ ð	ð 	ð 	ð 	ð 	 $ñ 	ô 	ð 	ð
ð 
ð 
ð 
ðð ð ð ð.I*ð I*ð I*ð I*ðX-ð -ð -ð -ð+@ð +@ð +@ð +@ð\ð ð ð ð,ð ð ð ð6ð 6ð 6ð 6ðð ð ð ðð ð ð ð$P+Øð ðP+ð ð ðP+ð ð ðP+ð( ð ð)P+ð2 ð ð3P+ð< ð ð=P+ðF ð ðGP+ðR ð ðSP+ð` ð ðaP+ðn ð ðoP+ðz ð ð{P+ðD ð ðEP+ðN ð ðOP+ðX ð ðYP+ðd ð ðeP+ðn ð ðoP+ðx ð ðyP+ðH	-à$ØHØ	ÐBÐCÐDðð 	0Ø ØUØ	Ð>Ð?Ð@ð	ððððððUP+ð P+ð P+€ð Pð Pð Pñ Pðfð ð ð ð �Jñ ô ð ð\
ð \
ð \
ð \
ð \
ñ \
ô \
ð \
ð@O"ð O"ð O"ð O"ð O"�{ñ O"ô O"ð O"ðdD6ð 6ð 6ð 6ð 6ð 6ra   