
    yIff                        d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 er&ddlm
Z
 ddlmZ dd	lmZmZmZmZmZmZmZmZmZmZmZ d
Z G d d          ZddZ ed          ZdS )z+This module renders Astroid nodes as string    )annotationsN)Iterator)TYPE_CHECKING)nodes)objects)Const)MatchMatchAs	MatchCase
MatchClassMatchMappingMatchOrMatchSequenceMatchSingleton	MatchStar
MatchValueUnknown c                     e Zd ZdZdddZddZdd
ZdddZddd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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&dd1Z'dd2Z(dd3Z)dd4Z*dd5Z+dd6Z,dd:Z-dd;Z.dd=Z/dd>Z0dd?Z1dd@Z2ddAZ3ddBZ4ddCZ5ddDZ6ddEZ7ddFZ8ddGZ9ddHZ:ddIZ;ddJZ<ddKZ=ddMZ>ddNZ?ddPZ@ddQZAddRZBddSZCddTZDddUZEddVZFddWZGddXZHddYZIdd[ZJdd]ZKdd_ZLdd`ZMddaZNddbZOddcZPdddZQddeZRddgZSddiZTddkZUeVddm            ZWddoZXddqZYddsZZdduZ[ddwZ\ddyZ]dz Z^d{ Z_d| Z`d} Zad~ ZbddZcdS )AsStringVisitorz?Visitor to render an Astroid node as a valid python code string    indentstrc                    || _         d S Nr   )selfr   s     K/var/www/piapp/venv/lib/python3.11/site-packages/astroid/nodes/as_string.py__init__zAsStringVisitor.__init__*   s    !    returnc                ^    |                     |                               t          d          S )z.Makes this visitor behave as a simple function
)acceptreplaceDOC_NEWLINEr   nodes     r   __call__zAsStringVisitor.__call__-   s$    {{4  ((d;;;r    doc_nodeConst | Nonec                |    |sdS d                     | j        |j                            dt                              S )z7Stop newlines in docs being indented by self._stmt_list z
{}"""{}"""r#   )formatr   valuer%   r&   )r   r*   s     r   _docs_dedentzAsStringVisitor._docs_dedent1   s@     	2$$K//kBB
 
 	
r    Tstmtslistboolc                     d                     d  fd|D             D                       }|s|S  j        |                    dd j        z             z   S )z return a list of nodes to stringr#   c              3     K   | ]}||V  	d S r    ).0nstrs     r   	<genexpr>z-AsStringVisitor._stmt_list.<locals>.<genexpr><   s;       #
 #
#
#
 #
 #
 #
 #
 #
r    c                :    g | ]}|                               S r6   r$   r7   nr   s     r   
<listcomp>z.AsStringVisitor._stmt_list.<locals>.<listcomp>=   s#    <<<ahhtnn<<<r    )joinr   r%   )r   r1   r   	stmts_strs   `   r   
_stmt_listzAsStringVisitor._stmt_list:   sz     #
 #
<<<<e<<<#
 #
 #
 
 
	  	{Y..tTDK5GHHHHr    is_leftc                    |                      |||          rd|                    |            dS |                    |           S )z<Wrap child in parens only if required to keep same semantics())_should_wrapr$   )r   r(   childrB   s       r   _precedence_parensz"AsStringVisitor._precedence_parensD   sK    T5'22 	-,u||D)),,,,||D!!!r    c                    |                                 }|                                 }||k    rdS ||k    r||                                k    rdS dS )zWrap child if:
        - it has lower precedence
        - same precedence with position opposite to associativity direction
        TF)op_precedenceop_left_associative)r   r(   rG   rB   node_precedencechild_precedences         r   rF   zAsStringVisitor._should_wrapK   si    
 ,,.. ..00---4 ///4335555 4ur    c                <    d|j                             |            S )Nzawait r/   r$   r'   s     r   visit_awaitzAsStringVisitor.visit_awaitc   s     1
))$//111r    c                2    d|                      |           S Nasync )
visit_withr'   s     r   visit_asyncwithzAsStringVisitor.visit_asyncwithf   s    /--///r    c                2    d|                      |           S rR   )	visit_forr'   s     r   visit_asyncforzAsStringVisitor.visit_asyncfori   s    .t,,...r    c                *    |                                 S )z)return an astroid.Function node as string)format_argsr'   s     r   visit_argumentszAsStringVisitor.visit_argumentsl   s    !!!r    c                ,    |                      |          S )z(return an astroid.AssAttr node as stringvisit_attributer'   s     r   visit_assignattrz AsStringVisitor.visit_assignattrp       ##D)))r    c                    |j         r8d|j                            |            d|j                             |            S d|j                            |            S )z'return an astroid.Assert node as stringzassert , )failtestr$   r'   s     r   visit_assertzAsStringVisitor.visit_assertt   sa    9 	POTY--d33OOty7G7G7M7MOOO1))$//111r    c                    |j         S )z(return an astroid.AssName node as stringnamer'   s     r   visit_assignnamez AsStringVisitor.visit_assignnamez   
    yr    c                     d                      fd|j        D                       }| d|j                                        S )z'return an astroid.Assign node as string = c              3  B   K   | ]}|                               V  d S r   r;   r<   s     r   r9   z/AsStringVisitor.visit_assign.<locals>.<genexpr>   s-      >>A$>>>>>>r    )r?   targetsr/   r$   )r   r(   lhss   `  r   visit_assignzAsStringVisitor.visit_assign~   sO    jj>>>>>>>>>33$*++D11333r    c                    |j                             |            d|j         d|j                            |            S )z*return an astroid.AugAssign node as string )targetr$   opr/   r'   s     r   visit_augassignzAsStringVisitor.visit_augassign   s@    +$$T**PPTWPPtz7H7H7N7NPPPr    c                    |j                             |           }|j                            |           }|j        | d| S | d| d|j                            |            S )z*Return an astroid.AugAssign node as stringN: rl   )rs   r$   
annotationr/   )r   r(   rs   rx   s       r   visit_annassignzAsStringVisitor.visit_annassign   sv     ##D))_++D11
:,,
,,,DDJDD4:+<+<T+B+BDDDr    c                    |                      ||j                  }|                      ||j        d          }|j        dk    r| |j         | S | d|j         d| S )z&return an astroid.BinOp node as stringFrB   **rr   )rH   leftrightrt   )r   r(   r}   r~   s       r   visit_binopzAsStringVisitor.visit_binop   sv    &&tTY77''dj%'HH7d??,DG,U,,,****5***r    c                j      fdj         D             }dj         d                    |          S )z'return an astroid.BoolOp node as stringc                >    g | ]}                     |           S r6   rH   )r7   r=   r(   r   s     r   r>   z0AsStringVisitor.visit_boolop.<locals>.<listcomp>   s,    MMMAT,,T1557MMMr    rr   )valuesrt   r?   )r   r(   r   s   `` r   visit_boolopzAsStringVisitor.visit_boolop   s@    MMMMMMMMDG$$V,,,r    c                    dS )z&return an astroid.Break node as stringbreakr6   r'   s     r   visit_breakzAsStringVisitor.visit_break   s    wr    c                                           ||j                  } fd|j        D             }|j        r fd|j        D             }ng }|                    |           | dd                    |           dS )z%return an astroid.Call node as stringc                :    g | ]}|                               S r6   r;   )r7   argr   s     r   r>   z.AsStringVisitor.visit_call.<locals>.<listcomp>   s%    666S

4  666r    c                :    g | ]}|                               S r6   r;   )r7   kwargr   s     r   r>   z.AsStringVisitor.visit_call.<locals>.<listcomp>   s%    FFFuT**FFFr    rD   rb   rE   )rH   funcargskeywordsextendr?   )r   r(   expr_strr   r   s   `    r   
visit_callzAsStringVisitor.visit_call   s    **4;;6666DI666= 	FFFFFFFHHHH//TYYt__////r    c           	         |j         r|j                                        nd} fd|j        D             }|j        rD|                                s0|                    d|j                                       z              | fd|j        D             z  }|rdd                    |           dnd}                     |j	                  }d
                    ||j        ||                     |j                            S )	z)return an astroid.ClassDef node as stringr-   c                :    g | ]}|                               S r6   r;   r<   s     r   r>   z2AsStringVisitor.visit_classdef.<locals>.<listcomp>   s#    3331333r    z
metaclass=c                :    g | ]}|                               S r6   r;   r<   s     r   r>   z2AsStringVisitor.visit_classdef.<locals>.<listcomp>   s#    777A$777r    rD   rb   rE   z

{}class {}{}:{}
{}
)
decoratorsr$   bases
_metaclasshas_metaclass_hackappendr   r?   r0   r*   r.   rh   rA   body)r   r(   decorater   args_strdocss   `     r   visit_classdefzAsStringVisitor.visit_classdef   s   37?J4?))$///3333
333? 	E4#:#:#<#< 	EKKt'='=d'C'CCDDD77777777-19)tyy))))r  //*11di41K1K
 
 	
r    c                     d                      fdj        D                       }                     j                   d| S )z(return an astroid.Compare node as stringrr   c              3  X   K   | ]$\  }}| d                      |d           V  %dS )rr   Fr{   Nr   )r7   rt   exprr(   r   s      r   r9   z0AsStringVisitor.visit_compare.<locals>.<genexpr>   s^       
 
D HHD++D$+FFHH
 
 
 
 
 
r    )r?   opsrH   r}   )r   r(   rhs_strs   `` r   visit_comparezAsStringVisitor.visit_compare   sl    (( 
 
 
 
 
 H
 
 
 
 
 ))$	::FFWFFFr    c                     d                      fd|j        D                       }d|j                                        d|j                                        | }|j        rdnd | S )z.return an astroid.Comprehension node as stringr-   c              3  H   K   | ]}d |                                V  dS ) if Nr;   r<   s     r   r9   z6AsStringVisitor.visit_comprehension.<locals>.<genexpr>   s6      @@!-QXXd^^--@@@@@@r    zfor z in rS   )r?   ifsrs   r$   iteris_async)r   r(   r   	generateds   `   r   visit_comprehensionz#AsStringVisitor.visit_comprehension   s    gg@@@@tx@@@@@V4;--d33VV9I9I$9O9OVQTVV	"m3((@Y@@@r    c                J    |j         t          u rdS t          |j                   S )z&return an astroid.Const node as stringz...)r/   Ellipsisreprr'   s     r   visit_constzAsStringVisitor.visit_const   s$    :!!5DJr    c                    dS )z)return an astroid.Continue node as stringcontinuer6   r'   s     r   visit_continuezAsStringVisitor.visit_continue   s    zr    c                V     dd                      fd|j        D                        S )z'return an astroid.Delete node as stringzdel rb   c              3  B   K   | ]}|                               V  d S r   r;   r7   rG   r   s     r   r9   z/AsStringVisitor.visit_delete.<locals>.<genexpr>   s/      MMuT 2 2MMMMMMr    )r?   rn   r'   s   ` r   visit_deletezAsStringVisitor.visit_delete   s4    OdiiMMMMMMMMMOOOr    c                ,    |                      |          S )z(return an astroid.DelAttr node as stringr]   r'   s     r   visit_delattrzAsStringVisitor.visit_delattr   r`   r    c                    |j         S )z(return an astroid.DelName node as stringrg   r'   s     r   visit_delnamezAsStringVisitor.visit_delname   rj   r    c                V     dd                      fd|j        D                       z  S )z+return an astroid.Decorators node as stringz@%s
z
@c              3  B   K   | ]}|                               V  d S r   r;   )r7   itemr   s     r   r9   z3AsStringVisitor.visit_decorators.<locals>.<genexpr>   s/      #M#M$DKK$5$5#M#M#M#M#M#Mr    )r?   r   r'   s   ` r   visit_decoratorsz AsStringVisitor.visit_decorators   s1    #M#M#M#M$*#M#M#MMMMMr    c                X    dd                     |                     |                    z  S )z%return an astroid.Dict node as string{%s}rb   )r?   _visit_dictr'   s     r   
visit_dictzAsStringVisitor.visit_dict   s'    		$"2"24"8"89999r    Iterator[str]c              #     K   |j         D ]F\  }}|                    |           }|                    |           }|dk    r||z   V  =| d| V  Gd S )Nr|   rw   )itemsr$   )r   r(   keyr/   s       r   r   zAsStringVisitor._visit_dict   s      * 	( 	(JC**T""CLL&&Ed{{Ek!!!!''''''''	( 	(r    c                    dS )Nr|   r6   r'   s     r   visit_dictunpackz AsStringVisitor.visit_dictunpack   s    tr    c                     d                     |j                                       |j                                       d                     fd|j        D                                 S )z)return an astroid.DictComp node as stringz{{{}: {} {}}}rr   c              3  B   K   | ]}|                               V  d S r   r;   r<   s     r   r9   z1AsStringVisitor.visit_dictcomp.<locals>.<genexpr>   s-      ==QXXd^^======r    )r.   r   r$   r/   r?   
generatorsr'   s   ` r   visit_dictcompzAsStringVisitor.visit_dictcomp   se    %%HOOD!!Jd##HH====T_=====
 
 	
r    c                6    |j                             |           S )z(return an astroid.Discard node as stringrO   r'   s     r   
visit_exprzAsStringVisitor.visit_expr       z  &&&r    c                    dS )z'dummy method for visiting an Empty noder-   r6   r'   s     r   visit_emptynodezAsStringVisitor.visit_emptynode      rr    c                r   d}t          t          |dd           t          j                  rd}|j        rb|j        r;| d|j                            |            d|j                            |            }n#| d|j                            |            }n| }| d|                     |j                   S )Nexceptparentzexcept*rr    as :
)	
isinstancegetattrr   TryStartyperh   r$   rA   r   )r   r(   r=   excss       r   visit_excepthandlerz#AsStringVisitor.visit_excepthandler  s    gdHd33U]CC 	A9 	y 7RRdi..t44RR$):J:J4:P:PRR66di..t44666D774??4955777r    c                    dS )zreturn an Empty node as stringr-   r6   r'   s     r   visit_emptyzAsStringVisitor.visit_empty  r   r    c                   d                     |j                            |           |j                            |           |                     |j                            }|j        r| d|                     |j                   }|S )z$return an astroid.For node as stringzfor {} in {}:
{}
else:
)r.   rs   r$   r   rA   r   orelse)r   r(   forss      r   rW   zAsStringVisitor.visit_for  s    "))Kt$$di&6&6t&<&<doodi>X>X
 
 ; 	DCCT__T[%A%ACCDr    c                v    d                     d|j        pdz  |j        z   t          |j                            S )z+return an astroid.ImportFrom node as stringzfrom {} import {}.r   )r.   levelmodname_import_stringnamesr'   s     r   visit_importfromz AsStringVisitor.visit_importfrom  s;    "))4:?#dl2N4:4N4N
 
 	
r    c                |     d                      fd|j        D                       }dD ]}||vr n	d|z   |z   |z   S )Nr-   c              3     K   | ]u}t          |          j        d k    rDt          |j                  dd                             dd                              dd          n|                              V  vdS )r      {z{{}z}}N)r   __name__r   r/   r%   r$   )r7   r/   r   s     r   r9   z2AsStringVisitor.visit_joinedstr.<locals>.<genexpr>&  s       
 
  ;;'722 U[!!!B$'d##GGC$6$6$6 \\$''
 
 
 
 
 
r    )'""""z'''f)r?   r   )r   r(   stringquotes   `   r   visit_joinedstrzAsStringVisitor.visit_joinedstr%  s|     
 
 
 
 
 
 
 
 
( . 	 	EF"" # U{V#e++r    c                    |j                             |           }|j        r%|j        dk    r|dt          |j                  z   z  }|j        r(|d|j                            |           dd         z   z  }d|z  S )Nr   !:   r   r   )r/   r$   
conversionchrformat_spec)r   r(   results      r   visit_formattedvaluez$AsStringVisitor.visit_formattedvalue@  s    ""4((? 	1t!33cC0000F 	@ cD,33D99!B$???Fr    r(   nodes.FunctionDefkeywordc           
     V   |j         r|j                             |           nd}|                     |j                  }d}|j        r!d|j                                        z   }|dz   }d}||||j        |j                            |           |||                     |j	                  fz  S )z<return a (possibly async) function definition node as stringr-   r   z -> z
%s%s %s(%s)%s%s
%s)
r   r$   r0   r*   returns	as_stringrh   r   rA   r   )r   r(   r  r   r   trailerreturn_annotation
def_formats           r   handle_functiondefz"AsStringVisitor.handle_functiondefK  s    37?J4?))$///  //< 	. &)?)?)A)A A'#-G,
IIT""OODI&&
 
 	
r    c                .    |                      |d          S )z,return an astroid.FunctionDef node as stringdefr  r'   s     r   visit_functiondefz!AsStringVisitor.visit_functiondef_  s    &&tU333r    nodes.AsyncFunctionDefc                .    |                      |d          S )z.return an astroid.AsyncFunction node as stringz	async defr  r'   s     r   visit_asyncfunctiondefz&AsStringVisitor.visit_asyncfunctiondefc  s    &&t[999r    c                     d                     |j                                       d                     fd|j        D                                 S )z-return an astroid.GeneratorExp node as stringz({} {})rr   c              3  B   K   | ]}|                               V  d S r   r;   r<   s     r   r9   z5AsStringVisitor.visit_generatorexp.<locals>.<genexpr>j  -      +T+TqAHHTNN+T+T+T+T+T+Tr    r.   eltr$   r?   r   r'   s   ` r   visit_generatorexpz"AsStringVisitor.visit_generatorexpg  Q    HOOD!!388+T+T+T+TDO+T+T+T#T#T
 
 	
r    c                   	 |                      ||j                  }nJ# t          $ r= t          j        dt
          d           d|j                            |            d}Y nw xY w|                                rd| d}| d|j         S )z(return an astroid.Getattr node as stringz<Recursion limit exhausted; defaulting to adding parentheses.r   )
stacklevelrD   rE   r   )	rH   r   RecursionErrorwarningswarnUserWarningr$   isdigitattrname)r   r(   r}   s      r   r^   zAsStringVisitor.visit_attributem  s    	1**4;;DD 	1 	1 	1MN   
 1ty''--000DDD	1 <<>> 	t;;;D(((((s    AA%$A%c                <    dd                     |j                   S )z'return an astroid.Global node as stringzglobal rb   r?   r   r'   s     r   visit_globalzAsStringVisitor.visit_global|  s    04:..000r    c                   d|j                             |            d|                     |j                   g}|                                r3|                    d|                     |j        d                      n7|j        r0|                    d|                     |j                              d                    |          S )z#return an astroid.If node as stringzif r   elFr   else:
r#   )rd   r$   rA   r   has_elif_blockr   r   r?   )r   r(   r   s      r   visit_ifzAsStringVisitor.visit_if  s    LTY%%d++LL	0J0JLLM   	AJJHDOODKOFFHHIIII[ 	AJJ?!=!=??@@@yy~~r    c           	         d                     |                     ||j        d          |                     ||j        d          |                     ||j        d                    S )z&return an astroid.IfExp node as stringz{} if {} else {}Tr{   F)r.   rH   r   rd   r   r'   s     r   visit_ifexpzAsStringVisitor.visit_ifexp  sh    !((##D$)T#BB##D$)T#BB##D$+u#EE
 
 	
r    c                0    dt          |j                   S )z'return an astroid.Import node as stringzimport )r   r   r'   s     r   visit_importzAsStringVisitor.visit_import  s    5
33555r    c                    |j         d|j                            |            S |j          d|j                            |            S )z(return an astroid.Keyword node as stringNr|   =)r   r/   r$   r'   s     r   visit_keywordzAsStringVisitor.visit_keyword  sN    81
))$//111(66TZ..t44666r    c                    |j                             |           }|j                            |           }|rd| d| S d| S )z'return an astroid.Lambda node as stringzlambda rw   zlambda: )r   r$   r   )r   r(   r   r   s       r   visit_lambdazAsStringVisitor.visit_lambda  sX    y%%y%% 	,+T++T+++ $   r    c                X     dd                      fd|j        D                        dS )z%return an astroid.List node as string[rb   c              3  B   K   | ]}|                               V  d S r   r;   r   s     r   r9   z-AsStringVisitor.visit_list.<locals>.<genexpr>  /      GGEU\\$//GGGGGGr    ]r?   eltsr'   s   ` r   
visit_listzAsStringVisitor.visit_list  s7    J499GGGGTYGGGGGJJJJr    c                     d                     |j                                       d                     fd|j        D                                 S )z)return an astroid.ListComp node as stringz[{} {}]rr   c              3  B   K   | ]}|                               V  d S r   r;   r<   s     r   r9   z1AsStringVisitor.visit_listcomp.<locals>.<genexpr>  r  r    r  r'   s   ` r   visit_listcompzAsStringVisitor.visit_listcomp  r  r    c                     |j         rd|j         j         dnd}|d                     fd|j        D                       z   dz   S )z'return an astroid.Module node as stringr   z"""

r-   r#   c              3  B   K   | ]}|                               V  d S r   r;   r<   s     r   r9   z/AsStringVisitor.visit_module.<locals>.<genexpr>  s-      BB1BBBBBBr    z

)r*   r/   r?   r   )r   r(   r   s   `  r   visit_modulezAsStringVisitor.visit_module  sX    59]J1T](1111diiBBBB	BBBBBBVKKr    c                    |j         S )z%return an astroid.Name node as stringrg   r'   s     r   
visit_namezAsStringVisitor.visit_name  rj   r    c                x    |j                             |           }|j                            |           }| d| S )z.Return an assignment expression node as stringz := )rs   r$   r/   )r   r(   rs   r/   s       r   visit_namedexprzAsStringVisitor.visit_namedexpr  s@    ##D))
!!$''%%e%%%r    c                <    dd                     |j                   S )z)return an astroid.Nonlocal node as stringz	nonlocal rb   r$  r'   s     r   visit_nonlocalzAsStringVisitor.visit_nonlocal  s    2499TZ00222r    nodes.ParamSpecc                6    |j                             |           S )z*return an astroid.ParamSpec node as stringrh   r$   r'   s     r   visit_paramspeczAsStringVisitor.visit_paramspec  s    y%%%r    c                    dS )z%return an astroid.Pass node as stringpassr6   r'   s     r   
visit_passzAsStringVisitor.visit_pass  s    vr    objects.PartialFunctionc                ,    |                      |          S )z,Return an objects.PartialFunction as string.)r  r'   s     r   visit_partialfunctionz%AsStringVisitor.visit_partialfunction  s    %%d+++r    c                    |j         r\|j        r8d|j                             |            d|j                            |            S d|j                             |            S dS )z&return an astroid.Raise node as stringzraise z from raise)exccauser$   r'   s     r   visit_raisezAsStringVisitor.visit_raise  sl    8 	4z WV 5 5VVTZ=N=Nt=T=TVVV3DHOOD11333wr    c                    |                                 rMt          |j        j                  dk    r0 fd|j        j        D             }dd                    |           S |j        rd|j                                        S dS )z'return an astroid.Return node as stringr   c                :    g | ]}|                               S r6   r;   r   s     r   r>   z0AsStringVisitor.visit_return.<locals>.<listcomp>  s%    DDD5ELL&&DDDr    zreturn rb   r!   )is_tuple_returnlenr/   r:  r?   r$   )r   r(   r:  s   `  r   visit_returnzAsStringVisitor.visit_return  s    !! 	/c$*/&:&:Q&>&>DDDDDJODDDD.TYYt__...: 	76TZ..t44666xr    c                V     dd                      fd|j        D                       z  S )z$return an astroid.Set node as stringr   rb   c              3  B   K   | ]}|                               V  d S r   r;   r   s     r   r9   z,AsStringVisitor.visit_set.<locals>.<genexpr>  s/      !L!L%,,t"4"4!L!L!L!L!L!Lr    r9  r'   s   ` r   	visit_setzAsStringVisitor.visit_set  s1    		!L!L!L!L$)!L!L!LLLLLr    c                     d                     |j                                       d                     fd|j        D                                 S )z(return an astroid.SetComp node as stringz	{{{} {}}}rr   c              3  B   K   | ]}|                               V  d S r   r;   r<   s     r   r9   z0AsStringVisitor.visit_setcomp.<locals>.<genexpr>  r  r    r  r'   s   ` r   visit_setcompzAsStringVisitor.visit_setcomp  sQ    !!HOOD!!388+T+T+T+TDO+T+T+T#T#T
 
 	
r    c                    |j         r|j                             |           nd}|j        r|j                            |           nd}|j        r|j                            |           nd}|r
| d| d| S | d| S )z&return an astroid.Slice node as stringr-   r   )lowerr$   upperstep)r   r(   rc  rd  re  s        r   visit_slicezAsStringVisitor.visit_slice  s    +/:=
!!$'''2+/:=
!!$'''2)-:ty%%% 	-,,e,,d,,,!!%!!!r    c                4   |j         }|j        j                                        dk    r|j        }|                    |           }|j        j                                        dk    r|j        r
|dd         }|                     ||j                   d| dS )z*return an astroid.Subscript node as stringindextupler   r   r5  r8  )slice	__class__r   rc  r/   r$   r:  rH   )r   r(   idxidxstrs       r   visit_subscriptzAsStringVisitor.visit_subscript  s    j=!''))W44)CD!!=!''))W444 AbD\F))$
;;GGfGGGGr    c                   d|                      |j                   g}|j        D ]*}|                    |                    |                      +|j        r0|                    d|                      |j                              |j        r0|                    d|                      |j                              d                    |          S )z$return an astroid.Try node as stringtry:
r(  	finally:
r#   rA   r   handlersr   r$   r   	finalbodyr?   r   r(   tryshandlers       r   	visit_tryzAsStringVisitor.visit_try      533556} 	. 	.GKKt,,----; 	BKK@$//$+">">@@AAA> 	HKKFT__T^%D%DFFGGGyyr    c                   d|                      |j                   g}|j        D ]*}|                    |                    |                      +|j        r0|                    d|                      |j                              |j        r0|                    d|                      |j                              d                    |          S )z(return an astroid.TryStar node as stringrp  r(  rq  r#   rr  ru  s       r   visit_trystarzAsStringVisitor.visit_trystar
  ry  r    c                     t          |j                  dk    r$d|j        d                                         dS dd                     fd|j        D                        dS )z&return an astroid.Tuple node as stringr   rD   r   z, )rb   c              3  B   K   | ]}|                               V  d S r   r;   r   s     r   r9   z.AsStringVisitor.visit_tuple.<locals>.<genexpr>  r7  r    rE   )rZ  r:  r$   r?   r'   s   ` r   visit_tuplezAsStringVisitor.visit_tuple  so    ty>>Q5ty|**4005555J499GGGGTYGGGGGJJJJr    nodes.TypeAliasc                H    |j         r|j                             |           ndS )z*return an astroid.TypeAlias node as string_rJ  r'   s     r   visit_typealiaszAsStringVisitor.visit_typealias  $    )-;ty%%%;r    nodes.TypeVarc                H    |j         r|j                             |           ndS )z(return an astroid.TypeVar node as stringr  rJ  r'   s     r   visit_typevarzAsStringVisitor.visit_typevar  r  r    nodes.TypeVarTuplec                N    |j         rd|j                             |           z   ndS )z-return an astroid.TypeVarTuple node as string*r-   rJ  r'   s     r   visit_typevartuplez"AsStringVisitor.visit_typevartuple#  s)    /3y@sTY%%d++++b@r    c                j    |j         dk    rd}n|j         }| |                     ||j                   S )z(return an astroid.UnaryOp node as stringnotznot )rt   rH   operand)r   r(   operators      r   visit_unaryopzAsStringVisitor.visit_unaryop'  s@    7eHHwHID33D$,GGIIIr    c                    d|j                             |            d|                     |j                   }|j        r| d|                     |j                   }|S )z&return an astroid.While node as stringzwhile r   r   )rd   r$   rA   r   r   )r   r(   whiless      r   visit_whilezAsStringVisitor.visit_while/  sf    Q$)**400QQT__TY5O5OQQ; 	HGG)E)EGGFr    c                     d                      fd|j        D                       }d| d                     |j                   S )z%return an astroid.With node as stringrb   c              3     K   | ]:\  }}|                                |rd |                                pdz   V  ;dS )r   r-   Nr;   )r7   r   vr   s      r   r9   z-AsStringVisitor.visit_with.<locals>.<genexpr>8  sl       
 
a {{4  "a&C,C188D>>,C,C&IrJ
 
 
 
 
 
r    zwith r   )r?   r   rA   r   )r   r(   r   s   `  r   rT   zAsStringVisitor.visit_with6  sd    		 
 
 
 
:
 
 
 
 
 >u==!;!;===r    c                    |j         rd|j                             |           z   nd}d|z   }|j        j        r|S d| dS )z!yield an ast.Yield node as stringrr   r-   yieldrD   rE   r/   r$   r   is_statementr   r(   yi_valr   s       r   visit_yieldzAsStringVisitor.visit_yield>  sR    48JF#
))$////B;# 	K4{{{r    c                    |j         rd|j                             |           z   nd}d|z   }|j        j        r|S d| dS )z+Return an astroid.YieldFrom node as string.rr   r-   z
yield fromrD   rE   r  r  s       r   visit_yieldfromzAsStringVisitor.visit_yieldfromG  sR    48JF#
))$////Bf$;# 	K4{{{r    c                <    d|j                             |           z   S )zreturn Starred node as stringr  rO   r'   s     r   visit_starredzAsStringVisitor.visit_starredP  s    TZ&&t,,,,r    r	   c                r    d|j                             |            d|                     |j                   S )z'Return an astroid.Match node as string.zmatch r   )subjectr$   rA   casesr'   s     r   visit_matchzAsStringVisitor.visit_matchT  s6    S++D11SSdoodj6Q6QSSSr    r   c                    |j         rd|j                             |            nd}d|j                            |            | d|                     |j                   S )z+Return an astroid.MatchCase node as string.r   r-   zcase r   )guardr$   patternrA   r   )r   r(   	guard_strs      r   visit_matchcasezAsStringVisitor.visit_matchcaseX  st    8<
J44:,,T22444	,DL''-- ,y , ,ty)), ,	
r    r   c                6    |j                             |           S )z,Return an astroid.MatchValue node as string.rO   r'   s     r   visit_matchvaluez AsStringVisitor.visit_matchvalue`  r   r    r   c                *    t          | j                  S )z0Return an astroid.MatchSingleton node as string.)r   r/   )r(   s    r   visit_matchsingletonz$AsStringVisitor.visit_matchsingletond  s     4:r    r   c                j     |j         dS dd                     fd|j         D                        dS )z/Return an astroid.MatchSequence node as string.Nz[]r5  rb   c              3  B   K   | ]}|                               V  d S r   r;   r7   pr   s     r   r9   z6AsStringVisitor.visit_matchsequence.<locals>.<genexpr>m  s-      CCQXXd^^CCCCCCr    r8  )patternsr?   r'   s   ` r   visit_matchsequencez#AsStringVisitor.visit_matchsequencei  sD    = 4F499CCCCT]CCCCCFFFFr    r   c                :    g }|j         r@|j        r9|                     fdt          |j         |j                  D                        |j        r0|                    d|j                                                   d d                    |           d S )z.Return an astroid.MatchMapping node as string.c              3  x   K   | ]4\  }}|                                d |                                V  5dS )rw   Nr;   )r7   r   r  r   s      r   r9   z5AsStringVisitor.visit_matchmapping.<locals>.<genexpr>s  s_       # #C ::d##77qxx~~77# # # # # #r    r|   r   rb   r   )keysr  r   ziprestr   r$   r?   )r   r(   mapping_stringss   `  r   visit_matchmappingz"AsStringVisitor.visit_matchmappingo  s    %'9 	 	"" # # # #!$)T];;# # #    9 	B""#@	(8(8(>(>#@#@AAA8tyy1183888r    r   c                    |j         t          | d          g }|j        r&|                     fd|j        D                        |j        rT|j        rMt          |j        |j                  D ]2\  }}|                    | d|                                           3|j                                         dd	                    |           dS )z,Return an astroid.MatchClass node as string.Nz does not have a 'cls' nodec              3  B   K   | ]}|                               V  d S r   r;   r  s     r   r9   z3AsStringVisitor.visit_matchclass.<locals>.<genexpr>  s-       G GA$ G G G G G Gr    r0  rD   rb   rE   )
clsAssertionErrorr  r   	kwd_attrskwd_patternsr  r   r$   r?   )r   r(   class_stringsattrr  s   `    r   visit_matchclassz AsStringVisitor.visit_matchclass{  s    8 D!E!E!EFFF#%= 	H   G G G G G G GGGG> 	Gd/ 	G!$T^T5F!G!G G Gg$$%E%Ew~~d/C/C%E%EFFFF(//$''EE$))M*B*BEEEEr    r   c                N    d|j         r|j                             |           nd S )z+Return an astroid.MatchStar node as string.r  r  rJ  r'   s     r   visit_matchstarzAsStringVisitor.visit_matchstar  s,    ATY?49##D)))CAAAr    r
   c                "   ddl m}m}m} t	          |j        |||f          r#|j        r|j                            |           ndS |j        r|j                            |           nd |j        rd|j                            |            nd S )z)Return an astroid.MatchAs node as string.r   )r   r   r   r  r   r-   )	astroid.nodes.node_classesr   r   r   r   r   rh   r$   r  )r   r(   r   r   r   s        r   visit_matchaszAsStringVisitor.visit_matchas  s     	WVVVVVVVVVdkM<#LMM 	@-1Y?49##D)))C?,0LAt|""4(((c F26)C.di&&t,,...F F	
r    r   c                     |j         t          | d          d                     fd|j         D                       S )z)Return an astroid.MatchOr node as string.Nz does not have pattern nodesz | c              3  B   K   | ]}|                               V  d S r   r;   r  s     r   r9   z0AsStringVisitor.visit_matchor.<locals>.<genexpr>  s-      @@Q!((4..@@@@@@r    )r  r  r?   r'   s   ` r   visit_matchorzAsStringVisitor.visit_matchor  sK    =  D!F!F!FGGGzz@@@@$-@@@@@@r    c                6    |j                             |           S r   r   r$   r'   s     r   visit_frozensetzAsStringVisitor.visit_frozenset      {!!$'''r    c                6    |j                             |           S r   r  r'   s     r   visit_superzAsStringVisitor.visit_super  r  r    c                     t          |          S r   r   r'   s     r   visit_uninferablez!AsStringVisitor.visit_uninferable      4yyr    c                6    |j                             |           S r   )functionr$   r'   s     r   visit_propertyzAsStringVisitor.visit_property      }##D)))r    c                6    |j                             |           S r   )originalr$   r'   s     r   visit_evaluatedobjectz%AsStringVisitor.visit_evaluatedobject  r  r    r   c                     t          |          S r   r  r'   s     r   visit_unknownzAsStringVisitor.visit_unknown  r  r    N)r   )r   r   r!   r   )r*   r+   r!   r   )T)r1   r2   r   r3   r!   r   )rB   r3   r!   r   )rB   r3   r!   r3   )r!   r   )r(   r  r  r   r!   r   )r(   r  r!   r   )r(   r  r!   r   )r(   rH  r!   r   )r(   rO  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   )dr   
__module____qualname____doc__r   r)   r0   rA   rH   rF   rP   rU   rX   r[   r_   re   ri   rp   ru   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW   r   r   r  r  r  r  r  r^   r%  r*  r,  r.  r1  r3  r;  r>  rA  rC  rE  rG  rK  rN  rQ  rV  r[  r^  ra  rf  rn  rx  r{  r~  r  r  r  r  r  rT   r  r  r  r  r  r  staticmethodr  r  r  r  r  r  r  r  r  r  r  r  r  r6   r    r   r   r   '   s       II" " " " "< < < <
 
 
 
I I I I I" " " " "   02 2 2 20 0 0 0/ / / /" " " "* * * *2 2 2 2   4 4 4 4
Q Q Q QE E E E+ + + +- - - -
   
0 
0 
0 
0
 
 
 
G G G GA A A A          P P P P* * * *   N N N N: : : :( ( ( (   
 
 
 
' ' ' '   8 8 8 8      
 
 
 
, , , ,6	 	 	 	
 
 
 
(4 4 4 4: : : :
 
 
 
) ) ) )1 1 1 1   
 
 
 
6 6 6 67 7 7 7! ! ! !K K K K
 
 
 
L L L L
   & & & &3 3 3 3& & & &   , , , ,   	 	 	 	M M M M
 
 
 
" " " "
H 
H 
H 
H	 	 	 		 	 	 	K K K K< < < << < < <A A A AJ J J J   > > > >      - - - -T T T T
 
 
 
' ' ' '    \G G G G
9 
9 
9 
9
F 
F 
F 
FB B B B
 
 
 
A A A A( ( (( ( (  * * ** * *     r    r   r!   r   c                    g }| D ]7\  }}||                     | d|            "|                     |           8d                    |          S )z5return a list of (name, asname) formatted as a stringNr   rb   )r   r?   )r   _namesrh   asnames       r   r   r     sj    F    fMMT//v//0000MM$99Vr    r   r  )r  
__future__r   r  collections.abcr   typingr   astroidr   r   astroid.nodesr   r  r	   r
   r   r   r   r   r   r   r   r   r   r&   r   r   to_coder6   r    r   <module>r     sm  
 2 1 " " " " " "  $ $ $ $ $ $                   ######                           
I
 I
 I
 I
 I
 I
 I
 I
X    /&
!
!r    