ML irdZddlmZddlmZmZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUddlVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^ddl_m`Z`eedGd d e`d ZaGd d eaZbGddeaZcd$dZdGddeaZeGddeeZfd$dZgGddeeZhd$dZiGddeaZjd%dZkGddeeZld&dZmGdd eeZnd'd!ZoGd"d#eeZpy )(zGeneric node traverser visitor) annotations) mypyc_attrtrait)O REVEAL_TYPE AssertStmtAssertTypeExprAssignmentExprAssignmentStmt AwaitExprBlock BreakStmt BytesExprCallExprCastExprClassDefComparisonExpr ComplexExprConditionalExpr ContinueStmt DecoratorDelStmtDictExprDictionaryComprehension EllipsisExpr EnumCallExpr ExpressionExpressionStmt FloatExprForStmtFuncBaseFuncDefFuncItem GeneratorExpr GlobalDeclIfStmtImport ImportAll ImportFrom IndexExprIntExpr LambdaExprListComprehensionListExpr MatchStmt MemberExprMypyFileNamedTupleExprNameExpr NewTypeExprNode NonlocalDeclOperatorAssignmentStmtOpExprOverloadedFuncDef ParamSpecExprPassStmt PromoteExpr RaiseStmt ReturnStmt RevealExprSetComprehensionSetExpr SliceExprStarExprStrExpr SuperExprTempNodeTryStmt TupleExpr TypeAlias TypeAliasExpr TypeAliasStmtTypeApplication TypedDictExpr TypeVarExprTypeVarTupleExpr UnaryExprVar WhileStmtWithStmt YieldExpr YieldFromExpr) AsPattern ClassPatternMappingPattern OrPatternSequencePatternSingletonPatternStarredPattern ValuePattern) NodeVisitorT)allow_interpreted_subclassesceZdZdZdWdZdXdZdYdZdZdZd[dZd\dZ d]dZ d^d Z d_d Z d`d Z dad Zdbd ZdcdZdddZdedZdfdZdgdZdhdZdidZdjdZdkdZdldZdmdZdndZdodZdpdZdqdZdrdZdsdZ dtdZ!dud Z"dvd!Z#dwd"Z$dxd#Z%dyd$Z&dzd%Z'd{d&Z(d|d'Z)d}d(Z*d~d)Z+dd*Z,dd+Z-dd,Z.dd-Z/dd.Z0dd/Z1dd0Z2dd1Z3dd2Z4dd3Z5dd4Z6dd5Z7dd6Z8dd7Z9dd8Z:dd9Z;dd:Zdd=Z?dd>Z@dd?ZAdd@ZBddAZCddBZDddCZEddDZFddEZGddFZHddGZIddHZJddIZKddJZLddKZMddLZNddMZOddNZPddOZQddPZRddQZSddRZTddSZUddTZVddUZWyV)TraverserVisitora)A parse tree visitor that traverses the parse tree during visiting. It does not perform any actions outside the traversal. Subclasses should override visit methods to perform actions during traversal. Calling the superclass method allows reusing the traversal implementation. cyNselfs T/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypy/traverser.py__init__zTraverserVisitor.__init__ps cH|jD]}|j|yrb)defsaccept)reods rfvisit_mypy_filez TraverserVisitor.visit_mypy_fileus  A HHTN rhcH|jD]}|j|yrb)bodyrk)reblockss rf visit_blockzTraverserVisitor.visit_blockys  A HHTN rhc |j]|jD]"}|j}||j|$|jD]}|j|j|j j|yrb) arguments initializerrk visit_varvariablerp)rerlarginits rf visit_funczTraverserVisitor.visit_func}sq ;; "{{ &#KK% & {{ -s||, -  drhc&|j|yrbr{rerls rfvisit_func_defzTraverserVisitor.visit_func_def rhc|jD]}|j||jr|jj|yyrb)itemsrkimplrerlitems rfvisit_overloaded_func_defz*TraverserVisitor.visit_overloaded_func_defs=GG D KK   66 FFMM$  rhc|jD]}|j||jD]}|j||jr|jj||jj D]}|j||j j||jr|jj|yyrb) decoratorsrkbase_type_exprs metaclasskeywordsvaluesrjanalyzed)rerlrmbasevs rfvisit_class_defz TraverserVisitor.visit_class_defs A HHTN %% D KK   ;; KK  t $""$ A HHTN   d :: JJ  d # rhc|jj||jj||jD]}|j|yrb)funcrkvarr)rerl decorators rfvisit_decoratorz TraverserVisitor.visit_decoratorsC  d  T #I   T " #rhc:|jj|yrbexprrkr~s rfvisit_expression_stmtz&TraverserVisitor.visit_expression_stmt  drhc~|jj||jD]}|j|yrb)rvaluerklvalues)rerlls rfvisit_assignment_stmtz&TraverserVisitor.visit_assignment_stmts0  A HHTN rhcp|jj||jj|yrb)rrklvaluer~s rfvisit_operator_assignment_stmtz/TraverserVisitor.visit_operator_assignment_stmts"  rhc|jj||jj||jr|jj|yyrbrrkrp else_bodyr~s rfvisit_while_stmtz!TraverserVisitor.visit_while_stmts@  d  d ;; KK  t $ rhc|jj||jj||jj||jr|jj|yyrb)indexrkrrprr~s rfvisit_for_stmtzTraverserVisitor.visit_for_stmtsP t  d  d ;; KK  t $ rhcT|j|jj|yyrbrr~s rfvisit_return_stmtz"TraverserVisitor.visit_return_stmt! 66  FFMM$  rhc|j|jj||j|jj|yyrb)rrkmsgr~s rfvisit_assert_stmtz"TraverserVisitor.visit_assert_stmts; 66  FFMM$  55  EELL  rhcT|j|jj|yyrbrr~s rfvisit_del_stmtzTraverserVisitor.visit_del_stmtrrhc|jD]}|j||jD]}|j||jr|jj|yyrbr)rerlebs rf visit_if_stmtzTraverserVisitor.visit_if_stmts\ A HHTN  A HHTN  ;; KK  t $ rhc|j|jj||j|jj|yyrb)rrk from_exprr~s rfvisit_raise_stmtz!TraverserVisitor.visit_raise_stmts= 66  FFMM$  ;; " KK  t $ #rhc|jj|tt|jD]B}|j|}||j||j |j|D|j D]}||j||j|jj||j|jj|yyrb) rprkrangelentypeshandlersvarsr finally_body)rerlitprs rfvisit_try_stmtzTraverserVisitor.visit_try_stmts  ds177|$ 'AB~ $ JJqM  &  '  A}  ;; " KK  t $ >> % NN ! !$ ' &rhctt|jD]C}|j|j||j|}|3|j|E|j j|yrb)rrrrktargetrp)rerlrtargs rfvisit_with_stmtz TraverserVisitor.visit_with_stmtses166{# "A FF1I  T "88A;D D!  "  drhc<|jj|tt|jD]`}|j|j||j |}||j||j |j|byrb)subjectrkrrpatternsguardsbodies)rerlrguards rfvisit_match_stmtz!TraverserVisitor.visit_match_stmts{ s1::' %A JJqM  &HHQKE  T" HHQK  t $  %rhcp|jj||jj|yrb)namerkvaluer~s rfvisit_type_alias_stmtz&TraverserVisitor.visit_type_alias_stmts"  d trhc:|jj|yrbrr~s rfvisit_member_exprz"TraverserVisitor.visit_member_exprrrhc:|jj|yrbrr~s rfvisit_yield_from_exprz&TraverserVisitor.visit_yield_from_exprrrhcT|jr|jj|yyrbrr~s rfvisit_yield_exprz!TraverserVisitor.visit_yield_exprs 66 FFMM$  rhc|jj||jD]}|j||jr|jj|yyrb)calleerkargsrrerlas rfvisit_call_exprz TraverserVisitor.visit_call_exprsN  A HHTN  :: JJ  d # rhc|jj||jj||j|jj|yyrb)leftrkrightrr~s rf visit_op_exprzTraverserVisitor.visit_op_exprsC  d t :: ! JJ  d # "rhcH|jD]}|j|yrb)operandsrk)rerloperands rfvisit_comparison_exprz&TraverserVisitor.visit_comparison_exprs!zz !G NN4  !rhc|j|jj||j|jj||j|jj|yyrb) begin_indexrk end_indexstrider~s rfvisit_slice_exprz!TraverserVisitor.visit_slice_exprsY == $ MM  & ;; " KK  t $ 88  HHOOD ! rhc:|jj|yrbrr~s rfvisit_cast_exprz TraverserVisitor.visit_cast_expr!rrhc:|jj|yrbrr~s rfvisit_assert_type_exprz'TraverserVisitor.visit_assert_type_expr$rrhc~|jtk(r*|jJ|jj|yyrb)kindrrrkr~s rfvisit_reveal_exprz"TraverserVisitor.visit_reveal_expr's3 66[ 66% %% FFMM$  rhcp|jj||jj|yrb)rrkrr~s rfvisit_assignment_exprz&TraverserVisitor.visit_assignment_expr/s"  trhc:|jj|yrbrr~s rfvisit_unary_exprz!TraverserVisitor.visit_unary_expr3rrhcH|jD]}|j|yrbrrkrs rfvisit_list_exprz TraverserVisitor.visit_list_expr6!GG D KK  rhcH|jD]}|j|yrbrrs rfvisit_tuple_exprz!TraverserVisitor.visit_tuple_expr:rrhct|jD])\}}||j||j|+yrbr)rerlkrs rfvisit_dict_exprz TraverserVisitor.visit_dict_expr>s4GG DAq} HHTN rhcH|jD]}|j|yrbrrs rfvisit_set_exprzTraverserVisitor.visit_set_exprDrrhc|jj||jj||jr|jj|yyrb)rrkrrr~s rfvisit_index_exprz!TraverserVisitor.visit_index_exprHs@  d t :: JJ  d # rhct|j|j|jD]@\}}}|j ||j ||D]}|j |B|j j |yrb)zipindices sequences condlistsrk left_exprrerlrsequence conditionsconds rfvisit_generator_exprz%TraverserVisitor.visit_generator_exprNst+.qyy!++q{{+S " 'E8Z OOD ! LL " " D! " " 4 rhcLt|j|j|jD]@\}}}|j ||j ||D]}|j |B|j j ||j j |yrb)rrrrrkkeyrr s rfvisit_dictionary_comprehensionz/TraverserVisitor.visit_dictionary_comprehensionVs+.qyy!++q{{+S " 'E8Z OOD ! LL " " D! " "  T trhc:|jj|yrb generatorrkr~s rfvisit_list_comprehensionz)TraverserVisitor.visit_list_comprehension_ 4 rhc:|jj|yrbrr~s rfvisit_set_comprehensionz(TraverserVisitor.visit_set_comprehensionbrrhc|jj||jj||jj|yrb)r rkif_expr else_exprr~s rfvisit_conditional_exprz'TraverserVisitor.visit_conditional_expres6  d  4 rhc:|jj|yrbrr~s rfvisit_type_applicationz'TraverserVisitor.visit_type_applicationjrrhc&|j|yrbr}r~s rfvisit_lambda_exprz"TraverserVisitor.visit_lambda_exprmrrhc:|jj|yrbrr~s rfvisit_star_exprz TraverserVisitor.visit_star_exprprrhc:|jj|yrbrr~s rfvisit_await_exprz!TraverserVisitor.visit_await_exprsrrhc:|jj|yrb)callrkr~s rfvisit_super_exprz!TraverserVisitor.visit_super_exprvrrhc|j|jj||j|jj|yyrb)patternrkrr~s rfvisit_as_patternz!TraverserVisitor.visit_as_patternys= 99 II  T " 66  FFMM$  rhcH|jD]}|j|yrbrrkrerlps rfvisit_or_patternz!TraverserVisitor.visit_or_pattern  A HHTN rhc:|jj|yrbrr~s rfvisit_value_patternz$TraverserVisitor.visit_value_patternrrhcH|jD]}|j|yrbr+r,s rfvisit_sequence_patternz'TraverserVisitor.visit_sequence_patternr/rhcT|j|jj|yyrb)capturerkr~s rfvisit_starred_patternz&TraverserVisitor.visit_starred_patterns# 99 II  T " !rhc|jD]}|j||jD]}|j||j|jj|yyrb)keysrkrrest)rerlrrs rfvisit_mapping_patternz&TraverserVisitor.visit_mapping_patterns_66 C JJt  XX E LL   66  FFMM$  rhc|jj||jD]}|j||jD]}|j|yrb) class_refrk positionalskeyword_values)rerlr-rs rfvisit_class_patternz$TraverserVisitor.visit_class_patternsR 4  A HHTN !! A HHTN rhcH|jD]}|j|yrb assignmentsrkrs rf visit_importzTraverserVisitor.visit_import  A HHTN rhcH|jD]}|j|yrbrArs rfvisit_import_fromz"TraverserVisitor.visit_import_fromrDrhcyrbrcr~s rfvisit_name_exprz TraverserVisitor.visit_name_exprrhcyrbrcr~s rfvisit_str_exprzTraverserVisitor.visit_str_exprrIrhcyrbrcr~s rfvisit_int_exprzTraverserVisitor.visit_int_exprrIrhcyrbrcr~s rfvisit_float_exprz!TraverserVisitor.visit_float_exprrIrhcyrbrcr~s rfvisit_bytes_exprz!TraverserVisitor.visit_bytes_exprrIrhcyrbrcr~s rfvisit_ellipsiszTraverserVisitor.visit_ellipsisrIrhcyrbrcr~s rfrwzTraverserVisitor.visit_varrIrhcyrbrcr~s rfvisit_continue_stmtz$TraverserVisitor.visit_continue_stmtrIrhcyrbrcr~s rfvisit_pass_stmtz TraverserVisitor.visit_pass_stmtrIrhcyrbrcr~s rfvisit_break_stmtz!TraverserVisitor.visit_break_stmtrIrhcyrbrcr~s rfvisit_temp_nodez TraverserVisitor.visit_temp_noderIrhcyrbrcr~s rfvisit_nonlocal_declz$TraverserVisitor.visit_nonlocal_declrIrhcyrbrcr~s rfvisit_global_declz"TraverserVisitor.visit_global_declrIrhcyrbrcr~s rfvisit_import_allz!TraverserVisitor.visit_import_allrIrhcyrbrcr~s rfvisit_type_var_exprz$TraverserVisitor.visit_type_var_exprrIrhcyrbrcr~s rfvisit_paramspec_exprz%TraverserVisitor.visit_paramspec_exprrIrhcyrbrcr~s rfvisit_type_var_tuple_exprz*TraverserVisitor.visit_type_var_tuple_exprrIrhcyrbrcr~s rfvisit_type_alias_exprz&TraverserVisitor.visit_type_alias_exprrIrhcyrbrcr~s rfvisit_type_aliasz!TraverserVisitor.visit_type_aliasrIrhcyrbrcr~s rfvisit_namedtuple_exprz&TraverserVisitor.visit_namedtuple_exprrIrhcyrbrcr~s rfvisit_typeddict_exprz%TraverserVisitor.visit_typeddict_exprrIrhcyrbrcr~s rfvisit_newtype_exprz#TraverserVisitor.visit_newtype_exprrIrhcyrbrcr~s rfvisit__promote_exprz$TraverserVisitor.visit__promote_exprrIrhcyrbrcr~s rfvisit_complex_exprz#TraverserVisitor.visit_complex_exprrIrhcyrbrcr~s rfvisit_enum_call_exprz%TraverserVisitor.visit_enum_call_exprrIrhcyrbrcr~s rfvisit_singleton_patternz(TraverserVisitor.visit_singleton_patternrIrhNreturnNonerlr0r|r}rqr r|r})rlr"r|r}rlr!r|r}rlr8r|r}rlrr|r}rlrr|r}rlrr|r}rlr r|r}rlr6r|r}rlrQr|r}rlrr|r}rlr=r|r}rlrr|r}rlrr|r}rlr%r|r}rlr<r|r}rlrFr|r}rlrRr|r}rlr.r|r})rlrJr|r}rlr/r|r}rlrTr|r}rlrSr|r}rlrr|r}rlr7r|r}rlrr|r}rlrAr|r}rlrr|r}rlrr|r}rlr>r|r}rlr r|r}rlrOr|r}rlr-r|r}rlrGr|r}rlrr|r}rlr@r|r}rlr)r|r}rlr#r|r}rlrr|r}rlr,r|r}rlr?r|r}rlrr|r}rlrKr|r}rlr+r|r}rlrBr|r}rlr r|r}rlrDr|r}rlrUr|r}rlrXr|r}rlr\r|r}rlrYr|r}rlr[r|r}rlrWr|r}rlrVr|r}rlr&r|r}rlr(r|r}rlr2r|r}rlrCr|r}rlr*r|r}rlrr|r}rlrr|r}rlrr|r})rlrPr|r}rlrr|r}rlr:r|r}rlr r|r})rlrEr|r}rlr5r|r}rlr$r|r}rlr'r|r}rlrMr|r}rlr9r|r}rlrNr|r}rlrIr|r}rlrHr|r}rlr1r|r}rlrLr|r}rlr3r|r})rlr;r|r}rlrr|r}rlrr|r}rlrZr|r})X__name__ __module__ __qualname____doc__rgrnrsr{rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrrr!r#r&r)r.r1r3r6r:r?rCrFrHrKrMrOrQrSrwrVrXrZr\r^r`rbrdrfrhrjrlrnrprrrtrvrxrzrcrhrfr`r`es   $#  % %   %% (% $$ !" $ !!!!  #  rhr`NceZdZdZdQdZdRfd ZdSfd ZdTfd ZdUfd ZdVfd Z dWfd Z dXfd Z dYfd Z dZfd Z d[fd Zd\fd Zd]fd Zd^fd Zd_fd Zd`fd Zdafd Zdbfd Zdcfd Zddfd Zdefd Zdffd Zdgfd Zdhfd Zdifd Zdjfd Zdkfd Zdlfd Zdmfd Z dnfd Z!dofd Z"dpfd! Z#dqfd" Z$drfd# Z%dsfd$ Z&dtfd% Z'dufd& Z(dvfd' Z)dwfd( Z*dxfd) Z+dyfd* Z,dzfd+ Z-d{fd, Z.d|fd- Z/d}fd. Z0d~fd/ Z1dfd0 Z2dfd1 Z3dfd2 Z4dfd3 Z5dfd4 Z6dfd5 Z7dfd6 Z8dfd7 Z9dfd8 Z:dfd9 Z;dfd: Zdfd= Z?dfd> Z@dfd? ZAdfd@ ZBdfdA ZCdfdB ZDdfdC ZEdfdD ZFdfdE ZGdfdF ZHdfdG ZIdfdH ZJdfdI ZKdfdJ ZLdfdK ZMdfdL ZNdfdM ZOdfdN ZPdfdO ZQdfdP ZRxZSS)ExtendedTraverserVisitora\This is a more flexible traverser. In addition to the base traverser it: * has visit_ methods for leaf nodes * has common method that is called for all nodes * allows to skip recursing into a node Note that this traverser still doesn't visit some internal mypy constructs like _promote expression and Var. cyNTrcr~s rfvisitzExtendedTraverserVisitor.visitsrhcH|j|syt| |yrb)rsuperrnrerl __class__s rfrnz(ExtendedTraverserVisitor.visit_mypy_filezz!}  "rhcH|j|syt| |yrb)rrrCrs rfrCz%ExtendedTraverserVisitor.visit_import szz!}  QrhcH|j|syt| |yrb)rrrFrs rfrFz*ExtendedTraverserVisitor.visit_import_fromzz!}  !!$rhcH|j|syt| |yrb)rrrbrs rfrbz)ExtendedTraverserVisitor.visit_import_allzz!}   #rhcH|j|syt| |yrb)rrrrs rfrz'ExtendedTraverserVisitor.visit_func_defzz!}  q!rhcH|j|syt| |yrb)rrrrs rfrz2ExtendedTraverserVisitor.visit_overloaded_func_def"zz!}  )!,rhcH|j|syt| |yrb)rrrrs rfrz(ExtendedTraverserVisitor.visit_class_def'rrhcH|j|syt| |yrb)rrr`rs rfr`z*ExtendedTraverserVisitor.visit_global_decl,rrhcH|j|syt| |yrb)rrr^rs rfr^z,ExtendedTraverserVisitor.visit_nonlocal_decl1zz!}  #A&rhcH|j|syt| |yrb)rrrrs rfrz(ExtendedTraverserVisitor.visit_decorator6rrhcH|j|syt| |yrb)rrrlrs rfrlz)ExtendedTraverserVisitor.visit_type_alias;rrhcH|j|syt| |yrb)rrrs)rerqrs rfrsz$ExtendedTraverserVisitor.visit_blockBszz%  E"rhcH|j|syt| |yrb)rrrrs rfrz.ExtendedTraverserVisitor.visit_expression_stmtGzz!}  %a(rhcH|j|syt| |yrb)rrrrs rfrz.ExtendedTraverserVisitor.visit_assignment_stmtLrrhcH|j|syt| |yrb)rrrrs rfrz7ExtendedTraverserVisitor.visit_operator_assignment_stmtQzz!}  .q1rhcH|j|syt| |yrb)rrrrs rfrz)ExtendedTraverserVisitor.visit_while_stmtVrrhcH|j|syt| |yrb)rrrrs rfrz'ExtendedTraverserVisitor.visit_for_stmt[rrhcH|j|syt| |yrb)rrrrs rfrz*ExtendedTraverserVisitor.visit_return_stmt`rrhcH|j|syt| |yrb)rrrrs rfrz*ExtendedTraverserVisitor.visit_assert_stmterrhcH|j|syt| |yrb)rrrrs rfrz'ExtendedTraverserVisitor.visit_del_stmtjrrhcH|j|syt| |yrb)rrrrs rfrz&ExtendedTraverserVisitor.visit_if_stmtozz!}  a rhcH|j|syt| |yrb)rrrZrs rfrZz)ExtendedTraverserVisitor.visit_break_stmttrrhcH|j|syt| |yrb)rrrVrs rfrVz,ExtendedTraverserVisitor.visit_continue_stmtyrrhcH|j|syt| |yrb)rrrXrs rfrXz(ExtendedTraverserVisitor.visit_pass_stmt~rrhcH|j|syt| |yrb)rrrrs rfrz)ExtendedTraverserVisitor.visit_raise_stmtrrhcH|j|syt| |yrb)rrrrs rfrz'ExtendedTraverserVisitor.visit_try_stmtrrhcH|j|syt| |yrb)rrrrs rfrz(ExtendedTraverserVisitor.visit_with_stmtrrhcH|j|syt| |yrb)rrrrs rfrz)ExtendedTraverserVisitor.visit_match_stmtrrhcH|j|syt| |yrb)rrrMrs rfrMz'ExtendedTraverserVisitor.visit_int_exprrrhcH|j|syt| |yrb)rrrKrs rfrKz'ExtendedTraverserVisitor.visit_str_exprrrhcH|j|syt| |yrb)rrrQrs rfrQz)ExtendedTraverserVisitor.visit_bytes_exprrrhcH|j|syt| |yrb)rrrOrs rfrOz)ExtendedTraverserVisitor.visit_float_exprrrhcH|j|syt| |yrb)rrrvrs rfrvz+ExtendedTraverserVisitor.visit_complex_exprzz!}  "1%rhcH|j|syt| |yrb)rrrSrs rfrSz'ExtendedTraverserVisitor.visit_ellipsisrrhcH|j|syt| |yrb)rrr!rs rfr!z(ExtendedTraverserVisitor.visit_star_exprrrhcH|j|syt| |yrb)rrrHrs rfrHz(ExtendedTraverserVisitor.visit_name_exprrrhcH|j|syt| |yrb)rrrrs rfrz*ExtendedTraverserVisitor.visit_member_exprrrhcH|j|syt| |yrb)rrrrs rfrz.ExtendedTraverserVisitor.visit_yield_from_exprrrhcH|j|syt| |yrb)rrrrs rfrz)ExtendedTraverserVisitor.visit_yield_exprrrhcH|j|syt| |yrb)rrrrs rfrz(ExtendedTraverserVisitor.visit_call_exprrrhcH|j|syt| |yrb)rrrrs rfrz&ExtendedTraverserVisitor.visit_op_exprrrhcH|j|syt| |yrb)rrrrs rfrz.ExtendedTraverserVisitor.visit_comparison_exprrrhcH|j|syt| |yrb)rrrrs rfrz(ExtendedTraverserVisitor.visit_cast_exprrrhcH|j|syt| |yrb)rrrrs rfrz/ExtendedTraverserVisitor.visit_assert_type_exprzz!}  &q)rhcH|j|syt| |yrb)rrrrs rfrz*ExtendedTraverserVisitor.visit_reveal_exprrrhcH|j|syt| |yrb)rrr&rs rfr&z)ExtendedTraverserVisitor.visit_super_exprrrhcH|j|syt| |yrb)rrrrs rfrz.ExtendedTraverserVisitor.visit_assignment_exprrrhcH|j|syt| |yrb)rrrrs rfrz)ExtendedTraverserVisitor.visit_unary_exprrrhcH|j|syt| |yrb)rrrrs rfrz(ExtendedTraverserVisitor.visit_list_exprrrhcH|j|syt| |yrb)rrrrs rfrz(ExtendedTraverserVisitor.visit_dict_exprrrhcH|j|syt| |yrb)rrrrs rfrz)ExtendedTraverserVisitor.visit_tuple_exprrrhcH|j|syt| |yrb)rrrrs rfrz'ExtendedTraverserVisitor.visit_set_expr rrhcH|j|syt| |yrb)rrrrs rfrz)ExtendedTraverserVisitor.visit_index_exprrrhcH|j|syt| |yrb)rrrrs rfrz/ExtendedTraverserVisitor.visit_type_applicationrrhcH|j|syt| |yrb)rrrrs rfrz*ExtendedTraverserVisitor.visit_lambda_exprrrhcH|j|syt| |yrb)rrrrs rfrz1ExtendedTraverserVisitor.visit_list_comprehension szz!}  (+rhcH|j|syt| |yrb)rrrrs rfrz0ExtendedTraverserVisitor.visit_set_comprehension%zz!}  '*rhcH|j|syt| |yrb)rrrrs rfrz7ExtendedTraverserVisitor.visit_dictionary_comprehension*rrhcH|j|syt| |yrb)rrr rs rfr z-ExtendedTraverserVisitor.visit_generator_expr/zz!}  $Q'rhcH|j|syt| |yrb)rrrrs rfrz)ExtendedTraverserVisitor.visit_slice_expr4rrhcH|j|syt| |yrb)rrrrs rfrz/ExtendedTraverserVisitor.visit_conditional_expr9rrhcH|j|syt| |yrb)rrrdrs rfrdz,ExtendedTraverserVisitor.visit_type_var_expr>rrhcH|j|syt| |yrb)rrrfrs rfrfz-ExtendedTraverserVisitor.visit_paramspec_exprCrrhcH|j|syt| |yrb)rrrhrs rfrhz2ExtendedTraverserVisitor.visit_type_var_tuple_exprHrrhcH|j|syt| |yrb)rrrjrs rfrjz.ExtendedTraverserVisitor.visit_type_alias_exprMrrhcH|j|syt| |yrb)rrrnrs rfrnz.ExtendedTraverserVisitor.visit_namedtuple_exprRrrhcH|j|syt| |yrb)rrrxrs rfrxz-ExtendedTraverserVisitor.visit_enum_call_exprWrrhcH|j|syt| |yrb)rrrprs rfrpz-ExtendedTraverserVisitor.visit_typeddict_expr\rrhcH|j|syt| |yrb)rrrrrs rfrrz+ExtendedTraverserVisitor.visit_newtype_exprarrhcH|j|syt| |yrb)rrr#rs rfr#z)ExtendedTraverserVisitor.visit_await_exprfrrhcH|j|syt| |yrb)rrr)rs rfr)z)ExtendedTraverserVisitor.visit_as_patternmrrhcH|j|syt| |yrb)rrr.rs rfr.z)ExtendedTraverserVisitor.visit_or_patternrrrhcH|j|syt| |yrb)rrr1rs rfr1z,ExtendedTraverserVisitor.visit_value_patternwrrhcH|j|syt| |yrb)rrrzrs rfrzz0ExtendedTraverserVisitor.visit_singleton_pattern|rrhcH|j|syt| |yrb)rrr3rs rfr3z/ExtendedTraverserVisitor.visit_sequence_patternrrhcH|j|syt| |yrb)rrr6rs rfr6z.ExtendedTraverserVisitor.visit_starred_patternrrhcH|j|syt| |yrb)rrr:rs rfr:z.ExtendedTraverserVisitor.visit_mapping_patternrrhcH|j|syt| |yrb)rrr?rs rfr?z,ExtendedTraverserVisitor.visit_class_patternrrh)rlr4r|boolr~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr)TrrrrrrnrCrFrbrrrr`r^rrlrsrrrrrrrrrrZrVrXrrrrrMrKrQrOrvrSr!rHrrrrrrrrrr&rrrrrrrrrrrrr rrrdrfrhrjrnrxrprrr#r)r.r1rzr3r6r:r? __classcell__rs@rfrrs # % $" - # % ' # $# ) ) 2 $ " % % " ! $ ' # $ " # $" " $ $ & " # # % ) $ # ! ) # * % $ ) $ # # $ " $ * % , + 2 ( $ * ' ( - ) ) ( ( & $$ $ ' + * ) ) ''rhrceZdZddZddZy) ReturnSeekercd|_yNFfoundrds rfrgzReturnSeeker.__init__s  rhc|j3t|jtr|jjdk(ryd|_y)Nr}T)r isinstancer2rr;r~s rfrzReturnSeeker.visit_return_stmts1 66>Z9affkkV>S  rhNr{r)rrrrgrrcrhrfr7r7s rhr7cPt}|j||jS)znFind if a function has a non-trivial return statement. Plain 'return' and 'return None' don't count. )r7rkr;fdefseekers rfhas_return_statementrBs! ^FKK <<rhc(eZdZddZdfd ZxZS)FuncCollectorBasecd|_yr9) inside_funcrds rfrgzFuncCollectorBase.__init__s  rhcZ|jsd|_t| |d|_yyNTF)rFrr)redefnrs rfrz FuncCollectorBase.visit_func_defs.#D  G "4 ($D  rhr{)rIr!r|r})rrrrgrr4r5s@rfrDrDs!%%rhrDc(eZdZdfd ZddZxZS) YieldSeekerc0t|d|_yr9rrgr;rers rfrgzYieldSeeker.__init__  rhcd|_yrr:r~s rfrzYieldSeeker.visit_yield_expr  rhr{r)rrrrgrr4r5s@rfrKrK rhrKcPt}|j||jSrb)rKrkr;r?s rfhas_yield_expressionrT ]FKK <<rhc(eZdZdfd ZddZxZS)YieldFromSeekerc0t|d|_yr9rMrNs rfrgzYieldFromSeeker.__init__rOrhcd|_yrr:r~s rfrz%YieldFromSeeker.visit_yield_from_exprrQrhr{r)rrrrgrr4r5s@rfrWrWrRrhrWcPt}|j||jSrb)rWrkr;r?s rfhas_yield_from_expressionr[s  FKK <<rhc(eZdZdfd ZddZxZS) AwaitSeekerc0t|d|_yr9rMrNs rfrgzAwaitSeeker.__init__rOrhcd|_yrr:r~s rfr#zAwaitSeeker.visit_await_exprrQrhr{r)rrrrgr#r4r5s@rfr]r]rRrhr]cPt}|j||jSrb)r]rkr;)rrAs rfhas_await_expressionrarUrhc(eZdZdfd ZddZxZS)ReturnCollectorc0t|g|_yrb)rrgreturn_statementsrNs rfrgzReturnCollector.__init__s 35rhc:|jj|yrb)reappend)restmts rfrz!ReturnCollector.visit_return_stmts %%d+rhr{)rhr=r|r})rrrrgrr4r5s@rfrcrcs 6,rhrccPt}|j||jSrb)rcrkrenoders rfall_return_statementsrls!AKKN  rhc4eZdZdfd Zdfd ZddZxZS)YieldCollectorc>t|d|_g|_yr9)rrg in_assignmentyield_expressionsrNs rfrgzYieldCollector.__init__s "?Arhc@d|_t| |d|_yrHrprrrerhrs rfrz$YieldCollector.visit_assignment_stmt ! %d+"rhcR|jj||jfyrb)rqrgrprers rfrzYieldCollector.visit_yield_exprs! %%tT-?-?&@Arhr{rhr r|r})rrSr|r})rrrrgrrr4r5s@rfrnrnsB # BrhrncPt}|j||jSrb)rnrkrqrjs rfall_yield_expressionsrzs!AKKN  rhc4eZdZdfd Zdfd ZddZxZS)YieldFromCollectorc>t|d|_g|_yr9)rrgrpyield_from_expressionsrNs rfrgzYieldFromCollector.__init__s "HJ#rhc@d|_t| |d|_yrHrsrts rfrz(YieldFromCollector.visit_assignment_stmt rurhcR|jj||jfyrb)r~rgrprws rfrz(YieldFromCollector.visit_yield_from_exprs! ##**D$2D2D+EFrhr{rx)rrTr|r})rrrrgrrr4r5s@rfr|r|sK # Grhr|)r@r r|r3)rrr|r3)rkr4r|zlist[ReturnStmt])rkr4r|zlist[tuple[YieldExpr, bool]])qr __future__rmypy_extensionsrr mypy.nodesrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrT mypy.patternsrUrVrWrXrYrZr[r\ mypy.visitorr]r`rr7rBrDrKrTrWr[r]rarcrlrnrzr|rcrhrfrsl$"-PPPPPPPPPPPPPPPPPPPPPb   % .K{4(K/K\ ^'/^'B #%(%# ' " ,', B& B G* Grh