bg6vdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZe jdkZee dZeeZe jjZdZejejfZerdZndZd Zerd Znd Zd Z d Z!e j"dZ#d$de%dDZ&e j"e#j'de&dzZ(e j"dZ)e j"dZ*e j"dZ+e j"dZ,e j"dZ-e j"dZ.e/dZ0dZ1dZ2Gdde3Z4dZ5de4fd Z6d!Z7d"Z8Gd#d$Z9Gd%d&e9Z:Gd'd(e:Z;Gd)d*Z<Gd+d,Z=Gd-d.e:Z>Gd/d0e>Z?Gd1d2e>Z@Gd3d4e>ZAGd5d6e@ZBGd7d8e9ZCGd9d:e9ZDGd;de9ZFGd?d@e:ZGGdAdBe:ZHGdCdDe9ZIGdEdFe3ZJGdGdHeJZKGdIdJeJZLGdKdLeJZMGdMdNeJZNGdOdPeNZOGdQdRZPGdSdTZQgdUZRdVZSe/dWZTdXZUdYZVdZZWd[ZXGd\d]ZYd^ZZd_Z[d`Z\Gdadbej]Z^dcZ_GdddeZ`dS)fz] Main module. Implement the central Checker class. Also, it models the Bindings and Scopes. N)messages)pypy_version_infoct|tjr|jgSt|tjr"|j|jzgd|jDzSdS)Ncg|]}|gSr ).0hdls a/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pyflakes/checker.py z#getAlternatives..#s%B%B%Bse%B%B%B) isinstanceastIfbodyTryorelsehandlers)ns r getAlternativesrsh!SVx!SWC!"%B%Bqz%B%B%BBBCCrct|tjo;t|jtt t t dfSN)rrConstantvaluebooltypeEllipsisnodes r _is_singletonr!)s> tS\ * * G tzD$x..$t**#E F F rcNt|tjtjfSr)rr NameConstantrrs r r!r!/s$!13< @AAArcrt|tjotd|jDS)Nc34K|]}t|VdSr) _is_constantr elts r z%_is_tuple_constant..6s* 3 3#L   3 3 3 3 3 3r)rrTuplealleltsrs r _is_tuple_constantr-3s74## 4 3 3 3 3 333rcTt|tjpt|Sr)rrrr-rs r r&r&;s"$ --I1CD1I1IIrct|tjtjtjfpt |pt |Sr)rrStrNumBytesr!r-rs r r&r&>sA tcgsw : ; ; % $   % t $ $ rc@t|ot| Sr)r&r!rs r _is_const_non_singletonr4Fs    9mD&9&9"99rct|tjr |j|kp$t|tjo |j|kSr)rrNameid Attributeattr)r names r _is_name_or_attrr;JsB D#( # # 74 @ D#- ( ( >TY$->rz ^#\s*type:\s*cng|]2}t|#t|3Sr )chrisalnumr is r r r Ts3NNNaSVV^^=M=MN3q66NNNrzignore([z]|$)z^(\(.*?\))\s*->\s*(.*)$z \(([^()]*)\)z[#0+ -]*z (?:\*|\d*)z(?:\.(?:\*|\d*))?z[hlL]?zdiouxXeEfFgGcrsa%c:|||}|J|Sr)match)regexstringposrDs r _must_matchrHds& KK $ $E     Lrc<fd}t|S)zParses the string component of a `'...' % ...` format call Copied from https://github.com/asottile/pyupgrade at v1.20.1 c3Kd}d}d}d}|tkr|sA d|}|}|dz }d}n#t$r|ddfVYdSwxYwt|}|r*|d}|}nd}tt|}|pd}|}tt|}|pd} |}tt|} | pd} | }tt|} |} n#t$rtdwxYw|dz }||| | | f} ||| fVd}|}|tk|rtddS)NrF%Tz"end-of-string while parsing format) lenindex ValueErrorMAPPING_KEY_RErDgroupendrHCONVERSION_FLAG_REWIDTH_RE PRECISION_RE LENGTH_RE IndexError) string_start string_endin_fmtrA key_matchkeyconversion_flag_matchconversion_flag width_matchwidthprecision_match precision conversionfmtss r _parse_innerz*parse_percent_format.._parse_innerps^   #a&&jj+ !"QA "#JFA!FF "LMM*D0000FF+00A66 #//!,,C! AAC(34F1(M(M%"7"="="?"?"G4)--//)(Aq99 #))++3tOO%%"-lAq"A"A+1133;t #'')) 1a004466K!"1JJ!KKK$%IJJJKQOUIzJ Z/0#5555 Y#a&&jj\  CABB B C CsAA A FF8)tuple)rerfs` r parse_percent_formatrhjs8 5C5C5C5C5Cn   rceZdZdZdZdZdS) _FieldsOrderzFix order of AST node fields.c|j}d|vrdj}nd|vrdj}ndj}tt||dS)Niter generatorsrT)r\reverse)_fieldsfindrgsorted)self node_classfields key_firsts r _get_fieldsz_FieldsOrder._get_fieldssW# V   II V # #$)II IVF 4@@@AAArc:||x||<}|Sr)rv)rrrsrts r __missing__z_FieldsOrder.__missing__s$$($4$4Z$@$@@Z6 rN)__name__ __module__ __qualname____doc__rvrxr rr rjrjs;'' B B BrrjcLi}|D]}||ddz||<|S)z| Simplest required implementation of collections.Counter. Required as 2.6 does not have Counter in collections. rrL)get)itemsresultsitems r counterrs; G11 D!,,q0 Nrc#K||jD]q}|r||vr t||d}t|tjr|V9t|t r#|D] }t|tjr|V!rdS)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__getattrrrASTlist)r omit _fields_orderr:fieldrs r iter_child_nodesrsdn-    DDLL dD)) eSW % % KKKK t $ $   dCG,,JJJ  rcVt|tjr|jSt tdr!t|tjr|jSt|tjrtd|jDSt|tj r|j St|tj r1t|}dddd}| |j|St|tjr|jSt#S)Nr2c34K|]}t|VdSrconvert_to_valuer@s r r)z#convert_to_value..s+<#>"v D#) $ $"<<$)<<<<<< D#' " ""v D#( # #"$'''    ## K     D#* + +"z!!!rc\t|tjot|dkS)NNotImplemented)rrr6 getNodeNamers r is_notimplemented_name_noders' dCH % % O+d*;*;?O*OOrc*eZdZdZdZdZdZdZdS)Bindingar Represents the binding of a value to a name. The checker uses this to keep track of which names have been bound and which names have not. See L{Assignment} for a special type of binding that is checked with stricter rules. @ivar used: pair of (L{Scope}, node) indicating the scope and the node that this binding was last used. c0||_||_d|_dSNF)r:sourceused)rrr:rs r __init__zBinding.__init__ s   rc|jSr)r:rrs r __str__zBinding.__str__s yrc~d|jj|j|jjt |S)Nz)<{} object {!r} from line {!r} at 0x{:x}>)formatrryr:rlinenor7rs r __repr__zBinding.__repr__s8:AA N # I K  tHH    rcLt|to|j|jkSr)r Definitionr:rrothers r redefineszBinding.redefiness %,,Hej1HHrN)ryrzr{r|rrrrr rr rrs_      IIIIIrrceZdZdZdS)rz7 A binding that defines a function or a class. Nryrzr{r|r rr rrrrc(eZdZdZfdZdZxZS)Builtinz-A definition created for all Python builtins.cLt|ddSr)superr)rrr:rs r rzBuiltin.__init__&s# t$$$$$rchd|jj|jt |S)Nz<{} object {!r} at 0x{:x}>)rrryr:r7rs r rzBuiltin.__repr__)s0+22 N # I tHH   r)ryrzr{r|rr __classcell__rs@r rr#sM77%%%%%       rrceZdZdZdS)rzS A dictionary key of a type that we cannot or do not check for duplicates. Nrr rr rr1rrrc$eZdZdZdZdZdZdS)rzY A dictionary key which is a variable. @ivar item: The variable AST object. c|j|_dSr)r7r:)rrrs r rzVariableKey.__init__=sG rcB|j|jko|j|jkSr)rr:)rrcompares r __eq__zVariableKey.__eq__@s%   / & LDI % rc*t|jSr)hashr:rs r __hash__zVariableKey.__hash__FsDIrN)ryrzr{r|rrrr rr rr7sK    rrcLeZdZdZdfd ZdZdZedZdZ xZ S) Importationz A binding created by an import statement. @ivar fullName: The complete name given to the import statement, possibly including multiple dotted components. @type fullName: C{str} Ncl|p||_g|_t||dSr)fullName redefinedrr)rrr:r full_namers r rzImportation.__init__Ss6!)T  v&&&&&rct|tr|j|jkSt|to|j|jkSr)rSubmoduleImportationrrr:rs r rzImportation.redefinesXsB e1 2 2 3=EN2 2%,,Hej1HHrcV|jdd|jk S)z.Return whether importation needs an as clause..)rsplitr:rs r _has_aliaszImportation._has_alias^s'=&&s++B/49<<TY & &=6)DI5 5= rcz|j|jkrd|jd|jd|jSd|jd|jS)Nfrom z import r)rr:rrs r rz ImportationFrom.source_statementsO >TY & &O4;OOOODIOO O;4;;; ;; ;rr)ryrzr{rrrrrrs@r rrsg 2 2 2 2 2 2!!!<<X<<<<eZdZdZfdZedZdZxZS)StarImportationz3A binding created by a 'from x import *' statement.cntd||dz|_||_dS)N*z.*)rrr:r)rrr:rrs r rzStarImportation.__init__s5 f%%%4K  rcd|jzdzS)Nrz import *rrs r rz StarImportation.source_statements&44rcR|jdr|jS|jSr)rrrr:rs r rzStarImportation.__str__s+ = ! !# & & ( (9 r) ryrzr{r|rrrrrrs@r rrsh==55X5rrc"eZdZdZfdZxZS)FutureImportationzs A binding created by a from `__future__` import statement. `__future__` imports are implicitly used. c`t||d||f|_dS)N __future__)rrr)rrr:rscopers r rzFutureImportation.__init__s. v|444FO rryrzr{r|rrrs@r rrsB $$$$$$$$$rrceZdZdZdS)Argumentz3 Represents binding a name as an argument. Nrr rr rrrrrceZdZdZdS) Assignmenta 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. Nrr rr rrsrrceZdZdZdS)NamedExprAssignmentzB Represents binding a name with an assignment expression. Nrr rr rrrrrceZdZdZdZdS) Annotationa Represents binding a name to a type without an associated value. As long as this name is not assigned a value in another binding, it is considered undefined for most purposes. One notable exception is using the name as a type annotation. cdS)zAAn Annotation doesn't define any name, so it cannot redefine one.Fr rs r rzAnnotation.redefinessurN)ryrzr{r|rr rr rrs-rrceZdZdS)FunctionDefinitionNryrzr{r rr rrDrrceZdZdS)ClassDefinitionNrr rr rrrrrc"eZdZdZfdZxZS) ExportBindinga A binding created by an C{__all__} assignment. If the names in the list can be determined statically, they will be treated as names for export and additional checking applied to them. The only recognized C{__all__} assignment via list/tuple concatenation is in the following format: __all__ = ['a'] + ['b'] + ['c'] Names which are imported and not otherwise used but appear in the value of C{__all__} will not have an unused import warning reported for them. c$d|vr:t|tjr t|dj_ng_fd}t|jtjtjfr||jnt|jtjr|j}t|j tjtjfr|j }|j }||t|tjr|}n3t|tjtjfr ||n,n+t|j tjtjft ||dS)N__all__c|jD];}t|tjrj|j._add_to_namessK! . .dCG,,.J%%df--- . .r) rr AugAssignrr rListr*BinOprightleftrr) rrr:rrr  currentValuerrrs ` r rzExportBinding.__init__sx   *VS]"C"C eI.455DJJDJ . . . . . flSXsy$9 : :  M&, ' ' ' '  ci 0 0 !)rryr7dictr)rr scope_clss r rzScope.__repr__5sBN+ G9GGBtHHGGGt1D1DGGGGrN)ryrzr{ importStarredrr rr rr2s-MHHHHHrrceZdZdS) ClassScopeNrr rr rr:rrrc4eZdZdZdZhdZfdZdZxZS) FunctionScopezp I represent a name scope for a function. @ivar globals: Names declared 'global' in this function. F>__tracebackhide____traceback_info____traceback_supplement__ct|j|_d|_d|_dSr)rr alwaysUsedcopyglobals returnValue isGenerator)rrrs r rzFunctionScope.__init__HsD ++--  rc#K|D]=\}}|js1|dkr+||jvr"|jst |t r||fV>dS)zR Return a generator for the assignments which have not been used. _N)rrr' usesLocalsrr)rrr:bindings r unusedAssignmentszFunctionScope.unusedAssignmentsOs|"ZZ\\ $ $MD'L $CKK ,,-w 33-Gm###  $ $r) ryrzr{r|r,r%rr.rrs@r r r >si J...J!!!!! $ $ $ $ $ $ $rr ceZdZdS)GeneratorScopeNrr rr r0r0\rrr0ceZdZdZdZdZdS) ModuleScopezScope for a module.TFN)ryrzr{r|_futures_allowed_annotations_future_enabledr rr r2r2`s""'rr2ceZdZdZdS) DoctestScopezScope for a doctest.Nrr rr r6r6fsrr6ceZdZdZdZdS) DummyNodez._bare_name_is_attrs}k**  Eu}}uT{O<<<$K&.8<$$U4[%:;;urctD]7}||vr1t||to||jtvcS8dSr)rHrrrrI)r:rrKs r _module_scope_is_typingz2_is_typing_helper.._module_scope_is_typingsck**  Eu}}uT{K88;$K(N: ur)rrr6r7r8rr9)r rJrKrLrNs `` r _is_typing_helperrOs       tSX & & (  tw ' '  tS] + + ( tz38 , , ( # #DJM 2 2 (  TY ' ' rc,t|fd|S)z Determine whether `node` represents the member of a typing module specified by `typing_attr`. This is used as part of working out whether we are within a type annotation context. c|kSrr )r typing_attrs r z_is_typing..s Q+-=rrO)r rRrKs ` r _is_typingrUs! T#=#=#=#={ K KKrc&t|d|S)z Determine whether `node` represents any member of a typing module. This is used as part of working out whether we are within a type annotation context. cdSNTr )rs r rSz'_is_any_typing_member..sTrrT)r rKs r _is_any_typing_memberrYs T>>; ? ??rct|jtjtjfo$t fd|jjDS)Nc3:K|]}t|dVdS)overloadN)rU)r decrKs r r)z%is_typing_overload..sC   sJ 4 4      r)rrr FunctionDefAsyncFunctionDefanydecorator_list)rrKs `r is_typing_overloadrbs^5<#/33G!HII      |2     rceZdZdZdZdZdS)AnnotationStaterrLN)ryrzr{NONESTRINGBAREr rr rdrds D F DDDrrdcFtjfd}|S)Ncx|5|g|Ri|cdddS#1swxYwYdSr)_enter_annotationrrargskwargsfuncs r in_annotation_funcz)in_annotation..in_annotation_funcs  # # % % / /4.t...v.. / / / / / / / / / / / / / / / / / /s /33 functoolswrapsrorps` r in_annotationru9_T///// rcFtjfd}|S)Nc|tj5|g|Ri|cdddS#1swxYwYdSr)rkrdrgrls r rpz0in_string_annotation..in_annotation_funcs  # #O$: ; ; / /4.t...v.. / / / / / / / / / / / / / / / / / /s :>>rqrts` r in_string_annotationryrvrct|ts|d}t|dt t jfdS)NzUTF-8Tc$tdS)Nr)next)linessr rSzmake_tokens..s4s+;+;r)rbytesencoderl splitlinesrgtokenize)coder}s @r make_tokensrsb dE " "${{7## && ' 'E "#;#;#;#;<< = ==rc:eZdZdZdZdZexZxZxZZ exZ xZ Z dS)_TypeableVisitorzCollect the line number and nodes which are deemed typeable by PEP 484 https://www.python.org/dev/peps/pep-0484/#type-comments c"g|_i|_dSr)typeable_linestypeable_nodesrs r rz_TypeableVisitor.__init__s  rc|j|j||j|j<||dSr)rr rr generic_visitrrr s r _typeablez_TypeableVisitor._typeablesD ""4;///+/DK( 4     rN) ryrzr{r|rr visit_Assign visit_Forvisit_FunctionDef visit_Withvisit_AsyncForvisit_AsyncFunctionDefvisit_AsyncWithr rr rrs_ !!!!!!AJILI9I0:@IINI+ooorrct}||tjt}|D]\}}}}}|t jks4t|rt|rM|\}}tj |j |} | dkrs|j |j | dz } || ||f|S)NrrL)rvisit collections defaultdictrrCOMMENTTYPE_COMMENT_RErDTYPE_IGNORE_REbisect bisect_rightrrr ) treetokensvisitor type_commentstptextstartr+ridxr s r _collect_type_commentsrs  G MM$+D11M!'22D%Ah&&&#))$//'$$T**'   !'"8&AA !88 %g&j?ej@fd$ZAe)d%ZBd&ZCdPd'ZDd(ZEd)ZFd*ZGd+ZHeIjJjKZLd,ZMeNd-ZOePd.ZQd/ZReDxZSxZTxZUxZVxZWxZXxZYxZZZ[eRZ\eDxZ]xZ^xZ_xZ`xZaxZbZcd0Zdd1Zed2Zfd3Zgd4Zhd5Ziejrd6ZkneRxZlxZmxZnZkeDxZoxZpZqeRxZrxZsxZtxZuxZvZweRxZxxZyxZzxZ{xZ|xZ}xZ~xZxZxZxZxZxZxZxZxZxZxZxZxZxZxZxZxZxZxZxZxZZd7ZeDxZxZZdZd8Zd9Zd:ZeZd;Zd<ZeZd=ZexZxZZd>Zd?ZeZd@ZdAZexZZdBZeZdCZdDZdEZdFZdGZdHZeZdIZdJZdKZeZdLZdMZdNZeDxZxZxZxZZeDxZZdOZexZxZZdS)QCheckera I check the cleanliness and sanity of Python code. @ivar _deferredFunctions: Tracking list used by L{deferFunction}. Elements of the list are two-tuples. The first element is the callable passed to L{deferFunction}. The second element is a copy of the scope stack at the time L{deferFunction} was called. @ivar _deferredAssignments: Similar to C{_deferredFunctions}, but for callables which are deferred assignment checks. rNFPYFLAKES_BUILTINS,z(none)PYFLAKES_DOCTESTr ci|_g|_g|_g|_g|_||_|r|j||_||_ tj t|g|_ n #t$rtd|zwxYwdg|_||_t#|||_|jD]%}|dt)|&||d|_||jd|_||jd|_|j dd=||dS)Nz$No scope implemented for the node %rr TrL) _nodeHandlers_deferredFunctions_deferredAssignments deadScopesrfilenamebuiltInsunion withDoctestr_ast_node_scoper scopeStackKeyError RuntimeErrorexceptHandlersrootr_type_comments addBindingrhandleChildren _in_deferred runDeferredpopScopecheckDeadScopes)rrrrbuiltinsr file_tokensbuiltins r rzChecker.__init__Hs"$$&!    : M//99DM& N&6tDzzBDDEDOO N N NELMM M N!d 4T;GG} 4 4G OOD''"2"2 3 3 3 3 D!!!  0111#' 2333%)! OABB   s ,BBcd|j||jdd|jfdS)a{ Schedule a function handler to be called just before completion. This is used for handling function bodies, which must be deferred because code later in the file might modify the global scope. When `callable` is called, the scope at the time this is called will be restored, however it will contain any new bindings added to it. N)rr roffsetrrcallables r deferFunctionzChecker.deferFunctionjs5 &&$/!!!2Ddk'RSSSSSrcd|j||jdd|jfdS)zl Schedule an assignment handler to be called just after deferred function handlers. N)rr rrrs r deferAssignmentzChecker.deferAssignmentus5 !(((DOAAA4F )TUUUUUrcH|D]\}}}||_||_|dS)zV Run the callables in C{deferred} using their associated scope stack. N)rr)rrdeferredhandlerrrs r rzChecker.runDeferred|s?'/   "GUF#DO DK GIIII  rcrt|jdkot|jdtS)NrerL)rMrrr6rs r _in_doctestzChecker._in_doctests2DO$$)=4?1-|<< >rcZtd|jDsdS|jjS)Nc3@K|]}t|tVdSr)rr2)r rs r r)z)Checker.futuresAllowed..s@11e[11111111rF)r+rrr3rs r futuresAllowedzChecker.futuresAllowedsB11 $11111 5z**rcb|dusJt|jtrd|j_dSdSr)rrr2r3rrrs r rzChecker.futuresAlloweds=~~~~ dj+ . . 0*/DJ ' ' ' 0 0rcX|jd}t|tsdS|jS)NrF)rrr2r4)rrrs r annotationsFutureEnabledz Checker.annotationsFutureEnableds."%-- 500rcb|dusJt|jtsJd|j_dSrX)rrr2r4rs r rz Checker.annotationsFutureEnableds7}}}}$*k2222215 ...rc|jdS)Nr)rrs r rz Checker.scopesr""rch|j|jdSr)rr rpoprs r rzChecker.popScopes, t224455555rc  |jD]e t tr d}|rt|tsd}|r(t |j} fd|jD}ngx}}|r jsYtj |j dkr1|D].}| tj dj|/ jrg} D]8}t|t"r!||_||j9dt-|}|D]/}| tj dj||0 D]}t|t0r|jp|j|v}|s5tj} | | |jt7||jD]h} t|| t<r tj} n|r:tj } | | | |j|jiϐgdS)z Look at scopes which have been fully examined and report names in them which were imported but unused. rNcg|]}|v| Sr r )r r:rs r r z+Checker.checkDeadScopes..s.!5(((((r __init__.py, )!rrrr~rsetr rospathbasenamerreportrUndefinedExportrvaluesrrr rjoinrqImportStarUsagerr: UnusedImportstrr getParent FOR_TYPESImportShadowedByLoopVarRedefinedWhileUnused) rr all_binding all_names undefinedr: from_listr-rrmessgr rs @r rzChecker.checkDeadScopess _5 K5 KE%,, ))I..K #:k=#I#I #"  + 122 %0%6 )+* I N*C7##DM22mCC )CC H$<$))$4$;TCCCC& N "I#(<<>>??%g???+6GL%,,W-=>>> $ &*;*; < >L  !E$9 9 9))%*@%NN N  !E$9 9 9))%1GNN N%%  "  "    rcD|D]}||||rdSdS)NTF)r)rrr ancestorsras r descendantOfzChecker.descendantOf s<  A%%dAt44 tt urcn|} ||jurdS||}t||r|S3r)rrr)rrr ancestor_typeparents r _getAncestorzChecker._getAncestorsK ""t^^F++F&-00   rc||ttjSr)rrgrrkeysrs r getScopeNodezChecker.getScopeNodes/  uW-D-I-I-K-K'L'LMMMrc||||j}t|}|r7|D]4}||||||||z rdS5dS)zATrue, if lnode and rnode are located on different forks of IF/TRYTF)rrrr)rrrrancestorpartsrs r differentForkszChecker.differentForkss))% BB))    $$UE8<<$$UE8<<= 44 urc|jdddD] }|j|vrn||j}|rnt|tsX|||js<||j}t|trBt|tr-| tj ||j|jn||j ur~|jsv||ra|jdkst|trAt!||js,| tj||j|jnDt|tr/||r|j||j|j vr|j |jj|_|j|j vst|t(sd}t|t*rZt|j|t,r:|dz}t|t*r t|j|t,:||j||j<dSdS)z Called when a binding is altered. - `node` is the statement responsible for the change - `value` is the new value, a Binding instance Nrr+rL)rr:r~rrrrrrrrrrrrrrbrrr rrr0)rrr rrexisting parent_stmt cur_scope_poss r rzChecker.addBinding's{_TTrT*  EzU""#99UZ((  0Z':: 0''ho>> 0..66K(K00 0Z Y5W5W 0 H< %*ho????$*$$%]C/4x/H/HCs**j;.O.O*.xII+KK = $ej(/CCCHk22 0ux7P7P 0"))$/// : # #EJ/4EJ :TZ ' 'z%/L/L 'M5"566 #4?=9>JJ #" 5"566 #4?=9>JJ # :?DOM *5: 6 6 6 ( 'rctjdrtdt |||dS)NPYFLAKES_ERROR_UNKNOWNzUnexpected type: )renvironr~NotImplementedErrorrrrs r _unknown_handlerzChecker._unknown_handlerXsR :>>2 3 3 &%&F$t**&F&FGG G    % % % % %rc |j|S#t$r|j}YnwxYwt |||jx|j|<}|Sr)rrryupperrr)rrrsnodeTypers r getNodeHandlerzChecker.getNodeHandlerhsw 3%j1 1 3 3 3!*0022HHH 33: (D14 4  :&s #55ct|}|sdSd}d}|jdddD]}t|tr|dkrdS|dur&||d}t|t r|jsY|dkrt|trn||}t|tj r?t|j tj r | tj| |j|f||_||}t|t$r?|r+ |j|f||j_n#t*$rYnwxYwdS#t*$rYnwxYw|p|j}|durt|t.}|rg} |jdddD]V}|D]?}t|t2r(|j|f|_| |j@Wdt9| } | tj||| dS|dkr*t<j |j!dkrdS|tDj#vrt|jtrdSd|j$dvr#| tj%||dSdS) NrrFprintr__path__r NameError)&rrrrr~r_in_postponed_annotationrrrropRShiftrrInvalidPrintSyntaxrrrrrrrr0rrr rrqrrrrrr<r r UndefinedName) rrr r: in_generatorsrrr-rrrs r handleNodeLoadzChecker.handleNodeLoadrs34    F  _RVV,( B( BE%,, ;&&FF"e++iid++G':.. t7T w:gw#?#?--vsy11C"69cj99CKK ;TBBB $(J#5d  $Ka--!,,..26*d1Caj)..#      *@U-@ME)) *5. A A  IR0 ; ;$||~~;;G!'?;;;(, D'9 !(()9::: ; &"3"344I KK0$i H H H F :  "'"2"24="A"A]"R"R F )/ / /Jtz:4V4V / F d1"5 5 5 KK.d ; ; ; ; ; 6 5s7 AE>E+*E>+ E85E>7E88E>> F  F cxt|}|sdSt|jtr||jvr|jddD]}t|tt fs||vo ||j}|r]|d|jurN||jjvr@|tj ||jd|||j n| |}t|tjr|jt!||}nt|t"tjfs ||jkr&||st+||}n|dkrlt|jt rRt|jtjtjtjfrt1||j|j}nBt2r+t|tjrt7||}nt9||}|||dS)NrrrLr)rrrr rr2rr'rrUndefinedLocalrrr AnnAssignrrr comprehensionrisLiteralTupleUnpackingrAssignr r PY38_PLUS NamedExprrrr)rrr r:rrrr-s r handleNodeStorezChecker.handleNodeStores/4    F dj- 0 0 T5K5K"-  !%-)EFFu}9t)9DGtz11d$*BT6T6TKK 7 %d 0 3T5;;MOOOEnnT** k3= 1 1 -k6G6O t,,GG  i1B%C D D -t44400==5dD))GG !!4:{33")Z >"$D$*?LLGG  -:k3=AA -)$55GG t,,G g&&&&&rcXfd}t}|sdS|rdSt|jtr/||jjvr!|jj|dS |j|=dS#t $r%|tj |YdSwxYw)Nctdd}|rFt|tjtjtjfrdSt|dd}|FdS)zN Return `True` if node is part of a conditional body. rNTF)rrrrWhileIfExp)currentr s r on_conditional_branchz7Checker.handleNodeDelete..on_conditional_branchshd$6==G Eg 39'EFF 4!'+=tDD E5r) rrrr r'removerrrr%)rrr r6r:s ` r handleNodeDeletezChecker.handleNodeDeletes     4    F " "  F dj- 0 0 @TTZ=O5O5O J  % %d + + + + + @Jt$$$ @ @ @ H2D$?????? @s0A::+B)(B)c#XK|j|c}|_ dV||_dS#||_wxYwr)_in_annotation)rrann_typeorigs r rkzChecker._enter_annotationsH$($7!d! ' EEE"&D   $D  & & & &s )c:|jtjkp|jSr)r:rdrgrrs r r!z Checker._in_postponed_annotations"  ?#9 9 *  ) rc &|j|dD]\\}}}|ddd}t|}|rQ|ddd|df}n|f}|D]K}|tj |j |t||||tjLdS)Nr :rLrr<re)rr~rstrip TYPE_FUNC_RErDrQreplacerrrpartialhandleStringAnnotationr8rCommentAnnotationSyntaxError)rrr rr:comment func_matchrparts r _handle_type_commentszChecker._handle_type_commentss&-1-@-D-DT2-N-N   ) VZ'mmC++A.4466G%++G44J #$$Q''//R88$$Q''--// !   ""9#4/)FJ779$$   rc||t||D]}|||dS)Nr)rIr handleNode)rrrrr s r rzChecker.handleChildren)sS ""4((($T555 ( (D OOD$ ' ' ' ' ( (rct|tjr(|j|jgzD]}t |dsdSdSdS)Nr,FT)rrr-targetsrr)rrr childs r r,zChecker.isLiteralTupleUnpacking.s] dCJ ' '  4 ! !uf--! 55!4   rct|tjp8t|tjot|jtjS)z} Determine if the given node is a docstring, as long as it is at the correct place in the node tree. )rrr0Exprrrs r isDocstringzChecker.isDocstring5sD $((NZch-G-G.M-7 CG-L-L Nrc t|tjr|j}t|tjsdSt st r |jdz }n%|j|j dz dz }|j|fS)N)NNrL ) rrrQrr0PYPYr.rrecount)rrr doctest_linenos r getDocstringzChecker.getDocstring=s dCH % % :D$(( <  B9 B![1_NN"[46<<+=+==AN''rc|dS|jrGt|dd6|xj|jdz c_|xj|jdz c_|jr6t |t js||sd|_|xj dz c_ |j |_ ||_ | |j }|||xj dzc_ dS#|xj dzc_ wxYw)NrrrLF)rrrr:rrr ImportFromrR nodeDepthrrrr)rrr rrs r rLzChecker.handleNodeKs < F ; .74488D KK4;q> )KK OOt{1~ -OO   ( 4(H(H ((,(8(8(>(> ("'D  !#~ & ))$.99G GDMMM NNa NNNNDNNa NNNNNNs 4%C++C=cT ||jd\}}|o||}n#ttf$rYdSwxYw|sdS|j}|jdg|_|jpd}|td|jdvr#| dtd|D]} tj |j d}|d|z|jz|d|jzdzf|_||||_e#t"$rQ} ||jz| jz|jdz| jpdzf} |t&j|| Yd} ~ d} ~ wwxYw|||_dS)Nr)rrr+z rL)rXr_getDoctestExamplesrOrWrrrr6rrrparserrindentr SyntaxErrorrrDoctestSyntaxErrorr) rrr docstring node_linenoexamples saved_stack node_offsetexamplerepositions r handleDoctestszChecker.handleDoctests_s '+'8'81'F'F $Y  HT%=%=i%H%HHHJ'    FF   Fo ?1-.k+V  |$$$ doa( ( ( OOD'#,, / / / * *G *y== +1~ ;gnL*1~>BD ##D))))  I I I''.818C#NQ.!(-a@B H7xHHHHHHHH I %s(:=AA D// F 9AFF c tj|}n(#t$r||||YdSwxYw|j}t |dks t |dtjs||||dS|jdj}tj |D]"} d| j vrd| j vr|| _ || _ #| ||dS)NrLrrr:)rr_rarrrMrrQrwalk _attributesrr:rL) rrrer ref_linenoref_col_offseterrrrparsed_annotation descendants r rDzChecker.handleStringAnnotations 9Q<>DGSX!>!>> KKT1 % % % F IaL.(#455 7 7J 666 J$:::$. !(6 % )400000s !<<c ttjrLt jjjjj tj dSj r6ttjfddSdS)NcSrr ) annotationfnr rrsr rSz*Checker.handleAnnotation..srr$ D'A'Ar)rrr0rrrrCrDrerr:rForwardAnnotationSyntaxErrorrrurrL)rrrvr rws```@r handleAnnotationzChecker.handleAnnotations j#' * * .   y0+ !%5         * .w122B   AAAAAAA B B B B B OOJ - - - - -rcdSrr rs r ignorezChecker.ignores rct|jdrO|tj5||ddddS#1swxYwYdSt|jdrh||j|t|jtj r|j}nRt|jtj r1t|jjtj r |jj}nd}|t|j dkr||j|n||j d||tj5|j ddD]}||| dddn #1swxYwY||j|dSt|j|jrD|5||ddddS#1swxYwYdS||dS)NLiteral AnnotatedrerrL)r;rrkrdrfrrLrslicerr*IndexrMr,rrYr)rrr slice_tupleargs r SUBSCRIPTzChecker.SUBSCRIPTs DJ 2 2# *''(<== * *##D))) * * * * * * * * * * * * * * * * * * dj+ 6 6 * OODJ - - -$*ci00 #"j tz3955 #tz/;; ##j. " "c+*:&;&;a&?&? D1111 0 3T:::++O,@AA33*/333T22223333333333333333 OODHd + + + + +$TZAA *++--..''---..................##D)))))s5AAA)F;;F?F?H44H8;H8c  ttjjj}n9#t $r,}tj|Yd}~dSd}~wwxYwddttfd}|D]\}}}}||rdS| tt|}n:#t $r-}tj|Yd}~dSd}~wwxYw|D]A\}} } }| )d| vr%tjddS|| rdSBtdj Dstdj DrdStttj } dj D} | z } | z }z| | zz }| rKtjdt#d | D|rAtjdt#||rMtjdt#d |DdSdS) Nrc|dS|d\}}}|d\}}} t|}dur"tjdSdn#t $rYnwxYw|dkr/dur"tjdSd}dz t |tr|n|dS)z9Returns True if there is an error which should early-exitNFr[Tr<rL) partitionintrrStringDotFormatMixingAutomaticrOradd)fmtkeyr+auto next_autor placeholder_namedplaceholder_positionalrrs r _add_keyz3Checker._handle_string_dot_format.._add_keys(~u"++C00LFAq!++C00LFAq !V4<<KK GNNN4 DD    ||5==KK GNNN4D"Q &#&& .&**62222!%%f---5sA11 A>=A>{zMax string recursion exceededc3JK|]}t|tjVdSrrrStarredr rs r r)z4Checker._handle_string_dot_format..,s.FFSJsCK00FFFFFFrc3(K|] }|jduVdSrrr kwds r r)z4Checker._handle_string_dot_format...s(==CGtO======rch|] }|j Sr rrs r z4Checker._handle_string_dot_format..3s???#cg???rrc34K|]}t|VdSrrr rs r r)z4Checker._handle_string_dot_format..As( B BAQ B B B B B Brc34K|]}t|VdSrrrs r r)z4Checker._handle_string_dot_format..Ms( C CAQ C C C C C Cr)rgparse_format_stringrorrerOrrStringDotFormatInvalidFormatrr`rmkeywordsrangerM'StringDotFormatExtraPositionalArgumentsrrq"StringDotFormatExtraNamedArgumentsStringDotFormatMissingArgument)rrr placeholdersrirr+rspecspec_placeholders spec_fmtkey spec_specsubstitution_positionalsubstitution_namedextra_positional extra_namedmissing_argumentsrrrrs`` @@@@r _handle_string_dot_formatz!Checker._handle_string_dot_formats  !4TY_5F!G!GHHLL    KK=tQ G G G FFFFF  !$EE% % % % % % % % % % N#/   AvtQx (-.A$.G.G(H(H%%!KK EtQOOOFFFFFF5F  0A{Iq , 1A1A $A ; x ,, FFDIFFFFF ==t}=====   F"%eC NN&;&;"<"<?????25KK(+<< $&7 7 $'9 9 ;    KK@ & B B1A B B BBBCC      KK; &--..      KK7 & C C1B C C CCCDD       s,+4 A*!A%%A*1C D!DDcft|jtjrIt|jjtjr%|jjdkr||g}g}g}t|jd|j rgt|j dkrO| 5| |j d|dddn #1swxYwYnqt|jd|j rR|dgz }|d|j ddDz }|dgz }|d |jDz }|d |jDz }nt|jd |j rt|j dkrat|j dtjr<|dgz }||j djz }|d t#|j Dz }|dgz }|d |jDz }|d|jDz }n@t|jd|j r$t|j dkrt|j dtjtjfrt)d|j djDr|dgz }|d|j djDz }|d|j djDz }|dt#|j Dz }|d|j djDz }|dgz }|d|jDz }|d|jDz }|r| t,j5|D]\}}||||||dddn #1swxYwY| 5|D]}| || ddddS#1swxYwYdS||dS)NrcastrLrTypeVarrmcg|]}|Sr r rs r r z Checker.CALL..gs777##777rrc2g|]}|jdk |jS)bound)rrr ks r r z Checker.CALL..ks&MMMaAEW.ls?'!1!1WIIt<r TypedDictc.g|]\}}||dkrdgndfS)rLrNr r rArs r r z Checker.CALL..vs?"""3Q8**D9"""rcg|] }|j Sr rrs r r z Checker.CALL..}999a!'999rcg|]}|dgfSrr rs r r z Checker.CALL..~DDDq7)nDDDr NamedTuplec3K|]B}t|tjtjfot |jdkVCdS)reN)rrr*rrMr,rs r r)zChecker.CALL..sfAA)*q39ch"788%KK1$AAAAAArc(g|]}|jdSrLr,r's r r z Checker.CALL..sGGGcchqkGGGrc,g|]}|jddfS)rNrr's r r z Checker.CALL..s#!S!S!S#38A;"5!S!S!Src.g|]\}}||dkrdgndfS)rLr,Nr rs r r z Checker.CALL..s?"""3a1ff6(($7"""rcg|]}|dfSrr r's r r z Checker.CALL..s!M!M!MC3-!M!M!Mrcg|] }|j Sr rrs r r z Checker.CALL..rrcg|]}|dgfSrr rs r r z Checker.CALL..rrrK)rrorr8rr0r9rrUrrMrmrkrLrDictr enumerater*rr+r,rdrfr)rrr r annotated not_annotatedna_nodena_omitannotated_nodes r CALLz Checker.CALLPs49cm44 149?CG44 1 (**  * *4 0 0 0   ty&$/ : :8 E  NNa  '')) 4 4 ! d333 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 9do > >1 E VH D 77122777 7I ZL D MM4=MMM MI  MM  ; @ @# E49~~!!j1sx&H&H! TYq\00 """+DI"6"6""" ZL D 994=999 9I DDdmDDD DMM  < A A EDI""49Q<#)SX)>??#AA.2il.?AAAAA#  GGTYq\5FGGGG !S!S1AR!S!S!SS """+DI"6"6""" !M!M49Q<;L!M!M!MM  ZL D 994=999 9I DDdmDDD DM  &''(<== 5 5(5??$GW''g'>>>>##Dt#444 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 '')) : :&/::NOOND9999: : : : : : : : : : : : : : : : : : :    % % % % %s66"C$$C(+C(7OO  O %PPPc @ t|jj}n2#t$r%|t j|dYdSwxYwt}d}d}|D]\}}||\}}} } } | dkr| tvr!|t j || || r|du}| | fD]0} | ,d| vr(|s!|t j |+|dz }1|r%|#|t j |dS|s%|#|t j |dS|r|dz }| |t|jtjtjfrt%d|jjDsft)|jj} |r)|| kr#|t j||| n"|s |t j|t|jtjrt1d|jjDr|r(|dkr"|t j|dSd|jjD}||z }||z }|sC|rA|t j|d t;||sI|rI|t j|d t;|dSdSdSdSdS) Nzincomplete formatrrKrrLc3JK|]}t|tjVdSrrr's r r)z1Checker._handle_percent_format..sBsCK00rc3JK|]}t|tjVdSr)rrr0rs r r)z1Checker._handle_percent_format..s.DDqJq#'**DDDDDDrch|] }|j Sr )rers r rz1Checker._handle_percent_format..s > > > > > >rr)rhrrerOrrPercentFormatInvalidFormatrVALID_CONVERSIONS'PercentFormatUnsupportedFormatCharacter!PercentFormatStarRequiresSequence$PercentFormatMixedPositionalAndNamedrrrrrr*r`r,rM$PercentFormatPositionalCountMismatchPercentFormatExpectedMappingrr+r PercentFormatExpectedSequence PercentFormatExtraNamedArgumentsrrqPercentFormatMissingArgument)rrr rnamedpositional_count positionalr+ placeholderr:r`rbrcrHsubstitution_countsubstitution_keys extra_keys missing_keyss r _handle_percent_formatzChecker._handle_percent_formats / < >djo > > > *U2J #44L *  =IIfZ0011  ,  9IIf\2233%    "    s+A  A ct|jtjr4t|jtjr||||dSr)rr"rModrr0rrrs r BINOPz Checker.BINOP s^47CG,, .49cg.. .  ' ' - - - D!!!!!rc|jratj|j|j||j|jtj}|j r |dS| |dSdSr) r:rrrCrDrerr:rrxrr)rrr rws r STRz Checker.STRs}   '"+ 5 B  '""2&&&&& ' 'rcdt|jtr||SdSr)rrrrrs r CONSTANTzChecker.CONSTANT!s0$*c** &xx~~% & &rcD|||j}t|tjr8t |jr"|tj |dSdSt |r"|tj |dSdSr) rexcrrCallrrorrRaiseNotImplemented)rrr rs r RAISEz Checker.RAISE3s D!!!h c38 $ $ <*3844 @ H8$????? @ @) - - < KK4d ; ; ; ; ; < td|jDs |tj|d|jc|_} ||||_dS#||_wxYw)Nc3JK|]}t|tjVdSr)rrFormattedValuers r r)z$Checker.JOINEDSTR..Js/OOa 1c&899OOOOOOrT) _in_fstringr`rrrFStringMissingPlaceholdersr)rrr r<s r JOINEDSTRzChecker.JOINEDSTREs$ COO4;OOOOO  C KK;T B B B!%t'7$ $    % % %#D   tD  # # # #s A44 A=cZ djD}t|}d|D}|D]Ҋ fdt|D}tfd|D}t d|Dro|D]l}j|}t t r'|tj | j K|tj | m| dS)Nc,g|]}t|Sr r)r r\s r r z Checker.DICT..Xs.   &) S ! !   rc$g|] \}}|dk |Srr )r r\rVs r r z Checker.DICT..]s-   Cqyy yyrc&g|] \}}|k |Sr r )r rAi_keyr\s r r z Checker.DICT..cs"MMME 1 rc3LK|]}tj|VdSr)rr)r rNr s r r)zChecker.DICT..esF!U!344rc3(K|] \}}|dkVdS)rLNr )r rrVs r r)zChecker.DICT..is*AA,%5A:AAAAAAr) r rrrr`rrrrMultiValueRepeatedKeyVariabler:MultiValueRepeatedKeyLiteralr) rrr r  key_countsduplicate_keys key_indicesr key_indexkey_noder\s ` @r DICTz Checker.DICTTs  -1Y   T]]   ","2"2"4"4    "  CMMMMYt__MMMK(FAA&,,..AAAAA !,  I#y3H!#{33  H$J$,$'H.... $A$ D!!!!!rct|jtjr0|jjgkr |t j|||dSr) rtestrr*r,rrIfTuplerrs r IFz Checker.IFxsW di + + 0 "0D0D KK($ / / / D!!!!!rct|jtjr0|jjgkr |t j|||dSr) rrrr*r,rr AssertTuplerrs r ASSERTzChecker.ASSERTsW di + + 4 "0D0D KK,d 3 3 3 D!!!!!rc>|rdnd}|j|}|j|urk|jD]et |}fd|jD|_||||f|_|j|dzdD]}||<ddSdS)z5 Keep track of globals declarations. rLrcjg|]/}t|tjr|jdk-|0S)r)rrr% message_args)r m node_names r r z"Checker.GLOBAL..sL!4!4!4q("899!4N1%22222rN)rrrr rr setdefaultr)rrr global_scope_index global_scope node_valuerrs @r GLOBALzChecker.GLOBALs#'"2"2"4"4;QQ!'9:  :\ ) )"Z 2 2 ' 488 !4!4!4!4#}!4!4!4 '' :>>>$0"6 !_-?!-C-D-DE22E'1E)$$2' * ) 2 2rc|t|||dSr)rr0rrrs r GENERATOREXPzChecker.GENERATOREXPs9 ~&&& D!!! rc t|jtjrm|||jdkrGt|jtr/t|jtj rd|j_ dSdSdSdSt|jtj r| |dSt|jtj r||dStd|j)zV Handle occurrence of Name (which can be a load/store/delete access.) localsTz#Got impossible expression context: N)rrrLoadr'r7rr rrr,Storer0Delr8rrs r NAMEz Checker.NAMEs  dh ) ) S    % % %8## 4:}(M(M#t4ch??$)- %%%$######) , , S   & & & & & #' * * S  ! !$ ' ' ' ' 'QTXQQRR Rrc|}t|dr|j|}}t|tjtjtjfr ||jvrdSt|tjtj frnlt|drLt|tj r2||j vr)ts"| tj|dSt|dt|tj r"| tj|dS| tj|dS)Nr finalbody)rrrrr3ForAsyncForrr^ClassDefContinuer'r.rrContinueInFinallyContinueOutsideLoopBreakOutsideLoop)rrr rn_childs r CONTINUEzChecker.CONTINUEs/ a+,, +QwA!ci#,?@@ !(**F!cos|<== q+&& :dCL+I+I ak))))KK :DAAAFa+,,  dCL ) ) 9 KK4d ; ; ; ; ; KK14 8 8 8 8 8rc4t|jttfr"|t j|dS|jr2t|jdr|jj s|j|j_ | |j|dS)Nr() rrrr2rrReturnOutsideFunctionrrr(rLrs r RETURNzChecker.RETURNs dj:{"; < <  KK6 = = = F J 0 DJ . . 0 & 0 &*ZDJ "  D)))))rct|jttfr"|t j|dSd|j_||j |dSrX) rrrr2rrYieldOutsideFunctionr)rLrrs r YIELDz Checker.YIELDs] dj:{"; < <  KK5t < < < F!%   D)))))rcnjD]}|t jjrIs7tj ts fddSdSdSdS)Nc.Srrkr rrsr rSz%Checker.FUNCTIONDEF..t':':4'@'@r) rarLLAMBDArrr:rrrrr r)rrr decos`` r FUNCTIONDEFzChecker.FUNCTIONDEFs' ( (D OOD$ ' ' ' ' D 0DAABBB   B$$&& Btz=99 B   @@@@@ A A A A A B B B B B Brc g}g}trCjjD]6}||j||j7jjjjzD]6}||j||j7jjjjz}ttj  }dD]P}tj|}|s||j|r||jQ|r|j tt|t|krBt!|D]2\} }||d| vr!t$j|3|D]} | |D]} | fd} | dS)N)varargkwargcddgfd}|dS)NrareturnsrKcjD]+\}}tj|j|,dS)zU Check to see if any assignments have not been used. N)rr.rrUnusedVariabler)r:r-rrs r checkUnusedAssignmentszCChecker.LAMBDA..runFunction..checkUnusedAssignments'sR&*Z%A%A%C%COOMD'KK 7NNNNOOr)rrrr)rFr rrs r runFunctionz#Checker.LAMBDA..runFunction!sx NN      ,22229>DI$88 / /C KK   s~ . . . .9% (==(sz:::+ 8 8Hty(33H  KK % % % 8""8#6777  -   t| , , , s4yy>>CII % %'oo G G c$tt*$$KK :D#FFF% 4 4J  ! !*d 3 3 3 3 + +G OOGT * * * *       ;'''''rc4||ddS)N)rJrKrK)rrs r ARGUMENTSzChecker.ARGUMENTS3s" D'BCCCCCrc ~||t|j||dSr)rrrr rs r ARGz Checker.ARG6s6 htx1B1B41H1HIIJJJJJrcTjD]}|jD]}|jD]}|t jrGs3tj ts fdj D]}| tjdS)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.Srr9r:sr rSz"Checker.CLASSDEF..Kr;rN)rarLbasesrrrrrrrr rrrrrr:)rrr r=baseNode keywordNodestmts`` r CLASSDEFzChecker.CLASSDEF9sG ' ( (D OOD$ ' ' ' '  , ,H OOHd + + + += / /K OOK . . . . z"""   B$$&& Btz=99 B   @@@@@ A A AI ( (D OOD$ ' ' ' '  odi>>?????rc||j||j|||j|dSr)r'targetrLrrs r AUGASSIGNzChecker.AUGASSIGNQsJ DK(((  D)))  T*****rct|jtjrd}d}t |jD]G\}}t|tjr(|r"|tj |nd}|}H|dkst|j|z dz dkr |tj || |dS)NFrTrLi) rrrr#rr,rrrTwoStarredExpressionsrM%TooManyExpressionsInStarredAssignmentr)rrr has_starredstar_locrArs r TUPLEz Checker.TUPLEVs dh * * R KH!$),, ! !1a--!" H$BDIII"&K H6!!S^^h%>%Bg%M%M HJDQQQ D!!!!!rc|jD]b}d|jvr|jst|j|}n$|jp|j}t |||j}|||cdSr)r r:asnamerrr)rrr alias importationr:s r IMPORTzChecker.IMPORTos|Z / /Eej   25:tDD |1uz)$ejAA OOD+ . . . .  / /rc|jdkr(|js |tj|nd|_d|jz|jpdz}|jD]0}|jp|j}|jdkrbt|||j }|jtj vr&|tj ||j|jdkrd|_n|jdkrzt|j t s"|tj||d|j _|tj||t)||}nt+||||j}|||2dS)NrFrr<rNTr)rrrrLateFutureImportlevelr rir:rrrall_feature_namesFutureFeatureNotDefinedrrr2ImportStarNotPermittedrImportStarUsedrrr)rrr rrjr:rks r IMPORTFROMzChecker.IMPORTFROMxs ;, & && = H5t<<<"'D  "t{'8b9Z / /E<-5:D{l**/dDJGG :Z%AAAKK @ $ej222:..48D1s""!$*k::KK ? $f...+/ ( H3T6BBB-fd;; -dD.4ejBB OOD+ . . . .+ / /rcg}t|jD]\}}t|jtjr2|jjD]$}|t|%n.|jr'|t|j|j;|t|jdz kr | tj ||j ||jD]}||||j ||ddS)NrLrrK)rrrrrr*r,r rrMrrDefaultExceptNotLastrrrLrr)rrr handler_namesrArexc_typerOs r TRYz Checker.TRYsM #DM22 D DJAw', 22 @ ' 1@@H!((X)>)>????@ @$$[%>%>???|#C ,>,>,B(B(B H97CCC ""=111Y ) )E OOE4 ( ( ( ( !!! Dv.....rc$|j||dS|j|jvr|| |j|j}n#t $rd}YnwxYw|||| |j|j}|js&|tj ||jn#t $rYnwxYw|r||j|j<dSdSr) r:rrr0rrrrrrE)rrr prev_definitionr-s r EXCEPTHANDLERzChecker.EXCEPTHANDLERs@ 9     % % % F 9 " "   & & & #"jnnTY77OO # # #"OOO # T""" D!!! FjnnTY//G< F H3T49EEE     D   4$3DJty ! ! ! 4 4s$A## A21A2 C-- C:9C:c*||j|||j||jrUt |jd|jr||j|dS||j|dSdS)N TypeAlias)rLr_ryrvrrUrrs r ANNASSIGNzChecker.ANNASSIGNs  T*** dot444 : 2$/;HH 2%%dj$77777 D11111  2 2rcJ|j}t|j|jD]k\}}t |t jt jfr>t|st|r | tj ||}l| |dSr) rzipops comparatorsrrIsIsNotr4rr IsLiteralr)rrr rr"rs r COMPAREzChecker.COMPAREsyTXt'788  IBrCFCI#677 6/55 6066 6  H.555DD D!!!!!rcZ||||dSr)r0rrs r _match_targetzChecker._match_targets0 T""" D!!!!!rr)ryrzr{r|rModuler2r*rr^r r_rLListCompr0SetComp GeneratorExpDictComprr[rrdrfr:rr builtin_varsr_MAGIC_GLOBALSrrrr~_customBuiltInsupdaterrrrrrrrsetterrrrrrrrrrrr rrrrr'r0r8 contextlibcontextmanagerrhrkr!rIrr,rRrXrLdoctest DocTestParser get_examplesr^rkryrDruryr{DELETEFORASYNCFORWHILEWITHWITHITEM ASYNCWITHEXPRASSIGNPASSBOOLOPUNARYOPSET ATTRIBUTESTARRED NAMECONSTANT NAMEDEXPRrrrrrrr.rNUMBYTESELLIPSISSLICEEXTSLICEINDEXLOADSTOREDELAUGLOADAUGSTOREPARAMANDORADDSUBMULTDIVMODPOWLSHIFTRSHIFTBITORBITXORBITANDFLOORDIVINVERTNOTUADDUSUBEQNOTEQLTLTEGTGTEISISNOTINNOTINMATMULTr COMPREHENSIONKEYWORDFORMATTEDVALUErrr rIFEXPrrNONLOCALrLISTCOMPDICTCOMPSETCOMPr%r0BREAKr3r6AWAIT YIELDFROMr>ASYNCFUNCTIONDEFr<rTrVr]r`rgLISTrlrtryTRYSTARr|rrMATCH MATCH_CASE MATCHCLASSMATCHOR MATCHSEQUENCEMATCHSINGLETON MATCHVALUErMATCHAS MATCHMAPPING MATCHSTARr rr rr!s1   K j  m M n ^ . n OI F$)NLs<  &&~66Hjnn%899O4--c22333 '//2:=2    D T T TVVV>>>++X+000 11X1 $66%$6 ##X#666:K:K:Kx$1----KKK   , NNN   /?/?/?b&&& K<K<K&&&B111...]."   ''F'S'8'e'd'X' ' v D##F#W#s#Y##<$*$*$*LqqqfP&P&P&deeeN""" ' ' '3 & & & &-322e2h .-E-Hu7==M=GnK $ $ $""""""H""" E""" 222<H %10H0x'SSS&999. E * * ****EI B B B#5(5(5(nDDDKKK@@@0+++ """. D//////@///(G+4+4+4Z 2 2 2 " " "AONENJNNg "00NZ"""*76G6lYYYrr)ar|rrrrrrrrrrrerFsysrpyflakesr version_infor.rrUr=r Formatterr_rrr(r)rr!r-r&r4r;compilerrrASCII_NON_ALNUMpatternrrArPrSrTrUrV frozensetrrHrhrrjrrrrrrrrrrrrrrrrrrrrrrrr r0r2r6r8r<rrrIrOrUrYrbrdruryr NodeVisitorrrrr rr rs}      & ws'((s8}} &f&((.CCCWcl #  B    BBB  JJJJ   :::"*-..''NN55::NNNOO?/????AArz455 O,,RZ ++ 2:m $ $rz.// BJx I122 =!=!=!@4&!%LLNN."""4PPPIIIIIIII@      j     &%!%!%!%!%!*%!%!%!P")")")")");")")")J<<<<>>JJJJJsJJJ*6Z7Z7Z7Z7Z7Z7Z7Z7Z7Z7r