
    0yi,                       d 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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  eed      Z ee      Z e
j&                         j(                  Zd Zej.                  ej0                  fZd Zd Zd Zd	 Zd
 Z e	j>                  d      Z  e	j>                  d      Z! e	j>                  d      Z" e	j>                  d      Z# e	j>                  d      Z$ e%d      Z&d Z'd Z( G d de)      Z*d e*       fdZ+d Z,d Z- G d d      Z. G d de.      Z/ G d de/      Z0 G d d      Z1 G d  d!      Z2 G d" d#e/      Z3 G d$ d%e3      Z4 G d& d'e3      Z5 G d( d)e3      Z6 G d* d+e5      Z7 G d, d-e.      Z8 G d. d/e.      Z9 G d0 d1e9      Z: G d2 d3e.      Z; G d4 d5e/      Z< G d6 d7e/      Z= G d8 d9e.      Z> G d: d;e)      Z? G d< d=e?      Z@ G d> d?e?      ZA G d@ dAe?      ZB G dB dCe?      ZC G dD dEe?      ZD G dF dGeD      ZE G dH dI      ZFg dJZGdK ZH e%dL      ZIdM ZJdN ZKdO ZLdP ZM G dQ dR      ZNdS ZOdT ZP G dU dV      ZQy)Wz]
Main module.

Implement the central Checker class.
Also, it models the Bindings and Scopes.
    N)messagespypy_version_infoc                    t        | t        j                        r| j                  gS t        | t        j                        r6| j                  | j
                  z   g| j                  D cg c]  }|g c}z   S t        j                  dk\  r?t        | t        j                        r$| j                  D cg c]  }|j                   c}S y y c c}w c c}w )N)   
   )
isinstanceastIfbodyTryorelsehandlerssysversion_infoMatchcases)nhdlmcs      R/var/www/html/content_weaver/venv/lib/python3.12/site-packages/pyflakes/checker.pygetAlternativesr      s    !SVVx	Asww	!"qzz%Bse%BBB			W	$Asyy)A"#''*B** *B	$ &C*s   )
C3Cc                     t        | t        j                        xr3 t        | j                  t        t        t              t        d       f      S N)r   r	   ConstantvaluebooltypeEllipsisnodes    r   _is_singletonr!   )   s8    4& 	C4::d8nd4jAB    c                 r    t        | t        j                        xr t        d | j                  D              S )Nc              3   2   K   | ]  }t        |        y wr   )_is_constant.0elts     r   	<genexpr>z%_is_tuple_constant.<locals>.<genexpr>3   s     3#L3   )r   r	   Tuplealleltsr   s    r   _is_tuple_constantr.   0   s,    4# 	4333r"   c                 P    t        | t        j                        xs t        |       S r   )r   r	   r   r.   r   s    r   r%   r%   7   s    dCLL)E-?-EEr"   c                 4    t        |       xr t        |        S r   )r%   r!   r   s    r   _is_const_non_singletonr1   ;   s    9mD&9"99r"   c                     t        | t        j                        xr | j                  |k(  xs+ t        | t        j                        xr | j
                  |k(  S r   )r   r	   Nameid	Attributeattr)r    names     r   _is_name_or_attrr8   ?   sD    	D#((	#	74 	@	D#--	(	>TYY$->r"   z\(([^()]*)\)z[#0+ -]*z
(?:\*|\d*)z(?:\.(?:\*|\d*))?z[hlL]?zdiouxXeEfFgGcrsa%c                 2    | j                  ||      }|J |S r   )match)regexstringposr:   s       r   _must_matchr>   O   s#    KK$ELr"   c                 .      fd}t         |             S )zParses the string component of a `'...' % ...` format call

    Copied from https://github.com/asottile/pyupgrade at v1.20.1
    c               3   H  K   d} d}d}d}|t              k  rI|s	 j                  d|      }|}|dz  }d}nt        j	                  |      }|r"|j                  d      }|j                         }nd }t        t        |      }|j                         xs d }|j                         }t        t        |      }|j                         xs d }	|j                         }t        t        |      }
|
j                         xs d }|
j                         }t        t        |      j                         }	 |   }|dz  }|||	||f}| | |f d}|} |t              k  rI|rt        d      y # t        $ r | d  d f Y y w xY w# t        $ r t        d      w xY ww)Nr   F%   Tz"end-of-string while parsing format)lenindex
ValueErrorMAPPING_KEY_REr:   groupendr>   CONVERSION_FLAG_REWIDTH_REPRECISION_RE	LENGTH_RE
IndexError)string_start
string_endin_fmti	key_matchkeyconversion_flag_matchconversion_flagwidth_matchwidthprecision_match	precision
conversionfmtss                 r   _parse_innerz*parse_percent_format.<locals>._parse_inner[   s    
#a&j"QA
 "#JFA!F*00A6	#//!,C!AC(34F1(M%"7"="="?"G4)--/)(Aq9#))+3tOO%"-lAq"A+113;t	#'')  	1a0446K!"1J QOUIzJZ0#55 Y #a&j\ ABB U " LM*D00@ " K$%IJJKsF   F"E2 DF"6F
 ;'F"$F"2FF"FF"
FF")tuple)r\   r]   s   ` r   parse_percent_formatr_   U   s    5Cn   r"   c                       e Zd ZdZd Zd Zy)_FieldsOrderzFix order of AST node fields.c                     |j                   }d|v rdj                  }nd|v rdj                  }ndj                  }t        t        ||d            S )Niter
generatorsr   T)rS   reverse)_fieldsfindr^   sorted)self
node_classfields	key_firsts       r   _get_fieldsz_FieldsOrder._get_fields   sN    ##VIV#$))IIVF	4@AAr"   c                 2    | j                  |      x| |<   }|S r   )rm   )ri   rj   rk   s      r   __missing__z_FieldsOrder.__missing__   s!    $($4$4Z$@@Z6r"   N)__name__
__module____qualname____doc__rm   ro    r"   r   ra   ra      s    '	Br"   ra   c              #     K   || j                      D ]l  }|r||v r
t        | |d      }t        |t        j                        r| 6t        |t
              sG|D ]!  }t        |t        j                        s| # n yw)a  
    Yield all direct child nodes of *node*, that is, all fields that
    are nodes and all items of fields that are lists of nodes.

    :param node:          AST node to be iterated upon
    :param omit:          String or tuple of strings denoting the
                          attributes of the node to be omitted from
                          further parsing
    :param _fields_order: Order of AST node fields
    N)	__class__getattrr   r	   ASTlist)r    omit_fields_orderr7   fielditems         r   iter_child_nodesr~      sy      dnn- 	DDLdD)eSWW%Kt$ dCGG,J	s   ABB9	Bc                    t        | t        j                        r| j                  S t        | t        j                        rt        d | j                  D              S t        | t        j                        rt        |       S t               S )Nc              3   2   K   | ]  }t        |        y wr   )convert_to_value)r'   rQ   s     r   r)   z#convert_to_value.<locals>.<genexpr>   s     <Q%a(<r*   r}   )
r   r	   r   r   r+   r^   r-   r3   VariableKeyUnhandledKeyTyper   s    r   r   r      s_    $%zz	D#))	$<$))<<<	D#((	#%%!!r"   c                 V    t        | t        j                        xr t        |       dk(  S )NNotImplemented)r   r	   r3   getNodeNamer   s    r   is_notimplemented_name_noder      s#    dCHH%O+d*;?O*OOr"   c                   (    e Zd ZdZd Zd Zd Zd Zy)Bindingar  
    Represents the binding of a value to a name.

    The checker uses this to keep track of which names have been bound and
    which names have not. See L{Assignment} for a special type of binding that
    is checked with stricter rules.

    @ivar used: pair of (L{Scope}, node) indicating the scope and
                the node that this binding was last used.
    c                 .    || _         || _        d| _        y NF)r7   sourceused)ri   r7   r   s      r   __init__zBinding.__init__   s    		r"   c                     | j                   S r   )r7   ri   s    r   __str__zBinding.__str__   s    yyr"   c                     dj                  | j                  j                  | j                  | j                  j
                  t        |             S )Nz)<{} object {!r} from line {!r} at 0x{:x}>)formatrv   rp   r7   r   linenor4   r   s    r   __repr__zBinding.__repr__   s=    :AANN##IIKKtH	
 	
r"   c                 X    t        |t              xr | j                  |j                  k(  S r   )r   
Definitionr7   ri   others     r   	redefineszBinding.redefines   s!    %,Hejj1HHr"   N)rp   rq   rr   rs   r   r   r   r   rt   r"   r   r   r      s    	

Ir"   r   c                   "     e Zd ZdZ fdZ xZS )r   z7
    A binding that defines a function or a class.
    c                 |    t         |   |      xs+ t        |t              xr | j                  |j                  k(  S r   )superr   r   
Assignmentr7   ri   r   rv   s     r   r   zDefinition.redefines   s7    Ge$ Hz*FtyyEJJ/F	
r"   )rp   rq   rr   rs   r   __classcell__rv   s   @r   r   r      s    
 
r"   r   c                   (     e Zd ZdZ fdZd Z xZS )Builtinz-A definition created for all Python builtins.c                 &    t         |   |d        y r   )r   r   )ri   r7   rv   s     r   r   zBuiltin.__init__   s    t$r"   c                 v    dj                  | j                  j                  | j                  t	        |             S )Nz<{} object {!r} at 0x{:x}>)r   rv   rp   r7   r4   r   s    r   r   zBuiltin.__repr__   s0    +22NN##IItH
 	
r"   )rp   rq   rr   rs   r   r   r   r   s   @r   r   r      s    7%
r"   r   c                       e Zd ZdZy)r   zS
    A dictionary key of a type that we cannot or do not check for duplicates.
    Nrp   rq   rr   rs   rt   r"   r   r   r         r"   r   c                   "    e Zd ZdZd Zd Zd Zy)r   zY
    A dictionary key which is a variable.

    @ivar item: The variable AST object.
    c                 &    |j                   | _        y r   )r4   r7   )ri   r}   s     r   r   zVariableKey.__init__  s    GG	r"   c                 j    |j                   | j                   k(  xr |j                  | j                  k(  S r   )rv   r7   )ri   compares     r   __eq__zVariableKey.__eq__  s.    / &LLDII%	
r"   c                 ,    t        | j                        S r   )hashr7   r   s    r   __hash__zVariableKey.__hash__  s    DIIr"   N)rp   rq   rr   rs   r   r   r   rt   r"   r   r   r     s    

r"   r   c                   F     e Zd ZdZd fd	Zd Zd Zed        Zd Z	 xZ
S )Importationz
    A binding created by an import statement.

    @ivar fullName: The complete name given to the import statement,
        possibly including multiple dotted components.
    @type fullName: C{str}
    c                 J    |xs || _         g | _        t        |   ||       y r   )fullName	redefinedr   r   )ri   r7   r   	full_namerv   s       r   r   zImportation.__init__)  s%    !)Tv&r"   c                     t        |t              r| j                  |j                  k(  S t        |t              xr | j                  |j                  k(  S r   )r   SubmoduleImportationr   r   r7   r   s     r   r   zImportation.redefines.  s?    e12==ENN22%,Hejj1HHr"   c                 Z    | j                   j                  d      d   | j                  k(   S )z.Return whether importation needs an as clause..)r   splitr7   r   s    r   
_has_aliaszImportation._has_alias4  s(    ==&&s+B/499<<<r"   c                 x    | j                         rd| j                   d| j                   S d| j                  z  S )z5Generate a source statement equivalent to the import.import  as z	import %sr   r   r7   r   s    r   source_statementzImportation.source_statement8  s8     ??T]]O4		{;;..r"   c                 r    | j                         r| j                  dz   | j                  z   S | j                  S z#Return import full name with alias.r   r   r   s    r   r   zImportation.__str__@  s.    ??==6)DII55== r"   r   )rp   rq   rr   rs   r   r   r   propertyr   r   r   r   s   @r   r   r      s1    '
I= / /!r"   r   c                   B     e Zd ZdZ fdZ fdZd Zed        Z xZ	S )r   a  
    A binding created by a submodule import statement.

    A submodule import is a special case where the root module is implicitly
    imported, without an 'as' clause, and the submodule is also imported.
    Python does not restrict which attributes of the root module may be used.

    This class is only used when the submodule import is without an 'as' clause.

    pyflakes handles this case by registering the root module name in the scope,
    allowing any attribute of the root module to be accessed.

    RedefinedWhileUnused is suppressed in `redefines` unless the submodule
    name is also the same, to avoid false positives.
    c                     d|v r|rt        |t        j                        sJ |j                  d      d   }t        |   ||       || _        y )Nr   r   )r   r	   Importr   r   r   r   )ri   r7   r   package_namerv   s       r   r   zSubmoduleImportation.__init__Y  sG    d{Fj.LMMzz#q)v.r"   c                 t    t        |t              r| j                  |j                  k(  S t        |   |      S r   )r   r   r   r   r   r   s     r   r   zSubmoduleImportation.redefines`  s0    e[)==ENN22w ''r"   c                     | j                   S r   r   r   s    r   r   zSubmoduleImportation.__str__e  s    }}r"   c                      d| j                   z   S )Nr   r   r   s    r   r   z%SubmoduleImportation.source_statementh  s    4==((r"   )
rp   rq   rr   rs   r   r   r   r   r   r   r   s   @r   r   r   H  s+     (
 ) )r"   r   c                   6     e Zd Zd fd	Zd Zed        Z xZS )ImportationFromc                     || _         |xs || _        |j                  d      r|| j                  z   }n|dz   | j                  z   }t        |   |||       y Nr   )module	real_nameendswithr   r   )ri   r7   r   r   r   r   rv   s         r   r   zImportationFrom.__init__o  sS    "*d??3/It~~5Ivy1r"   c                     | j                   | j                  k7  r| j                  dz   | j                  z   S | j                  S r   )r   r7   r   r   s    r   r   zImportationFrom.__str__z  s4    >>TYY&==6)DII55== r"   c                     | j                   | j                  k7  r)d| j                   d| j                    d| j                   S d| j                   d| j                   S )Nfrom z import r   )r   r7   r   r   s    r   r   z ImportationFrom.source_statement  sS    >>TYY&4;;-x/?tDII;OO4;;-x		{;;r"   r   )rp   rq   rr   r   r   r   r   r   r   s   @r   r   r   m  s!    	2! < <r"   r   c                   8     e Zd ZdZ fdZed        Zd Z xZS )StarImportationz3A binding created by a 'from x import *' statement.c                 H    t         |   d|       |dz   | _        || _        y )N*z.*)r   r   r7   r   )ri   r7   r   rv   s      r   r   zStarImportation.__init__  s&    f% 4K	r"   c                 &    d| j                   z   dz   S )Nr   z	 import *r   r   s    r   r   z StarImportation.source_statement  s    &44r"   c                 h    | j                   j                  d      r| j                  S | j                  S r   )r   r   r   r7   r   s    r   r   zStarImportation.__str__  s*    ==!!#&(((99r"   )	rp   rq   rr   rs   r   r   r   r   r   r   s   @r   r   r     s$    = 5 5r"   r   c                   "     e Zd ZdZ fdZ xZS )FutureImportationzs
    A binding created by a from `__future__` import statement.

    `__future__` imports are implicitly used.
    c                 :    t         |   ||d       ||f| _        y )N
__future__)r   r   r   )ri   r7   r   scoperv   s       r   r   zFutureImportation.__init__  s    v|4FO	r"   rp   rq   rr   rs   r   r   r   s   @r   r   r     s    $ $r"   r   c                       e Zd ZdZy)Argumentz3
    Represents binding a name as an argument.
    Nr   rt   r"   r   r   r     r   r"   r   c                       e Zd ZdZy)r   a  
    Represents binding a name with an explicit assignment.

    The checker will raise warnings for any Assignment that isn't used. Also,
    the checker does not consider assignments in tuple/list unpacking to be
    Assignments, rather it treats them as simple Bindings.
    Nr   rt   r"   r   r   r     s    r"   r   c                       e Zd ZdZy)NamedExprAssignmentzB
    Represents binding a name with an assignment expression.
    Nr   rt   r"   r   r   r     r   r"   r   c                       e Zd ZdZd Zy)
Annotationa  
    Represents binding a name to a type without an associated value.

    As long as this name is not assigned a value in another binding, it is considered
    undefined for most purposes. One notable exception is using the name as a type
    annotation.
    c                      y)zAAn Annotation doesn't define any name, so it cannot redefine one.Frt   r   s     r   r   zAnnotation.redefines  s    r"   N)rp   rq   rr   rs   r   rt   r"   r   r   r     s    r"   r   c                       e Zd Zy)FunctionDefinitionNrp   rq   rr   rt   r"   r   r   r         r"   r   c                       e Zd Zy)ClassDefinitionNr   rt   r"   r   r   r     r   r"   r   c                   "     e Zd ZdZ fdZ xZS )ExportBindinga  
    A binding created by an C{__all__} assignment.  If the names in the list
    can be determined statically, they will be treated as names for export and
    additional checking applied to them.

    The only recognized C{__all__} assignment via list/tuple concatenation is in the
    following format:

        __all__ = ['a'] + ['b'] + ['c']

    Names which are imported and not otherwise used but appear in the value of
    C{__all__} will not have an unused import warning reported for them.
    c                 \    d|v r8t        |t        j                        rt        |d   j                         _        ng  _         fd}t        |j
                  t        j                  t        j                  f      r ||j
                         n
t        |j
                  t        j                        r|j
                  }t        |j                  t        j                  t        j                  f      r|j                  }|j                  } ||       t        |t        j                        r|}n4t        |t        j                  t        j                  f      r	 ||       n6n5t        |j                  t        j                  t        j                  f      rt         1  ||       y )N__all__c                     | j                   D ]]  }t        |t        j                        st        |j                  t
              s9j                  j                  |j                         _ y r   )r-   r   r	   r   r   strnamesappend)	containerr    ri   s     r   _add_to_namesz-ExportBinding.__init__.<locals>._add_to_names  sG    ! 2dCLL1jS6QJJ%%djj12r"   )r   r	   	AugAssignry   r   r   Listr+   BinOprightleftr   r   )	ri   r7   r   r   r   currentValuer  r   rv   s	   `       r   r   zExportBinding.__init__  s$   *VS]]"CeI.445DJDJ	2
 fllSXXsyy$9:&,,'cii0!<<L\//#((CII1FG#(($**e$dCII.#'Lsxx&;<!$'  \//#((CII1FG 	v&r"   r   r   s   @r   r   r     s    ' 'r"   r   c                       e Zd ZdZd Zy)ScopeFc                     | j                   j                  }d| dt        |       ddt        j	                  |        dS )N<z at 0xx >)rv   rp   r4   dictr   )ri   	scope_clss     r   r   zScope.__repr__  s<    NN++	9+VBtHQ<qt1D0EQGGr"   N)rp   rq   rr   importStarredr   rt   r"   r   r  r    s    MHr"   r  c                        e Zd Z fdZ xZS )
ClassScopec                 0    t         |           i | _        y r   )r   r   indirect_assignmentsri   rv   s    r   r   zClassScope.__init__  s    $&!r"   )rp   rq   rr   r   r   r   s   @r   r  r    s    ' 'r"   r  c                   :     e Zd ZdZdZh dZ fdZd Zd Z xZ	S )FunctionScopezp
    I represent a name scope for a function.

    @ivar globals: Names declared 'global' in this function.
    F>   __debuggerskip____tracebackhide____traceback_info____traceback_supplement__c                 n    t         |           | j                  j                         | _        i | _        y r   )r   r   
alwaysUsedcopyglobalsr  r  s    r   r   zFunctionScope.__init__!  s*    ++-$&!r"   c              #      K   | j                         D ]K  \  }}|j                  r|dk7  s|| j                  vs(| j                  r5t	        |t
              sF||f M yw)zR
        Return a generator for the assignments which have not been used.
        _N)itemsr   r  
usesLocalsr   r   ri   r7   bindings      r   unused_assignmentsz FunctionScope.unused_assignments(  sV      "ZZ\ 	$MD'LLCK,w
3Gm#	$s    #A"A"A"A"A"	A"c              #      K   | j                         D ])  \  }}|j                  rt        |t              s$||f + yw)zR
        Return a generator for the annotations which have not been used.
        N)r  r   r   r   r   s      r   unused_annotationsz FunctionScope.unused_annotations4  s;      "ZZ\ 	$MD'<<Jw
$CGm#	$s   #A A 	A )
rp   rq   rr   rs   r  r  r   r"  r$  r   r   s   @r   r  r    s&    
 JBJ'
$$r"   r  c                       e Zd Zy)	TypeScopeNr   rt   r"   r   r&  r&  =  r   r"   r&  c                       e Zd Zy)GeneratorScopeNr   rt   r"   r   r(  r(  A  r   r"   r(  c                       e Zd ZdZdZdZy)ModuleScopezScope for a module.TFN)rp   rq   rr   rs   _futures_allowed_annotations_future_enabledrt   r"   r   r*  r*  E  s    "'r"   r*  c                       e Zd ZdZy)DoctestScopezScope for a doctest.Nr   rt   r"   r   r.  r.  K  s    r"   r.  c                       e Zd Z e       Zy)DetectClassScopedMagicN)rp   rq   rr   dirr   rt   r"   r   r0  r0  O  s	    EEr"   r0  )__file____builtins____annotations__WindowsErrorc                     t        | d      r| j                  S t        | d      r| j                  S t        | d      r| j                  S y )Nr4   r7   rest)hasattrr4   r7   r7  r   s    r   r   r   X  sB    tTwwtVyytVyy r"   )typingtyping_extensionsc                 `   fd}fd}t        | t        j                        xr  || j                        xsr t        | t        j                        xrV t        | j
                  t        j                        xr0  || j
                  j                        xr  | j                        S )aX  
    Internal helper to determine whether or not something is a member of a
    typing module. This is used as part of working out whether we are within a
    type annotation context.

    Note: you probably don't want to use this function directly. Instead see the
    utils below which wrap it (`_is_typing` and `_is_any_typing_member`).
    c                     t              D ]I  }| |v st        ||    t              xr, ||    j                  t        v xr  ||    j
                        c S  yr   )reversedr   r   r   TYPING_MODULESr   )r7   r   is_name_match_fnscope_stacks     r   _bare_name_is_attrz-_is_typing_helper.<locals>._bare_name_is_attro  sd    k* 	Eu}uT{O< <$K&&.8<$U4[%:%:;	 r"   c                     t              D ]2  }| |v st        ||    t              xr ||    j                  t        v c S  yr   )r=  r   r   r   r>  )r7   r   r@  s     r   _module_scope_is_typingz2_is_typing_helper.<locals>._module_scope_is_typingz  sM    k* 	Eu}uT{K8 ;$K((N:	 r"   )r   r	   r3   r4   r5   r   r6   )r    r?  r@  rA  rC  s    ``  r   _is_typing_helperrD  e  s    	 tSXX& (tww'	
 tS]]+ (tzz388,(#DJJMM2( TYY'
r"   c                 $    t        | fd|      S )z
    Determine whether `node` represents the member of a typing module specified
    by `typing_attr`.

    This is used as part of working out whether we are within a type annotation
    context.
    c                     | k(  S r   rt   )r  typing_attrs    r   <lambda>z_is_typing.<locals>.<lambda>  s    Q+-= r"   rD  )r    rG  r@  s    ` r   
_is_typingrJ    s     T#={KKr"   c                     t        | d |      S )z
    Determine whether `node` represents any member of a typing module.

    This is used as part of working out whether we are within a type annotation
    context.
    c                      yNTrt   )r  s    r   rH  z'_is_any_typing_member.<locals>.<lambda>  s    r"   rI  )r    r@  s     r   _is_any_typing_memberrN    s     T>;??r"   c                     t        | j                  t        j                  t        j                  f      xr( t        fd| j                  j                  D              S )Nc              3   8   K   | ]  }t        |d         yw)overloadN)rJ  )r'   decr@  s     r   r)   z%is_typing_overload.<locals>.<genexpr>  s"      
 sJ4
s   )r   r   r	   FunctionDefAsyncFunctionDefanydecorator_list)r   r@  s    `r   is_typing_overloadrW    sI    5<<#//33G3G!HI 	
 
||22
 	
r"   c                       e Zd ZdZdZdZy)AnnotationStater   rB      N)rp   rq   rr   NONESTRINGBARErt   r"   r   rY  rY    s    DFDr"   rY  c                 B     t        j                          fd       }|S )Nc                 h    | j                         5   | g|i |cd d d        S # 1 sw Y   y xY wr   )_enter_annotationri   argskwargsfuncs      r   in_annotation_funcz)in_annotation.<locals>.in_annotation_func  s6    ##% 	/.t.v.	/ 	/ 	/s   (1	functoolswrapsrd  re  s   ` r   in_annotationrj    &    __T/ / r"   c                 B     t        j                          fd       }|S )Nc                     | j                  t        j                        5   | g|i |cd d d        S # 1 sw Y   y xY wr   )r`  rY  r\  ra  s      r   re  z0in_string_annotation.<locals>.in_annotation_func  s>    ##O$:$:; 	/.t.v.	/ 	/ 	/s	   7A rf  ri  s   ` r   in_string_annotationrn    rk  r"   c                      e Zd ZdZej
                  eej                  eej                  e
ej                  e
ej                  e
ej                  eej                  eej                   eej"                  ei	ZdZdZej,                  Z ee      j5                  e      Zej<                  j?                  d      Z e r ejC                  e jE                  d             [ dddej<                  v dfd	Z#d
 Z$d Z%d Z&e'd        Z(e(jR                  d        Z(e'd        Z*e*jR                  d        Z*e'd        Z+e,jZ                  d        Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d Z:d Z;d  Z<e,jZ                  ejz                  fd!       Z>e'd"        Z?dQd#Z@d$ ZAd% ZBd& ZCd' ZD eEj                         j                  ZHd( ZIeJd)        ZKd* ZLeMd+        ZNd, ZOe@xZPxZQxZRxZSxZTxZUxZVxZWZXeOZYe@xZZxZ[xZ\xZ]xZ^xZ_Z`d- Zad. Zbd/ Zcd0 Zdd1 Zed2 Zfe@xZgxZhZieOxZjxZkxZlxZmxZnZoeOxZpxZqxZrxZsxZtxZuxZvxZwxZxxZyxZzxZ{xZ|xZ}xZ~xZxZxZxZxZxZxZxZxZxZxZxZxZZd3 Ze@xZxZZd4Zd5 Zd6 Ze@Zd7 Zd8 ZeZd9 Zd: ZeZd; ZexZxZZd< Zd= ZeZd> Zd? ZexZZd@ ZeZdA ZdB ZdC ZdD ZdE ZdF ZeZdG ZdH ZdI ZeZdJ ZdK ZdL Ze@xZxZxZxZZe@xZZdM ZexZxZZe,jZ                  dN        ZdO Ze;xZZdP Zy)RCheckerz2I check the cleanliness and sanity of Python code.r   NPYFLAKES_BUILTINS,z(none)PYFLAKES_DOCTESTrt   c                    i | _         t        j                         | _        g | _        g | _        || _        |r | j                  j                  |      | _        || _	        dg| _
        || _        g | _        	 t        j                  t        |         }| j%                  |      5  | j                  D ]  }| j'                  d t)        |              | j+                  |       | j-                          d d d        | j/                          |rt1        j2                  dd       y y # t         $ r t#        d|z        w xY w# 1 sw Y   OxY w)Nrt   z$No scope implemented for the node %rz1`file_tokens` will be removed in a future versionrZ  )
stacklevel)_nodeHandlerscollectionsdeque	_deferred
deadScopesr   filenamebuiltInsunionwithDoctestexceptHandlersroot
scopeStackrp  _ast_node_scoper   KeyErrorRuntimeErrorin_scope
addBindingr   handleChildren_run_deferredcheckDeadScopeswarningswarn)ri   treer{  builtinsr~  file_tokensscope_tpbuiltins           r   r   zChecker.__init__  s1   $**,  MM//9DM&!d		N..tDz:H ]]8$ 	!== 8gg&678% 		! 	MMC   	NELMM	N	! 	!s   6D$ #AD?$D<?Ec                 n    | j                   j                  || j                  dd | j                  f       y)a{  
        Schedule a function handler to be called just before completion.

        This is used for handling function bodies, which must be deferred
        because code later in the file might modify the global scope. When
        `callable` is called, the scope at the time this is called will be
        restored, however it will contain any new bindings added to it.
        N)ry  r   r  offset)ri   callables     r   deferFunctionzChecker.deferFunction   s*     	x);T[[IJr"   c                     | j                   | j                  f}| j                  rA| j                  j                         \  }}}||c| _         | _         |        | j                  rA|\  | _         | _        y r   )r  r  ry  popleft)ri   orighandlerr   r  s        r   r  zChecker._run_deferred  sb    -nn%)^^%;%;%="GUF+0&(DOT[I nn
 (,$r"   c                 p    t        | j                        dk\  xr t        | j                  d   t              S )NrZ  rB   )rC   r  r   r.  r   s    r   _in_doctestzChecker._in_doctest  s0    DOO$) =4??1-|<	>r"   c                 h    t        d | j                  D              sy| j                  j                  S )Nc              3   <   K   | ]  }t        |t                y wr   )r   r*  r'   r   s     r   r)   z)Checker.futuresAllowed.<locals>.<genexpr>  s      1 e[1 1s   F)r,   r  r   r+  r   s    r   futuresAllowedzChecker.futuresAllowed  s.     1 $1 1zz***r"   c                 h    |du sJ t        | j                  t              rd| j                  _        y y r   )r   r   r*  r+  ri   r   s     r   r  zChecker.futuresAllowed!  s-    ~~djj+.*/DJJ' /r"   c                 Z    | j                   d   }t        |t              sy|j                  S )Nr   F)r  r   r*  r,  )ri   r   s     r   annotationsFutureEnabledz Checker.annotationsFutureEnabled'  s)    "%-000r"   c                 j    |du sJ t        | j                  t              sJ d| j                  _        y rM  )r   r   r*  r,  r  s     r   r  z Checker.annotationsFutureEnabled.  s.    }}$**k22215

.r"   c                      | j                   d   S )Nr   )r  r   s    r   r   zChecker.scope4  s    r""r"   c              #   ,  K   | j                   j                   |              	 d  | j                  j                  | j                   j                                y # | j                  j                  | j                   j                                w xY wwr   )r  r   rz  pop)ri   clss     r   r  zChecker.in_scope8  s`     su%	:OO""4??#6#6#89DOO""4??#6#6#89s   !BA 4B5BBc           	         | j                   D ]m  }t        |t        t        f      rC|j                  j                         D ]&  \  }}| j                  t        j                  ||       ( t        |t              rnt        |t              r|j                         D ]0  \  }}| j                  t        j                  |j                  |       2 |j                         D ]0  \  }}| j                  t        j                  |j                  |       2 |j                  d      }|rt        |t              sd}|r3t!        |j"                        }|j"                  D cg c]  }||vr|
 }}ng x}}|r|j$                  sat&        j(                  j+                  | j,                        dk7  r5|D ]0  }| j                  t        j.                  |d   j                  |       2 |j$                  rg }|j1                         D ]5  }t        |t2              s||_        |j7                  |j8                         7 dj;                  t=        |            }|D ]1  }| j                  t        j>                  |d   j                  ||       3 |j1                         D ]  }	t        |	t@              s|	j4                  xs |	jB                  |v }
|
s6t        jD                  }| j                  ||	j                  tG        |	             |	jH                  D ]m  }t        | jK                  |      tL              rt        jN                  }n|
r6t        jP                  }| j                  |||	jB                  |	j                         o  p yc c}w )z
        Look at scopes which have been fully examined and report names in them
        which were imported but unused.
        r   N__init__.py, ))rz  r   r  r  r  r  reportr   UnusedIndirectAssignmentr"  UnusedVariabler   r$  UnusedAnnotationgetr   setr   r  ospathbasenamer{  UndefinedExportvaluesr   r   r   r   joinrh   ImportStarUsager   r7   UnusedImportr   r   	getParent	FOR_TYPESImportShadowedByLoopVarRedefinedWhileUnused)ri   r   r7   r    r!  all_binding	all_names	undefined	from_listr   r   messgs               r   r  zChecker.checkDeadScopes@  s   
 __ ?	KE%*m!<="'"<"<"B"B"D OJD$KK A A4NO %,%/%*%=%=%? OMD'KK 7 7NO%*%=%=%? QMD'KK 9 97>>4PQ  ))I.K:k=#I" 1 12	%0%6%6!5( 	 
 )+*	I**77##DMM2mC ) CH$<$<$))$4$;$;TCC
 && "I#(<<> ?%g?+6GL%,,W-=-=>?
 !%		&*; <I ) NH$<$<$))$4$;$;T9NN
  Ke[1 ::@y)@D ( 5 5E5<<UD % K%dnnT&:IF$,$D$DE!$$,$A$AEE4U\\JKKe?	K*s   M?c                 b    | j                   j                   || j                  g|i |       y r   )r   r   r{  )ri   messageClassrb  rc  s       r   r  zChecker.report  s'    \$--I$I&IJr"   c                 R    	 |j                   }t        |d      st        |d      s|S ')Nr-   ctx)_pyflakes_parentr8  ri   r    s     r   r  zChecker.getParent  s-    ((D4(u1E r"   c                 r   |||fv st        |d      rt        |d      sy ||u r|S |j                  |j                  kD  r| j                  |j                  ||      S |j                  |j                  k  r| j                  ||j                  |      S | j                  |j                  |j                  |      S Nr  )r8  _pyflakes_depthgetCommonAncestorr  )ri   lnodernodestops       r   r  zChecker.getCommonAncestor  s    &E#56E#56 E>L!!E$9$99))%*@*@%NN!!E$9$99))%1G1GNN%%""""
 	
r"   c                 <    |D ]  }| j                  |||      s y y)NTF)r  )ri   r    	ancestorsr  as        r   descendantOfzChecker.descendantOf  s+     	A%%dAt4	 r"   c                 f    |}	 || j                   u ry | j                  |      }t        ||      r|S /r   )r  r  r   )ri   r    ancestor_typeparents       r   _getAncestorzChecker._getAncestor  s;    "^^F+F&-0 r"   c                 p    | j                  |t        t        j                  j	                                     S r   )r  r^   rp  r  keysr  s     r   getScopeNodezChecker.getScopeNode  s)      uW-D-D-I-I-K'LMMr"   c                     | j                  ||| j                        }t        |      }|r0|D ]+  }| j                  |||      | j                  |||      z  s+ y y)zATrue, if lnode and rnode are located on different forks of IF/TRYTF)r  r  r   r  )ri   r  r  ancestorpartsr  s         r   differentForkszChecker.differentForks  sg    ))%		B)  $$UE8<$$UE8<=  r"   c                    | j                   ddd   D ]  }|j                  |v s n j                  |j                        }|rt        |t              s| j                  ||j                        s| j                  |j                        }t        |t              rHt        |t              r8| j                  t        j                  ||j                  |j                         n|| j                  u r|j                  s||j                  |      rk|j                  dk7  st        |t              rLt!        || j                         s6| j                  t        j"                  ||j                  |j                         t        |t$        t&        f      rc|j(                  j+                  |j                  d       n<t        |t              r,|j                  |      r|j,                  j/                  |       |j                  | j                  v r(| j                  |j                     j                  |_        |j                  | j                  vst        |t0              st        |t2              r}t5        d t7        | j                         D              }|j                  |v r-t        ||j                     t0              r|||j                  <   y|j9                  |j                  |       y|| j                  |j                  <   yy)z
        Called when a binding is altered.

        - `node` is the statement responsible for the change
        - `value` is the new value, a Binding instance
        Nr   r  c              3   @   K   | ]  }t        |t              s|  y wr   )r   r(  r  s     r   r)   z%Checker.addBinding.<locals>.<genexpr>  s"      %e^< s   )r  r7   r  r   r   r  r   r  r   r  r  r   r  r   r   r   rW  r  r  r  r  r  r   r   r   r   nextr=  
setdefault)ri   r    r   r   existingparent_stmts         r   r  zChecker.addBinding  s2    __TrT* 	EzzU"	 99UZZ(Z':''hoo>..6K(K0ZY5WH<< %**hoo? $**$%]]ux/Hs*j;.O.xIKK = = $ejj(//C ej-%@A..225::tDHk2ux7P""))$/::#EJJ/44EJ ::TZZ'z%/L%!45 !)$//!: 
 ::&:eEJJ6G+T(-E%**% $$UZZ7).

5::& 0Mr"   c                     t         j                  j                  d      rt        dt	        |             | j                  |       y )NPYFLAKES_ERROR_UNKNOWNzUnexpected type: )r  environr  NotImplementedErrorr   r  r  s     r   _unknown_handlerzChecker._unknown_handler  s:     ::>>23%(9$t*&FGG%r"   c                     	 | j                   |   S # t        $ r |j                  j                         }Y nw xY wt	        | || j
                        x| j                   |<   }|S r   )rv  r  rp   upperrw   r  )ri   rj   nodeTyper  s       r   getNodeHandlerzChecker.getNodeHandler  sk    	3%%j11 	3!**002H	33:(D114
 	
:& s    #77c                    t        |      }|sy d }d }| j                  dd d   D ]6  }t        |t              r|dk(  r y |du r |j	                  |d       }t        |t
              r#| j                  s| j                  |f||   _        e|dk(  rnt        |t              r^t        |t        j                        rDt        |j                  t        j                        r | j                  t        j                   |       	 | j                  |f||   _        ||   }t        |t"              r3|j%                         r#	 | j                  |f||j&                     _         y  y  |rg }	| j                  dd d   D ]V  }|j1                         D ]A  }t        |t2              s| j                  |f|_        |	j5                  |j&                         C X dj7                  t9        |	            }	| j                  t        j:                  |||	       y |dk(  r-t<        j>                  jA                  | jB                        dk(  ry |tD        jF                  v rt        | j                  t              ry d| jH                  d   vr"| j                  t        jJ                  ||       y y # t(        $ r Y  y w xY w# t(        $ r Y nw xY w|xs |j*                  }|dust        |t,        t.        f      })	Nr   rv   Fprintr  __path__r  	NameError)&r   r  r   r  r  r   _in_postponed_annotationr   r   r   r	   r   opRShiftr  r   InvalidPrintSyntaxr   r   r   r  r  r&  r(  r  r   r   r  rh   r  r  r  r  r{  r0  r   r  UndefinedName)
ri   r    r  r7   can_access_class_varsr  r   r!  r   r  s
             r   handleNodeLoadzChecker.handleNodeLoad  s   4  !% __RVV, *	E%,;&*e3 iid+G':.t7T7T$(JJ#5d w:gw#?vsyy1"699cjj9KK ; ;TB$(JJ#5d 
 $Ka-!,,.26**d1Cajj). G*	X IR0 ;$||~ ;G!'?;(,

D'9!(()9)9:	;; 		&"34IKK00$iH:"''"2"24=="A]"R)///Jtzz:4V d11"55KK..d; 6K $   
 *@U-@-@M$E1(2I~6)%s0   >;J.: J	J+'J.*J++J..	J:9J:c                    t        |      }|sy t        | j                  t              r|| j                  vr| j                  d d D ]  }t        |t        t
        f      s||v xr ||   j                  }|s2|d   | j                  u sD|| j                  j                  vs]| j                  t        j                  ||   j                  d   |||   j                          n | j                  |      }t        |t        j                        r|j                  t!        ||      }nt        |t"        t        j$                  f      s ||j&                  k7  r| j)                  |      st+        ||      }n|dk(  rt        | j                  t
              ret        |j&                  t        j,                  t        j.                  t        j                  f      r"t1        ||j&                  | j                        }n3t        |t        j2                        rt5        ||      }nt7        ||      }| j9                  ||       y )Nr   r   rB   r   )r   r   r   r  r  r*  r   r  r  r   UndefinedLocalr   r  r	   	AnnAssignr   r   r  comprehensionr  isLiteralTupleUnpackingr   Assignr   r   	NamedExprr   r   r  )ri   r    r7   r   r   r  r!  s          r   handleNodeStorezChecker.handleNodeStorel  s   4 djj-0T5K"- !%-)EF u}9t)9)9DGtzz1d$**BTBT6TKK 7 7 %d 0 0 3T5;;M;MO nnT*k3==1k6G6G6O t,Gi1B1B%CDt44400=dD)G	!4::{3))ZZ>
 $D$*?*?LGS]]3)$5G t,Gg&r"   c                    fd}t              }|sy  |       ry t        | j                  t        t        f      r&| j                  j
                  j                  |d        t        | j                  t              r>|| j                  j                  v r&| j                  j                  j                  |       y 	 | j                  |= y # t        $ r$ | j                  t        j                  |       Y y w xY w)Nc                      t        dd      } | rJt        | t        j                  t        j                  t        j
                  f      ryt        | dd      } | rJy)zN
            Return `True` if node is part of a conditional body.
            r  NTF)rw   r   r	   r
   WhileIfExp)currentr    s    r   on_conditional_branchz7Checker.handleNodeDelete.<locals>.on_conditional_branch  sP     d$6=Gg		399'EF!'+=tD  r"   )r   r   r   r  r  r  r  r  remover  r  r   r  )ri   r    r  r7   s    `  r   handleNodeDeletezChecker.handleNodeDelete  s    		 4  " djj:}"=>JJ++//d;djj-0TTZZ=O=O5OJJ%%d+@JJt$ @H22D$?@s   <C
 
*C76C7c              #   d   K   | j                   |c}| _         	 d  || _         y # || _         w xY wwr   )_in_annotation)ri   ann_typer  s      r   r`  zChecker._enter_annotation  s3     $($7$7!d!	'"&D$Ds   0$ 0	-0c                     | j                   t        j                  k(  xs@ | j                   t        j                  k(  xr! | j                  xs t
        j                  dk\  S N)r      )r	  rY  r\  r]  r  r   r   r   s    r   r  z Checker._in_postponed_annotation  sU     ?#9#99 ##';';; O..M#2B2Bg2M		
r"   c                 L    t        ||      D ]  }| j                  ||        y )Nrz   )r~   
handleNode)ri   r  rz   r    s       r   r  zChecker.handleChildren  s&    $T5 	(DOOD$'	(r"   c                     t        |t        j                        r.|j                  |j                  gz   D ]  }t        |d      r y yy )Nr-   FT)r   r	   r  targetsr   r8  )ri   r    childs      r   r  zChecker.isLiteralTupleUnpacking  sE    dCJJ'4 !uf- ! 	 (r"   c                     t        |t        j                        xrJ t        |j                  t        j                        xr$ t        |j                  j                  t
              S )z}
        Determine if the given node is a docstring, as long as it is at the
        correct place in the node tree.
        )r   r	   Exprr   r   r   r  s     r   isDocstringzChecker.isDocstring  sG     tSXX& .tzz3<<0.tzz''-	
r"   c                    t        |t        j                        rmt        |j                  t        j                        rIt        |j                  j                  t
              r%|j                  j                  |j                  dz
  fS y)NrB   )NN)r   r	   r  r   r   r   r   r  s     r   getDocstringzChecker.getDocstring  sV    4*4::s||44::++S1::##T[[1_44r"   c                 ^   |y | j                   rQt        |dd       D|xj                  | j                   d   z  c_        |xj                  | j                   d   z  c_        | j                  rA| j
                  dk(  r2t        |t        j                        s| j                  |      sd| _        | xj
                  dz  c_        | j
                  |_
        ||_        	 | j                  |j                        } ||       | xj
                  dz  c_        y # | xj
                  dz  c_        w xY w)Nr   r   rB   F)r  rw   r   
col_offsetr  	nodeDepthr   r	   
ImportFromr  r  r  r  rv   )ri   r    r  r  s       r   r  zChecker.handleNode  s    <;;7448DKK4;;q>)KOOt{{1~-O##!#tS^^4$$T*"'D!#~~ &	 ))$..9GDMNNaNDNNaNs   #D D,c                    	 | j                  |j                  d         \  }}|xr | j                  |      }|sy | j
                  }| j
                  d   g| _        | j                  xs d}| j                  t              5  d| j
                  d   vr| j                  d t        d             |D ]j  }	 t        j                  |j                  d      }|d   |z   |j                  z   |d   |j                  z   dz   f| _        | j!                  |       || _        l 	 d d d        || _        y # t        t        f$ r Y y w xY w# t"        $ rg}	||j                  z   |	j                  z   |j                  dz   |	j                  xs dz   f}
| j%                  t&        j(                  ||
       Y d }	~	d }	~	ww xY w# 1 sw Y   || _        y xY w)Nr   )r   r   r  z	<doctest>rB      )r  r   _getDoctestExamplesrE   rM   r  r  r  r.  r  r   r	   parser   r   indentr  SyntaxErrorr  r   DoctestSyntaxError)ri   r    	docstringnode_linenoexamplessaved_stacknode_offsetexampler  epositions              r   handleDoctestszChecker.handleDoctests  s   	'+'8'81'F$Y HT%=%=i%HH
  oo??1-.kk+V]]<( 	.$//!,,gcl3# .
.99W^^[AD $/q>K#?'..#P#.q>GNN#BQ#F#HDK''-"-DK.	. &5 J' 	 	" # M +gnn <qxx G ' 2ahhm! D FHKK ; ;T8LLM	. &sI   6D. 2F64 EA	F6.E ?E 	F3AF.)F6.F33F66Gc                    	 t        j                  |      }|j                  }t        |      dk7  st        |d   t         j                        s| j                  |||       y |j                  d   j                  }t        j                  |      D ].  }	d|	j                  v sd|	j                  v s!||	_        ||	_        0 | j                  ||       y # t        $ r | j                  |||       Y y w xY w)NrB   r   r   r  )r	   r   r"  r  r   rC   r   r  r   walk_attributesr   r  r  )
ri   r\   r    
ref_linenoref_col_offseterrr  r   parsed_annotation
descendants
             r   handleStringAnnotationzChecker.handleStringAnnotation!  s    	99Q<D
 yyt9>DGSXX!>KKT1% IIaL..((#45 	7J
 6 66 J$:$::$.
!(6
%	7 	)40%  	KKT1%	s   C C32C3c                 l     t        t        j                         j                   fd       y )Nc                              S r   rt   )
annotationfnr  ri   s   r   rH  z;Checker.handle_annotation_always_deferred.<locals>.<lambda>;  s    2dJ#? r"   )rj  rp  r  r  )ri   r8  r  r9  s   ```@r   !handle_annotation_always_deferredz)Checker.handle_annotation_always_deferred9  s"    7--.?@r"   c           
         t        |t        j                        rzt        |j                  t              r`| j                  t        j                  | j                  |j                  ||j                  |j                  t        j                               y | j                  st        j                  dk\  r| j!                  ||       y | j#                  ||       y r  )r   r	   r   r   r   r  rg  partialr5  r   r  r   ForwardAnnotationSyntaxErrorr  r   r   r:  r  )ri   r8  r    s      r   handleAnnotationzChecker.handleAnnotation=  s     :s||4:++S1 y00++  !!%%55   **c.>.>'.I22:tDOOJ-r"   c                      y r   rt   r  s     r   ignorezChecker.ignoreQ  s    r"   c                    t        |j                  d      r:| j                  t        j                        5  | j                  |       d d d        y t        |j                  d      rz| j                  |j                  |       t        |j                  t        j                        r|j                  }nkt        |j                  t        j                        rEt        |j                  j                  t        j                        r|j                  j                  }nd }|t        |j                        dk  r| j                  |j                  |       nn| j                  |j                  d   |       | j                  t        j                        5  |j                  dd  D ]  }| j                  ||        	 d d d        | j                  |j                  |       y t        |j                  | j                         r+| j                         5  | j                  |       d d d        y | j                  |       y # 1 sw Y   y xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NLiteral	AnnotatedrZ  r   rB   )r8   r   r`  rY  r[  r  r  r   slicer	   r+   IndexrC   r-   r  rN  r  )ri   r    slice_tupleargs       r   	SUBSCRIPTzChecker.SUBSCRIPT^  s   DJJ	2''(<(<= *##D)* *djj+6OODJJ- $**cii0"jj tzz3995tzz//;"jj.." "c+*:*:&;a&?

D1  0 0 3T:++O,@,@A 3*//3 3T233 OODHHd+$TZZA++- .''-. . ##D)E* *03 3. .s#   H?'II?III c           
      0    	 t        t        j                  j                  j                              }d dt               t                fd}|D ]j  \  }}}} ||      r y |	 t        t        |            }|D ]<  \  }}	}
}|
(d|
v r$ j                  t        j                  d         y  ||	      s;  y  l t        d j                  D              st        d j                  D              ry t        t        t        j                                    }j                  D ch c]  }|j                   }}|z
  }|z
  }z  ||z  z
  }|r@ j                  t        j                  dj!                  t#        d |D                           |r9 j                  t        j$                  dj!                  t#        |                   |rA j                  t        j&                  dj!                  t#        d	 |D                           y y # t        $ r+} j                  t        j                  |       Y d }~y d }~ww xY w# t        $ r,} j                  t        j                  |       Y d }~ y d }~ww xY wc c}w )
Nr   c                    | y| j                  d      \  } }}| j                  d      \  } }}	 t        |       } du r!j                  t        j                         yd	 | dk(  r.du r!j                  t        j                         yd} dz  t        | t              rj                  |        yj                  |        y# t
        $ r Y rw xY w)z9Returns True if there is an error which should early-exitFr   [T rB   )	partitionintr  r   StringDotFormatMixingAutomaticrE   r   add)fmtkeyr  auto	next_autor    placeholder_namedplaceholder_positionalri   s     r   _add_keyz3Checker._handle_string_dot_format.<locals>._add_key  s     ~ "++C0LFAq!++C0LFAq	!V 4<KK G GN D|5=KK G GND"Q	&#&&**62  "%%f-1  s   C
 
	CC{zMax string recursion exceededc              3   P   K   | ]  }t        |t        j                           y wr   r   r	   Starred)r'   rG  s     r   r)   z4Checker._handle_string_dot_format.<locals>.<genexpr>  s     FSJsCKK0F   $&c              3   8   K   | ]  }|j                   d u   y wr   )rG  )r'   kwds     r   r)   z4Checker._handle_string_dot_format.<locals>.<genexpr>  s     =CGGtO=s   r  c              3   2   K   | ]  }t        |        y wr   r   r'   r  s     r   r)   z4Checker._handle_string_dot_format.<locals>.<genexpr>  s      BAQ Br*   c              3   2   K   | ]  }t        |        y wr   r_  r`  s     r   r)   z4Checker._handle_string_dot_format.<locals>.<genexpr>  s      CAQ Cr*   )r^   parse_format_stringrd  r   rE   r  r   StringDotFormatInvalidFormatr  rU  rb  keywordsrangerC   rG  'StringDotFormatExtraPositionalArgumentsr  rh   "StringDotFormatExtraNamedArgumentsStringDotFormatMissingArgument)ri   r    placeholdersr*  rV  r  rQ  specspec_placeholdersspec_fmtkey	spec_specsubstitution_positionalr]  substitution_namedextra_positionalextra_namedmissing_argumentsrR  rS  rT  rU  s   ``               @@@@r   _handle_string_dot_formatz!Checker._handle_string_dot_format  sn   	 !4TYY__5J5J!KLL
 	!$E%	 %	N #/ 	AvtQ (-.A$.G(H%
 5F 
0A{Iq ,	1A$AA ;
 ,
	6 FDIIFF=t}}=="%eC		N&;"<15?#cgg??25KK(+<< $&77$'99; 	
 KK@@		& B1A BBC
 KK;;		&-.
 KK77		& C1B CCD S  	KK==tQG	r " KK E EtQO4 @s5   2H$ 4I9J$	I-!II	J$!JJc                 F   t        |j                  t        j                        rt        |j                  j                  t        j
                        rXt        |j                  j                  j                  t              r*|j                  j                  dk(  r| j                  |       g }g }g }t        |j                  d| j                        rRt        |j                        dk\  r:| j                         5  | j                  |j                  d   |       d d d        n}t        |j                  d| j                        r|dgz  }||j                  dd  D cg c]  }| c}z  }|dgz  }||j                  D cg c]  }|j                   dk(  s|j                    c}z  }||j                  D cg c]  }||j                   dk(  rd	gnd f c}z  }nt        |j                  d
| j                        rt        |j                        dkD  r~t        |j                  d   t        j"                        rW|dgz  }||j                  d   j$                  z  }|t'        |j                        D cg c]  \  }}||dk(  rdgnd f c}}z  }|dgz  }||j                  D cg c]  }|j                   c}z  }||j                  D cg c]  }|d	gf	 c}z  }nt        |j                  d| j                        rt        |j                        dkD  r8t        |j                  d   t        j(                  t        j*                  f      r t-        d |j                  d   j.                  D              r|dgz  }||j                  d   j.                  D cg c]  }|j.                  d    c}z  }||j                  d   j.                  D cg c]  }|j.                  d   d f c}z  }|t'        |j                        D cg c]  \  }}||dk(  rdgnd f c}}z  }||j                  d   j.                  D cg c]  }|df c}z  }|dgz  }||j                  D cg c]  }|j                   c}z  }||j                  D cg c]  }|d	gf	 c}z  }|r| j                  t0        j2                        5  |D ]  \  }	}
| j5                  |	|
        | j5                  ||       d d d        | j                         5  |D ]  }| j                  ||        	 d d d        y | j5                  |       y # 1 sw Y   xY wc c}w c c}w c c}w c c}}w c c}w c c}w c c}w c c}w c c}}w c c}w c c}w c c}w # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   castrB   r   TypeVarrb  rd  boundr   	TypedDictr  
NamedTuplec              3      K   | ]H  }t        |t        j                  t        j                  f      xr t	        |j
                        d k(   J yw)rZ  N)r   r	   r+   r   rC   r-   r`  s     r   r)   zChecker.CALL.<locals>.<genexpr>-  sH      A)* q399chh"78 %K1$% As   AAr-   r  )r   rd  r	   r5   r   r   r   r6   rs  rJ  r  rC   rb  r`  r  rd  rG  Dictr  	enumerater+   r   r,   r-   rY  r[  r  )ri   r    rz   	annotatednot_annotatedrG  krQ   r(   na_nodena_omitannotated_nodes               r   CALLzChecker.CALL  s   499cmm4499??CLL9499??00#6		(***40	 tyy&$//:		Na'') 4		!d34 4 		9doo> VHD127##77I ZL D4==MaAEEW<L!''MMI '!1WIt< M
 		;@499~!j1sxx&H TYYq\000	"+DII"6"3 Q8*D9"  ZL D4==9a!''99IdmmDq7)nDDM		<A DII"499Q<#))SXX)>? A.2iil.?.?A A  TYYq\5F5FGcchhqkGG	1ARAR!S#388A;"5!SS"+DII"6"3 a1f6($7"  499Q<;L;L!MC3-!MM ZL D4==9a!''99IdmmDq7)nDDM''(<(<= 5(5 ?$GW''g'>?##Dt#45
 '') :&/ :NOOND9:: : %A4 4 8 N" :D H!S" "N :D5 5
: :sr   : U	U UU7U6U'U"U'U,U1U6U<)VV1VVU
VV c           	      x   	 t        |j                  j                        }t               }d}d }|D ]  \  }}|	|\  }}}	}
}|dk(  r|t        vr!| j	                  t
        j                  ||       ||r|d u }|	|
fD ]2  }|d|v s|s!| j	                  t
        j                  |       .|dz  }4 |r$|"| j	                  t
        j                  |        y |s$|"| j	                  t
        j                  |        y |r|dz  }|j                  |        t        |j                  t        j                   t        j"                  f      rt%        d |j                  j&                  D              skt)        |j                  j&                        }|r(||k7  r#| j	                  t
        j*                  |||       n"|s | j	                  t
        j,                  |       t        |j                  t        j.                        rt1        d |j                  j2                  D              r|r&|dkD  r!| j	                  t
        j4                  |       y |j                  j2                  D ch c]  }|j                   }}||z
  }||z
  }|s;|r9| j	                  t
        j6                  |dj9                  t;        |                   |s=|r:| j	                  t
        j<                  |dj9                  t;        |                   y y y y y # t        $ r$ | j	                  t
        j                  |d       Y y w xY wc c}w )	Nzincomplete formatr   rA   r   rB   c              3   P   K   | ]  }t        |t        j                           y wr   rY  r&   s     r   r)   z1Checker._handle_percent_format.<locals>.<genexpr>  s#       sCKK0r[  c              3      K   | ]:  }t        |t        j                        xr t        |j                  t               < y wr   )r   r	   r   r   r   )r'   r  s     r   r)   z1Checker._handle_percent_format.<locals>.<genexpr>  s6       q#,,/LJqww4LLs   A Ar  )r_   r  r   rE   r  r   PercentFormatInvalidFormatr  VALID_CONVERSIONS'PercentFormatUnsupportedFormatCharacter!PercentFormatStarRequiresSequence$PercentFormatMixedPositionalAndNamedrP  r   r   r	   r   r+   rU  r-   rC   $PercentFormatPositionalCountMismatchPercentFormatExpectedMappingr{  r,   r  PercentFormatExpectedSequence PercentFormatExtraNamedArgumentsr  rh   PercentFormatMissingArgument)ri   r    ri  namedpositional_count
positionalr  placeholderr7   rW   rY   rZ   partsubstitution_countr  substitution_keys
extra_keysmissing_keyss                     r   _handle_percent_formatzChecker._handle_percent_formatJ  s   	/		@L 
* ,	 NA{"4?1D!UIzS !22DD !j!T\
	* .#t%$FF 
 )A-(. d.AA DLAA  A% 		$Y,	 ^ 4::#))'<= #zz 
 "%TZZ__!5.2DDAA$&	  HAA4H 4::sxx0 !ZZ__ 
 .2HBBDI26**// BQ B B*U2J #44L*==IIfZ01
 ,99IIf\23 #/:% 1[  	KK33#
 	n !Cs   L )L7*L43L4c                     t        |j                  t        j                        rYt        |j                  t        j
                        r5t        |j                  j                  t              r| j                  |       | j                  |       y r   )
r   r  r	   Modr  r   r   r   r  r  r  s     r   BINOPzChecker.BINOP  sT    477CGG,499cll3499??C0''-D!r"   c                    t        |j                  t              ro| j                  rbt	        j
                  | j                  |j                  ||j                  |j                  t        j                        }| j                  |       y y y r   )r   r   r   r	  rg  r<  r5  r   r  r   r=  r  )ri   r    r9  s      r   CONSTANTzChecker.CONSTANT  sj    djj#&4+>+>""++

55B r" ,?&r"   c                 8   | j                  |       |j                  }t        |t        j                        r7t        |j                        r!| j                  t        j                  |       y y t        |      r!| j                  t        j                  |       y y r   )
r  excr   r	   Callr   rd  r  r   RaiseNotImplemented)ri   r    rG  s      r   RAISEzChecker.RAISE  so    D!hhc388$*3884H88$? 5 )-KK44d; .r"   Fc                    | j                   s<t        d |j                  D              s | j                  t        j
                  |       d| j                   c| _         }	 | j                  |       || _         y # || _         w xY w)Nc              3   P   K   | ]  }t        |t        j                           y wr   )r   r	   FormattedValuer`  s     r   r)   z$Checker.JOINEDSTR.<locals>.<genexpr>  s     Oa
1c&8&89Or[  T)_in_fstringrU  r  r  r   FStringMissingPlaceholdersr  ri   r    r  s      r   	JOINEDSTRzChecker.JOINEDSTR  sl     $$O4;;OOKK;;TB!%t'7'7$	$%#DtDs   A7 7	B c                     t        d |j                  D              s | j                  t        j                  |       d| j
                  c| _        }	 | j                  |       || _        y # || _        w xY w)Nc              3   P   K   | ]  }t        |t        j                           y wr   )r   r	   Interpolationr`  s     r   r)   z&Checker.TEMPLATESTR.<locals>.<genexpr>  s     I:a!2!23Ir[  T)rU  r  r  r   TStringMissingPlaceholdersr  r  r  s      r   TEMPLATESTRzChecker.TEMPLATESTR  sc    IT[[IIKK;;TB "&t'7'7$	$%#DtDs   A+ +	A4c                    j                   D cg c]  }t        |       }}t        j                  |      }|j	                         D cg c]  \  }}|dkD  r| }}}|D ]  }t        |      D cg c]  \  }}||k(  s| }	}}t        j                  fd|	D              }
t        d |
j	                         D              se|	D ]n  }j                   |   }t        |t              r,| j                  t        j                  ||j                         N| j                  t        j                  ||       p  | j                         y c c}w c c}}w c c}}w )NrB   c              3   N   K   | ]  }t        j                  |           y wr   )r   r  )r'   rD   r    s     r   r)   zChecker.DICT.<locals>.<genexpr>  s'      ) !U!34)s   "%c              3   ,   K   | ]  \  }}|d k(    yw)rB   Nrt   )r'   r   counts      r   r)   zChecker.DICT.<locals>.<genexpr>  s     A,%5A:As   )r  r   rw  Counterr  r|  rU  r   r   r  r   MultiValueRepeatedKeyVariabler7   MultiValueRepeatedKeyLiteralr  )ri   r    rS   r  
key_countsr  duplicate_keysrQ   i_keykey_indicesr  	key_indexkey_nodes    `           r   DICTzChecker.DICT  sS   
 .2YY
&)S!
 
 !((.
","2"2"4
Cqy 
 

 " 	C-6t_ME1MKM (( )() F A&,,.AA!, I#yy3H!#{3H$J$J$,$'HH. $AA$	( 	D!=


 Ns   EE3EEc                     t        |j                  t        j                        r9|j                  j                  g k7  r | j                  t        j                  |       | j                  |       y r   )	r   testr	   r+   r-   r  r   IfTupler  r  s     r   IFz
Checker.IF(  sE    dii+		"0DKK(($/D!r"   c                     t        |j                  t        j                        r9|j                  j                  g k7  r | j                  t        j                  |       | j                  |       y r   )	r   r  r	   r+   r-   r  r   AssertTupler  r  s     r   ASSERTzChecker.ASSERT/  sE    dii+		"0DKK,,d3D!r"   c                    | j                         rdnd}| j                  |   }| j                  |ur|j                  D ]  }t	        ||      }| j
                  D cg c]0  }t        |t
        j                        r|j                  d   |k7  r|2 c}| _        |j                  ||       ||f|_
        | j                  |dz   d D ]  }|||<   	 || j                  j                  |<    yyc c}w )z5
        Keep track of globals declarations.
        rB   r   N)r  r  r   r   r   r   r   r  message_argsr  r   r  )ri   r    global_scope_indexglobal_scope	node_name
node_valuemr   s           r   GLOBALzChecker.GLOBAL4  s    #'"2"2"4Q!'9: ::\) "ZZ B	'	48
  $}}!4q("8"89NN1%2 !4 ''	:> $0"6
!__-?!-C-DE 2E'1E)$2 >B

//	:'B *!4s   5C,c                 z    | j                  t              5  | j                  |       d d d        y # 1 sw Y   y xY wr   )r  r(  r  r  s     r   GENERATOREXPzChecker.GENERATOREXPV  s1    ]]>* 	&%	& 	& 	&s   1:c                 X   t        |j                  t        j                        r| j	                  || j                  |             |j                  dk(  rRt        | j                  t              r7t        |j                  t        j                        rd| j                  _        yyyyt        |j                  t        j                        r| j                  |       yt        |j                  t        j                        r| j                  |       yt!        d|j                        )zV
        Handle occurrence of Name (which can be a load/store/delete access.)
        localsTz#Got impossible expression context: N)r   r  r	   Loadr  r  r4   r   r  r  r  r  Storer  Delr  r  r  s     r   NAMEzChecker.NAME\  s    
 dhh)dnnT&:;8#
4::}(Mt44chh?(,

% @ )N# #)),  &#''*!!$' !DTXXLQRRr"   c                    |}t        |d      r|j                  |}}t        |t        j                  t        j
                  t        j                  f      r||j                  vry t        |t        j                  t        j                  f      rnt        |d      rt        |t        j                        r!| j                  t        j                  |       y | j                  t        j                  |       y r  )r8  r  r   r	   r  ForAsyncForr   rS  ClassDefContinuer  r   ContinueOutsideLoopBreakOutsideLoop)ri   r    r   n_childs       r   CONTINUEzChecker.CONTINUEo  s     a+,++QwA!cii#,,?@!((*!coos||<= a+, dCLL)KK44d;KK1148r"   c                     t        | j                  t        t        f      r!| j	                  t
        j                  |       y | j                  |j                  |       y r   )	r   r   r  r*  r  r   ReturnOutsideFunctionr  r   r  s     r   RETURNzChecker.RETURN  s>    djj:{";<KK66=

D)r"   c                     t        | j                  t        t        f      r!| j	                  t
        j                  |       y | j                  |j                  |       y r   )	r   r   r  r*  r  r   YieldOutsideFunctionr  r   r  s     r   YIELDzChecker.YIELD  s>    djj:{";<KK55t<

D)r"   c                     j                   D ]  } j                  |         j                        5   j                         d d d         j	                  t        j                                j                  rB j                         s1t         j                  t              s j                   fd       y y y y # 1 sw Y   ~xY w)Nc                  &    j                         S r   r,  r    ri   s   r   rH  z%Checker.FUNCTIONDEF.<locals>.<lambda>  s    t':':4'@ r"   )rV  r  _type_param_scopeLAMBDAr  r   r7   r~  r  r   r   r  r  )ri   r    decos   `` r   FUNCTIONDEFzChecker.FUNCTIONDEF  s    '' 	(DOOD$'	( ##D) 	KK	 	0DAB $$&tzz=9@A : ' 	 	s   CCc                 H    g }g }j                   j                  D ]8  }|j                  |j                         |j                  |j                         : j                   j                   j                   j
                  z   D ]8  }|j                  |j                         |j                  |j                         : j                   j                  j                   j                  z   }t        t        j                         }dD ]T  }t        j                   |      }|s|j                  |j                         |s:|j                  |j                         V |r|j                  j                         t        t        |            t        |      k  r<t        |      D ].  \  }	}||d |	 v s j!                  t"        j$                  |       0 |D ]  }
 j'                  |
        |D ]  } j)                  |         fd} j+                  |       y )N)varargkwargc                      j                  t              5  j                   d       d d d        y # 1 sw Y   y xY w)N)rV  returnstype_paramsr  )r  r  r  r  s   r   runFunctionz#Checker.LAMBDA.<locals>.runFunction  s=    }- ##E $   s   4=)rb  posonlyargsr   rG  r8  
kwonlyargsdefaultskw_defaultsr   r	   Lambdarw   r  rC   r  r|  r  r   DuplicateArgumentr>  r  r  )ri   r    rb  annotationsrG  r  has_annotationsarg_namewildcardidxr8  defaultr  s   ``           r   r  zChecker.LAMBDA  s   99(( 	/CKK s~~.	/ 99>>DII$8$88 	/CKK s~~.	/ 99%%		(=(==(szz::+ 	8Htyy(3HKK%""8#6#67	8 t||,s4y>CI%'o G
c$t*$KK : :D#FG & 	4J!!*d3	4   	+GOOGT*	+	 	;'r"   c                 *    | j                  |d       y )N)r  r  r  )r  r  s     r   	ARGUMENTSzChecker.ARGUMENTS  s    D'BCr"   c           	      n    | j                  |t        |j                  | j                  |                   y r   )r  r   rG  r  r  s     r   ARGzChecker.ARG  s&    htxx1B1B41HIJr"   c                     j                   D ]  } j                  |         j                        5  j                  D ]  } j                  |        j                  D ]  } j                  |         j                  t              5   j                  r? j                         s/t         j                  t              s j                   fd       j                  D ]  } j                  |        	 ddd       ddd        j                  t        j                                y# 1 sw Y   8xY w# 1 sw Y   <xY w)z
        Check names used in a class definition, including its decorators, base
        classes, and the body of its definition.  Additionally, add its name to
        the current scope.
        c                  &    j                         S r   r  r  s   r   rH  z"Checker.CLASSDEF.<locals>.<lambda>  s    t/B/B4/H r"   N)rV  r  r  basesrd  r  r  r~  r  r   r   r  r  r   r  r   r7   )ri   r    r  baseNodekeywordNodestmts   ``    r   CLASSDEFzChecker.CLASSDEF  s     '' 	(DOOD$'	( ##D) 	0 JJ 0$/0#}} 3T23z* 0 $$ ,,.&tzz=A&&'HI II 0DOOD$/00	0 	odii>?0 0	0 	0s%   AEA/D:E:E	?EEc                     | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       y r   )r  targetr  r   r  s     r   	AUGASSIGNzChecker.AUGASSIGN  s:    DKK.

D)T*r"   c                    t        |j                  t        j                        rd}d}t	        |j
                        D ]H  \  }}t        |t        j                        s!|r"| j                  t        j                  |        nd}|}J |dk\  st        |j
                        |z
  dz
  dk\  r | j                  t        j                  |       | j                  |       y )NFr   T   rB   i   )r   r  r	   r  r|  r-   rZ  r  r   TwoStarredExpressionsrC   %TooManyExpressionsInStarredAssignmentr  )ri   r    has_starredstar_locrQ   r   s         r   TUPLEzChecker.TUPLE  s    dhh		*  KH!$)), !1a-"H$B$BDI "&K H! 6!S^h%>%Bg%MHJJDQD!r"   c                    |j                   D ]v  }d|j                  v r#|j                  st        |j                  |      }n1|j                  xs |j                  }t	        |||j                        }| j                  ||       x y r   )r   r7   asnamer   r   r  )ri   r    aliasimportationr7   s        r   IMPORTzChecker.IMPORT  si    ZZ 	/Eejj 25::tD||1uzz)$ejjAOOD+.	/r"   c                    |j                   dk(  r-| j                  s(| j                  t        j                  |       nd| _        d|j
                  z  |j                   xs dz   }|j                  D ]U  }|j                  xs |j                  }|j                   dk(  rut        ||| j                        }|j                  t        j                  vr+| j                  t        j                  ||j                         |j                  dk(  rd| _        n|j                  dk(  r{t        | j                  t               s"| j                  t        j"                  ||       d| j                  _        | j                  t        j&                  ||       t)        ||      }nt+        ||||j                        }| j-                  ||       X y )Nr   Fr   rL  r  Tr   )r   r  r  r   LateFutureImportlevelr   r  r7   r   r   r   all_feature_namesFutureFeatureNotDefinedr  r   r*  ImportStarNotPermittedr  ImportStarUsedr   r   r  )ri   r    r   r  r7   r  s         r   
IMPORTFROMzChecker.IMPORTFROM  s_   ;;,&&&H55t<"'D

"t{{'8b9ZZ 	/E<<-5::D{{l*/dDJJG::Z%A%AAKK @ @ $ejj2::.48D1s"!$**k:KK ? ? $f.+/

(H33T6B-fd;-dD.4ejjBOOD+.+	/r"   c                    g }t        |j                        D ]  \  }}t        |j                  t        j
                        r6|j                  j                  D ]  }|j                  t        |              n0|j                  r$|j                  t        |j                               |j                  |t        |j                        dz
  k  s| j                  t        j                  |        | j                  j                  |       |j                  D ]  }| j                  ||        | j                  j!                          | j#                  |d       y )NrB   r   r  )r|  r   r   r   r	   r+   r-   r   r   rC   r  r   DefaultExceptNotLastr  r   r  r  r  )ri   r    handler_namesrQ   r  exc_typer  s          r   TRYzChecker.TRY8  s   #DMM2 	DJAw',,		2 ' 1 1 @H!((X)>?@$$[%>?||#C,>,B(BH997C	D 	""=1YY 	)EOOE4(	)!Dv.r"   c                 V   |j                   | j                  |       y |j                   | j                  v r| j                  |       	 | j                  j	                  |j                         }| j                  |       | j                  |       	 | j                  j	                  |j                         }|j                  s,| j                  t        j                  ||j                          	 |r|| j                  |j                   <   y y # t
        $ r d }Y w xY w# t
        $ r Y 9w xY wr   )
r7   r  r   r  r  r  r   r  r   r  )ri   r    prev_definitionr!  s       r   EXCEPTHANDLERzChecker.EXCEPTHANDLERN  s    99% 99

"  &	#"jjnnTYY7O 	T"D!	FjjnnTYY/G <<H33T499E $3DJJtyy! 1  	#"O	#"  		s$   	%D %D DD	D('D(c                 @   | j                  |j                  |       |j                  rZt        |j                  d| j                        r| j                  |j                  |       n| j                  |j                  |       | j                  |j                  |       y )N	TypeAlias)r>  r8  r   rJ  r  r  r  r  s     r   	ANNASSIGNzChecker.ANNASSIGN{  si    doot4::$//;H%%djj$7

D1T*r"   c                 R   |j                   }t        |j                  |j                        D ]g  \  }}t	        |t
        j                  t
        j                  f      r6t        |      st        |      r | j                  t        j                  |       |}i | j                  |       y r   )r  zipopscomparatorsr   r	   IsIsNotr1   r  r   	IsLiteralr  )ri   r    r  r  r   s        r   COMPAREzChecker.COMPARE  s    yyTXXt'7'78 	IBrCFFCII#67/5/6 H..5D	 	D!r"   c                 H    | j                  |       | j                  |       y r   )r  r  r  s     r   _match_targetzChecker._match_target  s    T"D!r"   c              #     K   t        j                         5 }t        j                  dk\  rG|j	                  | j                  t                     |j                  D ]  }| j                  ||        d  d d d        y # 1 sw Y   y xY ww)N)r      )	
contextlib	ExitStackr   r   enter_contextr  r&  r  r  )ri   r    r  params       r   r  zChecker._type_param_scope  ss     !!# 	s7*!!$--	":;!-- 1EOOE401	 	 	s   BAA?6	B?BBc                 ^    | j                  |       | j                  |j                  |       y r   )r  r:  rw  r  s     r   TYPEVARzChecker.TYPEVAR  s$    T"..tzz4@r"   c                     | j                  |j                  |       | j                  |      5  | j                  |j                  |       d d d        y # 1 sw Y   y xY wr   )r  r7   r  r:  r   r  s     r   	TYPEALIASzChecker.TYPEALIAS  sO    		4(##D) 	E224::tD	E 	E 	Es   AAr   )rp   rq   rr   rs   r	   Moduler*  r  r  rS  r  rT  r  ListCompr(  SetCompGeneratorExpDictCompr  r  r  rY  r[  r	  r  builtin_varsr}  _MAGIC_GLOBALSr|  r  r  r  _customBuiltInsupdater   r   r  r  r  r   r  setterr  r   r9  contextmanagerr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r]  r`  r  r  r  r  r  r  doctestDocTestParserget_examplesr  r,  rn  r5  r:  rj  r>  r@  DELETEFORASYNCFORWHILEWITHWITHITEM	ASYNCWITHEXPRASSIGNPASSBOOLOPUNARYOPSET	ATTRIBUTESTARREDNAMECONSTANT	NAMEDEXPRrH  rs  r  r  r  r  SLICEEXTSLICEINDEXLOADSTOREDELAUGLOADAUGSTOREPARAMANDORADDSUBMULTDIVMODPOWLSHIFTRSHIFTBITORBITXORBITANDFLOORDIVINVERTNOTUADDUSUBEQNOTEQLTLTEGTGTEISISNOTINNOTINMATMULTr  COMPREHENSIONKEYWORDFORMATTEDVALUEr  r  r  INTERPOLATIONr  r  IFEXPr  r  NONLOCALr  LISTCOMPDICTCOMPSETCOMPr  r  BREAKr  r  AWAIT	YIELDFROMr  ASYNCFUNCTIONDEFr  r  r  r
  r  r  LISTr  r!  r&  TRYSTARr)  r,  r4  MATCH
MATCH_CASE
MATCHCLASSMATCHORMATCHSEQUENCEMATCHSINGLETON
MATCHVALUEr6  MATCHASMATCHMAPPING	MATCHSTARr  r>  	PARAMSPECTYPEVARTUPLEr@  rt   r"   r   rp  rp    sj   < 	

Kjm

Mn^.n
O IF$))N< &&~6Hjjnn%89O--c23&./2::=2B	K,> + + 0 0
 1 1 $$6 %6
 # # : :DKLK
,N	9/v& R<h('T@B )8)=)= ' ' 
 
(	
 , 0'//1>>&@ 1 1.A . .&
 ''F 'S '8 'e 'd 'X '	 'vD ##F #W #s #Y # #<$*LqfQ&fhT"
#  .-E-Hu 7=<D<5<3<<8e C " s S 4 #  c F V "*-369<@CG
 "%(+-058:=B< 0>=M=GnK$
$ #M""H"
 E"
B@ H& %10H0x'S&9$ E** EIB #+(ZDK@4+
". D//@/( G+4Z	+" AONENJNNg"00NZ" *76G6lY A  /.IEr"   rp  )Rrs   r   r  r	   rw  r9  rL  rg  r  rer<   r   r  pyflakesr   r8  PYPYr1  rF  	Formatterr   rb  r   r  r  r  r!   r.   r%   r1   r8   compilerF   rI   rJ   rK   rL   	frozensetr  r>   r_   r
  ra   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.  r0  rG  r   r>  rD  rJ  rN  rW  rY  rj  rn  rp  rt   r"   r   <module>r     s     
     	 	  
  s'(8}&f&&(.. + WWcll#	F: O,RZZ
+ 2::m$rzz./BJJx 	12 =!@4 & !%LN ."PI I@
 

j 
  &%!* %!P"); ")J<k <8k ,	$ 	$w  *  	 		j 	.'G .'bHD H' '#$E #$L	 		U 	(% (;   Q :;)XL@ iE iEr"   