ML i_dZddlmZddlZddlZddlmZddlmZm Z ddl Z ddl m Z ddlmZmZddlmZerddlZ ddlZ Gd d eeZd d Zdd Zy)z*Conversion of parse tree nodes to strings.) annotationsN)Sequence) TYPE_CHECKINGAny)Options)IdMapper short_type) NodeVisitorceZdZdZgdZddd`dZdadZdbdZdcdZddd Z ded Z dfd Z dgd Z dhd Z didZdjdZdkdZdldZdmdZdndZdodZdpdZdqdZdrdZdsdZdtdZdudZdvdZdwdZdxdZdydZdzdZd{d Z d|d!Z!d}d"Z"d~d#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/dd0Z0dd1Z1dd2Z2 d dd4Z3dd5Z4dd6Z5dd7Z6dd8Z7dd9Z8dd:Z9dd;Z:dd<Z;dd=Z
Z=dd?Z>dd@Z?ddAZ@ddBZAddCZBddDZCddEZDddFZEddGZFddHZGddIZHddJZIddKZJddLZKddMZLddNZMddOZNddPZOddQZPddRZQddSZRddTZSddUZTddVZUddWZVddXZWddYZXddZZYdd[ZZdd\Z[dd]Z\dd^Z]dd_Z^y3)StrConvzVisitor for converting a node to a human-readable string. For example, an MypyFile node from program '1' is converted into something like this: MypyFile:1( fnam ExpressionStmt:1( IntExpr(1))) )optionsshow_ids id_mapperF)rcR||_||_d|_|rt|_yyN)r rrr)selfrr s R/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypy/strconv.py__init__zStrConv.__init__"s(   *. %ZDN cddl}|j|jj|j|j S)Nr)rr ) mypy.typesaccepttypesTypeStrVisitorrr )rtmypys rstringify_typezStrConv.stringify_type)s3xx 11DNNTXT`T`1abbrcR|jr|jj|Syr)ridros rget_idzStrConv.get_id.s! >>>>$$Q' 'rcF|jrd|j|dSy)N<>)rr"r s r format_idzStrConv.format_id3s$ >>t{{1~&a( (rct|dzt|jz}|jr&|jJ|d|j |dz }t |||S)zConvert a list of items to a multiline pretty-printed string. The tag is produced from the type name of obj and its line number. See mypy.util.dump_tagged for a description of the nodes argument. :r$r%)r strlinerrr" dump_tagged)rnodesobjtags rdumpz StrConv.dump9sbo#c#((m3 ==>>- -- Qt{{3'(* *C5#t,,rcg}g}|jD]}|j}|jr|j|j;|j r8|j J|jd|j|j gf|tjjk(r|jd|jgf|tjjk(s|jd|jgfg}|jr1|jD]"}|j|j|$|r|jd|f|jr|j|j|jr|jd|j||j|j |S)zReturn a list in a format suitable for dump() that represents the arguments and the body of a function. The caller can then decorate the array with information specific to methods, global functions or anonymous functions. defaultVarArg DictVarArgArgs Generator) argumentskind is_requiredappendvariable is_optional initializerrr-ARG_STAR ARG_STAR2 type_args type_paramtype is_generatorextendbody)rr!argsextraargr8aps r func_helperzStrConv.func_helperFsg JL8:;; =C'*xxD! CLL)!!#222 Ys(GHI,,, h78--- lS\\N;< = ;;[[ -+, -  HHfd^ $ 66 HHQVV  >> HH[ !  rc |jg}|jr|jdd|jdk7rm|jd|jj t j t jzdj t jd|jr=|jddjdt|jDz|j||S) NrBOMmainr&/zIgnoredLines(%s), c32K|]}t|ywr)r*).0r+s r z*StrConv.visit_mypy_file..vs3b$CI3bs) defsis_bominsertpathreplaceosgetcwdsep ignored_linesr:joinsortedr0rr!rIs rvisit_mypy_filezStrConv.visit_mypy_fileisx 88 HHQ  66V  HHQryy{RVV';R@HHQTU V ?? HH'$))3b&QRQ`Q`Ja3b*bb cyyArcg}|jD]/\}}||j|d||j|1d|jddj|dS)N : zImport:(rP))idsr:r+r])rr!rIras_ids r visit_importzStrConv.visit_importysi  IB B4s5'*+   $))A,q11rcg}|jD]/\}}||j|d||j|1d|jdd|jz|jzddj |dS)Nrbz ImportFrom:rc.z, [rP]))namesr:r+relativerr])rr!rInameas_names rvisit_import_fromzStrConv.visit_import_froms WW MD'"D6WI./   QVVHAcAJJ&6&=%>c$))A,rRRrc\d|jdd|jz|jzdS)Nz ImportAll:rcrird)r+rlrr s rvisit_import_allzStrConv.visit_import_alls.AFF81S1::%5%<$=Q??rc|j|}|jd|j|jDchc]}|j}}t |t jjt jjhzdkDr |jdd|jd|jt jjt jjfvr|jdd|jr|jdd|jr|jdd|j r|jdd |j#||Scc}w) NrzMaxPos(rdAbstractStaticClassProperty)rKrVrmr7r8lenrr- ARG_NAMED ARG_NAMED_OPTmax_posabstract_status IS_ABSTRACTIMPLICITLY_ABSTRACT is_staticis_class is_propertyr0)rr!rIrH arg_kindss rvisit_func_defzStrConv.visit_func_defs   Q  AFF)*5#SXX5 5 yDJJ00$**2J2JKK Lq P HHQ'!))A. /  !7!79W9W X X HHR $ ;; HHR " :: HHR ! == HHR $yyA6sE2cr|jj}|jr|jd|j|jr|jd|j|j r|jdd|j r|jdd|j||S)Nrrtrvrw)itemscopyrBrVimplrrr0r_s rvisit_overloaded_func_defz!StrConv.visit_overloaded_func_defs} 66 HHQ  66 HHQ  ;; HHR " :: HHR !yyArcl|j|jjg}|jr|jr|jj r{t |jj dk7s0|jj djjdk7rG|jdd|jj fn|jdd|jf|jr|jdd|jf|jr/|jdd|jjd|jr|jdd |jf|jrX|jjrB|jdd d jfd |jjDd |jr?|jj r)|jdd|jj gf|jr(|jj"r|jdd|j$r;t'|j$D]#}|jdj)|%j+||S)Nrsrbuiltins.objectBaseType BaseTypeExprTypeVarsz Metaclass(rd Decoratorsz Promote([,c3@K|]}j|ywr)r)rRrJrs rrSz*StrConv.visit_class_def..s,]T-@-@-C,]srj TupleType FallbackToAny)rmrTrEbase_type_exprsinfobasesryrBfullnamerV type_vars metaclassr decorators_promoter] tuple_typefallback_to_anyr@reversedrAr0rr!rIrJs` rvisit_class_defzStrConv.visit_class_defs VVQVV[[ !  vv!&&,,qvv||$)QVV\\!_-A-A-J-JN_-_HHQQVV\\ :;^Q->->?@ ;; HHQQ[[1 2 ;; HHQ*Q[[%7%7%=$>a@ A << HHQq||4 5 66affoo HHQ)CHH,]QVV__,]$]#^^`a b 66aff'' HHQqvv'8'8&9: ; 66aff,, HHQ ( ;;akk* 0DOOA./ 0yyArcXd}|jdkrd}d|zdz|jzdzS)Nr&rz:nilVarrcrd)r+rm)rr!lsts r visit_varzStrConv.visit_vars6 66A:Cs{S 166)C//rc<|j|jg|Srr0rkr s rvisit_global_declzStrConv.visit_global_declyy!''A&&rc<|j|jg|Srrr s rvisit_nonlocal_declzStrConv.visit_nonlocal_declrrch|j|j|j|jg|Sr)r0varrfuncr s rvisit_decoratorzStrConv.visit_decorators&yy!%%qvv6::rc:|j|j|Sr)r0rEr s r visit_blockzStrConv.visit_blocksyy##rc<|j|jg|Srr0exprr s rvisit_expression_stmtzStrConv.visit_expression_stmtyy!&&1%%rcg}t|jdkDrd|jfg}n|jdg}|j|j|jr|j|j|j ||S)NrsLvaluesr)rylvaluesr:rvaluerBr0r_s rvisit_assignment_stmtzStrConv.visit_assignment_stmtsn qyy>A QYY'(A1A  66 HHQVV yyArch|j|j|j|jg|Sr)r0oplvaluerr s rvisit_operator_assignment_stmtz&StrConv.visit_operator_assignment_stmts&yy!$$!((3Q77rc|j|jg}|jr'|jd|jjf|j ||S)NElse)rrE else_bodyr:r0r_s rvisit_while_stmtzStrConv.visit_while_stmtsF' ;; HHfakk../ 0yyArcg}|jr|jd|j|j|jr|j|j|j |j |j g|jr'|jd|jj f|j||S)NAsyncr&r) is_asyncr:index index_typerDrrErr0r_s rvisit_for_stmtzStrConv.visit_for_stmts :: HH] #  << HHQ\\ " !&&!&&!" ;; HHfakk../ 0yyArc<|j|jg|Srrr s rvisit_return_stmtzStrConv.visit_return_stmtrrcrg}tt|jD]M}|jd|j|gf|jd|j|jfO|j s|j ||S|j |d|j jfg|S)NIfThenr)rangeryrr:rErr0rr!rIis r visit_if_stmtzStrConv.visit_if_stmtss166{# /A HHdQVVAYK( ) HHfaffQinn- . /{{99Q? "99a&!++*:*:!;> HHi!4!45 6yyArcg}|jr|jdtt|jD]T}|jd|j|gf|j |s4|jd|j |gfV|j r|j|j |j||jgz|S)NrExprTarget) rr:rryrtargetunanalyzed_typer0rErs rvisit_with_stmtzStrConv.visit_with_stmt8s :: HH] #s166{# 4A HHfqvvayk* +xx{(QXXa[M23 4   HHQ&& 'yyaffXq))rc||jg}tt|jD]}}|j d|j|gf|j |!|j d|j |gf|j d|j |jf|j||S)NPatternGuardBody) subjectrrypatternsr:guardsbodiesrEr0rs rvisit_match_stmtzStrConv.visit_match_stmtDs {s1::' 1A HHi!**Q-1 2xx{&'AHHQK=12 HHfahhqk../ 0  1 yyArc|jg}|jD]"}|j|j|$|j|j|j ||Sr)rmr@r:rAvaluer0rs rvisit_type_alias_stmtzStrConv.visit_type_alias_stmtMsUx )A HHT__Q' ( ) yyArcg}|jtjjk(rd}n,|jtjjk(rd}nd}|j ||j z|jr|j |j|jr|j d|jf|jr|j d|jgfd|fgS)Nz**rr&ValuesDefault TypeParam) r8rr-PARAM_SPEC_KINDTYPE_VAR_TUPLE_KINDr:rm upper_boundvaluesr2)rrJrIprefixs rrAzStrConv.type_paramTs 66TZZ// /F VVtzz55 5FF !&&! == HHQ]] # 88 HHh) * 99 HHi!))- .a !!rc"d|jdS)NzIntExpr(rdrr s rvisit_int_exprzStrConv.visit_int_expris!''!$$rc@d|j|jdS)NzStrExpr(rdstr_reprrr s rvisit_str_exprzStrConv.visit_str_exprls$--0133rc@d|j|jdS)Nz BytesExpr(rdr r s rvisit_bytes_exprzStrConv.visit_bytes_exprosDMM!''23155rcbtjdd|}tjdd|S)Nz\\u[0-9a-fA-F]{4}c*d|jdzS)N\r)groupms rz"StrConv.str_repr..ss4!''!*3Drz [^\x20-\x7e]c<dt|jdzS)Nz\u%.4xr)ordrrs rrz"StrConv.str_repr..ts)c!''!*o2Mr)resub)rss rr zStrConv.str_reprrs+ FF')Da Hvv&(MqQQrc"d|jdS)Nz FloatExpr(rdr r s rvisit_float_exprzStrConv.visit_float_exprvsAGG9A&&rc"d|jdS)Nz ComplexExpr(rdr r s rvisit_complex_exprzStrConv.visit_complex_exprysaggYa((rcy)NEllipsisr s rvisit_ellipsiszStrConv.visit_ellipsis|src<|j|jg|Srrr s rvisit_star_exprzStrConv.visit_star_exprrrc|j|j|j|j|jxs |j |j }t|j tjjr2|j jr|d|j jz }t|dz|zdzS)Nz = rcrd) pretty_namermr8ris_inferred_defis_special_formnode isinstancerr-ris_final final_valuer rr!prettys rvisit_name_exprzStrConv.visit_name_exprs!! FFAFFAJJ(9(9(NQ=N=NPQPVPV  affdjjnn -!&&// AFF../0 0F!}s"V+c11rNc|}|r|dz }|r|j|}nd}t|tjjr ||k(r||z }|S|tjj k(s||k7r|r |d||dz }|S|tjj k(r |d|dz }|S|tjjk(r |d|dz }|S||z }|S)Nrr&z []z [lz [m)r'r,rr-MypyFileGDEFLDEFMDEF)rrmr8rr) target_nodenrs rr(zStrConv.pretty_names   HA  ,BB k4::#6#6 7DHO>OQRQWQWXyy!&&&)1--rc<|j|jg|Srrr s rvisit_yield_exprzStrConv.visit_yield_exprrrc|jr,|j|jj|g|S|jg|Sr)rr0rr s rvisit_yield_from_exprzStrConv.visit_yield_from_exprs; 6699affmmD12A6 699R# #rc|jr|jj|Sg}g}t|jD]#\}}|tj j tj jfvrN|j|j||tj jk(sy|jd|tj jk(r0|jd|j||j|gf|tj jk(r#|jd|j|gftd||jd|fg}|j||z|S)Nr3KwArgsr4z unknown kind r5)analyzedr enumeraterrr-ARG_POSr>r:rFrz arg_namesr? RuntimeErrorcalleer0)rr!rFrGrr8rIs rvisit_call_exprzStrConv.visit_call_exprs7 ::::$$T* *,.35 - ;GAt **DJJ,?,?@@ AFF1I&4::...LL*--- hQ(CDE--- lQVVAYK89"]4 :: ;64.1yyUA&&rc|jr|jj|S|j|j|j|j g|Sr)rBrr0rleftrightr s r visit_op_exprzStrConv.visit_op_exprsB ::::$$T* *yy!$$0!44rcR|j|j|jg|Sr)r0 operatorsoperandsr s rvisit_comparison_exprzStrConv.visit_comparison_exprs yy!++qzz2A66rcR|j|j|jg|Srr0rrBr s rvisit_cast_exprzStrConv.visit_cast_expr yy!&&!&&)1--rcR|j|j|jg|SrrRr s rvisit_assert_type_exprzStrConv.visit_assert_type_exprrTrc|jtjjk(r|j |j g|S|j |j g|Sr)r8rr- REVEAL_TYPEr0r local_nodesr s rvisit_reveal_exprzStrConv.visit_reveal_exprsH 66TZZ++ +99affXq) )99amm_a0 0rcR|j|j|jg|Sr)r0rrr s rvisit_assignment_exprzStrConv.visit_assignment_exprs yy!((AGG,a00rcR|j|j|jg|Sr)r0rrr s rvisit_unary_exprzStrConv.visit_unary_exprsyy!$$++rc:|j|j|Srr0rr s rvisit_list_exprzStrConv.visit_list_expryy!$$rcp|j|jDcgc] \}}||g c}}|Scc}}wrr`)rr!kvs rvisit_dict_exprzStrConv.visit_dict_exprs-yyQWW5TQ1a&5q995s2 c:|j|j|Srr`r s rvisit_set_exprzStrConv.visit_set_exprrbrc:|j|j|Srr`r s rvisit_tuple_exprzStrConv.visit_tuple_exprrbrc|jr|jj|S|j|j|jg|Sr)rBrr0baserr s rvisit_index_exprzStrConv.visit_index_exprs< ::::$$T* *yy!&&!''*A..rcR|j|j|jg|Sr)r0rmcallr s rvisit_super_exprzStrConv.visit_super_exprrTrcV|j|jd|jfg|S)NTypes)r0rrr s rvisit_type_applicationzStrConv.visit_type_applications%yy!&&7AGG"45q99rcddl}g}|j|jjk(r|dgz }|j|jjk(r|dgz }|j r|d|j fgz }|j j|jds#|d|j|jdgz }|j||S)NrVariance(COVARIANT)Variance(CONTRAVARIANT)rr UpperBound(rd) rvariancer- COVARIANT CONTRAVARIANTrris_named_instancerrr0rr!rrIs rvisit_type_var_exprzStrConv.visit_type_var_exprs ::-- - '( (A ::11 1 +, ,A 88 8QXX&' 'Azz++AMM;LM K 3 3AMM BC1EF FAyyArchddl}g}|j|jjk(r|dgz }|j|jjk(r|dgz }|j j |jds#|d|j|jdgz }|j||SNrrurvrrwrd rrxr-ryrzrr{rrr0r|s rvisit_paramspec_exprzStrConv.visit_paramspec_expr ::-- - '( (A ::11 1 +, ,Azz++AMM;LM K 3 3AMM BC1EF FAyyArchddl}g}|j|jjk(r|dgz }|j|jjk(r|dgz }|j j |jds#|d|j|jdgz }|j||Srrr|s rvisit_type_var_tuple_exprz!StrConv.visit_type_var_tuple_exprrrcTd|j|jjdS)NzTypeAliasExpr(rd)rr+rr s rvisit_type_alias_exprzStrConv.visit_type_alias_expr s% 3 3AFFMM BC1EErcd|jd|jjd|jj(|j |jjdSddS)NzNamedTupleExpr:rcrPrd)r+rrmrrr s rvisit_namedtuple_exprzStrConv.visit_namedtuple_expr#s !&&++bcdcicictctdA9L9LQVVM^M^9_9LLMN NGK9LLMN Nrcjd|jd|jjd|jdS)Nz EnumCallExpr:rcrPrd)r+rrmrr s rvisit_enum_call_exprzStrConv.visit_enum_call_expr&s-qvvha }BqwwiqAArcPd|jd|jjdS)NzTypedDictExpr:rcrd)r+rrmr s rvisit_typeddict_exprzStrConv.visit_typeddict_expr)s#xq Q77rcZd|jd|j|jdS)Nz PromoteExpr:rcrd)r+rrBr s rvisit__promote_exprzStrConv.visit__promote_expr,s+affXQt':':166'B&C1EErc xd|jd|jd|j|jg|dS)Nz NewTypeExpr:rcrPrd)r+rmr0old_typer s rvisit_newtype_exprzStrConv.visit_newtype_expr/s7affXQqvvhbAJJ<1K0LANNrcH|j|}|j||Sr)rKr0r_s rvisit_lambda_exprzStrConv.visit_lambda_expr2s"   Q yyArct|jr |jnd}|j|j|j|j |g|Sr)any condlistsr0 left_exprindices sequencesrr!rs rvisit_generator_exprzStrConv.visit_generator_expr6s>#&q{{#3AKK yy!++qyy!++yI1MMrc<|j|jg|Srr0 generatorr s rvisit_list_comprehensionz StrConv.visit_list_comprehension:yy!++**rc<|j|jg|Srrr s rvisit_set_comprehensionzStrConv.visit_set_comprehension=rrct|jr |jnd}|j|j|j|j |j |g|Sr)rrr0keyrrrrs rvisit_dictionary_comprehensionz&StrConv.visit_dictionary_comprehension@sD#&q{{#3AKK yy!%%!))Q[[)LaPPrcn|jd|jgf|j|jg|S)N Condition)r0condif_expr else_exprr s rvisit_conditional_exprzStrConv.visit_conditional_exprDs-yy;1199akkJANNrc|j|j|jg}|dsd|d<|dsd|d<|j||S)Nrzrs) begin_index end_indexstrider0r_s rvisit_slice_exprzStrConv.visit_slice_exprGsJ q{{AHH=tAaDtAaDyyArc<|j|jg|Sr)r0rBr s rvisit_temp_nodezStrConv.visit_temp_nodeOrrcR|j|j|jg|Sr)r0patternrmr s rvisit_as_patternzStrConv.visit_as_patternRs yy!))QVV,a00rc:|j|j|Srr0rr s rvisit_or_patternzStrConv.visit_or_patternUyyQ''rc<|j|jg|Srrr s rvisit_value_patternzStrConv.visit_value_patternXrrc<|j|jg|Sr)r0rr s rvisit_singleton_patternzStrConv.visit_singleton_pattern[rrc:|j|j|Srrr s rvisit_sequence_patternzStrConv.visit_sequence_pattern^rrc<|j|jg|Sr)r0capturer s rvisit_starred_patternzStrConv.visit_starred_patternasyy!))a((rcHg}tt|jD]D}|jd|j|gf|jd|j|gfF|j |jd|j gf|j ||S)NKeyValueRest)rrykeysr:rrestr0rs rvisit_mapping_patternzStrConv.visit_mapping_patterndss166{# /A HHeaffQi[) * HHg }- . / 66  HHfqvvh' (yyArcN|jg}t|jdkDr|jd|jft t|j D]1}|jd|j ||j |gf3|j||S)Nr PositionalsKeyword) class_refry positionalsr:r keyword_keyskeyword_valuesr0rs rvisit_class_patternzStrConv.visit_class_patternms } q}}  ! HHmQ]]3 4s1>>*+ LA HHi!.."3Q5E5Ea5H!IJ K LyyAr)rboolr rreturnNone)rzmypy.types.Typerr*)r!objectr int | None)r!rrr*)r-Sequence[object]r.zmypy.nodes.Contextrr*)r!zmypy.nodes.FuncItemrz list[object])r!zmypy.nodes.MypyFilerr*)r!zmypy.nodes.Importrr*)r!zmypy.nodes.ImportFromrr*)r!zmypy.nodes.ImportAllrr*)r!zmypy.nodes.FuncDefrr*)r!zmypy.nodes.OverloadedFuncDefrr*)r!zmypy.nodes.ClassDefrr*)r!zmypy.nodes.Varrr*)r!zmypy.nodes.GlobalDeclrr*)r!zmypy.nodes.NonlocalDeclrr*)r!zmypy.nodes.Decoratorrr*)r!zmypy.nodes.Blockrr*)r!zmypy.nodes.ExpressionStmtrr*)r!zmypy.nodes.AssignmentStmtrr*)r!z!mypy.nodes.OperatorAssignmentStmtrr*)r!zmypy.nodes.WhileStmtrr*)r!zmypy.nodes.ForStmtrr*)r!zmypy.nodes.ReturnStmtrr*)r!zmypy.nodes.IfStmtrr*)r!zmypy.nodes.BreakStmtrr*)r!zmypy.nodes.ContinueStmtrr*)r!zmypy.nodes.PassStmtrr*)r!zmypy.nodes.RaiseStmtrr*)r!zmypy.nodes.AssertStmtrr*)r!zmypy.nodes.AwaitExprrr*)r!zmypy.nodes.DelStmtrr*)r!zmypy.nodes.TryStmtrr*)r!zmypy.nodes.WithStmtrr*)r!zmypy.nodes.MatchStmtrr*)r!zmypy.nodes.TypeAliasStmtrr*)rJzmypy.nodes.TypeParamrz list[Any])r!zmypy.nodes.IntExprrr*)r!zmypy.nodes.StrExprrr*)r!zmypy.nodes.BytesExprrr*)rr*rr*)r!zmypy.nodes.FloatExprrr*)r!zmypy.nodes.ComplexExprrr*)r!zmypy.nodes.EllipsisExprrr*)r!zmypy.nodes.StarExprrr*)r!zmypy.nodes.NameExprrr*r) rmr*r8rr str | Noner)rr8zmypy.nodes.Node | Nonerr*)r!zmypy.nodes.MemberExprrr*)r!zmypy.nodes.YieldExprrr*)r!zmypy.nodes.YieldFromExprrr*)r!zmypy.nodes.CallExprrr*)r!zmypy.nodes.OpExprrr*)r!zmypy.nodes.ComparisonExprrr*)r!zmypy.nodes.CastExprrr*)r!zmypy.nodes.AssertTypeExprrr*)r!zmypy.nodes.RevealExprrr*)r!zmypy.nodes.AssignmentExprrr*)r!zmypy.nodes.UnaryExprrr*)r!zmypy.nodes.ListExprrr*)r!zmypy.nodes.DictExprrr*)r!zmypy.nodes.SetExprrr*)r!zmypy.nodes.TupleExprrr*)r!zmypy.nodes.IndexExprrr*)r!zmypy.nodes.SuperExprrr*)r!zmypy.nodes.TypeApplicationrr*)r!zmypy.nodes.TypeVarExprrr*)r!zmypy.nodes.ParamSpecExprrr*)r!zmypy.nodes.TypeVarTupleExprrr*)r!zmypy.nodes.TypeAliasExprrr*)r!zmypy.nodes.NamedTupleExprrr*)r!zmypy.nodes.EnumCallExprrr*)r!zmypy.nodes.TypedDictExprrr*)r!zmypy.nodes.PromoteExprrr*)r!zmypy.nodes.NewTypeExprrr*)r!zmypy.nodes.LambdaExprrr*)r!zmypy.nodes.GeneratorExprrr*)r!zmypy.nodes.ListComprehensionrr*)r!zmypy.nodes.SetComprehensionrr*)r!z"mypy.nodes.DictionaryComprehensionrr*)r!zmypy.nodes.ConditionalExprrr*)r!zmypy.nodes.SliceExprrr*)r!zmypy.nodes.TempNoderr*)r!zmypy.patterns.AsPatternrr*)r!zmypy.patterns.OrPatternrr*)r!zmypy.patterns.ValuePatternrr*)r!zmypy.patterns.SingletonPatternrr*)r!zmypy.patterns.SequencePatternrr*)r!zmypy.patterns.StarredPatternrr*)r!zmypy.patterns.MappingPatternrr*)r!zmypy.patterns.ClassPatternrr*)___name__ __module__ __qualname____doc__ __slots__rrr"r'r0rKr`rgrorqrrrrrrrrrrrrrrrrrrrrrrrrrrrAr rrr rr r$r&r1r(r;r=r?rHrLrPrSrVrZr\r^rarfrhrjrmrprsr}rrrrrrrrrrrrrrrrrrrrrrrrr#rrr r s  5I+0(c   -F 2S@  60''; $& 8 & A   3* &&$ *"*%46R')&2/3     ,  <.&$ '&5 7..11,%:%%/ .:   FNB8FON++QO&1(&'()rr c ddlm}m}g}|r|j|dz|D]=}t |t r |s|jt |d|4t |tr/t |d|d|}|jt|dst |tjjr+|jt|j|dt ||rH|jt|j||j|jd||jtt|d@|r |dxxd z cc<d j!|S) aXConvert an array into a pretty-printed multiline string representation. The format is tag( item1.. itemN) Individual items are formatted like this: - arrays are flattened - pairs (str, array) are converted recursively, so that str is the tag - other items are converted to strings and indented r)TyperrcNrs)r rtrd )rrrr:r,listr,tupleindentrr-Noderrr r*r])r-r/str_convrrrIr9rs rr,r,ws+0A  s ( a Qh78 5 !AaD!A$1A HHVAq\ " 4::?? + HHVAHHX.2 3 4 HHqxxx/A/A8K[K[ \]_`a ] HHVCFA& '(  "  99Q<rcFd|z|z}|jddd|zz}|S)z>Indent all the lines in s (separated by newlines) by n spaces. r)rX)rr9s rrrs, a! A $sQw'A Hr)r-rr/rrr rr*)rr*r9intrr*)r __future__rrYrcollections.abcrtypingrr mypy.nodesr mypy.optionsr mypy.utilrr mypy.visitorr mypy.patternsrr*r r,rr#rrrsK0" $% *$` k#` F"J r