
    g'                       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 Z+d e*       fdZ,d Z-d Z. G d d      Z/ G d de/      Z0 G d de0      Z1 G d d       Z2 G d! d"      Z3 G d# d$e0      Z4 G d% d&e4      Z5 G d' d(e4      Z6 G d) d*e4      Z7 G d+ d,e6      Z8 G d- d.e/      Z9 G d/ d0e/      Z: G d1 d2e:      Z; G d3 d4e/      Z< G d5 d6e0      Z= G d7 d8e0      Z> G d9 d:e/      Z? G d; d<e)      Z@ G d= d>e@      ZA G d? d@e@      ZB G dA dBe@      ZC G dC dDe@      ZD G dE dFe@      ZE G dG dHeE      ZF G dI dJ      ZGg dKZHdL ZI e%dM      ZJdN ZKdO ZLdP ZMdQ ZN G dR dS      ZOdT ZPdU ZQ G dV dW      ZRy)Xz]
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      S/var/www/html/brdwt/brdwt/brdwtenv/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                 H    i }| D ]  }|j                  |d      dz   ||<    |S )z|
    Simplest required implementation of collections.Counter. Required as 2.6
    does not have Counter in collections.
    r   rB   )get)itemsresultsitems      r   counterrz      s6    
 G 1D!,q01Nr"   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   fieldry   s         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*   ry   )
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}>)formatr|   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   r|   s     r   r   zDefinition.redefines   s7    Ge$ Hz*FtyyEJJ/F	
r"   )rp   rq   rr   rs   r   __classcell__r|   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   r|   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   r|   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   ry   s     r   r   zVariableKey.__init__  s    GG	r"   c                 j    |j                   | j                   k(  xr |j                  | j                  k(  S r   )r|   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_namer|   s       r   r   zImportation.__init__4  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.redefines9  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_alias?  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_statementC  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__K  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_namer|   s       r   r   zSubmoduleImportation.__init__d  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.redefinesk  s0    e[)==ENN22w ''r"   c                     | j                   S r   r   r   s    r   r   zSubmoduleImportation.__str__p  s    }}r"   c                      d| j                   z   S )Nr   r   r   s    r   r   z%SubmoduleImportation.source_statements  s    4==((r"   )
rp   rq   rr   rs   r   r   r   r   r   r   r   s   @r   r   r   S  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   r|   s         r   r   zImportationFrom.__init__z  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__  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   x  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   r|   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   scoper|   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	   	AugAssignr   r   r   Listr+   BinOprightleftr   r   )	ri   r7   r   r   r  currentValuer  r  r|   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 >)r|   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y)
ClassScopeNr   rt   r"   r   r  r    r   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>   __tracebackhide____traceback_info____traceback_supplement__c                 n    t         |           | j                  j                         | _        d | _        y r   )r   r   
alwaysUsedcopyglobalsreturnValue)ri   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)rw   r   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)rw   r   r   r   r!  s      r   unused_annotationsz FunctionScope.unused_annotations;  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.J 
$$r"   r  c                       e Zd Zy)	TypeScopeNr   rt   r"   r   r'  r'  D  r   r"   r'  c                       e Zd Zy)GeneratorScopeNr   rt   r"   r   r)  r)  H  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+  L  s    "'r"   r+  c                       e Zd ZdZy)DoctestScopezScope for a doctest.Nr   rt   r"   r   r/  r/  R  s    r"   r/  c                       e Zd Z e       Zy)DetectClassScopedMagicN)rp   rq   rr   dirr   rt   r"   r   r1  r1  V  s	    EEr"   r1  )__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   r8  r   s    r   r   r   _  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_attrv  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   rA  s     r   _module_scope_is_typingz2_is_typing_helper.<locals>._module_scope_is_typing  sM    k* 	Eu}uT{K8 ;$K((N:	 r"   )r   r	   r3   r4   r5   r   r6   )r    r@  rA  rB  rD  s    ``  r   _is_typing_helperrE  l  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"   rE  )r    rH  rA  s    ` r   
_is_typingrK    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   rI  z'_is_any_typing_member.<locals>.<lambda>  s    r"   rJ  )r    rA  s     r   _is_any_typing_memberrO    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)rK  )r'   decrA  s     r   r)   z%is_typing_overload.<locals>.<genexpr>  s"      
 sJ4
s   )r   r   r	   FunctionDefAsyncFunctionDefanydecorator_list)r   rA  s    `r   is_typing_overloadrX    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   rZ  rZ    s    DFDr"   rZ  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re  rf  s   ` r   in_annotationrk    &    __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   )ra  rZ  r]  rb  s      r   rf  z0in_string_annotation.<locals>.in_annotation_func  s>    ##O$:$:; 	/.t.v.	/ 	/ 	/s	   7A rg  rj  s   ` r   in_string_annotationro    rl  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?dPd#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 Zd7 ZeZd8 Zd9 ZeZd: ZexZxZZd; Zd< ZeZd= Zd> ZexZZd? ZeZd@ ZdA ZdB ZdC ZdD ZdE ZeZdF ZdG ZdH ZeZdI ZdJ ZdK Ze@xZxZxZxZZe@xZZdL ZexZxZZe,jZ                  dM        ZdN Ze;xZZdO Zy)Q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 versionr[  )
stacklevel)_nodeHandlerscollectionsdeque	_deferred
deadScopesr   filenamebuiltInsunionwithDoctestexceptHandlersroot
scopeStackrq  _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)rz  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  rz  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 )Nr[  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 rN  )r   r   r+  r-  r  s     r   r  z Checker.annotationsFutureEnabled5  s.    }}$**k22215

.r"   c                      | j                   d   S )Nr   )r  r   s    r   r   zChecker.scope;  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   r{  pop)ri   clss     r   r  zChecker.in_scope?  s`     su%	:OO""4??#6#6#89DOO""4??#6#6#89s   !BA 4B5BBc           	      V   | j                   D ]  }t        |t              rt        |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 }|j+                         D ]5  }t        |t,              s||_        |j1                  |j2                         7 dj5                  t7        |            }|D ]1  }| j                  t        j8                  |d   j                  ||       3 |j+                         D ]  }t        |t:              s|j.                  xs |j<                  |v }	|	s6t        j>                  }
| j                  |
|j                  tA        |             |jB                  D ]m  }t        | jE                  |      tF              rt        jH                  }
n|	r6t        jJ                  }
| j                  |
||j<                  |j                         o   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, )&r{  r   r  r  r#  reportr   UnusedVariabler   r%  UnusedAnnotationrv   r   setr   r  ospathbasenamer|  UndefinedExportvaluesr   r   r   r   joinrh   ImportStarUsager   r7   UnusedImportr   r   	getParent	FOR_TYPESImportShadowedByLoopVarRedefinedWhileUnused)ri   r   r7   r"  all_binding	all_names	undefined	from_listr   r   messgr    s               r   r  zChecker.checkDeadScopesG  s   
 __ ;	KE%,%/%*%=%=%? 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];	K"s   L&c                 b    | j                   j                   || j                  g|i |       y r   )r   r   r|  )ri   messageClassrc  rd  s       r   r  zChecker.report  s'    \$--I$I&IJr"   c                 R    	 |j                   }t        |d      st        |d      s|S ')Nr-   ctx)_pyflakes_parentr9  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  )r9  _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^   rq  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partsrw   s         r   differentForkszChecker.differentForks  sg    ))%		B)  $$UE8<$$UE8<=  r"   c                 B   | j                   ddd   D ]  }|j                  |v s n j                  |j                        }|rst        |t              sb| j                  ||j                        sE| j                  |j                        }t        |t              rGt        |t              r7| j                  t        j                  ||j                  |j                         n|| j                  u r|j                  s|j                  |      r|j                  dk7  st        |t              rt!        || j                         ss| j                  t        j"                  ||j                  |j                         n<t        |t              r,|j                  |      r|j$                  j'                  |       |j                  | j                  v r(| j                  |j                     j                  |_        |j                  | j                  vst        |t(              sd}t        |t*              rPt        | j                   |   t,              r3|dz  }t        |t*              rt        | j                   |   t,              r3|| 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  rB   )r  r7   rv   r   r   r  r   r  r   r  r  r   r  r   r   r   rX  r  r   r   r   r   r)  )ri   r    r   r   existingparent_stmtcur_scope_poss          r   r  zChecker.addBinding  s    __TrT* 	EzzU"	 99UZZ(Z':''hoo>..6K(K0ZY5WH<< %**hoo? $**$%]]ux/Hs*j;.O.xIKK = = $ejj(//C Hk2ux7P""))$/::#EJJ/44EJ ::TZZ'z%/LM 5"564??=9>J" 5"564??=9>J :?DOOM*5::6 0Mr"   c                     t         j                  j                  d      rt        dt	        |             | j                  |       y )NPYFLAKES_ERROR_UNKNOWNzUnexpected type: )r  environrv   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   )rw  r  rp   upperr}   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   r|   Fprintr  __path__r  	NameError)&r   r  r   r  rv   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|  r1  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.handleNodeStoree  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                 h   fd}t              }|sy  |       ry 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)r}   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  remover  r  r   r  )ri   r    r  r7   s    `  r   handleNodeDeletezChecker.handleNodeDelete  s    		 4  " djj-0TTZZ=O=O5OJJ%%d+@JJt$ @H22D$?@s   6B *B10B1c              #   d   K   | j                   |c}| _         	 d  || _         y # || _         w xY wwr   )_in_annotation)ri   ann_typer  s      r   ra  zChecker._enter_annotation  s3     $($7$7!d!	'"&D$Ds   0$ 0	-0c                 X    | j                   t        j                  k(  xs | j                  S r   )r  rZ  r]  r  r   s    r   r  z Checker._in_postponed_annotation  s+     ?#9#99 *))	
r"   c                 L    t        ||      D ]  }| j                  ||        y )Nr   )r   
handleNode)ri   r  r   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   r9  )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  r}   r   
col_offsetr  	nodeDepthr   r	   
ImportFromr  r  r  r  r|   )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   rI  z;Checker.handle_annotation_always_deferred.<locals>.<lambda>.  s    2dJ#? r"   )rk  rq  r
  r  )ri   r2  r  r3  s   ```@r   !handle_annotation_always_deferredz)Checker.handle_annotation_always_deferred,  s"    7--.?@r"   c           
         t        |t        j                        rzt        |j                  t              r`| j                  t        j                  | j                  |j                  ||j                  |j                  t        j                               y | j                  r| j                  ||       y | j                  ||       y r   )r   r	   r   r   r   r  rh  partialr/  r   r  r   ForwardAnnotationSyntaxErrorr  r4  r
  )ri   r2  r    s      r   handleAnnotationzChecker.handleAnnotation0  s     :s||4:++S1 y00++  !!%%55   **22:tDOOJ-r"   c                      y r   rt   r  s     r   ignorezChecker.ignoreD  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	Annotatedr[  r   rB   )r8   r   ra  rZ  r\  r  r
  r   slicer	   r+   IndexrC   r-   r  rO  r  )ri   r    slice_tupleargs       r   	SUBSCRIPTzChecker.SUBSCRIPTQ  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'   rA  s     r   r)   z4Checker._handle_string_dot_format.<locals>.<genexpr>  s     FSJsCKK0F   $&c              3   8   K   | ]  }|j                   d u   y wr   )rA  )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   rY  rZ  s     r   r)   z4Checker._handle_string_dot_format.<locals>.<genexpr>  s      CAQ Cr*   )r^   parse_format_stringre  r   rE   r  r   StringDotFormatInvalidFormatr  rV  rc  keywordsrangerC   rA  'StringDotFormatExtraPositionalArgumentsr  rh   "StringDotFormatExtraNamedArgumentsStringDotFormatMissingArgument)ri   r    placeholdersr$  rP  r  rK  specspec_placeholdersspec_fmtkey	spec_specsubstitution_positionalrW  substitution_namedextra_positionalextra_namedmissing_argumentsrL  rM  rN  rO  s   ``               @@@@r   _handle_string_dot_formatz!Checker._handle_string_dot_formatw  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   TypeVarrc  r^  boundr   	TypedDictr  
NamedTuplec              3      K   | ]H  }t        |t        j                  t        j                  f      xr t	        |j
                        d k(   J yw)r[  N)r   r	   r+   r  rC   r-   rZ  s     r   r)   zChecker.CALL.<locals>.<genexpr>   sH      A)* q399chh"78 %K1$% As   AAr-   r	  )r   re  r	   r5   r   r   r   r6   rm  rK  r  rC   rc  ra  r
  r^  rA  Dictr  	enumerater+   r  r,   r-   rZ  r\  r  )ri   r    r   	annotatednot_annotatedrA  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   rS  r&   s     r   r)   z1Checker._handle_percent_format.<locals>.<genexpr>|  s#       sCKK0rU  c              3      K   | ]:  }t        |t        j                        xr t        |j                  t               < y wr   )r   r	   r   r   r   )r'   ry  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$PercentFormatMixedPositionalAndNamedrJ  r   r  r	   r  r+   rV  r-   rC   $PercentFormatPositionalCountMismatchPercentFormatExpectedMappingru  r,   r  PercentFormatExpectedSequence PercentFormatExtraNamedArgumentsr  rh   PercentFormatMissingArgument)ri   r    rc  namedpositional_count
positionalr  placeholderr7   rW   rY   rZ   partsubstitution_country  substitution_keys
extra_keysmissing_keyss                     r   _handle_percent_formatzChecker._handle_percent_format=  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  rh  r6  r/  r   r  r   r7  r  )ri   r    r3  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   re  r  r   RaiseNotImplemented)ri   r    rA  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	   FormattedValuerZ  s     r   r)   z$Checker.JOINEDSTR.<locals>.<genexpr>  s     Oa
1c&8&89OrU  T)_in_fstringrV  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                    j                   D cg c]  }t        |       }}t        |      }|j                         D cg c]  \  }}|dkD  r| }}}|D ]  }t	        |      D cg c]  \  }}||k(  s| }	}}t        fd|	D              }
t        d |
j                         D              s[|	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   rz   rw   rv  rV  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  sF   
 .2YY
&)S!
 
 T]
","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   D:D?)E7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 ]  }|||<   	  yyc c}w )z5
        Keep track of globals declarations.
        rB   r   N)r  r  r   r   r   r   r   r  message_args
setdefaultr   )ri   r    global_scope_indexglobal_scope	node_name
node_valuemr   s           r   GLOBALzChecker.GLOBAL  s     #'"2"2"4Q!'9: ::\) "ZZ 2	'	48
  $}}!4q("8"89NN1%2 !4 ''	:> $0"6
!__-?!-C-DE 2E'1E)$2!2 *!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.GENERATOREXP9  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  )r9  r  r   r	   r  ForAsyncForr   rT  ClassDefContinuer  r   ContinueOutsideLoopBreakOutsideLoop)ri   r    r   n_childs       r   CONTINUEzChecker.CONTINUER  s     a+,++QwA!cii#,,?@!((*!coos||<= a+, dCLL)KK44d;KK1148r"   c                 d   t        | j                  t        t        f      r!| j	                  t
        j                  |       y |j                  rGt        | j                  d      r1| j                  j                  s|j                  | j                  _	        | j                  |j                  |       y )Nr  )r   r   r  r+  r  r   ReturnOutsideFunctionr   r9  r  r
  r  s     r   RETURNzChecker.RETURNf  sr    djj:{";<KK66= JJDJJ.

&&%)ZZDJJ"

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.YIELDs  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   rI  z%Checker.FUNCTIONDEF.<locals>.<lambda>  s    t':':4'@ r"   )rW  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)rW  returnstype_paramsr	  )r  r  r  r  s   r   runFunctionz#Checker.LAMBDA.<locals>.runFunction  s=    }- ##E $   s   4=)rc  posonlyargsr   rA  r2  
kwonlyargsdefaultskw_defaultsr   r	   Lambdar}   r  rC   r  rv  r  r   DuplicateArgumentr8  r
  r  )ri   r    rc  annotationsrA  r  has_annotationsarg_namewildcardidxr2  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   rA  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   rI  z"Checker.CLASSDEF.<locals>.<lambda>  s    t/B/B4/H r"   N)rW  r
  r  basesr^  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  rv  r-   rT  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   rF  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	  )rv  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.TRY!  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.EXCEPTHANDLER7  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)r8  r2  r   rK  r  r
  r   r  s     r   	ANNASSIGNzChecker.ANNASSIGNd  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.COMPAREo  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  r4  rq  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  r4  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  rT  r  rU  r  ListCompr)  SetCompGeneratorExpDictCompr  r  r  rZ  r\  r  r  builtin_varsr~  _MAGIC_GLOBALSr}  r  r  rv   _customBuiltInsupdater   r   r  r  r  r   r  setterr  r   r-  contextmanagerr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r^  ra  r  r  r  r  r  r
  doctestDocTestParserget_examplesr  r&  ro  r/  r4  rk  r8  r:  DELETEFORASYNCFORWHILEWITHWITHITEM	ASYNCWITHEXPRASSIGNPASSBOOLOPUNARYOPSET	ATTRIBUTESTARREDNAMECONSTANT	NAMEDEXPRrB  rm  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  r  IFEXPr  r  NONLOCALr  LISTCOMPDICTCOMPSETCOMPr  r  BREAKr  r  AWAIT	YIELDFROMr  ASYNCFUNCTIONDEFr  r  r  r  r  r  LISTr  r  r  TRYSTARr  r   r(  MATCH
MATCH_CASE
MATCHCLASSMATCHORMATCHSEQUENCEMATCHSINGLETON
MATCHVALUEr*  MATCHASMATCHMAPPING	MATCHSTARr  r2  	PARAMSPECTYPEVARTUPLEr4  rt   r"   r   rq  rq    s[   < 	

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
 # # : :@KDK
,N	/?b& R<h('T@< )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$""H"
 E"
2< 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"   rq  )Srs   r   r  r	   rx  r-  r@  rh  r  rer<   r   r  pyflakesr   r9  PYPYr2  r:  	Formatterr  r\  r   r  r  r  r!   r.   r%   r1   r8   compilerF   rI   rJ   rK   rL   	frozensetr  r>   r_   r  ra   rz   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/  r1  r;  r   r?  rE  rK  rO  rX  rZ  rk  ro  rq  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 "$J	 		U 	(% (;   Q :;)XL@ KE KEr"   