
    %^gl_                        d Z ddlmZ ddlZddlZddlmZmZmZ ddl	Z
ddlmZ ddlmZmZ ddlmZ erddlZ
ddlZ
 G d d	ee         Zdd
ZddZy)z*Conversion of parse tree nodes to strings.    )annotationsN)TYPE_CHECKINGAnySequence)Options)IdMapper
short_type)NodeVisitorc                     e Zd ZdZg dZddd`dZdadZdbdZdcdZddd	Z	ded
Z
dfdZdgdZdhdZdidZdjdZdkdZdldZdmdZdndZdodZdpdZdqdZdrdZdsdZdtdZdudZdvdZdwdZdxdZdydZdzdZd{d Z d|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/dd0Z0dd1Z1dd2Z2	 d	 	 	 	 	 	 	 	 	 	 	 dd4Z3dd5Z4dd6Z5dd7Z6dd8Z7dd9Z8dd:Z9dd;Z:dd<Z;dd=Z<dd>Z=dd?Z>dd@Z?ddAZ@ddBZAddCZBddDZCddEZDddFZEddGZFddHZGddIZHddJZIddKZJddLZKddMZLddNZMddOZNddPZOddQZPddRZQddSZRddTZSddUZTddVZUddWZVddXZWddYZXddZZYdd[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)))
    )optionsshow_ids	id_mapperF)r   c               R    || _         || _        d | _        |rt               | _        y y N)r   r   r   r   )selfr   r   s      ,lib/python3.12/site-packages/mypy/strconv.py__init__zStrConv.__init__!   s(     *.%ZDN     c                    dd l }|j                  |j                  j                  | j                  | j
                              S )Nr   )r   r   )
mypy.typesaccepttypesTypeStrVisitorr   r   )r   tmypys      r   stringify_typezStrConv.stringify_type(   s3    xx

11DNNTXT`T`1abbr   c                R    | j                   r| j                   j                  |      S y r   )r   idr   os     r   get_idzStrConv.get_id-   s!    >>>>$$Q''r   c                F    | j                   rd| j                  |       dS y)N<> )r   r"   r    s     r   	format_idzStrConv.format_id2   s$    >>t{{1~&a((r   c                    t        |      dz   t        |j                        z   }| j                  r&| j                  J |d| j                  |       dz  }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	   strliner   r   r"   dump_tagged)r   nodesobjtags       r   dumpzStrConv.dump8   sb     o#c#((m3==>>---Qt{{3'(**C5#t,,r   c                   g }g }|j                   D ]  }|j                  }|j                         r|j                  |j                         ;|j                         r8|j                  J |j                  d|j                  |j                  gf       |t        j                  j                  k(  r|j                  d|j                  gf       |t        j                  j                  k(  s|j                  d|j                  gf        g }|j                  r1|j                  D ]"  }|j                  | j                  |             $ |r|j                  d|f       |j                  r|j                  |j                         |j                  r|j                  d       |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.
        defaultVarArg
DictVarArgArgs	Generator)	argumentskindis_requiredappendvariableis_optionalinitializerr   r-   ARG_STAR	ARG_STAR2	type_args
type_paramtypeis_generatorextendbody)r   r!   argsextraargr8   aps           r   func_helperzStrConv.func_helperE   s]    JL8:;;C'*xxD!CLL)!!#222Ys(GHI,,,h78---lS\\N;<  ;;[[+, !HHfd^$66HHQVV>>HH[!		r   c           	        |j                   g}|j                  r|j                  dd       |j                  dk7  rm|j                  d|j                  j	                  t        j                         t
        j                  z   d      j	                  t
        j                  d             |j                  r=|j                  ddj                  d t        |j                        D              z         | j                  ||      S )	Nr   BOMmainr&   /zIgnoredLines(%s), c              3  2   K   | ]  }t        |        y wr   )r*   ).0r+   s     r   	<genexpr>z*StrConv.visit_mypy_file.<locals>.<genexpr>u   s     3bJa$CIJas   )defsis_bominsertpathreplaceosgetcwdsepignored_linesr:   joinsortedr0   r   r!   rI   s      r   visit_mypy_filezStrConv.visit_mypy_fileh   s    x88HHQ 66V HHQryy{RVV';R@HHQTUV??HH'$))3b&QRQ`Q`Ja3b*bbcyyAr   c                    g }|j                   D ]/  \  }}||j                  | d|        |j                  |       1 d|j                   ddj                  |       dS )N : zImport:(rP   ))idsr:   r+   r]   )r   r!   rI   r   as_ids        r   visit_importzStrConv.visit_importx   sd    IB B4s5'*+	 
 $))A,q11r   c                    g }|j                   D ]/  \  }}||j                  | d|        |j                  |       1 d|j                   dd|j                  z  |j                  z    ddj                  |       dS )Nrb   zImportFrom:rc   .z, [rP   ]))namesr:   r+   relativer   r]   )r   r!   rI   nameas_names        r   visit_import_fromzStrConv.visit_import_from   s}    WWMD'"D6WI./	 %
 QVVHAcAJJ&6&=%>c$))A,rRRr   c                \    d|j                    dd|j                  z  |j                  z    dS )Nz
ImportAll:rc   ri   rd   )r+   rl   r   r    s     r   visit_import_allzStrConv.visit_import_all   s.    AFF81S1::%5%<$=Q??r   c                   | j                  |      }|j                  d|j                         |j                  D ch c]  }|j                   }}t        |t        j                  j                  t        j                  j                  hz        dkD  r |j                  dd|j                   d       |j                  t        j                  j                  t        j                  j                  fv r|j                  dd       |j                  r|j                  dd       |j                  r|j                  dd       |j                   r|j                  dd	       | j#                  ||      S c c}w )
Nr      zMaxPos(rd   AbstractStaticClassProperty)rK   rV   rm   r7   r8   lenr   r-   	ARG_NAMEDARG_NAMED_OPTmax_posabstract_statusIS_ABSTRACTIMPLICITLY_ABSTRACT	is_staticis_classis_propertyr0   )r   r!   rI   rH   	arg_kindss        r   visit_func_defzStrConv.visit_func_def   s   Q	AFF)*5#SXX	5yDJJ00$**2J2JKKLqPHHQ'!))A./!7!79W9W XXHHR$;;HHR"::HHR!==HHR$yyA 6s   E2c                r   |j                   j                         }|j                  r|j                  d|j                         |j                  r|j                  d|j                         |j
                  r|j                  dd       |j                  r|j                  dd       | j                  ||      S )Nr   rt   rv   rw   )itemscopyrB   rV   implr   r   r0   r_   s      r   visit_overloaded_func_defz!StrConv.visit_overloaded_func_def   s}    66HHQ66HHQ;;HHR"::HHR!yyAr   c                l    |j                   |j                  j                  g}|j                  r|j                  r|j                  j
                  r{t        |j                  j
                        dk7  s0|j                  j
                  d   j                  j                  dk7  rG|j                  dd|j                  j
                  f       n|j                  dd|j                  f       |j                  r|j                  dd|j                  f       |j                  r/|j                  dd|j                  j                          d       |j                  r|j                  dd	|j                  f       |j                  rX|j                  j                  rB|j                  dd
dj                   fd|j                  j                  D               d       |j                  r?|j                  j                   r)|j                  dd|j                  j                   gf       |j                  r(|j                  j"                  r|j                  dd       |j$                  r;t'        |j$                        D ]#  }|j                  d j)                  |             %  j+                  ||      S )Nrs   r   builtins.objectBaseTypeBaseTypeExprTypeVarsz
Metaclass(rd   
Decoratorsz	Promote([,c              3  @   K   | ]  }j                  |        y wr   )r   )rR   rJ   r   s     r   rS   z*StrConv.visit_class_def.<locals>.<genexpr>   s     ,]_T-@-@-C_s   rj   	TupleTypeFallbackToAny)rm   rT   rE   base_type_exprsinfobasesry   rB   fullnamerV   	type_vars	metaclassr   
decorators_promoter]   
tuple_typefallback_to_anyr@   reversedrA   r0   r   r!   rI   rJ   s   `   r   visit_class_defzStrConv.visit_class_def   s   VVQVV[[! vv!&&,,qvv||$)QVV\\!_-A-A-J-JN_-_HHQQVV\\ :;^Q->->?@;;HHQQ[[12;;HHQ*Q[[%7%7%=$>a@A<<HHQq||4566affooHHQ)CHH,]QVV__,]$]#^^`ab66aff''HHQqvv'8'8&9:;66aff,,HHQ(;;akk*DOOA./ +yyAr   c                X    d}|j                   dk  rd}d|z   dz   |j                  z   dz   S )Nr&   r   z:nilVarrc   rd   )r+   rm   )r   r!   lsts      r   	visit_varzStrConv.visit_var   s6     66A:Cs{S 166)C//r   c                <    | j                  |j                  g|      S r   r0   rk   r    s     r   visit_global_declzStrConv.visit_global_decl       yy!''A&&r   c                <    | j                  |j                  g|      S r   r   r    s     r   visit_nonlocal_declzStrConv.visit_nonlocal_decl   r   r   c                h    | j                  |j                  |j                  |j                  g|      S r   )r0   varr   funcr    s     r   visit_decoratorzStrConv.visit_decorator   s&    yy!%%qvv6::r   c                :    | j                  |j                  |      S r   )r0   rE   r    s     r   visit_blockzStrConv.visit_block   s    yy##r   c                <    | j                  |j                  g|      S r   r0   exprr    s     r   visit_expression_stmtzStrConv.visit_expression_stmt       yy!&&1%%r   c                   g }t        |j                        dkD  rd|j                  fg}n|j                  d   g}|j                  |j                         |j                  r|j                  |j                         | j                  ||      S )Nrs   Lvaluesr   )ry   lvaluesr:   rvaluerB   r0   r_   s      r   visit_assignment_stmtzStrConv.visit_assignment_stmt   sn    qyy>AQYY'(A1A	66HHQVVyyAr   c                h    | j                  |j                  |j                  |j                  g|      S r   )r0   oplvaluer   r    s     r   visit_operator_assignment_stmtz&StrConv.visit_operator_assignment_stmt   s&    yy!$$!((3Q77r   c                    |j                   |j                  g}|j                  r'|j                  d|j                  j                  f       | j	                  ||      S )NElse)r   rE   	else_bodyr:   r0   r_   s      r   visit_while_stmtzStrConv.visit_while_stmt   sF    ';;HHfakk../0yyAr   c                   g }|j                   r|j                  d       |j                  |j                         |j                  r|j                  |j                         |j	                  |j
                  |j                  g       |j                  r'|j                  d|j                  j                  f       | j                  ||      S )NAsyncr&   r   )	is_asyncr:   index
index_typerD   r   rE   r   r0   r_   s      r   visit_for_stmtzStrConv.visit_for_stmt   s    ::HH]#	<<HHQ\\"	!&&!&&!";;HHfakk../0yyAr   c                <    | j                  |j                  g|      S r   r   r    s     r   visit_return_stmtzStrConv.visit_return_stmt   r   r   c                r   g }t        t        |j                              D ]M  }|j                  d|j                  |   gf       |j                  d|j                  |   j                  f       O |j
                  s| j                  ||      S | j                  |d|j
                  j                  fg|      S )NIfThenr   )rangery   r   r:   rE   r   r0   r   r!   rI   is       r   visit_if_stmtzStrConv.visit_if_stmt  s    s166{#AHHdQVVAYK()HHfaffQinn-. $ {{99Q?"99a&!++*:*:!;<a@@r   c                &    | j                  g |      S r   r0   r    s     r   visit_break_stmtzStrConv.visit_break_stmt      yyQr   c                &    | j                  g |      S r   r   r    s     r   visit_continue_stmtzStrConv.visit_continue_stmt  r   r   c                &    | j                  g |      S r   r   r    s     r   visit_pass_stmtzStrConv.visit_pass_stmt  r   r   c                R    | j                  |j                  |j                  g|      S r   )r0   r   	from_exprr    s     r   visit_raise_stmtzStrConv.visit_raise_stmt  s     yy!&&!++.22r   c                    |j                   (| j                  |j                  |j                   g|      S | j                  |j                  g|      S r   )msgr0   r   r    s     r   visit_assert_stmtzStrConv.visit_assert_stmt  s@    5599affaee_a0099affXq))r   c                <    | j                  |j                  g|      S r   r   r    s     r   visit_await_exprzStrConv.visit_await_expr  r   r   c                <    | j                  |j                  g|      S r   r   r    s     r   visit_del_stmtzStrConv.visit_del_stmt"  r   r   c                ^   |j                   g}|j                  r|j                  d       t        t	        |j
                              D ]k  }|j                  |j                  |          |j
                  |   r|j                  |j
                  |          |j                  |j                  |          m |j                  r'|j                  d|j                  j                   f       |j                  r'|j                  d|j                  j                   f       | j                  ||      S )N*r   Finally)rE   is_starr:   r   ry   varsr   handlersr   finally_bodyr0   r   s       r   visit_try_stmtzStrConv.visit_try_stmt%  s    x99HHSMs166{#AHHQWWQZ vvay#HHQZZ]#	 $ ;;HHfakk../0>>HHi!4!456yyAr   c                   g }|j                   r|j                  d       t        t        |j                              D ]T  }|j                  d|j                  |   gf       |j
                  |   s4|j                  d|j
                  |   gf       V |j                  r|j                  |j                         | j                  ||j                  gz   |      S )Nr   ExprTarget)	r   r:   r   ry   r   targetunanalyzed_typer0   rE   r   s       r   visit_with_stmtzStrConv.visit_with_stmt7  s    ::HH]#s166{#AHHfqvvayk*+xx{(QXXa[M23 $ HHQ&&'yyaffXq))r   c                |   |j                   g}t        t        |j                              D ]}  }|j	                  d|j                  |   gf       |j
                  |   !|j	                  d|j
                  |   gf       |j	                  d|j                  |   j                  f        | j                  ||      S )NPatternGuardBody)	subjectr   ry   patternsr:   guardsbodiesrE   r0   r   s       r   visit_match_stmtzStrConv.visit_match_stmtC  s    		{s1::'AHHi!**Q-12xx{&'AHHQK=12HHfahhqk../0	 (
 yyAr   c                    |j                   g}|j                  D ]"  }|j                  | j                  |             $ |j                  |j                         | j                  ||      S r   )rm   r@   r:   rA   valuer0   r   s       r   visit_type_alias_stmtzStrConv.visit_type_alias_stmtL  sP    xAHHT__Q'( 	yyAr   c                   g }|j                   t        j                  j                  k(  rd}n,|j                   t        j                  j                  k(  rd}nd}|j                  ||j                  z          |j                  r|j                  |j                         |j                  r|j                  d|j                  f       |j                  r|j                  d|j                  gf       d|fgS )Nz**r   r&   ValuesDefault	TypeParam)
r8   r   r-   PARAM_SPEC_KINDTYPE_VAR_TUPLE_KINDr:   rm   upper_boundvaluesr2   )r   rJ   rI   prefixs       r   rA   zStrConv.type_paramS  s    66TZZ///FVVtzz555FF	!&&!==HHQ]]#88HHh)*99HHi!))-.a !!r   c                "    d|j                    dS )NzIntExpr(rd   r   r    s     r   visit_int_exprzStrConv.visit_int_exprh  s    !''!$$r   c                @    d| j                  |j                         dS )NzStrExpr(rd   str_reprr   r    s     r   visit_str_exprzStrConv.visit_str_exprk  s    $--0133r   c                @    d| j                  |j                         dS )Nz
BytesExpr(rd   r  r    s     r   visit_bytes_exprzStrConv.visit_bytes_exprn  s    DMM!''23155r   c                b    t        j                  dd |      }t        j                  dd |      S )Nz\\u[0-9a-fA-F]{4}c                *    d| j                  d      z   S )N\r   )groupms    r   <lambda>z"StrConv.str_repr.<locals>.<lambda>r  s    4!''!*3Dr   z[^\x20-\x7e]c                <    dt        | j                  d            z  S )Nz\u%.4xr   )ordr  r  s    r   r  z"StrConv.str_repr.<locals>.<lambda>s  s    )c!''!*o2Mr   )resub)r   ss     r   r  zStrConv.str_reprq  s+    FF')DaHvv&(MqQQr   c                "    d|j                    dS )Nz
FloatExpr(rd   r	  r    s     r   visit_float_exprzStrConv.visit_float_expru  s    AGG9A&&r   c                "    d|j                    dS )NzComplexExpr(rd   r	  r    s     r   visit_complex_exprzStrConv.visit_complex_exprx  s    aggYa((r   c                     y)NEllipsis r    s     r   visit_ellipsiszStrConv.visit_ellipsis{  s    r   c                <    | j                  |j                  g|      S r   r   r    s     r   visit_star_exprzStrConv.visit_star_expr~  r   r   c                   | j                  |j                  |j                  |j                  |j                  xs |j
                  |j                        }t        |j                  t        j                  j                        r2|j                  j                  r|d|j                  j                   z  }t        |      dz   |z   dz   S )Nz = rc   rd   )pretty_namerm   r8   r   is_inferred_defis_special_formnode
isinstancer   r-   r   is_finalfinal_valuer	   r   r!   prettys      r   visit_name_exprzStrConv.visit_name_expr  s    !!FFAFFAJJ(9(9(NQ=N=NPQPVPV
 affdjjnn-!&&//AFF../00F!}s"V+c11r   Nc                   |}|r|dz  }|r| j                  |      }nd}t        |t        j                  j                        r||k(  r||z  }|S |t        j                  j
                  k(  s||k7  r|r|d| | dz  }|S |t        j                  j                  k(  r|d| dz  }|S |t        j                  j                  k(  r|d| dz  }|S ||z  }|S )Nr   r&   z []z [lz [m)r'   r,  r   r-   MypyFileGDEFLDEFMDEF)r   rm   r8   r   r)  target_nodenr   s           r   r(  zStrConv.pretty_name  s     HA,BBk4::#6#67DH<LGA  TZZ__$T)9h2hZt1%%A  TZZ__$3rd!A  TZZ__$3rd!A  GAr   c                    | j                  |j                  |j                  |j                  |j                  |j
                        }| j                  |j                  |g|      S r   )r(  rm   r8   r   r)  r+  r0   r   r/  s      r   visit_member_exprzStrConv.visit_member_expr  sM    !!!&&!&&!**a>O>OQRQWQWXyy!&&&)1--r   c                <    | j                  |j                  g|      S r   r   r    s     r   visit_yield_exprzStrConv.visit_yield_expr  r   r   c                    |j                   r,| j                  |j                   j                  |       g|      S | j                  g |      S r   )r   r0   r   r    s     r   visit_yield_from_exprzStrConv.visit_yield_from_expr  s;    6699affmmD12A6699R##r   c                   |j                   r|j                   j                  |       S g }g }t        |j                        D ]#  \  }}|t        j
                  j                  t        j
                  j                  fv rN|j                  |j                  |          |t        j
                  j                  k(  sy|j                  d       |t        j
                  j                  k(  r0|j                  d|j                  |   |j                  |   gf       |t        j
                  j                  k(  r#|j                  d|j                  |   gf       t        d|        |j                  d|fg}| j                  ||z   |      S )Nr3   KwArgsr4   zunknown kind r5   )analyzedr   	enumerater   r   r-   ARG_POSr>   r:   rF   rz   	arg_namesr?   RuntimeErrorcalleer0   )r   r!   rF   rG   r   r8   rI   s          r   visit_call_exprzStrConv.visit_call_expr  s2   ::::$$T**,.35 -GAt

**DJJ,?,?@@AFF1I&4::...LL*---hQ(CDE---lQVVAYK89"]4&#9:: . 64.1yyUA&&r   c                    |j                   r|j                   j                  |       S | j                  |j                  |j                  |j
                  g|      S r   )rB  r   r0   r   leftrightr    s     r   visit_op_exprzStrConv.visit_op_expr  sB    ::::$$T**yy!$$0!44r   c                R    | j                  |j                  |j                  g|      S r   )r0   	operatorsoperandsr    s     r   visit_comparison_exprzStrConv.visit_comparison_expr  s     yy!++qzz2A66r   c                R    | j                  |j                  |j                  g|      S r   r0   r   rB   r    s     r   visit_cast_exprzStrConv.visit_cast_expr       yy!&&!&&)1--r   c                R    | j                  |j                  |j                  g|      S r   rR  r    s     r   visit_assert_type_exprzStrConv.visit_assert_type_expr  rT  r   c                    |j                   t        j                  j                  k(  r| j	                  |j
                  g|      S | j	                  |j                  g|      S r   )r8   r   r-   REVEAL_TYPEr0   r   local_nodesr    s     r   visit_reveal_exprzStrConv.visit_reveal_expr  sH    66TZZ+++99affXq)) 99amm_a00r   c                R    | j                  |j                  |j                  g|      S r   )r0   r   r   r    s     r   visit_assignment_exprzStrConv.visit_assignment_expr  s     yy!((AGG,a00r   c                R    | j                  |j                  |j                  g|      S r   )r0   r   r   r    s     r   visit_unary_exprzStrConv.visit_unary_expr  s    yy!$$++r   c                :    | j                  |j                  |      S r   r0   r   r    s     r   visit_list_exprzStrConv.visit_list_expr      yy!$$r   c                p    | j                  |j                  D cg c]	  \  }}||g c}}|      S c c}}w r   r`  )r   r!   kvs       r   visit_dict_exprzStrConv.visit_dict_expr  s1    yyQWW5WTQ1a&W5q995s   2
c                :    | j                  |j                  |      S r   r`  r    s     r   visit_set_exprzStrConv.visit_set_expr  rb  r   c                :    | j                  |j                  |      S r   r`  r    s     r   visit_tuple_exprzStrConv.visit_tuple_expr  rb  r   c                    |j                   r|j                   j                  |       S | j                  |j                  |j                  g|      S r   )rB  r   r0   baser   r    s     r   visit_index_exprzStrConv.visit_index_expr  s<    ::::$$T**yy!&&!''*A..r   c                R    | j                  |j                  |j                  g|      S r   )r0   rm   callr    s     r   visit_super_exprzStrConv.visit_super_expr  rT  r   c                V    | j                  |j                  d|j                  fg|      S )NTypes)r0   r   r   r    s     r   visit_type_applicationzStrConv.visit_type_application  s%    yy!&&7AGG"45q99r   c                   dd l }g }|j                  |j                  j                  k(  r|dgz  }|j                  |j                  j                  k(  r|dgz  }|j
                  r|d|j
                  fgz  }|j                  j                  |j                  d      s#|d| j                  |j                         dgz  }| j                  ||      S )Nr   Variance(COVARIANT)Variance(CONTRAVARIANT)r   r   UpperBound(rd   )r   variancer-   	COVARIANTCONTRAVARIANTr  r   is_named_instancer  r   r0   r   r!   r   rI   s       r   visit_type_var_exprzStrConv.visit_type_var_expr  s    ::---'((A::111+,,A888QXX&''Azz++AMM;LMK 3 3AMM BC1EFFAyyAr   c                h   dd l }g }|j                  |j                  j                  k(  r|dgz  }|j                  |j                  j                  k(  r|dgz  }|j
                  j                  |j                  d      s#|d| j                  |j                         dgz  }| j                  ||      S Nr   ru  rv  r   rw  rd   
r   rx  r-   ry  rz  r   r{  r  r   r0   r|  s       r   visit_paramspec_exprzStrConv.visit_paramspec_expr      ::---'((A::111+,,Azz++AMM;LMK 3 3AMM BC1EFFAyyAr   c                h   dd l }g }|j                  |j                  j                  k(  r|dgz  }|j                  |j                  j                  k(  r|dgz  }|j
                  j                  |j                  d      s#|d| j                  |j                         dgz  }| j                  ||      S r  r  r|  s       r   visit_type_var_tuple_exprz!StrConv.visit_type_var_tuple_expr  r  r   c                T    d| j                  |j                  j                         dS )NzTypeAliasExpr(rd   )r   r+  r   r    s     r   visit_type_alias_exprzStrConv.visit_type_alias_expr  s%     3 3AFFMM BC1EEr   c                    d|j                    d|j                  j                   d|j                  j                  (| j	                  |j                  j                         dS d  dS )NzNamedTupleExpr:rc   rP   rd   )r+   r   rm   r   r   r    s     r   visit_namedtuple_exprzStrConv.visit_namedtuple_expr"  s     !&&++bcdcicictct  dA9L9LQVVM^M^9_  9L  LM  N  	N  GK  9L  LM  N  	Nr   c                j    d|j                    d|j                  j                   d|j                   dS )NzEnumCallExpr:rc   rP   rd   )r+   r   rm   r   r    s     r   visit_enum_call_exprzStrConv.visit_enum_call_expr%  s-    qvvha}BqwwiqAAr   c                P    d|j                    d|j                  j                   dS )NzTypedDictExpr:rc   rd   )r+   r   rm   r    s     r   visit_typeddict_exprzStrConv.visit_typeddict_expr(  s#    xqQ77r   c                Z    d|j                    d| j                  |j                         dS )NzPromoteExpr:rc   rd   )r+   r   rB   r    s     r   visit__promote_exprzStrConv.visit__promote_expr+  s+    affXQt':':166'B&C1EEr   c           	     x    d|j                    d|j                   d| j                  |j                  g|       dS )NzNewTypeExpr:rc   rP   rd   )r+   rm   r0   old_typer    s     r   visit_newtype_exprzStrConv.visit_newtype_expr.  s7    affXQqvvhbAJJ<1K0LANNr   c                H    | j                  |      }| j                  ||      S r   )rK   r0   r_   s      r   visit_lambda_exprzStrConv.visit_lambda_expr1  s"    QyyAr   c                    t        |j                        r|j                  nd }| j                  |j                  |j                  |j
                  |g|      S r   )any	condlistsr0   	left_exprindices	sequencesr   r!   r  s      r   visit_generator_exprzStrConv.visit_generator_expr5  s>    #&q{{#3AKK	yy!++qyy!++yI1MMr   c                <    | j                  |j                  g|      S r   r0   	generatorr    s     r   visit_list_comprehensionz StrConv.visit_list_comprehension9      yy!++**r   c                <    | j                  |j                  g|      S r   r  r    s     r   visit_set_comprehensionzStrConv.visit_set_comprehension<  r  r   c                    t        |j                        r|j                  nd }| j                  |j                  |j                  |j
                  |j                  |g|      S r   )r  r  r0   keyr   r  r  r  s      r   visit_dictionary_comprehensionz&StrConv.visit_dictionary_comprehension?  sD    #&q{{#3AKK	yy!%%!))Q[[)LaPPr   c                n    | j                  d|j                  gf|j                  |j                  g|      S )N	Condition)r0   condif_expr	else_exprr    s     r   visit_conditional_exprzStrConv.visit_conditional_exprC  s-    yy;1199akkJANNr   c                    |j                   |j                  |j                  g}|d   sd|d<   |d   sd|d<   | j                  ||      S )Nr   z<empty>rs   )begin_index	end_indexstrider0   r_   s      r   visit_slice_exprzStrConv.visit_slice_exprF  sJ    q{{AHH=tAaDtAaDyyAr   c                <    | j                  |j                  g|      S r   )r0   rB   r    s     r   visit_temp_nodezStrConv.visit_temp_nodeN  r   r   c                R    | j                  |j                  |j                  g|      S r   )r0   patternrm   r    s     r   visit_as_patternzStrConv.visit_as_patternQ  s     yy!))QVV,a00r   c                :    | j                  |j                  |      S r   r0   r   r    s     r   visit_or_patternzStrConv.visit_or_patternT      yyQ''r   c                <    | j                  |j                  g|      S r   r   r    s     r   visit_value_patternzStrConv.visit_value_patternW  r   r   c                <    | j                  |j                  g|      S r   )r0   r   r    s     r   visit_singleton_patternzStrConv.visit_singleton_patternZ  r   r   c                :    | j                  |j                  |      S r   r  r    s     r   visit_sequence_patternzStrConv.visit_sequence_pattern]  r  r   c                <    | j                  |j                  g|      S r   )r0   capturer    s     r   visit_starred_patternzStrConv.visit_starred_pattern`  s    yy!))a((r   c                H   g }t        t        |j                              D ]D  }|j                  d|j                  |   gf       |j                  d|j                  |   gf       F |j
                  |j                  d|j
                  gf       | j                  ||      S )NKeyValueRest)r   ry   keysr:   r  restr0   r   s       r   visit_mapping_patternzStrConv.visit_mapping_patternc  s    s166{#AHHeaffQi[)*HHg}-. $ 66HHfqvvh'(yyAr   c                N   |j                   g}t        |j                        dkD  r|j                  d|j                  f       t	        t        |j
                              D ]1  }|j                  d|j
                  |   |j                  |   gf       3 | j                  ||      S )Nr   PositionalsKeyword)	class_refry   positionalsr:   r   keyword_keyskeyword_valuesr0   r   s       r   visit_class_patternzStrConv.visit_class_patternl  s    }q}}!HHmQ]]34s1>>*+AHHi!.."3Q5E5Ea5H!IJK , yyAr   )r   boolr   r   returnNone)r   zmypy.types.Typer  r*   )r!   objectr  
int | None)r!   r  r  r*   )r-   Sequence[object]r.   zmypy.nodes.Contextr  r*   )r!   zmypy.nodes.FuncItemr  zlist[object])r!   zmypy.nodes.MypyFiler  r*   )r!   zmypy.nodes.Importr  r*   )r!   zmypy.nodes.ImportFromr  r*   )r!   zmypy.nodes.ImportAllr  r*   )r!   zmypy.nodes.FuncDefr  r*   )r!   zmypy.nodes.OverloadedFuncDefr  r*   )r!   zmypy.nodes.ClassDefr  r*   )r!   zmypy.nodes.Varr  r*   )r!   zmypy.nodes.GlobalDeclr  r*   )r!   zmypy.nodes.NonlocalDeclr  r*   )r!   zmypy.nodes.Decoratorr  r*   )r!   zmypy.nodes.Blockr  r*   )r!   zmypy.nodes.ExpressionStmtr  r*   )r!   zmypy.nodes.AssignmentStmtr  r*   )r!   z!mypy.nodes.OperatorAssignmentStmtr  r*   )r!   zmypy.nodes.WhileStmtr  r*   )r!   zmypy.nodes.ForStmtr  r*   )r!   zmypy.nodes.ReturnStmtr  r*   )r!   zmypy.nodes.IfStmtr  r*   )r!   zmypy.nodes.BreakStmtr  r*   )r!   zmypy.nodes.ContinueStmtr  r*   )r!   zmypy.nodes.PassStmtr  r*   )r!   zmypy.nodes.RaiseStmtr  r*   )r!   zmypy.nodes.AssertStmtr  r*   )r!   zmypy.nodes.AwaitExprr  r*   )r!   zmypy.nodes.DelStmtr  r*   )r!   zmypy.nodes.TryStmtr  r*   )r!   zmypy.nodes.WithStmtr  r*   )r!   zmypy.nodes.MatchStmtr  r*   )r!   zmypy.nodes.TypeAliasStmtr  r*   )rJ   zmypy.nodes.TypeParamr  z	list[Any])r!   zmypy.nodes.IntExprr  r*   )r!   zmypy.nodes.StrExprr  r*   )r!   zmypy.nodes.BytesExprr  r*   )r  r*   r  r*   )r!   zmypy.nodes.FloatExprr  r*   )r!   zmypy.nodes.ComplexExprr  r*   )r!   zmypy.nodes.EllipsisExprr  r*   )r!   zmypy.nodes.StarExprr  r*   )r!   zmypy.nodes.NameExprr  r*   r   )rm   r*   r8   r  r   
str | Noner)  r  r8  zmypy.nodes.Node | Noner  r*   )r!   zmypy.nodes.MemberExprr  r*   )r!   zmypy.nodes.YieldExprr  r*   )r!   zmypy.nodes.YieldFromExprr  r*   )r!   zmypy.nodes.CallExprr  r*   )r!   zmypy.nodes.OpExprr  r*   )r!   zmypy.nodes.ComparisonExprr  r*   )r!   zmypy.nodes.CastExprr  r*   )r!   zmypy.nodes.AssertTypeExprr  r*   )r!   zmypy.nodes.RevealExprr  r*   )r!   zmypy.nodes.AssignmentExprr  r*   )r!   zmypy.nodes.UnaryExprr  r*   )r!   zmypy.nodes.ListExprr  r*   )r!   zmypy.nodes.DictExprr  r*   )r!   zmypy.nodes.SetExprr  r*   )r!   zmypy.nodes.TupleExprr  r*   )r!   zmypy.nodes.IndexExprr  r*   )r!   zmypy.nodes.SuperExprr  r*   )r!   zmypy.nodes.TypeApplicationr  r*   )r!   zmypy.nodes.TypeVarExprr  r*   )r!   zmypy.nodes.ParamSpecExprr  r*   )r!   zmypy.nodes.TypeVarTupleExprr  r*   )r!   zmypy.nodes.TypeAliasExprr  r*   )r!   zmypy.nodes.NamedTupleExprr  r*   )r!   zmypy.nodes.EnumCallExprr  r*   )r!   zmypy.nodes.TypedDictExprr  r*   )r!   zmypy.nodes.PromoteExprr  r*   )r!   zmypy.nodes.NewTypeExprr  r*   )r!   zmypy.nodes.LambdaExprr  r*   )r!   zmypy.nodes.GeneratorExprr  r*   )r!   zmypy.nodes.ListComprehensionr  r*   )r!   zmypy.nodes.SetComprehensionr  r*   )r!   z"mypy.nodes.DictionaryComprehensionr  r*   )r!   zmypy.nodes.ConditionalExprr  r*   )r!   zmypy.nodes.SliceExprr  r*   )r!   zmypy.nodes.TempNoder  r*   )r!   zmypy.patterns.AsPatternr  r*   )r!   zmypy.patterns.OrPatternr  r*   )r!   zmypy.patterns.ValuePatternr  r*   )r!   zmypy.patterns.SingletonPatternr  r*   )r!   zmypy.patterns.SequencePatternr  r*   )r!   zmypy.patterns.StarredPatternr  r*   )r!   zmypy.patterns.MappingPatternr  r*   )r!   zmypy.patterns.ClassPatternr  r*   )___name__
__module____qualname____doc__	__slots__r   r   r"   r'   r0   rK   r`   rg   ro   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   r
  r  r  r  r  r   r$  r&  r1  r(  r;  r=  r?  rH  rL  rP  rS  rV  rZ  r\  r^  ra  rf  rh  rj  rm  rp  rs  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r   r   r   r      s    	 5I+0 (c

-F 2S@
 
60'';
$&	8
&	A   3*&&$
*"*%46R')&2 /3  	
  , 
<.&$'&5
7..11,%:%%/
.:

FNB8FON++QO&1(&'()r   r   c                   ddl m}m} g }|r|j                  |dz          | D ]=  }t	        |t
              r |s|j                  t        |d|             4t	        |t              r/t        |d   |d   |      }|j                  t        |d             st	        |t        j                  j                        r+|j                  t        |j                  |      d             t	        ||      rH|j                  t        |j                   ||j                  |j                              d             ||j                  t        t        |      d             @ |r|dxx   d	z  cc<   d
j!                  |      S )aX  Convert 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   )Typer   rc   Nrs      )r   rt   rd   
)r   r  r   r:   r,  listr,   tupleindentr   r-   Noder   r   r   r*   r]   )r-   r/   str_convr  r   rI   r9  r  s           r   r,   r,   v  s&    0A
	saQh785!AaD!A$1AHHVAq\"4::??+HHVAHHX.234 HHqxxx/A/A8K[K[ \]_`a ]HHVCFA&'  	"99Q<r   c                F    d|z  | z   } | j                  ddd|z  z         } | S )z>Indent all the lines in s (separated by newlines) by n spaces. r  )rX   )r  r9  s     r   r  r    s,    a!A			$sQw'AHr   )r-   r  r/   r  r  r   r  r*   )r  r*   r9  intr  r*   )r  
__future__r   rY   r  typingr   r   r   
mypy.nodesr   mypy.optionsr   	mypy.utilr   r	   mypy.visitorr
   mypy.patternsr   r*   r   r,   r  r#  r   r   <module>r     sK    0 " 	 	 / /    * $`	k# `	F"Jr   