ML iodZddlmZddlmZddlmZmZddlm 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@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZddl[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdddlemfZfddlgmhZhmiZimjZjdd lkmlZldd lmmnZnGd d ene8ZoGd defZpy)z{Base visitor that implements an identity AST transform. Subclass TransformVisitor to perform non-trivial transformations. ) annotations)Iterable)Optionalcast)RGDEF REVEAL_TYPEArgument AssertStmtAssertTypeExprAssignmentExprAssignmentStmt AwaitExprBlock BreakStmt BytesExprCallExprCastExprClassDefComparisonExpr ComplexExprConditionalExpr ContinueStmt DecoratorDelStmtDictExprDictionaryComprehension EllipsisExpr EnumCallExpr ExpressionExpressionStmt FloatExprForStmtFuncDefFuncItem GeneratorExpr GlobalDeclIfStmtImport ImportAll ImportFrom IndexExprIntExpr LambdaExprListComprehensionListExpr MatchStmt MemberExprMypyFileNamedTupleExprNameExpr NewTypeExprNode NonlocalDeclOperatorAssignmentStmtOpExprOverloadedFuncDef OverloadPart ParamSpecExprPassStmt PromoteExpr RaiseStmtRefExpr ReturnStmt RevealExprSetComprehensionSetExpr SliceExprStarExpr StatementStrExpr SuperExpr SymbolTableTempNodeTryStmt TupleExpr TypeAliasExprTypeApplication TypedDictExpr TypeVarExprTypeVarTupleExpr UnaryExprVar WhileStmtWithStmt YieldExpr YieldFromExpr) AsPattern ClassPatternMappingPattern OrPatternPatternSequencePatternSingletonPatternStarredPattern ValuePattern)TraverserVisitor) FunctionLike ProperTypeType)replace_object_state) NodeVisitorcheZdZdZdkdZdldZdmdZdndZdodZdpdZ dqdZ drd Z dsd Z dtd Z dud Zdvd ZdwdZdxdZdydZdzdZd{dZd|dZd|dZ d}dZd~dZddZddZddZddZddZddZddZddZ ddZ!dd Z"dd!Z#dd"Z$dd#Z%dd$Z&dd%Z'dd&Z(dd'Z)dd(Z*dd)Z+dd*Z,dd+Z-dd,Z.dd-Z/dd.Z0dd/Z1dd0Z2dd1Z3dd2Z4dd3Z5dd4Z6dd5Z7dd6Z8dd7Z9dd8Z:dd9Z;dd:Zdd=Z?dd>Z@dd?ZAdd@ZBddAZCddBZDddCZEddDZFddEZGddFZHddGZIddHZJddIZK ddJZLddKZMddLZNddMZOddNZPddOZQddPZRddQZSddRZTddSZUddTZVddUZWddVZXddWZYddXZZddYZ[dldZZ\dd[Z]dd\Z^dd]Z_dd^Z`dd_Zadd`ZbddaZcddbZd ddcZedddZfddeZgddfZhddgZiddhZjddiZkyj)TransformVisitoraTransform a semantically analyzed AST (or subtree) to an identical copy. Use the node() method to transform an AST node. Subclass to perform a non-identity transform. Notes: * This can only be used to transform functions or classes, not top-level statements, and/or modules as a whole. * Do not duplicate TypeInfo nodes. This would generally not be desirable. * Only update some name binding cross-references, but only those that refer to Var, Decorator or FuncDef nodes, not those targeting ClassDef or TypeInfo nodes. * Types are not transformed, but you can override type() to also perform type transformation. TODO nested classes and functions have not been tested well enough c.d|_i|_i|_y)NF) test_onlyvar_mapfunc_placeholder_map)selfs X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypy/treetransform.py__init__zTransformVisitor.__init__s(* =?!ct|jsJd|jjDcic]\}}||j}}}t |j |j g|j|}|j|_|j|_ t|_ |Scc}}w)Nz0This visitor should not be used for whole files.) ignored_lines) rkrsitemscopyr2 statementsdefsis_bom _fullnamepathrJnames)rnnodelinecodesrsnews rovisit_mypy_filez TransformVisitor.visit_mypy_files~~QQQ~?C?Q?Q?W?W?YZ euzz|+Z Zttyy12t{{R_` 99M  [sB4cHt|jjSN)r(idsrurnr|s ro visit_importzTransformVisitor.visit_importsdhhmmo&&rqctt|j|j|jj Sr)r*idrelativer{rurs rovisit_import_fromz"TransformVisitor.visit_import_froms$$''4==$**//2CDDrqcBt|j|jSr)r)rrrs rovisit_import_allz!TransformVisitor.visit_import_alls$--00rqct|j|j|j|j|j }|j ||Sr)r visit_varvariabletype_annotation initializerkindset_line)rnargumentargs ro copy_argumentzTransformVisitor.copy_argumentsJ NN8,, -  $ $  MM   X rqc 6t|}|jjD]}|j|t|j|j Dcgc]}|j |c}|j|jttt|j|j}|j|||j|_|j|_|j |_|j"|_|j$|_|j&|_|j(|_|j*|_|j,|_||j.vr|j.|}t1|||S|Scc}wr)FuncMapInitializerbodyacceptr#name argumentsrblockrrrc optional_typetypecopy_function_attributesry is_decoratedis_conditionalabstract_status is_staticis_class is_propertyis_final original_defrmrf)rnr|initstmtrrresults rovisit_func_defzTransformVisitor.visit_func_defsL"$'IINN D KK   II04 ?T   $ ? JJtyy ! ,'););DII)F G   %%c40 ,,!00"22 }} **}} ,, 4,, , ..t4F  -MJ5 @sF c *t|jDcgc]}|j|c}|j|jt t t|j|j}|j|||Scc}wr) r-rrrrrrrcrrr)rnr|rrs rovisit_lambda_exprz"TransformVisitor.visit_lambda_exprst04 ?T   $ ? JJtyy ! ,'););DII)F G  %%c40 @sBc6|j|_|j|_|j|_|j|_|j|_|j |_|j |_|j|_|j|_yr) infomin_argsmax_pos is_overload is_generator is_coroutineis_async_generatoris_awaitable_coroutiner})rnroriginals rorz)TransformVisitor.copy_function_attributessw==(( && "..#00#00!)!sx   T\\ * IIdkk "   t33 4  99,,%%dii0 rqct|j|j|j|j|jSr)r8oprlvaluerrs rovisit_operator_assignment_stmtz/TransformVisitor.visit_operator_assignment_stmtIs4&dggtyy/EtyyQUQ\Q\G]^^rqct|j|j|j|j|j |j Sr)rUrrroptional_block else_bodyrs rovisit_while_stmtz!TransformVisitor.visit_while_stmtNs? IIdii $**TYY"79L9LT^^9\  rqc t|j|j|j|j|j|j|j |j |j|j}|j|_ |j|j|_ |Sr) r"rindexrrrrrunanalyzed_index_typeis_async index_typers rovisit_for_stmtzTransformVisitor.visit_for_stmtSs IIdjj ! IIdii JJtyy !    /   t99 :  }} ++DOO< rqcJt|j|jSr)rArrrs rovisit_return_stmtz"TransformVisitor.visit_return_stmt_s$,,TYY788rqc~t|j|j|j|jSr)r rrmsgrs rovisit_assert_stmtz"TransformVisitor.visit_assert_stmtbs+$))DII.0B0B4880LMMrqcJt|j|jSr)rrrs rovisit_del_stmtzTransformVisitor.visit_del_stmtestyy+,,rqct|j|j|j|j|j |j Sr)r'rrblocksrrrrs ro visit_if_stmtzTransformVisitor.visit_if_stmthsC   TYY ' KK "    /  rqctSr)rrs rovisit_break_stmtz!TransformVisitor.visit_break_stmtos {rqctSr)rrs rovisit_continue_stmtz$TransformVisitor.visit_continue_stmtr ~rqctSr)r=rs rovisit_pass_stmtz TransformVisitor.visit_pass_stmtus zrqc~t|j|j|j|jSr)r?rr from_exprrs rovisit_raise_stmtz!TransformVisitor.visit_raise_stmtxs-++DII68J8J4>>8Z[[rqc tt|j|j|j|j|j |j |j|j|j|j|j|j}|j|_ |Sr) rLrroptional_namesvarsoptional_expressionstypesrhandlersrr finally_bodyis_starrs rovisit_try_stmtzTransformVisitor.visit_try_stmt{s JJtyy !    *  % %djj 1 KK &    /    1 1 2  ll  rqcrt|j|j|j|j|j |j |j|j}|j|_ |jDcgc]}|j|c}|_ |Scc}wr) rVrrrtargetrrrrranalyzed_typesr)rnr|rtyps rovisit_with_stmtz TransformVisitor.visit_with_stmts   TYY '  % %dkk 2 JJtyy !   t33 4   }} 8<8K8KLdiinL MsB4ct|j|j|jnd|j |j|jSdS)N)patternr)rYrrduplicate_namernps rovisit_as_patternz!TransformVisitor.visit_as_patternsR/0yy/DDLL+$010B$$QVV,  HL  rqcpt|jDcgc]}|j|c}Scc}wr)r\patternsrrnrpats rovisit_or_patternz!TransformVisitor.visit_or_patterns(qzzB$,,s+BCCB3cJt|j|jSr)rarrs rovisit_value_patternz$TransformVisitor.visit_value_patternsDIIaff-..rqc,t|jSr)r_valuers rovisit_singleton_patternz(TransformVisitor.visit_singleton_patterns((rqcpt|jDcgc]}|j|c}Scc}wr)r^r"rr#s rovisit_sequence_patternz'TransformVisitor.visit_sequence_patterns(QZZHc S 1HIIHr&cnt|j|j|jSdSr)r`capturerrs rovisit_starred_patternz&TransformVisitor.visit_starred_patterns. @Ud11!))<``[_``rqc &t|jDcgc]}|j|c}|jDcgc]}|j |c}|j |j |j SdScc}wcc}w)N)keysvaluesrest)r[r2rr3rr4r)rnrrr$s rovisit_mapping_patternz&TransformVisitor.visit_mapping_patternsv./ff5d$))D/512:#DLL%:010B$$QVV,  IM  5:s B B c P|jj|}t|tsJt ||j Dcgc]}|j |c}t|j|jDcgc]}|j |c}Scc}wcc}w)N) class_ref positionals keyword_keyskeyword_values) r7rrr@rZr8rlistr9r:)rnrr7r$s rovisit_class_patternz$TransformVisitor.visit_class_patternsKK&&t, )W---67mmDsc*Dann-9:9I9IJ#DLL-J   DJs B >B#c t|j|j|jDcgc]}|j |c}|j |j |j|jScc}w)N)subjectr"guardsbodies) r0rr>r"rrr?rr@)rnors rovisit_match_stmtz!TransformVisitor.visit_match_stmts^IIaii(/0zz:!dll1o:,,QXX6;;qxx(   :sB c,t|jSr)rFrrs rovisit_star_exprz TransformVisitor.visit_star_exprs ""rqc,t|jSr)r,r*rs rovisit_int_exprzTransformVisitor.visit_int_exprtzz""rqc,t|jSr)rHr*rs rovisit_str_exprzTransformVisitor.visit_str_exprrGrqc,t|jSr)rr*rs rovisit_bytes_exprz!TransformVisitor.visit_bytes_expr$$rqc,t|jSr)r!r*rs rovisit_float_exprz!TransformVisitor.visit_float_exprrLrqc,t|jSr)rr*rs rovisit_complex_exprz#TransformVisitor.visit_complex_exprs4::&&rqctSr)rrs rovisit_ellipsiszTransformVisitor.visit_ellipsisrrqc$|j|Srrrs rovisit_name_exprz TransformVisitor.visit_name_exprs""4((rqcvt|j}|j|||j|_|Sr)r4rcopy_refis_special_formrs rorzTransformVisitor.duplicate_names3tyy! c4 "22 rqct|j|j|j}|jr|j|_|j |||Sr)r1rrdef_varrW)rnr|members rovisit_member_exprz"TransformVisitor.visit_member_exprsFDIIdii0$))< <<"\\FN fd# rqc|j|_|j|_|j}t|tr%|jt k7rj|j |}nXt|tr|j |j}n,t|tr|jj||}||_|j|_ |j|_ yr)rrr|rrTrrrrr#rmget is_new_defis_inferred_def)rnrrrs rorWzTransformVisitor.copy_refs==((  fc "}}$/  *^^FJJ/F  (..2266BF!,,&66rqcJt|j|jSr)rXrrs rovisit_yield_from_exprz&TransformVisitor.visit_yield_from_exprsTYYtyy122rqcJt|j|jSr)rWrrrs rovisit_yield_exprz!TransformVisitor.visit_yield_exprs++DII677rqcJt|j|jSr)rrrs rovisit_await_exprz!TransformVisitor.visit_await_exprs499-..rqc t|j|j|j|j|j j |jj |j|jSr) rrcalleerargs arg_kindsru arg_namesranalyzedrs rovisit_call_exprz TransformVisitor.visit_call_exprsc IIdkk "   TYY ' NN   ! NN   !   t}} -   rqc 6t|j|j|j|j|jt t t|j|j}|j|j|_ |Sr) r9rrleftrightrrrNrrlr method_typers ro visit_op_exprzTransformVisitor.visit_op_expr sp GG IIdii IIdjj ! -($*<* rqct|j|j|j}|jDcgc]}|j |c}|_|Scc}wr)r operatorsroperands method_typesr)rnr|rts rovisit_comparison_exprz&TransformVisitor.visit_comparison_exprsPT^^T-=-=dmm-LM;?;L;LMaD..q1M NsA c~t|j|j|j|jSr)rrrrs rovisit_cast_exprz TransformVisitor.visit_cast_exprs) $)),dii .BCCrqc~t|j|j|j|jSr)r rrrs rovisit_assert_type_exprz'TransformVisitor.visit_assert_type_exprs)dii 2DIIdii4HIIrqc|jtk(r8|jJtt|j|jS|S)N)rr)rrrrBrs rovisit_reveal_exprz"TransformVisitor.visit_reveal_expr"s? 99 #99( ((;TYYtyy5IJ JKrqc|j|j}t|tsJt |j |}|j |_|Sr)rcallrrrIrr)rnr|rrs rovisit_super_exprz!TransformVisitor.visit_super_expr*sDyy#$))) 4(99 rqc~t|j|j|j|jSr)r rrrr*rs rovisit_assignment_exprz&TransformVisitor.visit_assignment_expr1s+d11$++> $**@UVVrqct|j|j|j}|j|j|_|Sr)rSrrrrqrs rovisit_unary_exprz!TransformVisitor.visit_unary_expr4s<499!56,,T-=-=> rqcJt|j|jSr)r/rrtrs rovisit_list_exprz TransformVisitor.visit_list_expr9s((455rqc t|jDcgc]+\}}|r|j|nd|j|f-c}}Scc}}wr)rrtr)rnr|keyr*s rovisit_dict_exprz TransformVisitor.visit_dict_expr<sDSWS]S] ^ZS%diintyy/? @ ^  ^s0A cJt|j|jSr)rMrrtrs rovisit_tuple_exprz!TransformVisitor.visit_tuple_exprAs))$**566rqcJt|j|jSr)rDrrtrs rovisit_set_exprzTransformVisitor.visit_set_exprDst'' 344rqct|j|j|j|j}|jr |j |j|_|j rt|j tr!|j|j |_n |j|j |_|j j|j |Sr) r+rbaserrqrrlrrOvisit_type_applicationvisit_type_alias_exprrrs rovisit_index_exprz!TransformVisitor.visit_index_exprGs $)),dii .CD   "ii(8(89CO ==$--9#::4==I #99$--H LL ! !$-- 0 rqc~t|j|j|j|jSr)rOrrrs rorz'TransformVisitor.visit_type_applicationSs)tyy3TZZ 5KLLrqc|j|j}|j|jt|Sr)duplicate_generator generatorrr.rnr|rs rovisit_list_comprehensionz)TransformVisitor.visit_list_comprehensionVs3,,T^^< 4>>* ++rqc|j|j}|j|jt|Sr)rrrrCrs rovisit_set_comprehensionz(TransformVisitor.visit_set_comprehension[s3,,T^^< 4>>* **rqct|j|j|j|j|jDcgc]}|j|c}|j Dcgc]}|j|c}|j Dcgc]!}|Dcgc]}|j|c}#c}}|jScc}wcc}wcc}wcc}}wr)rrrr*indices sequences condlistsrrnr|rs conditionsconds rovisit_dictionary_comprehensionz/TransformVisitor.visit_dictionary_comprehension`s' IIdhh  IIdjj !+/<< 8%TYYu  8#'>> 2aTYYq\ 2HL W** 5$diio 5 W MM    9 2 5 Ws$C 0C C!"C:C!C!c$|j|Sr)rrs rovisit_generator_exprz%TransformVisitor.visit_generator_exprls''--rqct|j|j|jDcgc]}|j|c}|jDcgc]}|j|c}|j Dcgc]!}|Dcgc]}|j|c}#c}}|j Scc}wcc}wcc}wcc}}wr)r%r left_exprrrrrrs rorz$TransformVisitor.duplicate_generatoros IIdnn %+/<< 8%TYYu  8#'>> 2aTYYq\ 2HL W** 5$diio 5 W MM   8 2 5 Ws#B8 B= ? CC CCct|j|j|j|j|j|jSr)rEr begin_index end_indexstriders rovisit_slice_exprz!TransformVisitor.visit_slice_exprxsG   t// 0   t~~ .   t{{ +  rqct|j|j|j|j|j|jSr)rrrif_expr else_exprrs rovisit_conditional_exprz'TransformVisitor.visit_conditional_exprs= IIdii $))DLL"9499T^^;T  rqc t|j|j|j|j|j |j |j |j|jSN)variance) rQrrrr3r upper_bounddefaultrrs rovisit_type_var_exprz$TransformVisitor.visit_type_var_exprsV II MM JJt{{ # IId&& ' IIdll #]]   rqct|j|j|j|j|j|j |j Sr)r<rrrrrrrs rovisit_paramspec_exprz%TransformVisitor.visit_paramspec_exprsF II MM IId&& ' IIdll #]]   rqc t|j|j|j|j|j |j|j |jSr)rRrrrrtuple_fallbackrrrs rovisit_type_var_tuple_exprz*TransformVisitor.visit_type_var_tuple_exprsO II MM IId&& '    IIdll #]]   rqc,t|jSr)rNr|rs rorz&TransformVisitor.visit_type_alias_exprTYY''rqct|j|j|j|j}|j |_|S)N)r}column)r5rold_typer}rr)rnr|ress rovisit_newtype_exprz#TransformVisitor.visit_newtype_exprs2$))T]]4;;W99 rqc,t|jSr)r3rrs rovisit_namedtuple_exprz&TransformVisitor.visit_namedtuple_exprsdii((rqcXt|j|j|jSr)rrrtr3rs rovisit_enum_call_exprz%TransformVisitor.visit_enum_call_exprsDIItzz4;;??rqc,t|jSr)rPrrs rovisit_typeddict_exprz%TransformVisitor.visit_typeddict_exprrrqc,t|jSr)r>rrs rovisit__promote_exprz$TransformVisitor.visit__promote_exprs499%%rqcJt|j|jSr)rKrrs rovisit_temp_nodez TransformVisitor.visit_temp_nodes $)),--rqcJ|j|}|j||Sr)rrrs ror|zTransformVisitor.nodes!kk$ T rqcn|j|}t|tsJ|j||Sr)rrr2rrs romypyfilezTransformVisitor.mypyfiles1kk$#x((( T rqcn|j|}t|tsJ|j||Sr)rrrr)rnrrs rorzTransformVisitor.exprs1kk$#z*** T rqcn|j|}t|tsJ|j||Sr)rrrGr)rnrrs rorzTransformVisitor.stmts1kk$#y))) T rqcn|j|}t|tsJ|j||Sr)rrr]r)rnrrs rorzTransformVisitor.patterns1nnT"#w''' W rqc*|r|j|Syrr)rnrs rorzTransformVisitor.optional_expr 99T? "rqcJ|j|}|j|_|Sr)rr})rnrrs rorzTransformVisitor.blocks"u%:: rqc*|r|j|Syrr)rnrs rorzTransformVisitor.optional_blocks ::e$ $rqcJ|Dcgc]}|j|c}Scc}wr)r)rnrvrs rorvzTransformVisitor.statementss,67D $777 cJ|Dcgc]}|j|c}Scc}wrrrnrrs rorzTransformVisitor.expressionss,78D $888rcJ|Dcgc]}|j|c}Scc}wr)rrs rorz%TransformVisitor.optional_expressionss$6AAT""4(AAArcJ|Dcgc]}|j|c}Scc}wrr)rnrrs rorzTransformVisitor.blockss/56e 5!666rcJ|Dcgc]}|j|c}Scc}wrrT)rnr{rs ror{zTransformVisitor.namess!6;rr>)r|rKrrK)r|r6rr6)rrrr)rrGrrG)rr]rr])rExpression | Nonerr)rrrr)r Block | Nonerr)rvlist[Statement]rr)rlist[Expression]rr)rzIterable[Expression | None]rzlist[Expression | None])r list[Block]rr)r{list[NameExpr]rr)r{zIterable[NameExpr | None]rzlist[NameExpr | None])rrerre)r Type | Nonerr)r list[Type]rr)l__name__ __module__ __qualname____doc__rprrrrrrrrrrrrrrrrrrrrrrrrrrrr r rrr r%r(r+r-r0r5r<rBrDrFrIrKrNrPrRrUrr\rWrbrdrfrmrrrxrzr|r~rrrrrrrrrrrrrrrrrrrrrrrrrrr|rrrrrrrrvrrrr{rrrrrrqroriripsR( ?'E1 *X !$ -/U,4/ _*_ _  9N- \   D/)Ja   ###%%')7$38/  DJW 6 75 M, +  +    .      ( )@(&.       89B6B B 7= 3rqric,eZdZdZddZdfd ZxZS)rzThis traverser creates mappings from nested FuncDefs to placeholder FuncDefs. The placeholders will later be replaced with transformed nodes. c||_yr) transformer)rnrs rorpzFuncMapInitializer.__init__s &rqc||jjvrCt|j|j|j d|jj|<t ||yr)rrmr#rrrsuperr)rnr| __class__s rorz!FuncMapInitializer.visit_func_defsV t''<< <:A 4>>499d;D   1 1$ 7 t$rq)rrirr)r|r#rr)rrrrrpr __classcell__)rs@rorrs '%%rqrN)qr __future__rcollections.abcrtypingrr mypy.nodesrrr 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@rArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrX mypy.patternsrYrZr[r\r]r^r_r`ramypy.traverserrb mypy.typesrcrdre mypy.utilrf mypy.visitorrgrirrrqrors #$!SSSSSSSSSSSSSSSSSSSSSh   ,55*$_ 3{4(_ 3D%)%rq