
    WOg'                       S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKJr  \" \S5      r\" \5      r\
R&                  " 5       R(                  rS r\R.                  \R0                  4rS rS rS rS	 rS
 r\	R>                  " S5      r \	R>                  " S5      r!\	R>                  " S5      r"\	R>                  " S5      r#\	R>                  " S5      r$\%" S5      r&S r'S r( " S S\)5      r*S r+S\*" 5       4S jr,S r-S r. " S S5      r/ " S S\/5      r0 " S S\05      r1 " S S 5      r2 " S! S"5      r3 " S# S$\05      r4 " S% S&\45      r5 " S' S(\45      r6 " S) S*\45      r7 " S+ S,\65      r8 " S- S.\/5      r9 " S/ S0\/5      r: " S1 S2\:5      r; " S3 S4\/5      r< " S5 S6\05      r= " S7 S8\05      r> " S9 S:\/5      r? " S; S<\)5      r@ " S= S>\@5      rA " S? S@\@5      rB " SA SB\@5      rC " SC SD\@5      rD " SE SF\@5      rE " SG SH\E5      rF " SI SJ5      rG/ SKQrHSL rI\%" SM5      rJSN rKSO rLSP rMSQ rN " SR SS5      rOST rPSU rQ " SV SW5      rRg)Xz]
Main module.

Implement the central Checker class.
Also, it models the Bindings and Scopes.
    N)messagespypy_version_infoc                    [        U [        R                  5      (       a  U R                  /$ [        U [        R                  5      (       a8  U R                  U R
                  -   /U R                   Vs/ s H  o/PM     sn-   $ [        R                  S:  aF  [        U [        R                  5      (       a&  U R                   Vs/ s H  o"R                  PM     sn$ g g s  snf s  snf )N)   
   )
isinstanceastIfbodyTryorelsehandlerssysversion_infoMatchcases)nhdlmcs      U/Users/admin/workspace/ai/Jarvis/env/lib/python3.13/site-packages/pyflakes/checker.pygetAlternativesr      s    !SVVx	Asww		!"qzz%Bzez%BBB			W	$Asyy)A)A"#''*'B'** *B	$ &C*s   3CC$c                     [        U [        R                  5      =(       a3    [        U R                  [        [        [        5      [        S 5      45      $ N)r   r	   ConstantvaluebooltypeEllipsisnodes    r   _is_singletonr!   )   s8    4& 	C4::d8nd4jAB    c                 |    [        U [        R                  5      =(       a    [        S U R                   5       5      $ )Nc              3   8   #    U  H  n[        U5      v   M     g 7fr   )_is_constant.0elts     r   	<genexpr>%_is_tuple_constant.<locals>.<genexpr>3   s     3#L   )r   r	   Tuplealleltsr   s    r   _is_tuple_constantr/   0   s,    4# 	4333r"   c                 Z    [        U [        R                  5      =(       d    [        U 5      $ r   )r   r	   r   r/   r   s    r   r%   r%   7   s    dCLL)E-?-EEr"   c                 F    [        U 5      =(       a    [        U 5      (       + $ r   )r%   r!   r   s    r   _is_const_non_singletonr2   ;   s    9mD&9"99r"   c                     [        U [        R                  5      =(       a    U R                  U:H  =(       d0    [        U [        R                  5      =(       a    U R
                  U:H  $ r   )r   r	   Nameid	Attributeattr)r    names     r   _is_name_or_attrr9   ?   sD    	D#((	#	74 	@	D#--	(	>TYY$->r"   z\(([^()]*)\)z[#0+ -]*z
(?:\*|\d*)z(?:\.(?:\*|\d*))?z[hlL]?zdiouxXeEfFgGcrsa%c                 2    U R                  X5      nUc   eU$ r   )match)regexstringposr;   s       r   _must_matchr?   O   s!    KK$ELr"   c                 0   ^  U 4S jn[        U" 5       5      $ )zyParses the string component of a `'...' % ...` format call

Copied from https://github.com/asottile/pyupgrade at v1.20.1
c               3     >#    Sn SnSnSnU[        T5      :  Gaa  U(       d   TR                  SU5      nUnUS-  nSnGO*[        R	                  TU5      nU(       a"  UR                  S5      nUR                  5       nOS n[        [        TU5      nUR                  5       =(       d    S nUR                  5       n[        [        TU5      nUR                  5       =(       d    S n	UR                  5       n[        [        TU5      n
U
R                  5       =(       d    S nU
R                  5       n[        [        TU5      R                  5       n TU   nUS-  nXWXU4nTX U4v   SnUn U[        T5      :  a  GMa  U(       a  [        S5      eg ! [         a    TU S  S 4v    g f = f! [         a    [        S5      ef = f7f)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_inner*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UzJ0#55 Y #a&j\ ABB U " LM*D00@ " K$%IJJKsF    GF DGF) %G=GF&#G%F&&G)F??G)tuple)r]   r^   s   ` r   parse_percent_formatra   U   s    5Cn   r"   c                   $    \ rS rSrSrS rS rSrg)_FieldsOrder   zFix order of AST node fields.c                     UR                   nSU;   a  SR                  nOSU;   a  SR                  nOSR                  n[        [        X#SS95      $ )Niter
generatorsr   T)rT   reverse)_fieldsfindr`   sorted)self
node_classfields	key_firsts       r   _get_fields_FieldsOrder._get_fields   sL    ##VIV#$))IIVF4@AAr"   c                 0    U R                  U5      =X'   nU$ r   )rp   )rl   rm   rn   s      r   __missing___FieldsOrder.__missing__   s    $($4$4Z$@@6r"    N)__name__
__module____qualname____firstlineno____doc__rp   rs   __static_attributes__ru   r"   r   rc   rc      s    '	Br"   rc   c                 J    0 nU  H  nUR                  US5      S-   X'   M     U$ )zp
Simplest required implementation of collections.Counter. Required as 2.6
does not have Counter in collections.
r   rC   )get)itemsresultsitems      r   counterr      s/    
 GD!,q0 Nr"   c              #   >  #    X R                       H  nU(       a  X1;   a  M  [        XS5      n[        U[        R                  5      (       a  Uv   MB  [        U[
        5      (       d  MY  U H(  n[        U[        R                  5      (       d  M$  Uv   M*     M     g7f)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_orderr8   fieldr   s         r   iter_child_nodesr      sq      nn-DLD)eSWW%%Kt$$dCGG,,J  .s   A$B*"BBc                 2   [        U [        R                  5      (       a  U R                  $ [        U [        R                  5      (       a  [        S U R                   5       5      $ [        U [        R                  5      (       a	  [        U S9$ [        5       $ )Nc              3   8   #    U  H  n[        U5      v   M     g 7fr   )convert_to_value)r'   rR   s     r   r)   #convert_to_value.<locals>.<genexpr>   s     <)Q%a(()r+   r   )
r   r	   r   r   r,   r`   r.   r4   VariableKeyUnhandledKeyTyper   s    r   r   r      sh    $%%zz	D#))	$	$<$))<<<	D#((	#	#%%!!r"   c                 `    [        U [        R                  5      =(       a    [        U 5      S:H  $ )NNotImplemented)r   r	   r4   getNodeNamer   s    r   is_notimplemented_name_noder      s#    dCHH%O+d*;?O*OOr"   c                   0    \ rS rSrSrS rS rS rS rSr	g)	Binding   aV  
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                 *    Xl         X l        SU l        g NFr8   sourceused)rl   r8   r   s      r   __init__Binding.__init__   s    		r"   c                     U R                   $ r   r8   rl   s    r   __str__Binding.__str__   s    yyr"   c                     SR                  U R                  R                  U R                  U R                  R
                  [        U 5      5      $ )Nz)<{} object {!r} from line {!r} at 0x{:x}>)formatr   rv   r8   r   linenor5   r   s    r   __repr__Binding.__repr__   s=    :AANN##IIKKtH	
 	
r"   c                 b    [        U[        5      =(       a    U R                  UR                  :H  $ r   )r   
Definitionr8   rl   others     r   	redefinesBinding.redefines   s!    %,Hejj1HHr"   r   N)
rv   rw   rx   ry   rz   r   r   r   r   r{   ru   r"   r   r   r      s    	

Ir"   r   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )r      z/
A binding that defines a function or a class.
c                    > [         TU ]  U5      =(       d0    [        U[        5      =(       a    U R                  UR                  :H  $ r   )superr   r   
Assignmentr8   rl   r   r   s     r   r   Definition.redefines   s7    Ge$ Hz*FtyyEJJ/F	
r"   ru   )rv   rw   rx   ry   rz   r   r{   __classcell__r   s   @r   r   r      s    
 
r"   r   c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )Builtini  z-A definition created for all Python builtins.c                 &   > [         TU ]  US 5        g r   )r   r   )rl   r8   r   s     r   r   Builtin.__init__  s    t$r"   c                 v    SR                  U R                  R                  U R                  [	        U 5      5      $ )Nz<{} object {!r} at 0x{:x}>)r   r   rv   r8   r5   r   s    r   r   Builtin.__repr__
  s0    +22NN##IItH
 	
r"   ru   )	rv   rw   rx   ry   rz   r   r   r{   r   r   s   @r   r   r     s    7%
 
r"   r   c                       \ rS rSrSrSrg)r   i  zK
A dictionary key of a type that we cannot or do not check for duplicates.
ru   Nrv   rw   rx   ry   rz   r{   ru   r"   r   r   r         r"   r   c                   *    \ rS rSrSrS rS rS rSrg)r   i  zM
A dictionary key which is a variable.

@ivar item: The variable AST object.
c                 &    UR                   U l        g r   )r5   r8   )rl   r   s     r   r   VariableKey.__init__  s    GG	r"   c                 t    UR                   U R                   :H  =(       a    UR                  U R                  :H  $ r   )r   r8   )rl   compares     r   __eq__VariableKey.__eq__!  s.    / &LLDII%	
r"   c                 ,    [        U R                  5      $ r   )hashr8   r   s    r   __hash__VariableKey.__hash__'  s    DIIr"   r   N)	rv   rw   rx   ry   rz   r   r   r   r{   ru   r"   r   r   r     s    

r"   r   c                   R   ^  \ rS rSrSrS	U 4S jjrS rS r\S 5       r	S r
SrU =r$ )
Importationi+  z
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                 R   > U=(       d    UU l         / U l        [        TU ]  X5        g r   )fullName	redefinedr   r   )rl   r8   r   	full_namer   s       r   r   Importation.__init__4  s#    !)T&r"   c                     [        U[        5      (       a  U R                  UR                  :H  $ [        U[        5      =(       a    U R                  UR                  :H  $ r   )r   SubmoduleImportationr   r   r8   r   s     r   r   Importation.redefines9  sB    e122==ENN22%,Hejj1HHr"   c                 Z    U R                   R                  S5      S   U R                  :X  + $ )z.Return whether importation needs an as clause..)r   splitr8   r   s    r   
_has_aliasImportation._has_alias?  s%    ==&&s+B/499<<r"   c                     U R                  5       (       a  SU R                   SU R                   3$ SU R                  -  $ )z5Generate a source statement equivalent to the import.import  as z	import %sr   r   r8   r   s    r   source_statementImportation.source_statementC  s;     ??T]]O4		{;;..r"   c                 |    U R                  5       (       a  U R                  S-   U R                  -   $ U R                  $ z#Return import full name with alias.r   r   r   s    r   r   Importation.__str__K  s1    ??==6)DII55== r"   )r   r   r   )rv   rw   rx   ry   rz   r   r   r   propertyr   r   r{   r   r   s   @r   r   r   +  s6    '
I= / /! !r"   r   c                   N   ^  \ rS rSrSrU 4S jrU 4S jrS r\S 5       r	Sr
U =r$ )r   iS  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                    > SU;   a&  U(       a!  [        U[        R                  5      (       d   eUR                  S5      S   n[        TU ]  X25        Xl        g )Nr   r   )r   r	   Importr   r   r   r   )rl   r8   r   package_namer   s       r   r   SubmoduleImportation.__init__d  sF    d{Fj.L.LMMzz#q).r"   c                 ~   > [        U[        5      (       a  U R                  UR                  :H  $ [        TU ]  U5      $ r   )r   r   r   r   r   r   s     r   r   SubmoduleImportation.redefinesk  s3    e[))==ENN22w ''r"   c                     U R                   $ r   r   r   s    r   r   SubmoduleImportation.__str__p  s    }}r"   c                      SU R                   -   $ )Nr   r   r   s    r   r   %SubmoduleImportation.source_statements  s    4==((r"   r   )rv   rw   rx   ry   rz   r   r   r   r   r   r{   r   r   s   @r   r   r   S  s+     (
 ) )r"   r   c                   B   ^  \ rS rSrSU 4S jjrS r\S 5       rSrU =r	$ )ImportationFromix  c                    > X0l         U=(       d    UU l        UR                  S5      (       a  X0R                  -   nOUS-   U R                  -   n[        TU ]  XU5        g Nr   )module	real_nameendswithr   r   )rl   r8   r   r   r   r   r   s         r   r   ImportationFrom.__init__z  sP    "*d??3/It~~5Iy1r"   c                     U R                   U R                  :w  a  U R                  S-   U R                  -   $ U R                  $ r   )r   r8   r   r   s    r   r   ImportationFrom.__str__  s4    >>TYY&==6)DII55== r"   c                     U R                   U R                  :w  a)  SU R                   SU R                    SU R                   3$ SU R                   SU R                   3$ )Nfrom z import r   )r   r8   r   r   s    r   r    ImportationFrom.source_statement  sS    >>TYY&4;;-x/?tDII;OO4;;-x		{;;r"   )r   r   r   )
rv   rw   rx   ry   r   r   r   r   r{   r   r   s   @r   r   r   x  s!    	2! < <r"   r   c                   B   ^  \ rS rSrSrU 4S jr\S 5       rS rSr	U =r
$ )StarImportationi  z3A binding created by a 'from x import *' statement.c                 F   > [         TU ]  SU5        US-   U l        Xl        g )N*z.*)r   r   r8   r   )rl   r8   r   r   s      r   r   StarImportation.__init__  s$    f% 4K	r"   c                 &    SU R                   -   S-   $ )Nr   z	 import *r   r   s    r   r    StarImportation.source_statement  s    &44r"   c                 r    U R                   R                  S5      (       a  U R                  $ U R                  $ r   )r   r   r   r8   r   s    r   r   StarImportation.__str__  s-    ==!!#&&(((99r"   )r   r8   )rv   rw   rx   ry   rz   r   r   r   r   r{   r   r   s   @r   r  r    s)    = 5 5 r"   r  c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )FutureImportationi  zg
A binding created by a from `__future__` import statement.

`__future__` imports are implicitly used.
c                 6   > [         TU ]  XS5        X24U l        g )N
__future__)r   r   r   )rl   r8   r   scoper   s       r   r   FutureImportation.__init__  s    |4O	r"   )r   rv   rw   rx   ry   rz   r   r{   r   r   s   @r   r
  r
    s    $ $r"   r
  c                       \ rS rSrSrSrg)Argumenti  z+
Represents binding a name as an argument.
ru   Nr   ru   r"   r   r  r    r   r"   r  c                       \ rS rSrSrSrg)r   i  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.
ru   Nr   ru   r"   r   r   r     s    r"   r   c                       \ rS rSrSrSrg)NamedExprAssignmenti  z:
Represents binding a name with an assignment expression.
ru   Nr   ru   r"   r   r  r    r   r"   r  c                       \ rS rSrSrS rSrg)
Annotationi  z
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                     g)zAAn Annotation doesn't define any name, so it cannot redefine one.Fru   r   s     r   r   Annotation.redefines  s    r"   ru   N)rv   rw   rx   ry   rz   r   r{   ru   r"   r   r  r    s    r"   r  c                       \ rS rSrSrg)FunctionDefinitioni  ru   Nrv   rw   rx   ry   r{   ru   r"   r   r  r        r"   r  c                       \ rS rSrSrg)ClassDefinitioni  ru   Nr  ru   r"   r   r  r    r  r"   r  c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )ExportBindingi  a  
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                   >^  SU;   a=  [        U[        R                  5      (       a  [        US   R                  5      T l        O/ T l        U 4S jn[        UR
                  [        R                  [        R                  45      (       a  U" UR
                  5        GO$[        UR
                  [        R                  5      (       a  UR
                  n[        UR                  [        R                  [        R                  45      (       a  UR                  nUR                  nU" U5        [        U[        R                  5      (       a  UnO9[        U[        R                  [        R                  45      (       a	  U" U5        O<O;[        UR                  [        R                  [        R                  45      (       a  M  [        TT ]1  X5        g )N__all__c                    > U R                    Hj  n[        U[        R                  5      (       d  M$  [        UR                  [
        5      (       d  ME  TR                  R                  UR                  5        Ml     g r   )r.   r   r	   r   r   strnamesappend)	containerr    rl   s     r   _add_to_names-ExportBinding.__init__.<locals>._add_to_names  sH    !dCLL11jS6Q6QJJ%%djj1 'r"   )r   r	   	AugAssignr   r%  r   Listr,   BinOprightleftr   r   )	rl   r8   r   r  r(  currentValuer.  r-  r   s	   `       r   r   ExportBinding.__init__  s7   *VS]]"C"CeI.445DJDJ	2
 fllSXXsyy$9::&,,'cii00!<<L\//#((CII1FGG#(($**e$dCII..#'Lsxx&;<<!$'  \//#((CII1FGG 	&r"   )r%  r  r   s   @r   r   r     s    ' 'r"   r   c                       \ rS rSrSrS rSrg)Scopei  Fc                     U R                   R                  nSU S[        U 5      S S[        R	                  U 5       S3$ )N<z at 0xx >)r   rv   r5   dictr   )rl   	scope_clss     r   r   Scope.__repr__  s<    NN++	9+VBtHQ<qt1D0EQGGr"   ru   N)rv   rw   rx   ry   importStarredr   r{   ru   r"   r   r2  r2    s    MHr"   r2  c                       \ rS rSrSrg)
ClassScopei  ru   Nr  ru   r"   r   r=  r=    r  r"   r=  c                   D   ^  \ rS rSrSrSr1 SkrU 4S jrS rS r	Sr
U =r$ )	FunctionScopei  zd
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U ]  5         U R                  R                  5       U l        S U l        g r   )r   r   
alwaysUsedcopyglobalsreturnValue)rl   r   s    r   r   FunctionScope.__init__)  s*    ++-r"   c              #      #    U R                  5        H`  u  pUR                  (       a  M  US:w  d  M   XR                  ;  d  M1  U R                  (       a  MD  [	        U[
        5      (       d  M[  X4v   Mb     g7f)zB
Return a generator for the assignments which have not been used.
_N)r~   r   rF  
usesLocalsr   r   rl   r8   bindings      r   unused_assignments FunctionScope.unused_assignments/  sQ      "ZZ\MDLLLCK,w
33m# *s!   %A8A8A8A8A8.
A8c              #      #    U R                  5        H4  u  pUR                  (       a  M  [        U[        5      (       d  M/  X4v   M6     g7f)zB
Return a generator for the annotations which have not been used.
N)r~   r   r   r  rL  s      r   unused_annotations FunctionScope.unused_annotations;  s6      "ZZ\MD<<<Jw
$C$Cm# *s   %AA
A)rF  rG  )rv   rw   rx   ry   rz   rK  rD  r   rN  rQ  r{   r   r   s   @r   r?  r?    s*    
 J.J 
$$ $r"   r?  c                       \ rS rSrSrg)	TypeScopeiD  ru   Nr  ru   r"   r   rT  rT  D  r  r"   rT  c                       \ rS rSrSrg)GeneratorScopeiH  ru   Nr  ru   r"   r   rV  rV  H  r  r"   rV  c                        \ rS rSrSrSrSrSrg)ModuleScopeiL  zScope for a module.TFru   N)rv   rw   rx   ry   rz   _futures_allowed_annotations_future_enabledr{   ru   r"   r   rX  rX  L  s    "'r"   rX  c                       \ rS rSrSrSrg)DoctestScopeiR  zScope for a doctest.ru   Nr   ru   r"   r   r\  r\  R  s    r"   r\  c                   "    \ rS rSr\" 5       rSrg)DetectClassScopedMagiciV  ru   N)rv   rw   rx   ry   dirr%  r{   ru   r"   r   r^  r^  V  s	    EEr"   r^  )__file____builtins____annotations__WindowsErrorc                     [        U S5      (       a  U R                  $ [        U S5      (       a  U R                  $ [        U S5      (       a  U R                  $ g )Nr5   r8   rest)hasattrr5   r8   re  r   s    r   r   r   _  sK    tTwwtVyytVyy r"   )typingtyping_extensionsc                   ^^ UU4S jnU4S jn[        U [        R                  5      =(       a    U" U R                  5      =(       d    [        U [        R                  5      =(       a`    [        U R
                  [        R                  5      =(       a5    U" U R
                  R                  5      =(       a    T" U R                  5      $ )a@  
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5       HS  nX;   d  M
  [        X   [        5      =(       a0    X   R                  [        ;   =(       a    T" X   R
                  5      s  $    gr   )reversedr   r   r   TYPING_MODULESr   )r8   r  is_name_match_fnscope_stacks     r   _bare_name_is_attr-_is_typing_helper.<locals>._bare_name_is_attrv  sW    k*E}u{O< <K&&.8<$U[%:%:; + r"   c                    > [        T5       H8  nX;   d  M
  [        X   [        5      =(       a    X   R                  [        ;   s  $    gr   )rk  r   r   r   rl  )r8   r  rn  s     r   _module_scope_is_typing2_is_typing_helper.<locals>._module_scope_is_typing  sB    k*E}u{K8 ;K((N: + r"   )r   r	   r4   r5   r6   r   r7   )r    rm  rn  ro  rr  s    ``  r   _is_typing_helperrt  l  s    	 tSXX& (tww'	
 tS]]+ (tzz388,(#DJJMM2( TYY'
r"   c                 &   ^ [        U U4S jU5      $ )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                    > U T:H  $ r   ru   )r5  typing_attrs    r   <lambda>_is_typing.<locals>.<lambda>  s
    Q+-=r"   rt  )r    rw  rn  s    ` r   
_is_typingr{    s     T#={KKr"   c                     [        U S U5      $ )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                     gNTru   )r5  s    r   rx  '_is_any_typing_member.<locals>.<lambda>  s    Tr"   rz  )r    rn  s     r   _is_any_typing_memberr    s     T>;??r"   c                    ^ [        U R                  [        R                  [        R                  45      =(       a)    [        U4S jU R                  R                   5       5      $ )Nc              3   >   >#    U  H  n[        US T5      v   M     g7f)overloadN)r{  )r'   decrn  s     r   r)   %is_typing_overload.<locals>.<genexpr>  s$      
2 sJ442s   )r   r   r	   FunctionDefAsyncFunctionDefanydecorator_list)r   rn  s    `r   is_typing_overloadr    sI    5<<#//33G3G!HI 	
 
||22
 	
r"   c                        \ rS rSrSrSrSrSrg)AnnotationStatei  r   rC      ru   N)rv   rw   rx   ry   NONESTRINGBAREr{   ru   r"   r   r  r    s    DFDr"   r  c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                 r   > U R                  5          T" U /UQ70 UD6sS S S 5        $ ! , (       d  f       g = fr   )_enter_annotationrl   argskwargsfuncs      r   in_annotation_func)in_annotation.<locals>.in_annotation_func  s-    ##%.t.v. &%%s   (
6	functoolswrapsr  r  s   ` r   in_annotationr    &    __T/ / r"   c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                    > U R                  [        R                  5         T" U /UQ70 UD6sS S S 5        $ ! , (       d  f       g = fr   )r  r  r  r  s      r   r  0in_string_annotation.<locals>.in_annotation_func  s5    ##O$:$:;.t.v. <;;s	   7
Ar  r  s   ` r   in_string_annotationr    r  r"   c                       \ rS rSrSr\R                  \\R                  \	\R                  \\R                  \\R                  \\R                  \\R                   \\R"                  \\R$                  \0	rSrSr\R.                  r\" \5      R7                  \5      r\R>                  RA                  S5      r!\!(       a   \RE                  \!RG                  S5      5        C!SSS\R>                  ;   S	4S
 jr$S r%S r&S r'\(S 5       r)\)RT                  S 5       r)\(S 5       r+\+RT                  S 5       r+\(S 5       r,\-R\                  S 5       r/S r0S r1S r2S r3S r4S r5S r6S r7S r8S r9S r:S r;S  r<S! r=\-R\                  \R|                  4S" j5       r?\(S# 5       r@SRS$ jrAS% rBS& rCS' rDS( rE\FR                  " 5       R                  rIS) rJ\KS* 5       rLS+ rM\NS, 5       rOS- rP\A=rQ=rR=rS=rT=rU=rV=rW=rXrY\PrZ\A=r[=r\=r]=r^=r_=r`raS. rbS/ rcS0 rdS1 reS2 rfS3 rg\A=rh=rirj\P=rk=rl=rm=rn=rorp\P=rq=rr=rs=rt=ru=rv=rw=rx=ry=rz=r{=r|=r}=r~=r=r=r=r=r=r=r=r=r=r=r=r=r=rrS4 r\A=r=rrS5rS6 rS7 rS8 r\rS9 rS: r\rS; r\=r=rrS< rS= r\rS> rS? r\=rrS@ r\rSA rSB rSC rSD rSE rSF r\rSG rSH rSI r\rSJ rSK rSL r\A=r=r=r=rr\A=rrSM r\=r=rr\-R\                  SN 5       rSO r\<=rrSP rSQrg)SCheckeri  z2I check the cleanliness and sanity of Python code.r   NPYFLAKES_BUILTINS,z(none)PYFLAKES_DOCTESTru   c                    0 U l         [        R                  " 5       U l        / U l        / U l        X l        U(       a   U R                  R                  U5      U l        X@l	        S/U l
        Xl        / U l         [        R                  [        U5         nU R%                  U5         U R                   H  nU R'                  S [)        U5      5        M      U R+                  U5        U R-                  5         S S S 5        U R/                  5         U(       a  [0        R2                  " SSS9  g g ! [          a    [#        SU-  5      ef = f! , (       d  f       NX= f)Nru   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
scopeStackr  _ast_node_scoper   KeyErrorRuntimeErrorin_scope
addBindingr   handleChildren_run_deferredcheckDeadScopeswarningswarn)rl   treer  builtinsr  file_tokensscope_tpbuiltins           r   r   Checker.__init__  s   $**,  MM//9DM&!d		N..tDz:H ]]8$==gg&67 )% 	 % 	MMC   	NELMM	N %$s   9D, &AE,E
Ec                 l    U R                   R                  XR                  SS U R                  45        g)aK  
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)r  r&  r  offset)rl   callables     r   deferFunctionChecker.deferFunction  s(     	x);T[[IJr"   c                     U R                   U R                  4nU R                  (       aE  U R                  R                  5       u  p#nX4sU l         U l        U" 5         U R                  (       a  ME  Uu  U l         U l        g r   )r  r  r  popleft)rl   orighandlerr  r  s        r   r  Checker._run_deferred  s`    -nn%)^^%;%;%="GF+0(DOT[I nnn
 (,$r"   c                 z    [        U R                  5      S:  =(       a    [        U R                  S   [        5      $ )Nr  rC   )rD   r  r   r\  r   s    r   _in_doctestChecker._in_doctest  s0    DOO$) =4??1-|<	>r"   c                 r    [        S U R                   5       5      (       d  gU R                  R                  $ )Nc              3   B   #    U  H  n[        U[        5      v   M     g 7fr   )r   rX  )r'   r  s     r   r)   )Checker.futuresAllowed.<locals>.<genexpr>"  s!      1 /u e[11 /s   F)r-   r  r  rY  r   s    r   futuresAllowedChecker.futuresAllowed   s3     1 $1 1 1zz***r"   c                 t    USL d   e[        U R                  [        5      (       a  SU R                  l        g g r   )r   r  rX  rY  rl   r   s     r   r  r  (  s0    ~~djj+..*/DJJ' /r"   c                 d    U R                   S   n[        U[        5      (       d  gUR                  $ )Nr   F)r  r   rX  rZ  )rl   r  s     r   annotationsFutureEnabled Checker.annotationsFutureEnabled.  s,    "%--000r"   c                 v    USL d   e[        U R                  [        5      (       d   eSU R                  l        g r~  )r   r  rX  rZ  r  s     r   r  r  5  s1    }}$**k222215

.r"   c                      U R                   S   $ )Nr   )r  r   s    r   r  Checker.scope;  s    r""r"   c              #   ,  #    U R                   R                  U" 5       5         S v   U R                  R                  U R                   R                  5       5        g ! U R                  R                  U R                   R                  5       5        f = f7fr   )r  r&  r  pop)rl   clss     r   r  Checker.in_scope?  s_     su%	:OO""4??#6#6#89DOO""4??#6#6#89s   !BA 4B5BBc           	         U R                    GHp  n[        U[        5      (       a  M  [        U[        5      (       a  UR	                  5        H0  u  p#U R                  [        R                  UR                  U5        M2     UR                  5        H0  u  p#U R                  [        R                  UR                  U5        M2     UR                  S5      nU(       a  [        U[        5      (       d  SnU(       a9  [        UR                  5      nUR                   Vs/ s H  nX!;  d  M
  UPM     nnO/ =pVU(       Ga(  UR                  (       dd  [         R"                  R%                  U R&                  5      S:w  a7  U H1  nU R                  [        R(                  US   R                  U5        M3     UR                  (       a  / nUR+                  5        H;  n[        U[,        5      (       d  M  XCl        UR1                  UR2                  5        M=     SR5                  [7        U5      5      nU H1  nU R                  [        R8                  US   R                  X'5        M3     UR+                  5        GH  n[        U[:        5      (       d  M  UR.                  =(       d    UR<                  U;   n	U	(       d5  [        R>                  n
U R                  XR                  [A        U5      5        URB                   Hx  n[        U RE                  U5      [F        5      (       a  [        RH                  n
OU	(       a  MA  [        RJ                  n
U R                  XUR<                  UR                  5        Mz     GM     GMs     gs  snf )zh
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?  rN  reportr   UnusedVariabler   rQ  UnusedAnnotationr}   r   setr%  r;  ospathbasenamer  UndefinedExportvaluesr  r   r&  r   joinrk   ImportStarUsager   r8   UnusedImportr$  r   	getParent	FOR_TYPESImportShadowedByLoopVarRedefinedWhileUnused)rl   r  r8   rM  all_binding	all_names	undefined	from_listr   r   messgr    s               r   r  Checker.checkDeadScopesG  s   
 __E%,,%//%*%=%=%?MDKK 7 7N &@%*%=%=%?MDKK 9 97>>4P &@  ))I.K:k=#I#I" 1 12	%0%6%6%6T( %6  	
 )+*	**77##DMM2mC )H$<$<$))$4$;$;TC !*
 && "I#(<<>%g??+6L%,,W-=-=> $2
 !%		&*; <I )H$<$<$))$4$;$;TN !*
 e[11 ::@y)@D ( 5 5E<<UD %%dnnT&:IFF$,$D$DE!$$,$A$AEEU\\J !0 (] %"s   	N+Nc                 b    U R                   R                  U" U R                  /UQ70 UD65        g r   )r   r&  r  )rl   messageClassr  r  s       r   r  Checker.report  s'    \$--I$I&IJr"   c                 h     UR                   n[        US5      (       d  [        US5      (       d  U$ M2  )Nr.   ctx)_pyflakes_parentrf  rl   r    s     r   r  Checker.getParent  s3    ((D4((u1E1E r"   c                    X1U4;   d"  [        US5      (       a  [        US5      (       d  g XL a  U$ UR                  UR                  :  a  U R                  UR                  X#5      $ UR                  UR                  :  a  U R                  XR                  U5      $ U R                  UR                  UR                  U5      $ Nr  )rf  _pyflakes_depthgetCommonAncestorr  )rl   lnodernodestops       r   r	  Checker.getCommonAncestor  s    &E#566E#566 >L!!E$9$99))%*@*@%NN!!E$9$99))%1G1GNN%%""""
 	
r"   c                 H    U H  nU R                  XU5      (       d  M    g   g)NTF)r	  )rl   r    	ancestorsr  as        r   descendantOfChecker.descendantOf  s'    A%%dt44  r"   c                 p    Un X0R                   L a  g U R                  U5      n[        X25      (       a  U$ M4  r   )r  r  r   )rl   r    ancestor_typeparents       r   _getAncestorChecker._getAncestor  s:    "^^F+F&00 r"   c                 p    U R                  U[        [        R                  R	                  5       5      5      $ r   )r  r`   r  r  keysr  s     r   getScopeNodeChecker.getScopeNode  s)      uW-D-D-I-I-K'LMMr"   c                     U R                  XU R                  5      n[        U5      nU(       a5  U H/  nU R                  XU5      U R                  X%U5      -  (       d  M/    g   g)zATrue, if lnode and rnode are located on different forks of IF/TRYTF)r	  r  r   r  )rl   r
  r  ancestorpartsr~   s         r   differentForksChecker.differentForks  sa    ))%		B)$$U8<$$U8<= =  r"   c                    U R                   SSS2    H  nUR                  U;   d  M    O   WR                  UR                  5      nU(       Ga  [        U[        5      (       Gd  U R                  XR                  5      (       Gdk  U R                  UR                  5      n[        U[        5      (       aK  [        U[        5      (       a6  U R                  [        R                  XR                  UR                  5        OX0R                  L a  UR                  (       d  UR                  U5      (       at  UR                  S:w  d  [        U[        5      (       aO  [!        X@R                   5      (       d5  U R                  [        R"                  XR                  UR                  5        OF[        U[        5      (       a1  UR                  U5      (       a  UR$                  R'                  U5        UR                  U R                  ;   a(  U R                  UR                     R                  Ul        UR                  U R                  ;  d  [        U[(        5      (       d  Sn[        U[*        5      (       a`  [        U R                   U   [,        5      (       a>  US-  n[        U[*        5      (       a$  [        U R                   U   [,        5      (       a  M>  X R                   U   UR                  '   gg)z
Called when a binding is altered.

- `node` is the statement responsible for the change
- `value` is the new value, a Binding instance
Nr   rJ  rC   )r  r8   r}   r   r   r  r   r  r   r  r  r   r  r  r   r   r  r  r   r&  r  r  rV  )rl   r    r   r  existingparent_stmtcur_scope_poss          r   r  Checker.addBinding  s
    __TrT*EzzU" + 99UZZ(Z'::''oo>>..6K(K00ZY5W5WH<< **hoo? **$%]]ux/H/Hs*j;.O.O.xIIKK = = $jj(//C Hk22ux7P7P""))$/::#EJJ/44EJ ::TZZ'z%/L/LM 5"5664??=9>JJ" 5"5664??=9>JJ :?OOM*5::6 0Mr"   c                     [         R                  R                  S5      (       a  [        S[	        U5       35      eU R                  U5        g )NPYFLAKES_ERROR_UNKNOWNzUnexpected type: )r  environr}   NotImplementedErrorr   r  r  s     r   _unknown_handlerChecker._unknown_handler  s=     ::>>233%(9$t*&FGG%r"   c                      U R                   U   $ ! [         a    UR                  R                  5       n Of = f[	        XU R
                  5      =U R                   U'   nU$ r   )r  r  rv   upperr   r*  )rl   rm   nodeTyper  s       r   getNodeHandlerChecker.getNodeHandler  si    	3%%j11 	3!**002H	33:D114
 	
:& s    $88c                 t   [        U5      nU(       d  g S nS nU R                  SS S2    GH]  n[        U[        5      (       a  US:X  a    g USL a  M(  UR	                  US 5      n[        U[
        5      (       a(  U R                  (       d  U R                  U4Xc   l        Mw  US:X  a}  [        U[        5      (       ah  [        U[        R                  5      (       aI  [        UR                  [        R                  5      (       a   U R                  [        R                   U5         U R                  U4Xc   l        Xc   n[        U["        5      (       a5  UR%                  5       (       a    U R                  U4XhR&                     l          g    U(       a  / n	U R                  SS S2    H_  nUR1                  5        HH  n[        U[2        5      (       d  M  U R                  U4Ul        U	R5                  UR&                  5        MJ     Ma     SR7                  [9        U	5      5      n	U R                  [        R:                  XU	5        g US:X  a.  [<        R>                  RA                  U RB                  5      S:X  a  g U[D        RF                  ;   a   [        U R                  [        5      (       a  g SU RH                  S   ;  a!  U R                  [        RJ                  X5        g g ! [(         a     GNhf = f! [(         a     Of = fU=(       d    UR*                  nUSLd  GM  [        U[,        [.        45      nGM  )	Nr   r   Fprintr  __path__r  	NameError)&r   r  r   r=  r}   r  _in_postponed_annotationr  r   r   r	   r,  opRShiftr  r   InvalidPrintSyntaxr   r   r   r  r;  rT  rV  r  r  r&  r  rk   r  r  r  r  r  r^  r%  r  UndefinedName)
rl   r    r  r8   can_access_class_varsr;  r  rM  r   r  s
             r   handleNodeLoadChecker.handleNodeLoad  s   4  !% __RVV,E%,,;&*e3 iid+G':..t7T7T$(JJ#5 w:gw#?#?vsyy11"699cjj99KK ; ;TB$(JJ#5 
 Ka--!,,..26**d1Cjj). G -X IR0$||~G!'?;;(,

D'9!(()9)9:	  . 1 		&"34IKK00$iH:"''"2"24=="A]"R)///Jtzz:4V4V d11"55KK..; 6K $  
 *@U-@-@M$E1(2I~6)%s1   %AK4)K##
K1-K40K11K44
L Lc                    [        U5      nU(       d  g [        U R                  [        5      (       a  X R                  ;  a  U R                  S S  H  n[        U[        [
        45      (       d  M   X#;   =(       a    X2   R                  nU(       d  MB  US   U R                  L d  MV  X R                  R                  ;  d  Mq  U R                  [        R                  X2   R                  S   X#U   R                  5          O   U R                  U5      n[        U[        R                  5      (       a  UR                  c  [!        X!5      nGO[        U["        [        R$                  45      (       d%  XQR&                  :w  a"  U R)                  U5      (       d  [+        X!5      nOUS:X  a  [        U R                  [
        5      (       ai  [        UR&                  [        R,                  [        R.                  [        R                  45      (       a!  [1        X!R&                  U R                  5      nO6[        U[        R2                  5      (       a  [5        X!5      nO[7        X!5      nU R9                  X5        g )Nr   r   rC   r"  )r   r   r  r?  r  rX  r   rF  r  r   UndefinedLocalr   r  r	   	AnnAssignr   r  r  comprehensionr  isLiteralTupleUnpackingr   Assignr*  r   	NamedExprr  r   r  )rl   r    r8   r  r   r#  rM  s          r   handleNodeStoreChecker.handleNodeStoree  s   4 djj-00T5K"-!%-)EFF }9)9)94DGtzz1d**BTBT6TKK 7 7 % 0 0 3T;;M;MO . nnT*k3==11k6G6G6O ,Gi1B1B%CDD44400==d)G	!4::{33))ZZ> 
 $D*?*?LGS]]33)$5G ,G&r"   c                   ^ U4S jn[        T5      nU(       d  g U" 5       (       a  g [        U R                  [        5      (       a?  X0R                  R                  ;   a&  U R                  R                  R                  U5        g  U R                  U	 g ! [         a$    U R                  [        R                  TU5         g f = f)Nc                     > [        TSS5      n U (       aU  [        U [        R                  [        R                  [        R
                  45      (       a  g[        U SS5      n U (       a  MU  g)z6
Return `True` if node is part of a conditional body.
r  NTF)r   r   r	   r
   WhileIfExp)currentr    s    r   on_conditional_branch7Checker.handleNodeDelete.<locals>.on_conditional_branch  sU     d$6=Gg		399'EFF!'+=tD ' r"   )
r   r   r  r?  rF  remover  r  r   r9  )rl   r    rK  r8   s    `  r   handleNodeDeleteChecker.handleNodeDelete  s    		 4  "" djj-00TZZ=O=O5OJJ%%d+@JJt$ @H22D$?@s   B +CCc              #   ^   #    U R                   Uso l          S v   X l         g ! X l         f = f7fr   )_in_annotation)rl   ann_typer  s      r   r  Checker._enter_annotation  s,     $($7$7!!	'"&$s   -" -*-c                 b    U R                   [        R                  :H  =(       d    U R                  $ r   )rQ  r  r  r  r   s    r   r5   Checker._in_postponed_annotation  s+     ?#9#99 *))	
r"   c                 F    [        XS9 H  nU R                  X15        M     g )Nr   )r   
handleNode)rl   r  r   r    s       r   r  Checker.handleChildren  s    $T5DOOD' 6r"   c                     [        U[        R                  5      (       a5  UR                  UR                  /-    H  n[        US5      (       a  M    g   gg )Nr.   FT)r   r	   rB  targetsr   rf  )rl   r    childs      r   rA  Checker.isLiteralTupleUnpacking  sF    dCJJ''4uf--  5 	 (r"   c                     [        U[        R                  5      =(       aO    [        UR                  [        R                  5      =(       a$    [        UR                  R                  [
        5      $ )ze
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   isDocstringChecker.isDocstring  sG     tSXX& .tzz3<<0.tzz''-	
r"   c                 0   [        U[        R                  5      (       aw  [        UR                  [        R                  5      (       aN  [        UR                  R                  [
        5      (       a%  UR                  R                  UR                  S-
  4$ g)NrC   )NN)r   r	   r_  r   r   r$  r   r  s     r   getDocstringChecker.getDocstring  s_    4**4::s||444::++S11::##T[[1_44r"   c                    Uc  g U R                   (       aR  [        USS 5      bD  U=R                  U R                   S   -  sl        U=R                  U R                   S   -  sl        U R                  (       aL  U R
                  S:X  a<  [        U[        R                  5      (       d  U R                  U5      (       d  SU l        U =R
                  S-  sl        U R
                  Ul
        X!l         U R                  UR                  5      nU" U5        U =R
                  S-  sl        g ! U =R
                  S-  sl        f = f)Nr   r   rC   F)r  r   r   
col_offsetr  	nodeDepthr   r	   
ImportFromr`  r  r  r/  r   )rl   r    r  r  s       r   rX  Checker.handleNode  s    <;;7448DKK4;;q>)KOOt{{1~-O##!#tS^^44$$T**"'D!#~~ &	 ))$..9GDMNNaNDNNaNs   2#D+ +Ec                     U R                  UR                  S   5      u  p#U=(       a    U R                  U5      nU(       d  g U R
                  nU R
                  S   /U l        U R                  =(       d    SnU R                  [        5         SU R
                  S   ;  a  U R                  S [        S5      5        U Hk  n [        R                  " UR                  S5      nUS   U-   UR                  -   US   UR                  -   S-   4U l        U R!                  U5        X`l        Mm     S S S 5        XPl        g ! [        [        4 a     g f = f! ["         al  n	X7R                  -   U	R                  -   UR                  S-   U	R                  =(       d    S-   4n
U R%                  [&        R(                  X5         S n	A	GM  S n	A	ff = f! , (       d  f       N= f)Nr   )r   r   rJ  z	<doctest>rC      )rc  r   _getDoctestExamplesrF   rN   r  r  r  r\  r  r   r	   parser   r   indentr  SyntaxErrorr  r   DoctestSyntaxError)rl   r    	docstringnode_linenoexamplessaved_stacknode_offsetexampler  epositions              r   handleDoctests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''-"-K $ ) &5 J' 	 	" # M +nn <qxx G ' 2ahhm! D FHKK ; ;TLLM )(sI   :D> 4G!E%A
G>EE
G
A G>GG

G
Gc                     [         R                  " U5      nUR                  n[        U5      S:w  d"  [        US   [         R                  5      (       d  U R                  XRU5        g UR                  S   R                  n[         R                  " U5       H3  n	SU	R                  ;   d  M  SU	R                  ;   d  M'  X9l        XIl        M5     U R                  X5        g ! [         a    U R                  XRU5         g f = f)NrC   r   r   rf  )r	   rm  ro  r  r   rD   r   r_  r   walk_attributesr   rf  rX  )
rl   r]   r    
ref_linenoref_col_offseterrr  r   parsed_annotation
descendants
             r   handleStringAnnotationChecker.handleStringAnnotation  s    	99Q<D
 yyt9>DGSXX!>!>KK1% IIaL..((#45J
 6 66 J$:$::$.!(6% 6 	)0%  	KK1%	s   C   C?>C?c                 n   ^ ^^^ [        [        R                  5      mT R                  UUUU 4S j5        g )Nc                     > T" TT T5      $ r   ru   )
annotationfnr  rl   s   r   rx  ;Checker.handle_annotation_always_deferred.<locals>.<lambda>.  s    2dJ#?r"   )r  r  rX  r  )rl   r  r  r  s   ```@r   !handle_annotation_always_deferred)Checker.handle_annotation_always_deferred,  s"    7--.?@r"   c           
         [        U[        R                  5      (       a  [        UR                  [        5      (       aa  U R                  [        R                  " U R                  UR                  UUR                  UR                  [        R                  5      5        g U R                  (       a  U R                  X5        g U R                  X5        g r   )r   r	   r   r   r$  r  r  partialr  r   rf  r   ForwardAnnotationSyntaxErrorr  r  rX  )rl   r  r    s      r   handleAnnotationChecker.handleAnnotation0  s     :s||44:++S11 y00++  !!%%55   **22:DOOJ-r"   c                     g r   ru   r  s     r   ignoreChecker.ignoreD  s    r"   c                 $   [        UR                  S5      (       a:  U R                  [        R                  5         U R                  U5        S S S 5        g [        UR                  S5      (       Ga  U R                  UR                  U5        [        UR                  [        R                  5      (       a  UR                  nOu[        UR                  [        R                  5      (       aJ  [        UR                  R                  [        R                  5      (       a  UR                  R                  nOS nUb  [        UR                  5      S:  a  U R                  UR                  U5        OnU R                  UR                  S   U5        U R                  [        R                  5         UR                  SS   H  nU R                  X15        M     S S S 5        U R                  UR                  U5        g [        UR                  U R                   5      (       a+  U R                  5          U R                  U5        S S S 5        g U R                  U5        g ! , (       d  f       g = f! , (       d  f       N= f! , (       d  f       g = f)NLiteral	Annotatedr  r   rC   )r9   r   r  r  r  r  rX  r   slicer	   r,   IndexrD   r.   r  r  r  )rl   r    slice_tupleargs       r   	SUBSCRIPTChecker.SUBSCRIPTQ  s   DJJ	22''(<(<=##D) >=djj+66OODJJ- $**cii00"jj tzz39955tzz//;;"jj.." "c+*:*:&;a&?

D1  0 0 3T:++O,@,@A*//32  4 B OODHHd+$TZZAA++-''- .- ##D)E >=0 BA .-s#   I0(I02J
I-0
I>
Jc           
        ^ ^^^^^  [        [        TR                  R                  R                  5      5      nS mSm[        5       m[        5       mUUUUUU 4S jnU Hx  u  pVpuU" U5      (       a    g Uc  M   [        [        U5      5      nU HC  u  pYpU
b*  SU
;   a$  T R                  [        R                  TS5            g U" U	5      (       d  MB      g    Mz     [        S TR                   5       5      (       d!  [        S TR                   5       5      (       a  g [        [        [        TR                  5      5      5      nTR                   Vs1 s H  oR                  iM     nnUT-
  nUT-
  nTT-  X-  -
  nU(       a@  T R                  [        R                  TSR!                  [#        S U 5       5      5      5        U(       a9  T R                  [        R$                  TSR!                  [#        U5      5      5        U(       aA  T R                  [        R&                  TSR!                  [#        S	 U 5       5      5      5        g g ! [         a+  nT R                  [        R                  TU5         S nAg S nAff = f! [         a,  nT R                  [        R                  TU5         S nA  g S nAff = fs  snf )
Nr   c                   > U c  gU R                  S5      u  n   nU R                  S5      u  n   n [        U 5      n TSL a!  TR                  [        R                  T5        gSm U S:X  a/  TSL a!  TR                  [        R                  T5        gSmTn TS-  m[        U [        5      (       a  TR                  U 5        gTR                  U 5        g! [
         a     Nzf = f)z9Returns True if there is an error which should early-exitFr   [T rC   )	partitionintr  r   StringDotFormatMixingAutomaticrF   r   add)fmtkeyrJ  auto	next_autor    placeholder_namedplaceholder_positionalrl   s     r   _add_key3Checker._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   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr   r   r	   Starred)r'   r  s     r   r)   4Checker._handle_string_dot_format.<locals>.<genexpr>  s     FISJsCKK00I   ')c              3   <   #    U  H  oR                   S L v   M     g 7fr   )r  )r'   kwds     r   r)   r    s     =}GGtO}s   r  c              3   8   #    U  H  n[        U5      v   M     g 7fr   r$  r'   r5  s     r   r)   r    s      B1AAQ1Ar+   c              3   8   #    U  H  n[        U5      v   M     g 7fr   r  r  s     r   r)   r    s      C1BAQ1Br+   )r`   parse_format_stringr  r   rF   r  r   StringDotFormatInvalidFormatr  r  r  keywordsrangerD   r  'StringDotFormatExtraPositionalArgumentsr  rk   "StringDotFormatExtraNamedArgumentsStringDotFormatMissingArgument)rl   r    placeholdersrw  r  rJ  r  specspec_placeholdersspec_fmtkey	spec_specsubstitution_positionalr  substitution_namedextra_positionalextra_namedmissing_argumentsr  r  r  r  s   ``               @@@@r   _handle_string_dot_format!Checker._handle_string_dot_formatw  se   	 !4TYY__5J5J!KLL
 	!$E%	 %	N #/At (-.A$.G(H%
 5F0AI ,	1A$AA ;
 ,, 5F #/6 FDIIFFF=t}}==="%eC		N&;"<15?#gg?25KK(+<< $&77$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   2I :JJ?
J!I>>J
J<!J77J<c                    [        UR                  [        R                  5      (       a  [        UR                  R                  [        R
                  5      (       a^  [        UR                  R                  R                  [        5      (       a+  UR                  R                  S:X  a  U R                  U5        / n/ n/ n[        UR                  SU R                  5      (       aS  [        UR                  5      S:  a:  U R                  5          U R                  UR                  S   U5        S S S 5        GO[        UR                  SU R                  5      (       a  US/-  nX1R                  SS   Vs/ s H  oUPM     sn-  nUS/-  nX1R                   Vs/ s H   ofR                   S:X  d  M  UR                  PM"     sn-  nUUR                   Vs/ s H  nXfR                   S:X  a  S	/OS 4PM     sn-  nGO[        UR                  S
U R                  5      (       a  [        UR                  5      S:  a  [        UR                  S   [        R"                  5      (       aX  US/-  nX1R                  S   R$                  -  nU['        UR                  5       VVs/ s H  u  puXWS:X  a  S/OS 4PM     snn-  nUS/-  nX1R                   Vs/ s H  ofR                  PM     sn-  nXAR                   Vs/ s H  ofS	/4PM	     sn-  nGO[        UR                  SU R                  5      (       Ga  [        UR                  5      S:  GaG  [        UR                  S   [        R(                  [        R*                  45      (       Ga
  [-        S UR                  S   R.                   5       5      (       a  US/-  nX1R                  S   R.                   Vs/ s H  oR.                  S   PM     sn-  nXAR                  S   R.                   Vs/ s H  oR.                  S   S 4PM     sn-  nU['        UR                  5       VVs/ s H  u  puXWS:X  a  S/OS 4PM     snn-  nXAR                  S   R.                   Vs/ s H  oS4PM     sn-  nUS/-  nX1R                   Vs/ s H  ofR                  PM     sn-  nXAR                   Vs/ s H  ofS	/4PM	     sn-  nU(       a  U R                  [0        R2                  5         U H  u  pU R5                  XS9  M     U R5                  XS9  S S S 5        U R                  5          U H  nU R                  X5        M     S S S 5        g U R5                  U5        g ! , (       d  f       N= fs  snf s  snf s  snf s  snnf s  snf s  snf s  snf s  snf s  snnf s  snf s  snf s  snf ! , (       d  f       N= f! , (       d  f       g = f)Nr   castrC   r   TypeVarr  r  boundr   	TypedDictr  
NamedTuplec              3      #    U  HN  n[        U[        R                  [        R                  45      =(       a    [	        UR
                  5      S :H  v   MP     g7f)r  N)r   r	   r,   r+  rD   r.   r  s     r   r)   Checker.CALL.<locals>.<genexpr>   sF      A.? q399chh"78 %K1$%.?s   AAr.   rW  )r   r  r	   r6   r   r   r$  r7   r  r{  r  rD   r  r  rX  r  r  Dictr  	enumerater,   r+  r-   r.   r  r  r  )rl   r    r   	annotatednot_annotatedr  krR   r(   na_nodena_omitannotated_nodes               r   CALLChecker.CALL  s   499cmm44499??CLL99499??00#66		(***40	 tyy&$//::		Na'')		!d3 *) 		9doo>> VHD127##77I ZL D==M=aEEW<L'!''=MMI&A '!1WIt<& M
 		;@@499~!j1sxx&H&H YYq\000	"+DII"6""6 Q8*D9"6"  ZL D==9=a''=99ImmDm7)nmDDM		<AA DII"499Q<#))SXX)>?? A.2iil.?.?A A A  YYq\5F5FG5Fchhqk5FGG	1ARAR!SAR#88A;"5AR!SS"+DII"6""6 1f6($7"6"  99Q<;L;L!M;LC-;L!MM ZL D==9=a''=99ImmDm7)nmDDM''(<(<=(5$G'''> )6##D#4 >
 '')&/NOON9 '0 *) %A *) 8 N" :D H!S" "N :D >=
 *)sr    V7VV2V V!"V&V,<V1V6V;W W-WW*WW&
V
W#&
W4c           	      @    [        UR                  R                  5      n[        5       nSnS nU GH  u  pgUc  M  Uu  ppnUS:X  a  M  U[        ;  a!  U R	                  [
        R                  UU5        Uc  U(       a  US L nX4 H>  nUc  M  SU;   d  M  U(       d"  U R	                  [
        R                  U5        M9  US-  nM@     U(       a%  Ub"  U R	                  [
        R                  U5          g U(       d%  Uc"  U R	                  [
        R                  U5          g U(       a  US-  nM  UR                  U5        GM     [        UR                  [        R                   [        R"                  45      (       a  [%        S UR                  R&                   5       5      (       du  [)        UR                  R&                  5      nU(       a(  XM:w  a#  U R	                  [
        R*                  UUU5        O'U(       d   U R	                  [
        R,                  U5        [        UR                  [        R.                  5      (       Ga"  [1        S UR                  R2                   5       5      (       a  U(       a'  US:  a!  U R	                  [
        R4                  U5        g UR                  R2                   Vs1 s H  oR                  iM     nnX-
  nX?-
  nU(       d@  U(       a9  U R	                  [
        R6                  USR9                  [;        U5      5      5        U(       dB  U(       a:  U R	                  [
        R<                  USR9                  [;        U5      5      5        g g g g g ! [         a$    U R	                  [
        R                  US5         g f = fs  snf )	Nzincomplete formatr   rB   r  rC   c              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr   r  r&   s     r   r)   1Checker._handle_percent_format.<locals>.<genexpr>|  s%      . sCKK00.r  c              3      #    U  H@  n[        U[        R                  5      =(       a    [        UR                  [        5      v   MB     g 7fr   )r   r	   r   r   r$  )r'   r  s     r   r)   r    s5      , q#,,/LJqww4LL,s   AA
r  )ra   r.  r   rF   r  r   PercentFormatInvalidFormatr  VALID_CONVERSIONS'PercentFormatUnsupportedFormatCharacter!PercentFormatStarRequiresSequence$PercentFormatMixedPositionalAndNamedr  r   r-  r	   r+  r,   r  r.   rD   $PercentFormatPositionalCountMismatchPercentFormatExpectedMappingr  r-   r  PercentFormatExpectedSequence PercentFormatExtraNamedArgumentsr  rk   PercentFormatMissingArgument)rl   r    r  namedpositional_count
positionalrJ  placeholderr8   rX   rZ   r[   partsubstitution_countr  substitution_keys
extra_keysmissing_keyss                     r   _handle_percent_formatChecker._handle_percent_format=  s   	/		@L 
*NA"4?1DUzS !22DD !j!T\
*#t%$FF 
 )A-( + d.AA DLAA  A% 		$Y +^ 4::#))'<== #zz  
 "%TZZ__!5.DAA$&	  HAA4H 4::sxx00 !ZZ__  
 .2HBBDI26**// B/Q/ B*2J 4L*==IIfZ01
 ,99IIf\23 #/:% 1[  	KK33#
 	n !Cs   M* 8N*+NNc                 >   [        UR                  [        R                  5      (       ac  [        UR                  [        R
                  5      (       a:  [        UR                  R                  [        5      (       a  U R                  U5        U R                  U5        g r   )
r   r6  r	   Modr.  r   r   r$  r  r  r  s     r   BINOPChecker.BINOP  s]    477CGG,,499cll33499??C00''-D!r"   c                 ,   [        UR                  [        5      (       au  U R                  (       ac  [        R
                  " U R                  UR                  UUR                  UR                  [        R                  5      nU R                  U5        g g g r   )r   r   r$  rQ  r  r  r  r   rf  r   r  r  )rl   r    r  s      r   CONSTANTChecker.CONSTANT  sm    djj#&&4+>+>""++

55B r" ,?&r"   c                 V   U R                  U5        UR                  n[        U[        R                  5      (       a<  [        UR                  5      (       a!  U R                  [        R                  U5        g g [        U5      (       a!  U R                  [        R                  U5        g g r   )
r  excr   r	   Callr   r  r  r   RaiseNotImplemented)rl   r    r  s      r   RAISEChecker.RAISE  sx    D!hhc388$$*38844H88$? 5 )--KK44d; .r"   Fc                    U R                   (       dA  [        S UR                   5       5      (       d   U R                  [        R
                  U5        SU R                   sU l         n U R                  U5        X l         g ! X l         f = f)Nc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr   )r   r	   FormattedValuer  s     r   r)   $Checker.JOINEDSTR.<locals>.<genexpr>  s      O;a
1c&8&899;r  T)_in_fstringr  r  r  r   FStringMissingPlaceholdersr  )rl   r    r  s      r   	JOINEDSTRChecker.JOINEDSTR  sk     $$O4;;OOOKK;;TB!%t'7'7$	$%#ts   (B   Bc                   ^ TR                    Vs/ s H  n[        U5      PM     nn[        U5      nUR                  5        VVs/ s H  u  p%US:  d  M  UPM     nnnU H  n[	        U5       VVs/ s H  u  pxX:X  d  M  UPM     n	nn[        U4S jU	 5       5      n
[        S U
R                  5        5       5      (       d  Me  U	 Hu  nTR                   U   n[        U[        5      (       a-  U R                  [        R                  UUR                  5        MT  U R                  [        R                  UU5        Mw     M     U R                  T5        g s  snf s  snnf s  snnf )NrC   c              3   T   >#    U  H  n[        TR                  U   5      v   M     g 7fr   )r   r  )r'   rE   r    s     r   r)   Checker.DICT.<locals>.<genexpr>  s)      (E !U!344(s   %(c              3   0   #    U  H  u  pUS :H  v   M     g7f)rC   Nru   )r'   r   counts      r   r)   r    s     A.,%5A:.s   )r  r   r   r~   r  r  r   r   r  r   MultiValueRepeatedKeyVariabler8   MultiValueRepeatedKeyLiteralr  )rl   r    rT   r  
key_countsr  duplicate_keysrR   i_keykey_indicesr  	key_indexkey_nodes    `           r   DICTChecker.DICT  sB   
 .2YY
-6cS!Y 	 
 T]
","2"2"4
"4JCqy "4 	 

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


 Ns   EEE1E! E!c                     [        UR                  [        R                  5      (       a:  UR                  R                  / :w  a   U R                  [        R                  U5        U R                  U5        g r   )	r   testr	   r,   r.   r  r   IfTupler  r  s     r   IF
Checker.IF  sH    dii++		"0DKK(($/D!r"   c                     [        UR                  [        R                  5      (       a:  UR                  R                  / :w  a   U R                  [        R                  U5        U R                  U5        g r   )	r   r  r	   r,   r.   r  r   AssertTupler  r  s     r   ASSERTChecker.ASSERT  sH    dii++		"0DKK,,d3D!r"   c                    U R                  5       (       a  SOSnU R                  U   nU R                  ULa  UR                   H  n[	        XA5      nU R
                   Vs/ s H9  n[        U[
        R                  5      (       a  UR                  S   U:w  d  M7  UPM;     snU l        UR                  XE5        X14Ul
        U R                  US-   S  H  nXWU'   M	     M     ggs  snf )z%
Keep track of globals declarations.
rC   r   N)r  r  r  r%  r   r   r   r9  message_args
setdefaultr   )rl   r    global_scope_indexglobal_scope	node_name
node_valuemr  s           r   GLOBALChecker.GLOBAL  s     #'"2"2"4"4Q!'9: ::\) "ZZ	'	8
  $}}!4,!q("8"899NN1%2 }!4 ''	> $0"6
!__-?!-C-DEE'1)$ F! ( *!4s    6C$C$c                     U R                  [        5         U R                  U5        S S S 5        g ! , (       d  f       g = fr   )r  rV  r  r  s     r   GENERATOREXPChecker.GENERATOREXP9  s(    ]]>*% +**s   1
?c                    [        UR                  [        R                  5      (       a  U R	                  XR                  U5      5        UR                  S:X  a\  [        U R                  [        5      (       a<  [        UR                  [        R                  5      (       a  SU R                  l        gggg[        UR                  [        R                  5      (       a  U R                  U5        g[        UR                  [        R                  5      (       a  U R                  U5        g[!        SUR                  < 35      e)zF
Handle occurrence of Name (which can be a load/store/delete access.)
localsTz#Got impossible expression context: N)r   r  r	   Loadr;  r  r5   r  r?  r  r  rK  StorerD  DelrN  r  r  s     r   NAMEChecker.NAME?  s    
 dhh))nnT&:;8#
4::}(M(Mt44chh??(,

% @ )N# #)),,  &#''**!!$' !DTXXLQRRr"   c                 &   Un[        US5      (       a  UR                  Up2[        U[        R                  [        R
                  [        R                  45      (       a  X2R                  ;  a  g [        U[        R                  [        R                  45      (       a  O[        US5      (       a  M  [        U[        R                  5      (       a!  U R                  [        R                  U5        g U R                  [        R                  U5        g r  )rf  r  r   r	   rH  ForAsyncForr   r  ClassDefContinuer  r   ContinueOutsideLoopBreakOutsideLoop)rl   r    r   n_childs       r   CONTINUEChecker.CONTINUER  s     a+,,++Qw!cii#,,?@@((*!coos||<== a+,, dCLL))KK44d;KK1148r"   c                    [        U R                  [        [        45      (       a!  U R	                  [
        R                  U5        g UR                  (       aQ  [        U R                  S5      (       a6  U R                  R                  (       d  UR                  U R                  l	        U R                  UR                  U5        g )NrG  )r   r  r=  rX  r  r   ReturnOutsideFunctionr   rf  rG  rX  r  s     r   RETURNChecker.RETURNf  sx    djj:{";<<KK66= JJDJJ..

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

D)r"   c                     [        U R                  [        [        45      (       a!  U R	                  [
        R                  U5        g U R                  UR                  U5        g r   )	r   r  r=  rX  r  r   YieldOutsideFunctionrX  r   r  s     r   YIELDChecker.YIELDs  sA    djj:{";<<KK55t<

D)r"   c                   ^ ^ TR                    H  nT R                  UT5        M     T R                  T5         T R                  T5        S S S 5        T R	                  T[        TR                  T5      5        T R                  (       aM  T R                  5       (       d7  [        T R                  [        5      (       d  T R                  UU 4S j5        g g g g ! , (       d  f       N= f)Nc                  &   > TR                  T 5      $ r   ry  r    rl   s   r   rx  %Checker.FUNCTIONDEF.<locals>.<lambda>  s    t':':4'@r"   )r  rX  _type_param_scopeLAMBDAr  r  r8   r  r  r   r  r?  r  )rl   r    decos   `` r   FUNCTIONDEFChecker.FUNCTIONDEF|  s    ''DOOD$' ( ##D)KK * 	0DAB $$&&tzz=99@A : '  *)s   C
C&c                   ^ ^ / n/ nTR                   R                   H9  nUR                  UR                  5        UR                  UR                  5        M;     TR                   R                   TR                   R
                  -    H9  nUR                  UR                  5        UR                  UR                  5        M;     TR                   R                  TR                   R                  -   n[        T[        R                  5      (       + nS Ha  n[        TR                   U5      nU(       d  M"  UR                  UR                  5        U(       d  MF  UR                  UR                  5        Mc     U(       a  UR                  TR                  5        [        [        U5      5      [        U5      :  a?  [        U5       H0  u  pXBS U	 ;   d  M  T R!                  ["        R$                  TU5        M2     U H  n
T R'                  U
T5        M     U H  nT R)                  UT5        M     UU 4S jnT R+                  U5        g )N)varargkwargc                     > TR                  [        5         TR                  T SS9  S S S 5        g ! , (       d  f       g = f)N)r  returnstype_paramsrW  )r  r?  r  rL  s   r   runFunction#Checker.LAMBDA.<locals>.runFunction  s4    }-##E $  .--s   1
?)r  posonlyargsr&  r  r  
kwonlyargsdefaultskw_defaultsr   r	   Lambdar   rW  rD   r  r  r  r   DuplicateArgumentr  rX  r  )rl   r    r  annotationsr  r]  has_annotationsarg_namewildcardidxr  defaultrY  s   ``           r   rO  Checker.LAMBDA  s   99((CKK s~~. ) 99>>DII$8$88CKK s~~. 9 99%%		(=(==(szz::+Htyy(3HKK%""8#6#67 , t||,s4y>CI%'o
t*$KK : :D#F . &J!!*d3 &  GOOGT*  	 	;'r"   c                 $    U R                  USS9  g )N)r]  r^  rW  )r  r  s     r   	ARGUMENTSChecker.ARGUMENTS  s    D'BCr"   c           	      n    U R                  U[        UR                  U R                  U5      5      5        g r   )r  r  r  r  r  s     r   ARGChecker.ARG  s&    htxx1B1B41HIJr"   c                   ^ ^ TR                    H  nT R                  UT5        M     T R                  T5         TR                   H  nT R                  UT5        M     TR                   H  nT R                  UT5        M     T R                  [        5         T R                  (       aJ  T R                  5       (       d5  [        T R                  [        5      (       d  T R                  UU 4S j5        TR                   H  nT R                  UT5        M     SSS5        SSS5        T R                  T[        TR                   T5      5        g! , (       d  f       N== f! , (       d  f       NF= f)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                  &   > TR                  T 5      $ r   rK  rL  s   r   rx  "Checker.CLASSDEF.<locals>.<lambda>  s    t/B/B4/Hr"   N)r  rX  rN  basesr  r  r=  r  r  r   r  r?  r  r   r  r  r8   )rl   r    rP  baseNodekeywordNodestmts   ``    r   CLASSDEFChecker.CLASSDEF  s    ''DOOD$' ( ##D) JJ$/ '#}}T2  -z* $$ ,,..&tzz=AA&&'HI IIDOOD$/ & + * 	odii>? +* *)s%   A E"BEE"
E	E""
E0c                     U R                  UR                  U5        U R                  UR                  U5        U R                  UR                  U5        g r   )r;  targetrX  r   r  s     r   	AUGASSIGNChecker.AUGASSIGN  s:    DKK.

D)T*r"   c                    [        UR                  [        R                  5      (       a  SnSn[	        UR
                  5       HS  u  pE[        U[        R                  5      (       d  M&  U(       a"  U R                  [        R                  U5          OSnUnMU     US:  d  [        UR
                  5      U-
  S-
  S:  a   U R                  [        R                  U5        U R                  U5        g )NFr   T   rC   i   )r   r  r	   r3  r  r.   r  r  r   TwoStarredExpressionsrD   %TooManyExpressionsInStarredAssignmentr  )rl   r    has_starredstar_locrR   r   s         r   TUPLEChecker.TUPLE  s    dhh		**  KH!$)),a--"H$B$BDI "&K H - 6!S^h%>%Bg%MHJJDQD!r"   c                 &   UR                    H  nSUR                  ;   a(  UR                  (       d  [        UR                  U5      nO5UR                  =(       d    UR                  n[	        XAUR                  5      nU R                  X5        M     g r   )r%  r8   asnamer   r   r  )rl   r    aliasimportationr8   s        r   IMPORTChecker.IMPORT  s`    ZZEejj 25::tD||1uzz)$ejjAOOD.  r"   c                    UR                   S:X  a2  U R                  (       d   U R                  [        R                  U5        OSU l        SUR
                  -  UR                   =(       d    S-   nUR                   GH^  nUR                  =(       d    UR                  nUR                   S:X  av  [        XAU R                  5      nUR                  [        R                  ;  a*  U R                  [        R                  XR                  5        UR                  S:X  a  SU l        OUR                  S:X  a~  [        U R                  [         5      (       d"  U R                  [        R"                  X5        M  SU R                  l        U R                  [        R&                  X5        [)        X!5      nO[+        XAX#R                  5      nU R-                  X5        GMa     g )Nr  Fr   r  ra  Tr  )r   r  r  r   LateFutureImportlevelr%  r  r8   r
  r  r  all_feature_namesFutureFeatureNotDefinedr  r   rX  ImportStarNotPermittedr;  ImportStarUsedr  r   r  )rl   r    r   r  r8   r  s         r   
IMPORTFROMChecker.IMPORTFROM  sO   ;;,&&&H55t<"'D

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

(H33TB-f;-d.4jjBOOD.+  r"   c                    / n[        UR                  5       H  u  p4[        UR                  [        R
                  5      (       a8  UR                  R                   H  nUR                  [        U5      5        M     O5UR                  (       a$  UR                  [        UR                  5      5        UR                  b  M  U[        UR                  5      S-
  :  d  M  U R                  [        R                  U5        M     U R                  R                  U5        UR                   H  nU R                  Xa5        M     U R                  R!                  5         U R#                  USS9  g )NrC   r   rW  )r  r   r   r   r	   r,   r.   r&  r   rD   r  r   DefaultExceptNotLastr  r   rX  r  r  )rl   r    handler_namesrR   r  exc_typer\  s          r   TRYChecker.TRY!  s    #DMM2JA',,		22 ' 1 1H!((X)>? !2$$[%>?||#C,>,B(BH997C 3 	""=1YYEOOE( !Dv.r"   c                 n   UR                   c  U R                  U5        g UR                   U R                  ;   a  U R                  U5         U R                  R	                  UR                   5      nU R                  U5        U R                  U5         U R                  R	                  UR                   5      nUR                  (       d*  U R                  [        R                  XR                   5        U(       a  X R                  UR                   '   g g ! [
         a    S n Nf = f! [
         a     N?f = fr   )
r8   r  r  rD  r  r  r   r  r   r  )rl   r    prev_definitionrM  s       r   EXCEPTHANDLERChecker.EXCEPTHANDLER7  s    99% 99

"  &	#"jjnnTYY7O 	T"D!	FjjnnTYY/G <<H33T99E $3JJtyy! 1  	#"O	#"  		s$   %D %D' D$#D$'
D43D4c                 T   U R                  UR                  U5        UR                  (       a_  [        UR                  SU R                  5      (       a  U R                  UR                  U5        OU R                  UR                  U5        U R                  UR                  U5        g )N	TypeAlias)r  r  r   r{  r  rX  rx  r  s     r   	ANNASSIGNChecker.ANNASSIGNd  sl    doot4::$//;HH%%djj$7

D1T*r"   c                 r   UR                   n[        UR                  UR                  5       Hv  u  p4[	        U[
        R                  [
        R                  45      (       a@  [        U5      (       d  [        U5      (       a   U R                  [        R                  U5        UnMx     U R                  U5        g r   )r.  zipopscomparatorsr   r	   IsIsNotr2   r  r   	IsLiteralr  )rl   r    r.  r6  r-  s        r   COMPAREChecker.COMPAREo  s    yyTXXt'7'78IBrCFFCII#677/55/66 H..5D 9 	D!r"   c                 H    U R                  U5        U R                  U5        g r   )rD  r  r  s     r   _match_targetChecker._match_target  s    T"D!r"   c              #   *  #    [         R                  " 5        n[        R                  S:  aH  UR	                  U R                  [        5      5        UR                   H  nU R                  X15        M     S v   S S S 5        g ! , (       d  f       g = f7f)N)r      )	
contextlib	ExitStackr   r   enter_contextr  rT  rX  rX  )rl   r    r  params       r   rN  Checker._type_param_scope  sb     !!#s7*!!$--	":;!--EOOE0 . $##s   BA!B9	B
BBc                 ^    U R                  U5        U R                  UR                  U5        g r   )rD  r  r  r  s     r   TYPEVARChecker.TYPEVAR  s$    T"..tzz4@r"   c                     U R                  UR                  U5        U R                  U5         U R                  UR                  U5        S S S 5        g ! , (       d  f       g = fr   )rX  r8   rN  r  r   r  s     r   	TYPEALIASChecker.TYPEALIAS  sB    		4(##D)224::tD *))s   A
A")r  rQ  r  r  r  r  r  r  r  r  r   r  r  r  r  r   )rv   rw   rx   ry   rz   r	   ModulerX  r:  r=  r  r?  r  r_  ListComprV  SetCompGeneratorExpDictCompr  rg  r  r  r  rQ  r  builtin_varsr  _MAGIC_GLOBALSr  r  r(  r}   _customBuiltInsupdater   r   r  r  r  r   r  setterr  r  r  contextmanagerr  r  r  r  r	  r  r  r  r  r  r*  r/  r;  rD  rN  r  r  r5  r  rA  r`  rc  rX  doctestDocTestParserget_examplesrl  ry  r  r  r  r  r  r  DELETEFORASYNCFORWHILEWITHWITHITEM	ASYNCWITHEXPRASSIGNPASSBOOLOPUNARYOPSET	ATTRIBUTESTARREDNAMECONSTANT	NAMEDEXPRr  r  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SETCOMPr5  r?  BREAKrC  rG  AWAIT	YIELDFROMrQ  ASYNCFUNCTIONDEFrO  ri  rl  ru  ry  r  LISTr  r  r  TRYSTARr  r  r  MATCH
MATCH_CASE
MATCHCLASSMATCHORMATCHSEQUENCEMATCHSINGLETON
MATCHVALUEr  MATCHASMATCHMAPPING	MATCHSTARrN  r  	PARAMSPECTYPEVARTUPLEr  r{   ru   r"   r   r  r    sY   < 	

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)=)= ' ' 
 
(	
 , "//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"   r  )Srz   r  r  r	   r  r  r  r  r  rer=   r   r  pyflakesr   rf  PYPYr_  r  	Formatterrm  r  r   r8  r9  r  r!   r/   r%   r2   r9   compilerG   rJ   rK   rL   rM   	frozensetr  r?   ra   r8  rc   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r   r  r  r  r  r   r2  r=  r?  rT  rV  rX  r\  r^  r  r   rl  rt  r{  r  r  r  r  r  r  ru   r"   r   <module>r     s     
     	 	  
  s'(8}&&(.. + WWcll#	F: O,ZZ
+ ::m$zz./JJx 	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"   