
    X-Ph_                        d Z ddlmZ ddlZddlZddlmZ ddl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dS )z*Conversion of parse tree nodes to strings.    )annotationsN)Sequence)TYPE_CHECKINGAny)Options)IdMapper
short_type)NodeVisitorc                  F   e Zd ZdZg dZdd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.Zdd0Zdd2Zdd4Zdd6Zdd8Zdd:Zdd<Zdd>Zdd@ZddBZddDZddFZddHZ ddJZ!ddLZ"ddNZ#ddPZ$ddRZ%ddTZ&ddVZ'ddXZ(dd\Z)dd^Z*dd`Z+ddbZ,dddZ-ddfZ.ddhZ/ddjZ0ddlZ1ddnZ2	 dddwZ3ddyZ4dd{Z5d d}Z6ddZ7ddZ8ddZ9ddZ:ddZ;ddZ<ddZ=ddZ>d	dZ?d
dZ@ddZAddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSddZTddZUd dZVd!dZWd"dZXd#dÄZYd$dńZZd%dǄZ[d&dɄZ\d'd˄Z]d(d̈́Z^doS ()  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   r   boolr   r   returnNonec               ^    || _         || _        d | _        |rt                      | _        d S d S N)r   r   r   r   )selfr   r   s      L/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/strconv.py__init__zStrConv.__init__"   s8     *. 	(%ZZDNNN	( 	(    tmypy.types.Typestrc                |    dd l }|                    |j                            | j        | j                            S )Nr   )r   r   )
mypy.typesaccepttypesTypeStrVisitorr   r   )r   r   mypys      r   stringify_typezStrConv.stringify_type)   s;    xx
11DNTXT`1aabbbr   oobject
int | Nonec                H    | j         r| j                             |          S d S r   )r   idr   r#   s     r   get_idzStrConv.get_id.   s'    > 	(>$$Q'''tr   c                F    | j         rd|                     |           dS dS )N<> )r   r)   r(   s     r   	format_idzStrConv.format_id3   s,    > 	(t{{1~~((((2r   nodesSequence[object]objmypy.nodes.Contextc                    t          |          dz   t          |j                  z   }| j        r%| j        J |d|                     |           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.
        :Nr+   r,   )r	   r   liner   r   r)   dump_tagged)r   r/   r1   tags       r   dumpzStrConv.dump9   sm     oo#c#(mm3= 	+>---*t{{3''****C5#t,,,r   mypy.nodes.FuncItemlist[object]c                Z   g }g }|j         D ]}|j        }|                                r|                    |j                   8|                                r-|j        J |                    d|j        |j        gf           y|t          j        j	        k    r|                    d|j        gf           |t          j        j
        k    r|                    d|j        gf           g }|j        r2|j        D ]*}|                    |                     |                     +|r|                    d|f           |j        r|                    |j                   |j        r|                    d           |                    |           |                    |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.
        N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argrB   aps           r   func_helperzStrConv.func_helperF   s    JL8:; 
	= 
	=C'*xD!! =CL))))!!## =222Ys(GHIIII,,,h78888---lS\N;<<<; 	-[ - -++,,,, 	%HHfd^$$$6 	HHQV> 	"HH[!!!		r   mypy.nodes.MypyFilec           	         |j         g}|j        r|                    dd           |j        dk    rk|                    d|j                            t          j                    t
          j        z   d                              t
          j        d                     |j        rG|	                    dd
                    d t          |j                  D                       z             |                     ||          S )	Nr   BOMmainr-   /zIgnoredLines(%s), c              3  4   K   | ]}t          |          V  d S r   )r   ).0r5   s     r   	<genexpr>z*StrConv.visit_mypy_file.<locals>.<genexpr>v   s(      3b3b$CII3b3b3b3b3b3br   )defsis_bominsertpathreplaceosgetcwdsepignored_linesrD   joinsortedr8   r   r#   rS   s      r   visit_mypy_filezStrConv.visit_mypy_filei   s    x8 	HHQ 6V HHQry{{RV';R@@HHQTUUVVV? 	dHH'$))3b3b&QRQ`JaJa3b3b3b*b*bbcccyyAr   mypy.nodes.Importc                    g }|j         D ]7\  }}||                    | d|            "|                    |           8d|j         dd                    |           dS )N : zImport:(r[   ))idsrD   r5   rh   )r   r#   rS   r'   as_ids        r   visit_importzStrConv.visit_importy   s{     	 	IB B**5**++++111$))A,,1111r   mypy.nodes.ImportFromc                    g }|j         D ]7\  }}||                    | d|            "|                    |           8d|j         dd|j        z  |j        z    dd                    |           dS )Nrn   zImportFrom:ro   .z, [r[   ]))namesrD   r5   relativer'   rh   )r   r#   rS   nameas_names        r   visit_import_fromzStrConv.visit_import_from   s    W 	 	MD'"D..W..////RQVRRcAJ&6&=RR$))A,,RRRRr   mypy.nodes.ImportAllc                >    d|j          dd|j        z  |j        z    dS )Nz
ImportAll:ro   rv   rp   )r5   ry   r'   r(   s     r   visit_import_allzStrConv.visit_import_all   s+    ?AF??S1:%5%<????r   mypy.nodes.FuncDefc                   |                      |          }|                    d|j                   d |j        D             }t	          |t
          j        j        t
          j        j        hz            dk    r|                    dd|j	         d           |j
        t
          j        j        t
          j        j        fv r|                    dd           |j        r|                    dd           |j        r|                    dd	           |j        r|                    dd
           |                     ||          S )Nr   c                    h | ]	}|j         
S  )rB   )r]   rR   s     r   	<setcomp>z)StrConv.visit_func_def.<locals>.<setcomp>   s    555#SX555r      zMaxPos(rp   AbstractStaticClassProperty)rU   ra   rz   rA   lenr!   r/   	ARG_NAMEDARG_NAMED_OPTmax_posabstract_statusIS_ABSTRACTIMPLICITLY_ABSTRACT	is_staticis_classis_propertyr8   )r   r#   rS   	arg_kindss       r   visit_func_defzStrConv.visit_func_def   s&   Q	AF55555	yDJ0$*2JKKLLqPPHHQ.!)...///!79W XXXHHR$$$; 	#HHR""": 	"HHR!!!= 	%HHR$$$yyAr   mypy.nodes.OverloadedFuncDefc                \   |j                                         }|j        r|                    d|j                   |j        r|                    d|j                   |j        r|                    dd           |j        r|                    dd           |                     ||          S )Nr   r   r   r   )itemscopyrL   ra   implr   r   r8   rj   s      r   visit_overloaded_func_defz!StrConv.visit_overloaded_func_def   s    6 	 HHQ6 	 HHQ; 	#HHR""": 	"HHR!!!yyAr   mypy.nodes.ClassDefc                ~    |j         |j        j        g}|j        r|j        rl|j        j        r`t          |j        j                  dk    s |j        j        d         j        j        dk    r"|	                    dd|j        j        f           n|	                    dd|j        f           |j
        r|	                    dd|j
        f           |j        r2|	                    dd|j                                        d           |j        r|	                    dd	|j        f           |j        rO|j        j        rC|	                    dd
d                     fd|j        j        D                        d           |j        r/|j        j        r#|	                    dd|j        j        gf           |j        r"|j        j        r|	                    dd           |j        r@t'          |j                  D ]+}|	                    d                     |                     ,                     ||          S )Nr   r   builtins.objectBaseTypeBaseTypeExprTypeVarsz
Metaclass(rp   
Decoratorsz	Promote([,c              3  B   K   | ]}                     |          V  d S r   )r"   )r]   rT   r   s     r   r^   z*StrConv.visit_class_def.<locals>.<genexpr>   s1      ,],]T-@-@-C-C,],],],],],]r   rw   	TupleTypeFallbackToAny)rz   r_   rO   base_type_exprsinfobasesr   rL   fullnamera   	type_vars	metaclassr   
decorators_promoterh   
tuple_typefallback_to_anyrJ   reversedrK   r8   r   r#   rS   rT   s   `   r   visit_class_defzStrConv.visit_class_def   s<   VQV[!  	Av A!&, Aqv|$$))QV\!_-A-JN_-_-_HHQQV\ :;;;^Q->?@@@; 	3HHQQ[1222; 	BHHQ@Q[%7%7%=%=@@@AAA< 	6HHQq|45556 	cafo 	cHHQaCHH,],],],]QV_,],],]$]$]aaabbb6 	<af' 	<HHQqv'8&9:;;;6 	)af, 	)HHQ(((; 	0ak** 0 0DOOA..////yyAr   mypy.nodes.Varc                F    d}|j         dk     rd}d|z   dz   |j        z   dz   S )Nr-   r   z:nilVarro   rp   )r5   rz   )r   r#   lsts      r   	visit_varzStrConv.visit_var   s4     6A::Cs{S 16)C//r   mypy.nodes.GlobalDeclc                :    |                      |j        g|          S r   r8   rx   r(   s     r   visit_global_declzStrConv.visit_global_decl       yy!'A&&&r   mypy.nodes.NonlocalDeclc                :    |                      |j        g|          S r   r   r(   s     r   visit_nonlocal_declzStrConv.visit_nonlocal_decl   r   r   mypy.nodes.Decoratorc                R    |                      |j        |j        |j        g|          S r   )r8   varr   funcr(   s     r   visit_decoratorzStrConv.visit_decorator   s#    yy!%qv6:::r   mypy.nodes.Blockc                8    |                      |j        |          S r   )r8   rO   r(   s     r   visit_blockzStrConv.visit_block   s    yy###r   mypy.nodes.ExpressionStmtc                :    |                      |j        g|          S r   r8   exprr(   s     r   visit_expression_stmtzStrConv.visit_expression_stmt       yy!&1%%%r   mypy.nodes.AssignmentStmtc                
   g }t          |j                  dk    rd|j        fg}n|j        d         g}|                    |j                   |j        r|                    |j                   |                     ||          S )Nr   Lvaluesr   )r   lvaluesrD   rvaluerL   r8   rj   s      r   visit_assignment_stmtzStrConv.visit_assignment_stmt   s|    qy>>AQY'(AA1A	6 	HHQVyyAr   !mypy.nodes.OperatorAssignmentStmtc                R    |                      |j        |j        |j        g|          S r   )r8   oplvaluer   r(   s     r   visit_operator_assignment_stmtz&StrConv.visit_operator_assignment_stmt   s#    yy!$!(3Q777r   mypy.nodes.WhileStmtc                    |j         |j        g}|j        r!|                    d|j        j        f           |                     ||          S )NElse)r   rO   	else_bodyrD   r8   rj   s      r   visit_while_stmtzStrConv.visit_while_stmt   sH    '; 	1HHfak./000yyAr   mypy.nodes.ForStmtc                r   g }|j         r|                    d           |                    |j                   |j        r|                    |j                   |                    |j        |j        g           |j        r!|                    d|j        j        f           |                     ||          S )NAsyncr-   r   )	is_asyncrD   index
index_typerN   r   rO   r   r8   rj   s      r   visit_for_stmtzStrConv.visit_for_stmt   s    : 	$HH]###	< 	#HHQ\"""	!&!&!"""; 	1HHfak./000yyAr   mypy.nodes.ReturnStmtc                :    |                      |j        g|          S r   r   r(   s     r   visit_return_stmtzStrConv.visit_return_stmt   r   r   mypy.nodes.IfStmtc                d   g }t          t          |j                            D ]L}|                    d|j        |         gf           |                    d|j        |         j        f           M|j        s|                     ||          S |                     |d|j        j        fg|          S )NIfThenr   )ranger   r   rD   rO   r   r8   r   r#   rS   is       r   visit_if_stmtzStrConv.visit_if_stmt  s    s16{{## 	/ 	/AHHdQVAYK()))HHfafQin-....{ 	A99Q??"99a&!+*:!;<a@@@r   mypy.nodes.BreakStmtc                .    |                      g |          S r   r8   r(   s     r   visit_break_stmtzStrConv.visit_break_stmt      yyQr   mypy.nodes.ContinueStmtc                .    |                      g |          S r   r   r(   s     r   visit_continue_stmtzStrConv.visit_continue_stmt  r   r   mypy.nodes.PassStmtc                .    |                      g |          S r   r   r(   s     r   visit_pass_stmtzStrConv.visit_pass_stmt  r   r   mypy.nodes.RaiseStmtc                F    |                      |j        |j        g|          S r   )r8   r   	from_exprr(   s     r   visit_raise_stmtzStrConv.visit_raise_stmt  s    yy!&!+.222r   mypy.nodes.AssertStmtc                    |j         "|                     |j        |j         g|          S |                     |j        g|          S r   )msgr8   r   r(   s     r   visit_assert_stmtzStrConv.visit_assert_stmt  s>    599afae_a00099afXq)))r   mypy.nodes.AwaitExprc                :    |                      |j        g|          S r   r   r(   s     r   visit_await_exprzStrConv.visit_await_expr   r   r   mypy.nodes.DelStmtc                :    |                      |j        g|          S r   r   r(   s     r   visit_del_stmtzStrConv.visit_del_stmt#  r   r   mypy.nodes.TryStmtc                8   |j         g}|j        r|                    d           t          t	          |j                            D ]o}|                    |j        |                    |j        |         r |                    |j        |                    |                    |j        |                    p|j        r!|                    d|j        j         f           |j	        r!|                    d|j	        j         f           | 
                    ||          S )N*r   Finally)rO   is_starrD   r   r   varsr   handlersr   finally_bodyr8   r   s       r   visit_try_stmtzStrConv.visit_try_stmt&  s    x9 	HHSMMMs16{{## 	$ 	$AHHQWQZ   vay $###HHQZ]####; 	1HHfak./000> 	7HHi!45666yyAr   mypy.nodes.WithStmtc                   g }|j         r|                    d           t          t          |j                            D ]U}|                    d|j        |         gf           |j        |         r#|                    d|j        |         gf           V|j        r|                    |j                   |                     ||j        gz   |          S )Nr   ExprTarget)	r   rD   r   r   r   targetunanalyzed_typer8   rO   r   s       r   visit_with_stmtzStrConv.visit_with_stmt8  s    : 	$HH]###s16{{## 	4 	4AHHfqvayk*+++x{ 4(QXa[M2333 	(HHQ&'''yyafXq)))r   mypy.nodes.MatchStmtc                z   |j         g}t          t          |j                            D ]|}|                    d|j        |         gf           |j        |         #|                    d|j        |         gf           |                    d|j        |         j        f           }|                     ||          S )NPatternGuardBody)	subjectr   r   patternsrD   guardsbodiesrO   r8   r   s       r   visit_match_stmtzStrConv.visit_match_stmtD  s    	{s1:'' 	1 	1AHHi!*Q-1222x{&'AHQK=1222HHfahqk./0000yyAr   mypy.nodes.TypeAliasStmtc                    |j         g}|j        D ]*}|                    |                     |                     +|                    |j                   |                     ||          S r   )rz   rJ   rD   rK   valuer8   r   s       r   visit_type_alias_stmtzStrConv.visit_type_alias_stmtM  sc    x 	) 	)AHHT__Q''((((	yyAr   rT   mypy.nodes.TypeParam	list[Any]c                   g }|j         t          j        j        k    rd}n|j         t          j        j        k    rd}nd}|                    ||j        z              |j        r|                    |j                   |j        r|                    d|j        f           |j	        r|                    d|j	        gf           d|fgS )Nz**r  r-   ValuesDefault	TypeParam)
rB   r!   r/   PARAM_SPEC_KINDTYPE_VAR_TUPLE_KINDrD   rz   upper_boundvaluesr<   )r   rT   rS   prefixs       r   rK   zStrConv.type_paramT  s    6TZ///FFVtz555FFF	!&!!!= 	$HHQ]###8 	+HHh)***9 	/HHi!)-...a !!r   mypy.nodes.IntExprc                    d|j          dS )NzIntExpr(rp   r(  r(   s     r   visit_int_exprzStrConv.visit_int_expri  s    $!'$$$$r   mypy.nodes.StrExprc                >    d|                      |j                   dS )NzStrExpr(rp   str_reprr(  r(   s     r   visit_str_exprzStrConv.visit_str_exprl  s!    3$--003333r   mypy.nodes.BytesExprc                >    d|                      |j                   dS )Nz
BytesExpr(rp   r;  r(   s     r   visit_bytes_exprzStrConv.visit_bytes_expro  s!    5DMM!'225555r   sc                ^    t          j        dd |          }t          j        dd |          S )Nz\\u[0-9a-fA-F]{4}c                2    d|                      d          z   S )N\r   )groupms    r   <lambda>z"StrConv.str_repr.<locals>.<lambda>s  s    4!''!**3D r   z[^\x20-\x7e]c                L    dt          |                     d                    z  S )Nz\u%.4xr   )ordrE  rF  s    r   rH  z"StrConv.str_repr.<locals>.<lambda>t  s    )c!''!**oo2M r   )resub)r   rA  s     r   r<  zStrConv.str_reprr  s3    F')D)DaHHv&(M(MqQQQr   mypy.nodes.FloatExprc                    d|j          dS )Nz
FloatExpr(rp   r7  r(   s     r   visit_float_exprzStrConv.visit_float_exprv  s    &AG&&&&r   mypy.nodes.ComplexExprc                    d|j          dS )NzComplexExpr(rp   r7  r(   s     r   visit_complex_exprzStrConv.visit_complex_expry  s    (ag((((r   mypy.nodes.EllipsisExprc                    dS )NEllipsisr   r(   s     r   visit_ellipsiszStrConv.visit_ellipsis|  s    zr   mypy.nodes.StarExprc                :    |                      |j        g|          S r   r   r(   s     r   visit_star_exprzStrConv.visit_star_expr  r   r   mypy.nodes.NameExprc                (   |                      |j        |j        |j        |j        p|j        |j                  }t          |j        t          j	        j
                  r|j        j        r|d|j        j         z  }t          |          dz   |z   dz   S )Nz = ro   rp   )pretty_namerz   rB   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    !!FAFAJ(9(NQ=NPQPV
 
 afdjn-- 	1!&/ 	10AF.000F!}}s"V+c11r   Nrz   rB   r   
str | Noner]  target_nodemypy.nodes.Node | Nonec                z   |}|r|dz  }|r|                      |          }nd}t          |t          j        j                  r||k    r||z  }nl|t          j        j        k    s||k    r|r|d| | dz  }nC|t          j        j        k    r
|d| dz  }n$|t          j        j        k    r
|d| dz  }n||z  }|S )Nr  r-   z []z [lz [m)r.   r`  r!   r/   MypyFileGDEFLDEFMDEF)r   rz   rB   r   r]  rg  nr'   s           r   r\  zStrConv.pretty_name  s      	HA 	,,BBBk4:#677 	DH<L<LGAATZ_$$T)9)9h)9%h%%%%%AATZ_$$rAATZ_$$rAAGAr   mypy.nodes.MemberExprc                    |                      |j        |j        |j        |j        |j                  }|                     |j        |g|          S r   )r\  rz   rB   r   r]  r_  r8   r   rc  s      r   visit_member_exprzStrConv.visit_member_expr  sE    !!!&!&!*a>OQRQWXXyy!&&)1---r   mypy.nodes.YieldExprc                :    |                      |j        g|          S r   r   r(   s     r   visit_yield_exprzStrConv.visit_yield_expr  r   r   mypy.nodes.YieldFromExprc                    |j         r/|                     |j                             |           g|          S |                     g |          S r   )r   r8   r   r(   s     r   visit_yield_from_exprzStrConv.visit_yield_from_expr  sE    6 	$99afmmD112A66699R###r   mypy.nodes.CallExprc                   |j         r|j                             |           S g }g }t          |j                  D ]\  }}|t          j        j        t          j        j        fv rK|                    |j	        |                    |t          j        j        k    r|                    d           u|t          j        j
        k    r0|                    d|j        |         |j	        |         gf           |t          j        j        k    r$|                    d|j	        |         gf           t          d|           |j        d|fg}|                     ||z   |          S )Nr=   KwArgsr>   zunknown kind r?   )analyzedr   	enumerater   r!   r/   ARG_POSrH   rD   rP   r   	arg_namesrI   RuntimeErrorcalleer8   )r   r#   rP   rQ   r   rB   rS   s          r   visit_call_exprzStrConv.visit_call_expr  sJ   : 	+:$$T***,.35 -- 
	; 
	;GAt
*DJ,?@@@AF1I&&&4:...LL***---hQ(CDEEEE---lQVAYK89999"#94#9#9:::64.1yyUA&&&r   mypy.nodes.OpExprc                    |j         r|j                             |           S |                     |j        |j        |j        g|          S r   )r|  r   r8   r   leftrightr(   s     r   visit_op_exprzStrConv.visit_op_expr  sC    : 	+:$$T***yy!$0!444r   mypy.nodes.ComparisonExprc                F    |                      |j        |j        g|          S r   )r8   	operatorsoperandsr(   s     r   visit_comparison_exprzStrConv.visit_comparison_expr  s    yy!+qz2A666r   mypy.nodes.CastExprc                F    |                      |j        |j        g|          S r   r8   r   rL   r(   s     r   visit_cast_exprzStrConv.visit_cast_expr      yy!&!&)1---r   mypy.nodes.AssertTypeExprc                F    |                      |j        |j        g|          S r   r  r(   s     r   visit_assert_type_exprzStrConv.visit_assert_type_expr  r  r   mypy.nodes.RevealExprc                    |j         t          j        j        k    r|                     |j        g|          S |                     |j        g|          S r   )rB   r!   r/   REVEAL_TYPEr8   r   local_nodesr(   s     r   visit_reveal_exprzStrConv.visit_reveal_expr  sF    6TZ+++99afXq))) 99am_a000r   mypy.nodes.AssignmentExprc                F    |                      |j        |j        g|          S r   )r8   r  r(  r(   s     r   visit_assignment_exprzStrConv.visit_assignment_expr  s    yy!(AG,a000r   mypy.nodes.UnaryExprc                F    |                      |j        |j        g|          S r   )r8   r   r   r(   s     r   visit_unary_exprzStrConv.visit_unary_expr  s    yy!$+++r   mypy.nodes.ListExprc                8    |                      |j        |          S r   r8   r   r(   s     r   visit_list_exprzStrConv.visit_list_expr      yy!$$$r   mypy.nodes.DictExprc                L    |                      d |j        D             |          S )Nc                    g | ]	\  }}||g
S r   r   )r]   kvs      r   
<listcomp>z+StrConv.visit_dict_expr.<locals>.<listcomp>  s     555TQ1a&555r   r  r(   s     r   visit_dict_exprzStrConv.visit_dict_expr  s'    yy55QW555q999r   mypy.nodes.SetExprc                8    |                      |j        |          S r   r  r(   s     r   visit_set_exprzStrConv.visit_set_expr  r  r   mypy.nodes.TupleExprc                8    |                      |j        |          S r   r  r(   s     r   visit_tuple_exprzStrConv.visit_tuple_expr  r  r   mypy.nodes.IndexExprc                    |j         r|j                             |           S |                     |j        |j        g|          S r   )r|  r   r8   baser   r(   s     r   visit_index_exprzStrConv.visit_index_expr  s?    : 	+:$$T***yy!&!'*A...r   mypy.nodes.SuperExprc                F    |                      |j        |j        g|          S r   )r8   rz   callr(   s     r   visit_super_exprzStrConv.visit_super_expr  r  r   mypy.nodes.TypeApplicationc                J    |                      |j        d|j        fg|          S )NTypes)r8   r   r   r(   s     r   visit_type_applicationzStrConv.visit_type_application  s$    yy!&7AG"45q999r   mypy.nodes.TypeVarExprc                R   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        d          s"|d| 	                    |j                   dgz  }| 
                    ||          S )Nr   Variance(COVARIANT)Variance(CONTRAVARIANT)r-  r   UpperBound(rp   )r   variancer/   	COVARIANTCONTRAVARIANTr3  r   is_named_instancer2  r"   r8   r   r#   r!   rS   s       r   visit_type_var_exprzStrConv.visit_type_var_expr  s    :---'((A:111+,,A8 	(8QX&''Az++AM;LMM 	GE 3 3AM B BEEEFFAyyAr   mypy.nodes.ParamSpecExprc                *   dd l }g }|j        |j        j        k    r|dgz  }|j        |j        j        k    r|dgz  }|j                            |j        d          s"|d|                     |j                   dgz  }| 	                    ||          S Nr   r  r  r   r  rp   
r   r  r/   r  r  r   r  r2  r"   r8   r  s       r   visit_paramspec_exprzStrConv.visit_paramspec_expr      :---'((A:111+,,Az++AM;LMM 	GE 3 3AM B BEEEFFAyyAr   mypy.nodes.TypeVarTupleExprc                *   dd l }g }|j        |j        j        k    r|dgz  }|j        |j        j        k    r|dgz  }|j                            |j        d          s"|d|                     |j                   dgz  }| 	                    ||          S r  r  r  s       r   visit_type_var_tuple_exprz!StrConv.visit_type_var_tuple_expr  r  r   mypy.nodes.TypeAliasExprc                H    d|                      |j        j                   dS )NzTypeAliasExpr(rp   )r"   r_  r  r(   s     r   visit_type_alias_exprzStrConv.visit_type_alias_expr   s%    E 3 3AFM B BEEEEr   mypy.nodes.NamedTupleExprc                    d|j          d|j        j         d|j        j        |                     |j        j                  nd  dS )NzNamedTupleExpr:ro   r[   rp   )r5   r   rz   r   r"   r(   s     r   visit_namedtuple_exprzStrConv.visit_namedtuple_expr#  sq     N  N  N!&+  N  Ncdcict  dA9L9LQVM^9_9_9_  GK  N  N  N  	Nr   mypy.nodes.EnumCallExprc                B    d|j          d|j        j         d|j         dS )NzEnumCallExpr:ro   r[   rp   )r5   r   rz   r   r(   s     r   visit_enum_call_exprzStrConv.visit_enum_call_expr&  s+    AqvAAAAqwAAAAr   mypy.nodes.TypedDictExprc                2    d|j          d|j        j         dS )NzTypedDictExpr:ro   rp   )r5   r   rz   r(   s     r   visit_typeddict_exprzStrConv.visit_typeddict_expr)  s!    7777777r   mypy.nodes.PromoteExprc                N    d|j          d|                     |j                   dS )NzPromoteExpr:ro   rp   )r5   r"   rL   r(   s     r   visit__promote_exprzStrConv.visit__promote_expr,  s-    EafEEt':':16'B'BEEEEr   mypy.nodes.NewTypeExprc           	     b    d|j          d|j         d|                     |j        g|           dS )NzNewTypeExpr:ro   r[   rp   )r5   rz   r8   old_typer(   s     r   visit_newtype_exprzStrConv.visit_newtype_expr/  s9    NafNNqvNNAJ<1K1KNNNNr   mypy.nodes.LambdaExprc                X    |                      |          }|                     ||          S r   )rU   r8   rj   s      r   visit_lambda_exprzStrConv.visit_lambda_expr2  s'    QyyAr   mypy.nodes.GeneratorExprc                    t          |j                  r|j        nd }|                     |j        |j        |j        |g|          S r   )any	condlistsr8   	left_exprindices	sequencesr   r#   r  s      r   visit_generator_exprzStrConv.visit_generator_expr6  s?    #&q{#3#3=AKK	yy!+qy!+yI1MMMr   mypy.nodes.ListComprehensionc                :    |                      |j        g|          S r   r8   	generatorr(   s     r   visit_list_comprehensionz StrConv.visit_list_comprehension:      yy!+***r   mypy.nodes.SetComprehensionc                :    |                      |j        g|          S r   r  r(   s     r   visit_set_comprehensionzStrConv.visit_set_comprehension=  r  r   "mypy.nodes.DictionaryComprehensionc                    t          |j                  r|j        nd }|                     |j        |j        |j        |j        |g|          S r   )r  r  r8   keyr(  r  r  r  s      r   visit_dictionary_comprehensionz&StrConv.visit_dictionary_comprehension@  sC    #&q{#3#3=AKK	yy!%!)Q[)LaPPPr   mypy.nodes.ConditionalExprc                X    |                      d|j        gf|j        |j        g|          S )N	Condition)r8   condif_expr	else_exprr(   s     r   visit_conditional_exprzStrConv.visit_conditional_exprD  s*    yy;119akJANNNr   mypy.nodes.SliceExprc                    |j         |j        |j        g}|d         sd|d<   |d         sd|d<   |                     ||          S )Nr   z<empty>r   )begin_index	end_indexstrider8   rj   s      r   visit_slice_exprzStrConv.visit_slice_exprG  sP    q{AH=t 	AaDt 	AaDyyAr   mypy.nodes.TempNodec                :    |                      |j        g|          S r   )r8   rL   r(   s     r   visit_temp_nodezStrConv.visit_temp_nodeO  r   r   mypy.patterns.AsPatternc                F    |                      |j        |j        g|          S r   )r8   patternrz   r(   s     r   visit_as_patternzStrConv.visit_as_patternR  s    yy!)QV,a000r   mypy.patterns.OrPatternc                8    |                      |j        |          S r   r8   r"  r(   s     r   visit_or_patternzStrConv.visit_or_patternU      yyQ'''r   mypy.patterns.ValuePatternc                :    |                      |j        g|          S r   r   r(   s     r   visit_value_patternzStrConv.visit_value_patternX  r   r   mypy.patterns.SingletonPatternc                :    |                      |j        g|          S r   )r8   r(  r(   s     r   visit_singleton_patternzStrConv.visit_singleton_pattern[  r   r   mypy.patterns.SequencePatternc                8    |                      |j        |          S r   r  r(   s     r   visit_sequence_patternzStrConv.visit_sequence_pattern^  r  r   mypy.patterns.StarredPatternc                :    |                      |j        g|          S r   )r8   capturer(   s     r   visit_starred_patternzStrConv.visit_starred_patterna  s    yy!)a(((r   mypy.patterns.MappingPatternc                N   g }t          t          |j                            D ]H}|                    d|j        |         gf           |                    d|j        |         gf           I|j        |                    d|j        gf           |                     ||          S )NKeyValueRest)r   r   keysrD   r3  restr8   r   s       r   visit_mapping_patternzStrConv.visit_mapping_patternd  s    s16{{## 	/ 	/AHHeafQi[)***HHg}-....6HHfqvh'(((yyAr   mypy.patterns.ClassPatternc                L   |j         g}t          |j                  dk    r|                    d|j        f           t	          t          |j                            D ]1}|                    d|j        |         |j        |         gf           2|                     ||          S )Nr   PositionalsKeyword)	class_refr   positionalsrD   r   keyword_keyskeyword_valuesr8   r   s       r   visit_class_patternzStrConv.visit_class_patternm  s    }q}!!HHmQ]3444s1>**++ 	L 	LAHHi!."3Q5Ea5H!IJKKKKyyAr   )r   r   r   r   r   r   )r   r   r   r   )r#   r$   r   r%   )r#   r$   r   r   )r/   r0   r1   r2   r   r   )r#   r9   r   r:   )r#   rV   r   r   )r#   rl   r   r   )r#   rt   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   )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   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   )r#   r	  r   r   )r#   r  r   r   )r#   r  r   r   )r#   r  r   r   )r#   r&  r   r   )rT   r*  r   r+  )r#   r5  r   r   )r#   r9  r   r   )r#   r>  r   r   )rA  r   r   r   )r#   rM  r   r   )r#   rP  r   r   )r#   rS  r   r   )r#   rW  r   r   )r#   rZ  r   r   r   )rz   r   rB   r%   r   rf  r]  r   rg  rh  r   r   )r#   rp  r   r   )r#   rs  r   r   )r#   rv  r   r   )r#   ry  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   )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  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   )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  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   )r#   r$  r   r   )r#   r,  r   r   )___name__
__module____qualname____doc__	__slots__r   r"   r)   r.   r8   rU   rk   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)  rK   r8  r=  r@  r<  rO  rR  rV  rY  re  r\  rr  ru  rx  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  r
  r  r  r  r  r  r  r#  r+  r4  r   r   r   r   r      s       	 	 544I+0 ( ( ( ( ( (c c c c
   
   - - - -   F    2 2 2 2S S S S@ @ @ @
    
 
 
 
   60 0 0 0' ' ' '' ' ' '; ; ; ;
$ $ $ $& & & &	 	 	 	8 8 8 8   
 
 
 
& & & &	A 	A 	A 	A                     3 3 3 3* * * *& & & && & & &   $
* 
* 
* 
*      " " " "*% % % %4 4 4 46 6 6 6R R R R' ' ' ') ) ) )   & & & &2 2 2 2 /3    <. . . .& & & &$ $ $ $' ' ' '&5 5 5 5
7 7 7 7. . . .. . . .1 1 1 11 1 1 1, , , ,% % % %: : : :% % % %% % % %/ / / /
. . . .: : : :   
 
 
 

 
 
 
F F F FN N N NB B B B8 8 8 8F F F FO O O O   N N N N+ + + ++ + + +Q Q Q QO O O O   & & & &1 1 1 1( ( ( (& & & &' ' ' '( ( ( () ) ) )        r   r   r/   r0   r7   rf  str_convr   r   c                   ddl m}m} g }|r|                    |dz              | D ]z}t	          |t
                    r'|r$|                    t          |d|                     ?t	          |t                    rAt          |d         |d         |          }|                    t          |d                     t	          |t          j
        j                  r7|                    t          |                    |          d                     t	          ||          rM|                    t          |                     ||j        |j                            d                     H|0|                    t          t          |          d                     ||r|dxx         d	z  cc<   d
                    |          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    ro   Nr      )r   r   rp   
)r   r<  r    rD   r`  listr6   tupleindentr!   r/   Noder   r   r   r   rh   )r/   r7   r:  r<  r    rS   ro  rA  s           r   r6   r6   w  s    0///////A
 	s ( (a 	( 9Qh778885!! 
	(AaD!A$11AHHVAq\\""""4:?++ 	(HHVAHHX..2233334   	(HHqxxx/A8K[ \ \ \]]_`aa    ]HHVCFFA&&'''
 	"99Q<<r   rA  ro  intc                N    d|z  | z   } |                      ddd|z  z             } | S )z>Indent all the lines in s (separated by newlines) by n spaces. r>  )rc   )rA  ro  s     r   rA  rA    s/    a!A			$sQw''AHr   )r/   r0   r7   rf  r:  r   r   r   )rA  r   ro  rC  r   r   )r8  
__future__r   rd   rK  collections.abcr   typingr   r   
mypy.nodesr!   mypy.optionsr   	mypy.utilr   r	   mypy.visitorr
   mypy.patternsr   r   r   r6   rA  r   r   r   <module>rN     s,   0 0 " " " " " " 				 				 $ $ $ $ $ $ % % % % % % % %                 * * * * * * * * $ $ $ $ $ $ `	 `	 `	 `	 `	k# `	 `	 `	F" " " "J     r   