
    7g
                   4   U d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	m
Z
 ddlmZmZ ddlmZmZmZmZmZmZ ddlmZ dd	lmZmZmZ dd
lmZmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddddddddZ(de)d<    eddded         Z* edejV                  ejX                        Z- edej\                  ej^                        Z0 edejb                  ejd                        Z3eejh                  ejj                  ejV                  f   Z6 G d d       Z7y)!zlThis module contains utilities for rebuilding an _ast tree in
order to get a single Astroid representation.
    )annotationsN)Callable	Generator)StringIO)	TokenInfogenerate_tokens)TYPE_CHECKINGFinalTypeVarUnioncastoverload)nodes)ParserModuleget_parser_moduleparse_function_type_comment)
PY312_PLUSContext)AstroidManager)NodeNG)
AssignName)Position)InferenceResult	ArgumentsComprehensionExceptHandlerKeyword	MatchCase)	argumentscomprehensionListCompFor
GenExprForexcepthandlerkeyword
match_casezFinal[dict[str, str]]REDIRECTT_Doc
ast.Moduleast.ClassDef)ast.FunctionDefast.AsyncFunctionDef
_FunctionT_ForT_WithTc                     e Zd ZdZ	 	 d	 	 	 	 	 	 	 ddZddZ	 	 	 	 ddZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 	 	 ddZe	r.e
dd       Ze
dd	       Ze
dd
       Ze
	 	 	 	 	 	 dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
	 	 	 	 	 	 dd       Ze
dd       Ze
dd       Ze
dd       Ze
dd       Ze
	 	 	 	 	 	 dd       Ze
dd       Ze
dd        Ze
dd!       Ze
	 	 	 	 	 	 dd"       Ze
dd#       Ze
dd$       Ze
dd%       Ze
dd&       Ze
dd'       Ze
dd(       Ze
	 	 	 	 	 	 dd)       Ze
dd*       Ze
dd+       Ze
dd,       Ze
dd-       Ze
dd.       Ze
	 	 	 	 	 	 dd/       Ze
dd0       Ze
dd1       Zej                  d2k\  r	e
dd3       Ze
dd4       Ze
dd5       Ze
dd6       Ze
dd7       Ze
dd8       Ze
dd9       Ze
dd:       Ze
dd;       Ze
dd<       Zej                  d=k\  r	e
dd>       Ze
dd?       Zej                  d2k\  r!e
dd@       Ze
ddA       Ze
	 	 	 	 	 	 ddB       Ze
ddC       Ze
ddD       Ze
ddE       Ze
ddF       Ze
ddG       Zej                  dHk\  re
ddI       Ze
	 	 	 	 	 	 ddJ       Ze
	 	 	 	 	 	 ddK       Ze
	 	 	 	 	 	 ddL       Ze
	 	 	 	 	 	 ddM       Ze
	 	 	 	 	 	 ddN       Ze
	 	 	 	 	 	 ddO       Ze
ddP       Ze
ddQ       Ze
ddR       Ze
ddS       Ze
ddT       Ze
d dU       ZddVZddWZddXZddYZddZZ	 	 	 	 	 	 dd[Z	 	 	 	 	 	 dd\Z	 	 	 	 	 	 dd]Zdd^Zdd_Zdd`ZddaZddbZe
	 	 	 	 	 	 	 	 ddc       Ze
	 	 	 	 	 	 	 	 ddd       Z	 	 	 	 	 	 	 	 ddeZddfZddgZddhZddiZddjZ	 d	 	 	 	 	 	 	 d	dkZ ddlZ!ddmZ"	 	 	 	 	 	 ddnZ#	 	 	 	 	 	 d
doZ$ddpZ%	 	 	 	 	 	 	 	 ddqZ&ddrZ'ddsZ(ddtZ)	 	 	 	 	 	 dduZ*e
	 	 	 	 	 	 	 	 ddv       Z+e
	 	 	 	 	 	 	 	 ddw       Z+	 	 	 	 	 	 	 	 ddxZ+ddyZ,	 	 	 	 	 	 ddzZ-e
	 	 	 	 	 	 	 	 dd{       Z.e
	 	 	 	 	 	 	 	 dd|       Z.	 	 	 	 	 	 	 	 dd}Z.	 	 	 	 	 	 dd~Z/	 	 	 	 	 	 ddZ0	 	 	 	 	 	 ddZ1ddZ2ddZ3ddZ4ddZ5ddZ6	 	 	 	 	 	 ddZ7ddZ8ddZ9ddZ:ddZ;ddZ<	 	 	 	 	 	 ddZ=ddZ>ddZ?ddZ@ddZAddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZM	 	 	 	 	 	 ddZNddZOddZPe
	 	 	 	 	 	 	 	 dd       ZQe
	 	 	 	 	 	 	 	 dd       ZQ	 	 	 	 	 	 	 	 ddZQddZRddZSddZTej                  dHk\  rSddZU	 	 	 	 	 	 ddZV	 	 	 	 	 	 ddZW	 	 	 	 	 	 ddZX	 	 	 	 	 	 ddZY	 	 	 	 	 	 ddZZ	 	 	 	 	 	 ddZ[	 	 	 	 	 	 ddZ\ddZ]ddZ^yy(  TreeRebuilderz1Rebuilds the _ast tree to become an Astroid tree.Nc                    || _         |r|j                  d      nd | _        g | _        g | _        g | _        i | _        |t               | _        y || _        y )N
)	_managersplit_data_global_names_import_from_nodes_delayed_assattr_visit_methsr   _parser_module)selfmanagerparser_moduledatas       1lib/python3.12/site-packages/astroid/rebuilder.py__init__zTreeRebuilder.__init__7   sX      )-TZZ%4
BD:<8:VX "3"5D"/D    c                d   	 |j                   rt        |j                   d   t        j                        rg|j                   d   j                  }t        |t        j
                        r4t        |j                  t              r|}|j                   dd |_         ||fS |dfS # t        $ r Y |dfS w xY w)zReturn the doc ast node.r      N)body
isinstanceastExprvalueConstantstr
IndexError)r;   nodefirst_valuedoc_ast_nodes       r?   _get_doczTreeRebuilder._get_docI   s    
	yyZ		!chh?"iil00k3<<8Z%%s> $/L $		!"DI-- Tz  	Tz	s   BB   	B/.B/c                    | j                   j                  j                  t        |j                        t
        j                        S N)r:   context_classesgettypectxr   Loadr;   rL   s     r?   _get_contextzTreeRebuilder._get_contextX   s/     ""2266tDHH~w||TTrA   c                V   | j                   sy|j                  }|j                  r|j                  d   j                  }dj	                  | j                   |j                  dz
  |       }d}t
        j                  f}t        |t        j                        rd}nt        |t        j                        rd}nd}t        t        |      j                        D ]m  }|8|j                  t
        j                  k(  r|j                  |j                   k(  r n4|j                  |v r!|j                  |k(  r|}]|j                  dv rld}o yt#        |j                  |j$                  d   z   dz
  |j$                  d   |j                  |j&                  d   z   dz
  |j&                  d   	      S )
a*  Return position information for ClassDef and FunctionDef nodes.

        In contrast to AST positions, these only include the actual keyword(s)
        and the class / function name.

        >>> @decorator
        >>> async def some_func(var: int) -> None:
        >>> ^^^^^^^^^^^^^^^^^^^
        Nr   r2   rC   asyncdefclass>   r[   )lineno
col_offset
end_linenoend_col_offset)r5   r_   rD   r]   jointokenNAMErE   r   AsyncFunctionDefFunctionDefr   r   readlinerT   stringnamer   startend)	r;   rL   parentr_   r>   start_tokenkeyword_tokenssearch_tokents	            r?   _get_position_infoz TreeRebuilder._get_position_infoe   sg    zz__
991,,JyyDKK!OjAB(,+0::-fe445"L 1 12 L"L $!8!89A'FFejj(HH		)vv'88|+"#K88w&K : ;;!2!21!559"((+{{QUU1X-1558	
 	
rA   c           	        | j                  |      \  }}t        j                  |||g|      }|j                  |j                  D cg c]  }| j                  ||       c}| j                  ||             |S c c}w )zmVisit a Module node by returning a fresh instance of it.

        Note: Method not called by 'visit'
        )rh   filepathpackage)doc_node)rO   r   ModulepostinitrD   visit)r;   rL   modnamemodpathrt   rN   newnodechilds           r?   visit_modulezTreeRebuilder.visit_module   s     "]]40l,,	
 	59YY?YETZZw'Y?ZZg6 	 	
  @s   A<c                     y rQ    r;   rL   rk   s      r?   rx   zTreeRebuilder.visit       LOrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit       QTrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit       KNrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit        &)rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit       ORrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit       ILrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit       GJrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit       MPrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit        #&rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit       EHrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit   s    SVrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit      UXrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  s     "%rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  s    CFrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit       $'rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit"  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit%  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit(  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit+  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit.  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit1  s	     KNrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit6  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit9  r   rA   )      c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit>  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitA  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitD  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitG  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitJ  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitM  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitP  s    RUrA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitS  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitV  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitY  r   rA   )r      c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit^  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visita  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitf  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visiti  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitl  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitq  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitt  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitw  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visitz  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit}  r   rA   )r   
   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  s     (+rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  s     '*rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  r   rA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  s    BErA   c                     y rQ   r   r   s      r?   rx   zTreeRebuilder.visit  s    =@rA   c                
   |y |j                   }|| j                  v r| j                  |   }nN|j                  }dt        j	                  ||      j                         z   }t        | |      }|| j                  |<    |||      S )Nvisit_)	__class__r9   __name__r&   rS   lowergetattr)r;   rL   rk   clsvisit_methodcls_name
visit_names          r?   rx   zTreeRebuilder.visit  s    <nn$###,,S1L||H!HLL8$D$J$J$LLJ"44L%1Dc"D&))rA   c                ,   | j                   rF|j                  | j                   d   v r+|j                         j                  |j                  |       y|j                  sJ |j                  sJ |j                  j                  |j                  |       y)zASave assignment situation since node.parent is not available yet.N)r6   rh   root	set_localrk   rW   s     r?   _save_assignmentzTreeRebuilder._save_assignment  sk    $))t/A/A"/E"EIIK!!$))T2;;;999KK!!$))T2rA   c                <    | j                  |||j                        S )z8Visit an arg node by returning a fresh AssName instance.)visit_assignnameargr   s      r?   	visit_argzTreeRebuilder.visit_arg  s    $$T6488<<rA   c                :   d}d}|j                   }|j                  }t        j                  |j                   r|j                   j                  nd|j                  r|j                  j                  nd||rCt        |j                  |j                  |j                  ||j                  |j                        nd|rCt        |j                  |j                  |j                  ||j                  |j                        nd      }|j                  D cg c]  }| j                  ||       }	}|j                  D cg c]  }| j                  ||       }
}d}d}|j                   r<|j                   j                  }| j                  |j                   j                  |      }|j                  r<|j                  j                  }| j                  |j                  j                  |      }|j                  D cg c]  }| j                  ||       }}|j                  D cg c]  }| j                  ||       }}|j                  D cg c]  }| j                  |j                  |        }}|j                  D cg c]  }| j                  |j                  |        }}|j                   D cg c]  }| j                  ||       }}|j                   D cg c]  }| j                  |j                  |        }}|j                  D cg c]  }| j#                  ||       }}|j                  D cg c]  }| j#                  ||       }}|j                   D cg c]  }| j#                  ||       }}|j%                  |	|
|||||||||||       |j&                  sJ |r|j&                  j)                  ||       |r|j&                  j)                  ||       |S c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )z<Visit an Arguments node by returning a fresh instance of it.N)r_   r`   rk   )argsdefaults
kwonlyargsposonlyargskw_defaultsr   kwonlyargs_annotationsposonlyargs_annotationsvarargannotationkwargannotationtype_comment_argstype_comment_kwonlyargstype_comment_posonlyargs)varargkwargr   r   r   r   r]   r^   r_   r`   r   rx   r   
annotationr   r   r   check_type_commentrw   rk   r   )r;   rL   rk   r   r   vararg_node
kwarg_noder{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                          r?   visit_argumentszTreeRebuilder.visit_arguments  s   ! kkZZ
//#{{DKKOO"jjDJJNNd  OO&&***55#.#=#=   NN%%)))44#-#<#< 5
: 9=		B	u

5'*	B<@MMJM5DJJug.MJ*.)-;;[[__F#zz$++*@*@'J::JJNNE"jj)>)>HO>BooNoUdjj0o
N?C?O?OP?Oetzz%1?OPFJiiPistzz#..':iP;???"
;JCDJJs~~w/? 	 "
 @D?O?OP?Oetzz%1?OP;?;K;K#
;KCDJJs~~w/;K 	  #
 IM		
HQuD##E'#:	 	 
 IM#
HWuD##E'#: 	  #
 IMHXHX$
HXuD##E'#:HX 	! $
 	!####9$;-+/$;%= 	 	
  ~~~NN$$VW5NN$$UG4k CJ OPP"
 Q#

#
$
sB   O&;O+8O0!O5
#O:=#O?0P#P	P6P Pc                6   t        j                  |j                  |j                  |j                  |j
                  |      }d}|j                  r| j                  |j                  |      }|j                  | j                  |j                  |      |       |S )z8Visit a Assert node by returning a fresh instance of it.r]   r^   r_   r`   rk   N)
r   Assertr]   r^   r_   r`   msgrx   rw   test)r;   rL   rk   r{   r  s        r?   visit_assertzTreeRebuilder.visit_assert*  sw    ,,;;..
 "88**TXXw/CDIIw7=rA   c                .   |j                   sy 	 | j                  j                  |j                         }|j                  sy | j                  |j                  d   |      }t        |t        j                        sy |j                  S # t        $ r Y y w xY w)Nr   r   )
type_commentr:   parseSyntaxErrorrD   rx   rE   r   rG   rH   )r;   rL   rk   type_comment_asttype_objects        r?   r   z TreeRebuilder.check_type_comment9  s       	#22889J9JK  $$jj!1!6!6q!9&jI+uzz2     		s   %B 	BBc                ,   |j                   sy 	 t        |j                         }|sy d }|j                  xs g D cg c]  }| j	                  ||       }}|j
                  r| j	                  |j
                  |      }||fS # t        $ r Y y w xY wc c}w rQ   )r
  r   r  argtypesrx   returns)r;   rL   rk   r  r  elemr  s          r?   check_function_type_commentz)TreeRebuilder.check_function_type_commentY  s       	:4;L;LM
  !%2B2K2K2Qr2Q"
2QDJJtV$2Q 	 "
 ##jj!1!9!96BG    		"
s   B B	BBc                D    | j                  t        j                  ||      S rQ   )_visit_functiondefr   rd   r   s      r?   visit_asyncfunctiondefz$TreeRebuilder.visit_asyncfunctiondefq  s     &&u'='=tVLLrA   c                D    | j                  t        j                  ||      S rQ   )
_visit_forr   AsyncForr   s      r?   visit_asyncforzTreeRebuilder.visit_asyncforv  s    u~~tV<<rA   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S Nr  )rH   )	r   Awaitr]   r^   r_   r`   rw   rx   rH   r;   rL   rk   r{   s       r?   visit_awaitzTreeRebuilder.visit_awaity  sX    ++;;..
 	tzz$**g>?rA   c                D    | j                  t        j                  ||      S rQ   )_visit_withr   	AsyncWithr   s      r?   visit_asyncwithzTreeRebuilder.visit_asyncwith  s    v>>rA   c           	     f   t        j                  |j                  |j                  |j                  |j
                  |      }| j                  ||      }|j                  |j                  D cg c]  }| j                  ||       c}| j                  |j                  |      |       |S c c}w )z8Visit a Assign node by returning a fresh instance of it.r  r   )targetsrH   type_annotation)r   Assignr]   r^   r_   r`   r   rw   r%  rx   rH   )r;   rL   rk   r{   r&  r|   s         r?   visit_assignzTreeRebuilder.visit_assign  s    ,,;;..
 11$w1G=A\\J\ETZZw/\J**TZZ1+ 	 	

 	 Ks   /B.c           	     d   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      | j                  |j                  |      |j                  | j                  |j                  |             |S )z<Visit an AnnAssign node by returning a fresh instance of it.r  )targetr   simplerH   )r   	AnnAssignr]   r^   r_   r`   rw   rx   r*  r   r+  rH   r  s       r?   visit_annassignzTreeRebuilder.visit_annassign  s    //;;..
 	::dkk73zz$//7;;;**TZZ1	 	 	
 rA   c                     y rQ   r   r;   rL   rk   	node_names       r?   r   zTreeRebuilder.visit_assignname  s     rA   c                     y rQ   r   r/  s       r?   r   zTreeRebuilder.visit_assignname  s     rA   c                    |yt        j                  ||j                  |j                  |j                  |j
                  |      }| j                  |       |S )z_Visit a node and return a AssignName node.

        Note: Method not called by 'visit'
        Nrh   r]   r^   r_   r`   rk   )r   r   r]   r^   r_   r`   r   )r;   rL   rk   r0  r{   s        r?   r   zTreeRebuilder.visit_assignname  sV     "";;..
 	g&rA   c                r   t        j                  | j                  j                  t	        |j
                           dz   |j                  |j                  |j                  |j                  |      }|j                  | j                  |j                  |      | j                  |j                  |             |S )z;Visit a AugAssign node by returning a fresh instance of it.=opr]   r^   r_   r`   rk   )r   	AugAssignr:   bin_op_classesrT   r7  r]   r^   r_   r`   rw   rx   r*  rH   r  s       r?   visit_augassignzTreeRebuilder.visit_augassign  s    //""11$tww-@3F;;..
 	JJt{{G,djjW.M	
 rA   c                l   t        j                  | j                  j                  t	        |j
                           |j                  |j                  |j                  |j                  |      }|j                  | j                  |j                  |      | j                  |j                  |             |S )z7Visit a BinOp node by returning a fresh instance of it.r6  )r   BinOpr:   r9  rT   r7  r]   r^   r_   r`   rw   rx   leftrightr  s       r?   visit_binopzTreeRebuilder.visit_binop  s    ++""11$tww-@;;..
 	JJtyy'*DJJtzz7,K	
 rA   c           	     \   t        j                  | j                  j                  t	        |j
                           |j                  |j                  |j                  |j                  |      }|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w )z8Visit a BoolOp node by returning a fresh instance of it.r6  )r   BoolOpr:   bool_op_classesrT   r7  r]   r^   r_   r`   rw   valuesrx   r;   rL   rk   r{   r|   s        r?   visit_boolopzTreeRebuilder.visit_boolop  s    ,,""224=A;;..
 	$++N+$**UG4+NO Os   B)c                    t        j                  |j                  |j                  |j                  |j
                  |      S )z7Visit a Break node by returning a fresh instance of it.r  )r   Breakr]   r^   r_   r`   r   s      r?   visit_breakzTreeRebuilder.visit_break  s4    {{;;..
 	
rA   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}       |S c c}w c c}w )z:Visit a CallFunc node by returning a fresh instance of it.r  )funcr   keywords)r   Callr]   r^   r_   r`   rw   rx   rJ  r   rK  rD  s        r?   
visit_callzTreeRebuilder.visit_call  s    **;;..
 	DIIw/:>))D)$**UG,)D>BmmLmUdjj0mL 	 	

  ELs   7C
 Cc                v   | j                  |      \  }}t        j                  |j                  |j                  |j
                  |j                  |j                  |      }d}|j                  D ]/  }|j                  dk(  s| j                  ||      j                  } n | j                  ||      }|j                  |j                  D 	cg c]  }	| j                  |	|       c}	|j                  D 	cg c]  }	| j                  |	|       c}	||||j                  D 
cg c]#  }
|
j                  dk7  r| j                  |
|      % c}
| j!                  ||      | j                  ||      t"        r*|j$                  D cg c]  }| j                  ||       c}ng 	       |S c c}	w c c}	w c c}
w c c}w )z(Visit a ClassDef node to become astroid.r3  N	metaclass)positionru   type_params)rO   r   ClassDefrh   r]   r^   r_   r`   rK  r   rx   rH   visit_decoratorsrw   basesrD   rp   r   rQ  )r;   rL   rk   newstylerN   r{   rO  r$   
decoratorsr|   kwdparams               r?   visit_classdefzTreeRebuilder.visit_classdef  s    "]]40l..;;..
 	}}G{{k) JJw8>>	 % **49
59ZZ@ZETZZw'Z@59YY?YETZZw'Y?  ==(C77k) 

3((
 ,,T7;ZZg6  :>9I9IJ9IE7+9IJ! 	 	
& % A? Ks   F'6F,
"(F1F6c                    t        j                  |j                  |j                  |j                  |j
                  |      S )z:Visit a Continue node by returning a fresh instance of it.r  )r   Continuer]   r^   r_   r`   r   s      r?   visit_continuezTreeRebuilder.visit_continue4  s4    ~~;;..
 	
rA   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      t        |j                  |j                        D cg c]:  \  }}| j                  j                  |j                     | j                  ||      f< c}}       |S c c}}w )z9Visit a Compare node by returning a fresh instance of it.r  )r   Comparer]   r^   r_   r`   rw   rx   r=  zipopscomparatorsr:   cmp_op_classesr   )r;   rL   rk   r{   r7  exprs         r?   visit_comparezTreeRebuilder.visit_compare>  s    --;;..
 	JJtyy'* #&dhh0@0@"A
 #BJR ''66r||DJJtW- #B		
 s   ?Cc                J   t        j                  |dddd      }|j                  | j                  |j                  |      | j                  |j
                  |      |j                  D cg c]  }| j                  ||       c}t        |j                               |S c c}w )z?Visit a Comprehension node by returning a fresh instance of it.N)rk   r]   r^   r_   r`   )	r   r   rw   rx   r*  iterifsboolis_asyncrD  s        r?   visit_comprehensionz!TreeRebuilder.visit_comprehensionS  s     %% 
 	JJt{{G,JJtyy'*59XX>XETZZw'X>		
  ?s   *B c           	     z   |j                   sy|j                   d   j                  }|j                   d   j                  }|j                   d   j                  }t	        j
                  ||j                  |||      }|j                  |j                   D cg c]  }| j                  ||       c}       |S c c}w )zqVisit a Decorators node by returning a fresh instance of it.

        Note: Method not called by 'visit'
        Nr   r   r  )	decorator_listr]   r_   r`   r   
Decoratorsr^   rw   rx   )r;   rL   rk   r]   r_   r`   r{   r|   s           r?   rS  zTreeRebuilder.visit_decoratorsh  s     ""
 $$Q'..((,77
,,R0??""!)
 	$BUBUVBU$**UG4BUVW Ws   B8c           	        t        j                  |j                  |j                  |j                  |j
                  |      }|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w )z8Visit a Delete node by returning a fresh instance of it.r  )	r   Deleter]   r^   r_   r`   rw   r%  rx   rD  s        r?   visit_deletezTreeRebuilder.visit_delete  sj    ,,;;..
 	$,,O,$**UG4,OP P   A>c              #  :  K   t        |j                  |j                        D ]t  \  }}| j                  ||      }|sCt	        j
                  |j                  |j                  |j                  |j                  |      }n| j                  ||      }||f v y wNr  )
r_  keysrC  rx   r   
DictUnpackr]   r^   r_   r`   )r;   rL   rk   r{   keyrH   rebuilt_valuerebuilt_keys           r?   _visit_dict_itemszTreeRebuilder._visit_dict_items  s      dii5JC JJug6M#..(//,77,77#0#?#?! #jjg6},, 6s   BBc                    t        j                  |j                  |j                  |j                  |j
                  |      }t        | j                  |||            }|j                  |       |S )z6Visit a Dict node by returning a fresh instance of it.r  )	r   Dictr]   r^   r_   r`   listry  rw   )r;   rL   rk   r{   itemss        r?   
visit_dictzTreeRebuilder.visit_dict  sg    **;;..
 @D""49@
 	rA   c                r   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}       |S c c}w )z:Visit a DictComp node by returning a fresh instance of it.r  )r   DictCompr]   r^   r_   r`   rw   rx   rv  rH   
generatorsrD  s        r?   visit_dictcompzTreeRebuilder.visit_dictcomp  s    ..;;..
 	JJtxx)JJtzz7+59__E_ETZZw'_E	

  Fs   B4c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S )z6Visit a Expr node by returning a fresh instance of it.r  )	r   rG   r]   r^   r_   r`   rw   rx   rH   r  s       r?   
visit_exprzTreeRebuilder.visit_expr  sU    **;;..
 	DJJ89rA   c                t   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      | j                  |||j                        |j                  D cg c]  }| j                  ||       c}       |S c c}w )z@Visit an ExceptHandler node by returning a fresh instance of it.r  )r   r   r]   r^   r_   r`   rw   rx   rT   r   rh   rD   rD  s        r?   visit_excepthandlerz!TreeRebuilder.visit_excepthandler  s     %%;;..
 	JJtyy'*!!$;59YY?YETZZw'Y?	

  @s   B5c                     y rQ   r   r;   r   rL   rk   s       r?   r  zTreeRebuilder._visit_for  s     rA   c                     y rQ   r   r  s       r?   r  zTreeRebuilder._visit_for  s     rA   c                    ||j                   |j                  |j                  |j                  |      }| j	                  ||      }|j                  | j                  |j                  |      | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}|       |S c c}w c c}w )z5Visit a For node by returning a fresh instance of it.r  r   )r*  rf  rD   orelser&  )r]   r^   r_   r`   r   rw   rx   r*  rf  rD   r  )r;   r   rL   rk   r{   r&  r|   s          r?   r  zTreeRebuilder._visit_for  s     ;;..
 11$w1G::dkk73DIIw/:>))D)$**UG,)D<@KKHK5DJJug.KH+ 	 	
 	 EHs   C%C*c                D    | j                  t        j                  ||      S rQ   )r  r   Forr   s      r?   	visit_forzTreeRebuilder.visit_for   s    uyy$77rA   c           
     f   |j                   D cg c]  }|j                  |j                  f }}t        j                  |j
                  xs d||j                  xs d|j                  |j                  |j                  |j                  |      }| j                  j                  |       |S c c}w )z=Visit an ImportFrom node by returning a fresh instance of it. N)fromnamenameslevelr]   r^   r_   r`   rk   )r  rh   asnamer   
ImportFrommoduler  r]   r^   r_   r`   r7   append)r;   rL   rk   aliasr  r{   s         r?   visit_importfromzTreeRebuilder.visit_importfrom  s     :>D%**ell+D""[[&B**$;;..	
 	&&w/ Es   B.c                     y rQ   r   r  s       r?   r  z TreeRebuilder._visit_functiondef  s      rA   c                     y rQ   r   r  s       r?   r  z TreeRebuilder._visit_functiondef  s     "%rA   c                   | j                   j                  i        | j                  |      \  }}|j                  }|j                  r|j                  d   j                  } ||j
                  ||j                  |j                  |j                  |      }| j                  ||      }|j                  r| j                  |j                  |      }nd}dx}	}
| j                  ||      }|r|\  }
}	|j                  | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}|||
|	| j!                  ||      | j                  ||      t"        r*|j$                  D cg c]  }| j                  ||       c}ng 	       | j                   j'                          |S c c}w c c}w )z,Visit an FunctionDef node to become astroid.r   r3  N)	r   rD   rV  r  type_comment_returnsr   rP  ru   rQ  )r6   r  rO   r]   rl  rh   r^   r_   r`   rS  r  rx   r  rw   r   rD   rp   r   rQ  pop)r;   r   rL   rk   rN   r]   r{   rV  r  r   r  type_comment_annotationr|   rX  s                 r?   r  z TreeRebuilder._visit_functiondef#  s    	!!"%!]]40l ((+22F..
 **49
<<jjw7GG3770"&"B"B4"Q"6M3 "3DIIw/:>))D)$**UG,)D!!5/,,T7;ZZg6  :>9I9IJ9IE7+9IJ 	 	
 	  E Ks   %F9
:F>c                D    | j                  t        j                  ||      S rQ   )r  r   re   r   s      r?   visit_functiondefzTreeRebuilder.visit_functiondef]  s     &&u'8'8$GGrA   c           
     <   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}       |S c c}w )z>Visit a GeneratorExp node by returning a fresh instance of it.r  )
r   GeneratorExpr]   r^   r_   r`   rw   rx   eltr  rD  s        r?   visit_generatorexpz TreeRebuilder.visit_generatorexpb  s     $$;;..
 	JJtxx)59__E_ETZZw'_E	
  F   7B
c                   | j                  |      }|t        j                  k(  rNt        j                  |j
                  |j                  |j                  |j                  |j                  |      }n|t        j                  k(  rt        j                  |j
                  |j                  |j                  |j                  |j                  |      }t        |t        j                        si| j                  j                  |       nMt        j                   |j
                  |j                  |j                  |j                  |j                  |      }|j#                  | j%                  |j&                  |             |S )z<Visit an Attribute node by returning a fresh instance of it.)attrnamer]   r^   r_   r`   rk   )rX   r   Delr   DelAttrattrr]   r^   r_   r`   Store
AssignAttrrE   r   r8   r  	Attributerw   rx   rH   r;   rL   rk   contextr{   s        r?   visit_attributezTreeRebuilder.visit_attributes  s     ##D)gkk! mm{{????#22G %&&{{????#22G fe&9&9: %%,,W5oo{{????#22G 	DJJ89rA   c                6   t        j                  |j                  |j                  |j                  |j
                  |j                  |      }| j                  r?|j                  D ]0  }| j                  d   j                  |g       j                  |       2 |S )z&Visit a Global node to become astroid.r  r]   r^   r_   r`   rk   r   )
r   Globalr  r]   r^   r_   r`   r6   
setdefaultr  )r;   rL   rk   r{   rh   s        r?   visit_globalzTreeRebuilder.visit_global  s|    ,,**;;..
 

""2&11$;BB7K #rA   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}       |S c c}w c c}w )z5Visit an If node by returning a fresh instance of it.r  )r   Ifr]   r^   r_   r`   rw   rx   r  rD   r  rD  s        r?   visit_ifzTreeRebuilder.visit_if  s    ((;;..
 	JJtyy'*59YY?YETZZw'Y?59[[A[ETZZw'[A	

  @A   7C
 Cc                L   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      | j                  |j                  |      | j                  |j                  |             |S )z7Visit a IfExp node by returning a fresh instance of it.r  )r   IfExpr]   r^   r_   r`   rw   rx   r  rD   r  r  s       r?   visit_ifexpzTreeRebuilder.visit_ifexp  s~    ++;;..
 	JJtyy'*JJtyy'*JJt{{G,	

 rA   c                p   |j                   D cg c]  }|j                  |j                  f }}t        j                  ||j
                  |j                  |j                  |j                  |      }|j                   D ]/  \  }}|xs |}|j                  |j                  d      d   |       1 |S c c}w )z8Visit a Import node by returning a fresh instance of it.r  .r   )r  rh   r  r   Importr]   r^   r_   r`   r   r4   )r;   rL   rk   r  r  r{   rh   r  s           r?   visit_importzTreeRebuilder.visit_import  s    9=D%**ell+D,,;;..
 $MMLD&>TDTZZ_Q/9 *  Es   B3c           	        t        j                  |j                  |j                  |j                  |j
                  |      }|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w rs  )	r   	JoinedStrr]   r^   r_   r`   rw   rC  rx   rD  s        r?   visit_joinedstrzTreeRebuilder.visit_joinedstr  sj    //;;..
 	$++N+$**UG4+NO Orq  c                .   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  | j                  |j                  |             |S )Nr  )rH   
conversionformat_spec)r   FormattedValuer]   r^   r_   r`   rw   rx   rH   r  r  r  s       r?   visit_formattedvaluez"TreeRebuilder.visit_formattedvalue  s~     &&;;..
 	**TZZ1

4#3#3W= 	 	

 rA   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      | j                  |j                  |             |S rs  )
r   	NamedExprr]   r^   r_   r`   rw   rx   r*  rH   r  s       r?   visit_namedexprzTreeRebuilder.visit_namedexpr  sk    //;;..
 	JJt{{G,djjW.M	
 rA   c                    t        j                  |j                  t        |dd      t        |dd      t        |dd      t        |dd      |      }|j	                  | j                  |j                  |             |S )z9Visit a Keyword node by returning a fresh instance of it.r]   Nr^   r_   r`   )r   r]   r^   r_   r`   rk   )r   r   r   r   rw   rx   rH   r  s       r?   visit_keywordzTreeRebuilder.visit_keyword  so    --440t\48t\48"4)94@
 	DJJ89rA   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      | j                  |j                  |             |S )z8Visit a Lambda node by returning a fresh instance of it.r  )
r   Lambdar]   r^   r_   r`   rw   rx   r   rD   r  s       r?   visit_lambdazTreeRebuilder.visit_lambda  sf    ,,;;..
 	DIIw7DIIw9WXrA   c           	     *   | j                  |      }t        j                  ||j                  |j                  |j
                  |j                  |      }|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w )z6Visit a List node by returning a fresh instance of it.rU   r]   r^   r_   r`   rk   )
rX   r   Listr]   r^   r_   r`   rw   eltsrx   r;   rL   rk   r  r{   r|   s         r?   
visit_listzTreeRebuilder.visit_list"  s}    ##D)**;;..
 	$))L)$**UG4)LM M   .Bc           
     <   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}       |S c c}w )z:Visit a ListComp node by returning a fresh instance of it.r  )
r   ListCompr]   r^   r_   r`   rw   rx   r  r  rD  s        r?   visit_listcompzTreeRebuilder.visit_listcomp0  s    ..;;..
 	JJtxx)59__E_ETZZw'_E	
  Fr  c                   | j                  |      }|t        j                  k(  rNt        j                  |j
                  |j                  |j                  |j                  |j                  |      }n|t        j                  k(  rNt        j                  |j
                  |j                  |j                  |j                  |j                  |      }nMt        j                  |j
                  |j                  |j                  |j                  |j                  |      }|t        j                  t        j                  fv rBt        t        t        j                  t        j                  f   |      }| j                  |       |S )z6Visit a Name node by returning a fresh instance of it.r3  )rX   r   r  r   DelNameidr]   r^   r_   r`   r  r   Namer   r   r   r  s        r?   r   zTreeRebuilder.visit_name?  s    ##D)gkk!mmWW{{????#22G %&&WW{{????#22G jjWW{{????#22G w{{GMM225!1!15==!@A7KG!!'*rA   c                    t        j                  |j                  |j                  |j                  |j
                  |j                  |      S )z6Visit a Nonlocal node and return a new instance of it.r  )r   Nonlocalr  r]   r^   r_   r`   r   s      r?   visit_nonlocalzTreeRebuilder.visit_nonlocalf  s;    ~~**;;..
 	
rA   c           	         t        j                  |j                  |j                  |j                  |j
                  |j                  |j                  |      S )z=Visit a Constant node by returning a fresh instance of Const.)rH   kindr]   r^   r_   r`   rk   )r   ConstrH   r  r]   r^   r_   r`   r   s      r?   visit_constantzTreeRebuilder.visit_constantq  sB    {{**;;..
 	
rA   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |||j                               |S )z;Visit a ParamSpec node by returning a fresh instance of it.r  rh   )	r   	ParamSpecr]   r^   r_   r`   rw   r   rh   r  s       r?   visit_paramspeczTreeRebuilder.visit_paramspec}  s\    //;;..
 	d33D'499MNrA   c                    t        j                  |j                  |j                  |j                  |j
                  |      S )z6Visit a Pass node by returning a fresh instance of it.r  )r   Passr]   r^   r_   r`   r   s      r?   
visit_passzTreeRebuilder.visit_pass  s4    zz;;..
 	
rA   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      | j                  |j                  |             |S )z7Visit a Raise node by returning a fresh instance of it.r  )exccause)
r   Raiser]   r^   r_   r`   rw   rx   r  r  r  s       r?   visit_raisezTreeRebuilder.visit_raise  sq    ++;;..
 	

488W-**TZZ1 	 	
 rA   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S )z8Visit a Return node by returning a fresh instance of it.r  )	r   Returnr]   r^   r_   r`   rw   rx   rH   r  s       r?   visit_returnzTreeRebuilder.visit_return  sU    ,,;;..
 	DJJ89rA   c           	        t        j                  |j                  |j                  |j                  |j
                  |      }|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w )z5Visit a Set node by returning a fresh instance of it.r  )	r   Setr]   r^   r_   r`   rw   r  rx   rD  s        r?   	visit_setzTreeRebuilder.visit_set  sj    ));;..
 	$))L)$**UG4)LM Mrq  c           
     <   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}       |S c c}w )z9Visit a SetComp node by returning a fresh instance of it.r  )
r   SetCompr]   r^   r_   r`   rw   rx   r  r  rD  s        r?   visit_setcompzTreeRebuilder.visit_setcomp  s    --;;..
 	JJtxx)59__E_ETZZw'_E	
  Fr  c           
     V   t        j                  t        |dd      t        |dd      t        |dd      t        |dd      |      }|j                  | j	                  |j
                  |      | j	                  |j                  |      | j	                  |j                  |             |S )z7Visit a Slice node by returning a fresh instance of it.r]   Nr^   r_   r`   r  )r   upperstep)r   Slicer   rw   rx   r   r  r  r  s       r?   visit_slicezTreeRebuilder.visit_slice  s    ++440t\48t\48"4)94@
 	**TZZ1**TZZ1DIIw/ 	 	

 rA   c                :   | j                  |      }t        j                  ||j                  |j                  |j
                  |j                  |      }|j                  | j                  |j                  |      | j                  |j                  |             |S )z;Visit a Subscript node by returning a fresh instance of it.r  )rX   r   	Subscriptr]   r^   r_   r`   rw   rx   rH   slicer  s        r?   visit_subscriptzTreeRebuilder.visit_subscript  s~    ##D)//;;..
 	JJtzz7+TZZ

G-L	
 rA   c                   | j                  |      }t        j                  ||j                  |j                  |j
                  |j                  |      }|j                  | j                  |j                  |             |S )z5Visit a Starred node and return a new instance of it.r  )
rX   r   Starredr]   r^   r_   r`   rw   rx   rH   r  s        r?   visit_starredzTreeRebuilder.visit_starred  sh    ##D)--;;..
 	DJJ89rA   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  |j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}       |S c c}w c c}w c c}w c c}w )z4Visit a Try node by returning a fresh instance of itr  rD   handlersr  	finalbody)r   Tryr]   r^   r_   r`   rw   rD   rx   r
  r  r  rD  s        r?   	visit_tryzTreeRebuilder.visit_try  s    ));;..
 	:>))D)$**UG,)D>BmmLmUdjj0mL<@KKHK5DJJug.KH?C~~N~etzz%1~N	 	 	
  ELHN   C:C?
.DD	c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  |j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}       |S c c}w c c}w c c}w c c}w )Nr  r	  )r   TryStarr]   r^   r_   r`   rw   rD   rx   r
  r  r  )r;   rL   rk   r{   ns        r?   visit_trystarzTreeRebuilder.visit_trystar  s    --;;..
 	26))<)Q$**Q()<6:mmDmdjjG,mD48KK@KqDJJq'*K@7;~~F~!tzz!W-~F	 	 	
  =D@Fr  c           	     *   | j                  |      }t        j                  ||j                  |j                  |j
                  |j                  |      }|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w )z7Visit a Tuple node by returning a fresh instance of it.r  )
rX   r   Tupler]   r^   r_   r`   rw   r  rx   r  s         r?   visit_tuplezTreeRebuilder.visit_tuple  s}    ##D)++;;..
 	$))L)$**UG4)LM Mr  c           
     t   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}| j                  |j                  |             |S c c}w )z;Visit a TypeAlias node by returning a fresh instance of it.r  )rh   rQ  rH   )r   	TypeAliasr]   r^   r_   r`   rw   rx   rh   rQ  rH   )r;   rL   rk   r{   ps        r?   visit_typealiaszTreeRebuilder.visit_typealias*  s    //;;..
 	DIIw/9=9I9IJ9IAAw/9IJ**TZZ1 	 	

  Ks   7B5
c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |||j                        | j                  |j                  |             |S )z9Visit a TypeVar node by returning a fresh instance of it.r  )rh   bound)r   r   r]   r^   r_   r`   rw   r   rh   rx   r  r  s       r?   visit_typevarzTreeRebuilder.visit_typevar:  su    --;;..
 	&&tWdii@**TZZ1 	 	
 rA   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |||j                               |S )z>Visit a TypeVarTuple node by returning a fresh instance of it.r  r  )	r   TypeVarTupler]   r^   r_   r`   rw   r   rh   r  s       r?   visit_typevartuplez TreeRebuilder.visit_typevartupleK  s`     $$;;..
 	d33D'499MNrA   c                8   t        j                  | j                  j                  |j                  j
                     |j                  |j                  |j                  |j                  |      }|j                  | j                  |j                  |             |S )z9Visit a UnaryOp node by returning a fresh instance of it.r6  )r   UnaryOpr:   unary_op_classesr7  r   r]   r^   r_   r`   rw   rx   operandr  s       r?   visit_unaryopzTreeRebuilder.visit_unaryop[  ss    --""33DGG4E4EF;;..
 	DLL':;rA   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}       |S c c}w c c}w )z7Visit a While node by returning a fresh instance of it.r  )r   Whiler]   r^   r_   r`   rw   rx   r  rD   r  rD  s        r?   visit_whilezTreeRebuilder.visit_whileh  s    ++;;..
 	JJtyy'*59YY?YETZZw'Y?59[[A[ETZZw'[A	

  @Ar  c                     y rQ   r   r  s       r?   r!  zTreeRebuilder._visit_withx  s     rA   c                     y rQ   r   r  s       r?   r!  zTreeRebuilder._visit_with}  s     rA   c           
     p     ||j                   |j                  |j                  |j                  |      d fd} j	                  |      }j                  |j                  D cg c]
  } ||       c}|j                  D cg c]  } j                  |       c}|       S c c}w c c}w )Nr  c                |    j                  | j                        }j                  | j                        }||fS rQ   )rx   context_exproptional_vars)r|   rc  varr{   r;   s      r?   visit_childz.TreeRebuilder._visit_with.<locals>.visit_child  s9    ::e00':D**U00':C9rA   r   )r}  rD   r&  )r|   zast.withitemreturnztuple[NodeNG, NodeNG | None])	r]   r^   r_   r`   r   rw   r}  rD   rx   )r;   r   rL   rk   r/  r&  r|   r{   s   `      @r?   r!  zTreeRebuilder._visit_with  s     ;;..
	
 11$w1G37::>:%;u%:>:>))D)$**UG,)D+ 	 	

 	 ?Ds   +B.
B3
c                D    | j                  t        j                  ||      S rQ   )r!  r   Withr   s      r?   
visit_withzTreeRebuilder.visit_with  s    

D&99rA   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S )z7Visit a Yield node by returning a fresh instance of it.r  )	r   Yieldr]   r^   r_   r`   rw   rx   rH   r  s       r?   visit_yieldzTreeRebuilder.visit_yield  sU    ++;;..
 	DJJ89rA   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S rs  )	r   	YieldFromr]   r^   r_   r`   rw   rx   rH   r  s       r?   visit_yieldfromzTreeRebuilder.visit_yieldfrom  sU    //;;..
 	DJJ89rA   c           
     >   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}       |S c c}w )Nr  )subjectcases)
r   Matchr]   r^   r_   r`   rw   rx   r;  r<  )r;   rL   rk   r{   cases        r?   visit_matchzTreeRebuilder.visit_match  s    kk{{????#22G 

4<<9=AZZHZTtzz$0ZH   N Is   7B
c                   t        j                  |      }|j                  | j                  |j                  |      | j                  |j
                  |      |j                  D cg c]  }| j                  ||       c}       |S c c}w )Nr   )patternguardrD   )r   r   rw   rx   rA  rB  rD   rD  s        r?   visit_matchcasezTreeRebuilder.visit_matchcase  sw     ooV4G

4<<9jjW5>BiiHiUdjj0iH  
 N Is   &B	c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S r  )	r   
MatchValuer]   r^   r_   r`   rw   rx   rH   r  s       r?   visit_matchvaluezTreeRebuilder.visit_matchvalue  s\     &&{{????#22G 4::djj'#BCNrA   c                    t        j                  |j                  |j                  |j                  |j
                  |j                  |      S )N)rH   r]   r^   r_   r`   rk   )r   MatchSingletonrH   r]   r^   r_   r`   r   s      r?   visit_matchsingletonz"TreeRebuilder.visit_matchsingleton  s?     ''jj{{????#22 rA   c           	        t        j                  |j                  |j                  |j                  |j
                  |      }|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w Nr  )patterns)	r   MatchSequencer]   r^   r_   r`   rw   rL  rx   r;   rL   rk   r{   rA  s        r?   visit_matchsequencez!TreeRebuilder.visit_matchsequence  sx     )){{????#22G FJmmTm7$**Wg6mT   N U   A?c           
        t        j                  |j                  |j                  |j                  |j
                  |      }|j                  |j                  D cg c]  }| j                  ||       c}|j                  D cg c]  }| j                  ||       c}| j                  |||j                               |S c c}w c c}w )Nr  )rt  rL  rest)r   MatchMappingr]   r^   r_   r`   rw   rt  rx   rL  r   rR  )r;   rL   rk   r{   r|   rA  s         r?   visit_matchmappingz TreeRebuilder.visit_matchmapping  s     (({{????#22G >BiiHiUdjj0iHFJmmTm7$**Wg6mT**4$))D  
 N	 ITs   CC	
c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  D cg c]  }| j                  ||       c}|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w c c}w )Nr  )r   rL  	kwd_attrskwd_patterns)r   
MatchClassr]   r^   r_   r`   rw   rx   r   rL  rV  rW  rN  s        r?   visit_matchclasszTreeRebuilder.visit_matchclass  s     &&{{????#22G JJtxx1FJmmTm7$**Wg6mT..@D@Q@Q@QWDJJw0@Q	   N Us   7C
+Cc                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |||j                               |S )Nr  r  )	r   	MatchStarr]   r^   r_   r`   rw   r   rh   r  s       r?   visit_matchstarzTreeRebuilder.visit_matchstar!  s^     oo{{????#22G $"7"7gtyy"QRNrA   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      | j                  |||j                               |S )Nr  )rA  rh   )r   MatchAsr]   r^   r_   r`   rw   rx   rA  r   rh   r  s       r?   visit_matchaszTreeRebuilder.visit_matchas0  su    mm{{????#22G 

4<<9**4$))D   NrA   c           	        t        j                  |j                  |j                  |j                  |j
                  |      }|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w rK  )	r   MatchOrr]   r^   r_   r`   rw   rL  rx   rN  s        r?   visit_matchorzTreeRebuilder.visit_matchor@  st    mm{{????#22G FJmmTm7$**Wg6mT   N UrP  )NN)r<   r   r=   zParserModule | Noner>   
str | Noner0  None)rL   r'   r0  z+tuple[T_Doc, ast.Constant | ast.Str | None])rL   zMast.Attribute | ast.List | ast.Name | ast.Subscript | ast.Starred | ast.Tupler0  r   )rL   5ast.ClassDef | ast.FunctionDef | ast.AsyncFunctionDefrk   z;nodes.ClassDef | nodes.FunctionDef | nodes.AsyncFunctionDefr0  zPosition | None)
rL   r(   ry   rJ   rz   rJ   rt   rh  r0  znodes.Module)rL   zast.argrk   r   r0  nodes.AssignName)rL   zast.argumentsrk   r   r0  znodes.Arguments)rL   z
ast.Assertrk   r   r0  znodes.Assert)rL   r+   rk   r   r0  nodes.AsyncFunctionDef)rL   ast.AsyncForrk   r   r0  nodes.AsyncFor)rL   z	ast.Awaitrk   r   r0  znodes.Await)rL   ast.AsyncWithrk   r   r0  nodes.AsyncWith)rL   z
ast.Assignrk   r   r0  znodes.Assign)rL   zast.AnnAssignrk   r   r0  znodes.AnnAssign)rL   zast.AugAssignrk   r   r0  znodes.AugAssign)rL   z	ast.BinOprk   r   r0  znodes.BinOp)rL   z
ast.BoolOprk   r   r0  znodes.BoolOp)rL   z	ast.Breakrk   r   r0  znodes.Break)rL   zast.Callrk   r   r0  z
nodes.Call)rL   r)   rk   r   r0  nodes.ClassDef)rL   zast.Continuerk   r   r0  znodes.Continue)rL   zast.Comparerk   r   r0  znodes.Compare)rL   zast.comprehensionrk   r   r0  znodes.Comprehension)rL   z
ast.Deleterk   r   r0  znodes.Delete)rL   ast.Dictrk   r   r0  
nodes.Dict)rL   zast.DictComprk   r   r0  znodes.DictComp)rL   zast.Exprrk   r   r0  z
nodes.Expr)rL   zast.ExceptHandlerrk   r   r0  znodes.ExceptHandler)rL   ast.Forrk   r   r0  	nodes.For)rL   zast.ImportFromrk   r   r0  znodes.ImportFrom)rL   r*   rk   r   r0  nodes.FunctionDef)rL   zast.GeneratorExprk   r   r0  znodes.GeneratorExp)rL   ast.Attributerk   r   r0  znodes.Attribute)rL   z
ast.Globalrk   r   r0  znodes.Global)rL   zast.Ifrk   r   r0  znodes.If)rL   z	ast.IfExprk   r   r0  znodes.IfExp)rL   z
ast.Importrk   r   r0  znodes.Import)rL   zast.JoinedStrrk   r   r0  znodes.JoinedStr)rL   zast.FormattedValuerk   r   r0  znodes.FormattedValue)rL   zast.NamedExprrk   r   r0  znodes.NamedExpr)rL   zast.keywordrk   r   r0  znodes.Keyword)rL   z
ast.Lambdark   r   r0  znodes.Lambda)rL   zast.Listrk   r   r0  z
nodes.List)rL   zast.ListComprk   r   r0  znodes.ListComp)rL   ast.Namerk   r   r0  z;nodes.Name | nodes.Const | nodes.AssignName | nodes.DelName)rL   zast.Nonlocalrk   r   r0  znodes.Nonlocal)rL   zast.Constantrk   r   r0  znodes.Const)rL   zast.ParamSpecrk   r   r0  znodes.ParamSpec)rL   zast.Passrk   r   r0  z
nodes.Pass)rL   z	ast.Raiserk   r   r0  znodes.Raise)rL   z
ast.Returnrk   r   r0  znodes.Return)rL   zast.Setrk   r   r0  z	nodes.Set)rL   zast.SetComprk   r   r0  znodes.SetComp)rL   z	ast.Slicerk   nodes.Subscriptr0  znodes.Slice)rL   zast.Subscriptrk   r   r0  rt  )rL   zast.Starredrk   r   r0  znodes.Starred)rL   zast.Tryrk   r   r0  z	nodes.Try)rL   zast.TryStarrk   r   r0  znodes.TryStar)rL   z	ast.Tuplerk   r   r0  znodes.Tuple)rL   zast.TypeAliasrk   r   r0  znodes.TypeAlias)rL   zast.TypeVarrk   r   r0  znodes.TypeVar)rL   zast.TypeVarTuplerk   r   r0  znodes.TypeVarTuple)rL   zast.UnaryOprk   r   r0  znodes.UnaryOp)rL   z	ast.Whilerk   r   r0  znodes.While)rL   ast.Withrk   r   r0  
nodes.With)rL   	ast.Yieldrk   r   r0  znodes.Yield)rL   ast.YieldFromrk   r   r0  znodes.YieldFrom)rL   z	ast.Matchrk   r   r0  znodes.Match)rL   zast.match_caserk   r   r0  znodes.MatchCase)rL   zast.MatchValuerk   r   r0  znodes.MatchValue)rL   zast.MatchSingletonrk   r   r0  znodes.MatchSingleton)rL   zast.MatchSequencerk   r   r0  znodes.MatchSequence)rL   zast.MatchMappingrk   r   r0  znodes.MatchMapping)rL   zast.MatchClassrk   r   r0  znodes.MatchClass)rL   zast.MatchStarrk   r   r0  znodes.MatchStar)rL   zast.MatchAsrk   r   r0  znodes.MatchAs)rL   zast.MatchOrrk   r   r0  znodes.MatchOr)rL   zast.patternrk   r   r0  znodes.Pattern)rL   ast.ASTrk   r   r0  r   )rL   rd  rk   r   r0  rd  )rL   zast.AST | Nonerk   r   r0  NodeNG | None)rL   z nodes.AssignName | nodes.DelNamer0  rd  )rL   zHast.Assign | ast.arg | ast.For | ast.AsyncFor | ast.With | ast.AsyncWithrk   zZnodes.Assign | nodes.Arguments | nodes.For | nodes.AsyncFor | nodes.With | nodes.AsyncWithr0  rz  )rL   &ast.FunctionDef | ast.AsyncFunctionDefrk   r   r0  z)tuple[NodeNG | None, list[NodeNG]] | None)rL   ry  rk   r   r0  rJ   r0  rf  )rL   ry  rk   r   r0  rd  r0  rd  )rL   ry  rk   r   r0  rc  r0  znodes.AssignName | None)T)rL   r)   rk   r   rU  rh  r0  rl  )rL   re  rk   r   r0  znodes.Decorators | None)rL   rm  rk   r   r{   rn  r0  z Generator[tuple[NodeNG, NodeNG]])r   ztype[nodes.For]rL   ro  rk   r   r0  rp  )r   ztype[nodes.AsyncFor]rL   rh  rk   r   r0  ri  )r   ztype[_ForT]rL   zast.For | ast.AsyncForrk   r   r0  r-   )r   ztype[nodes.FunctionDef]rL   r*   rk   r   r0  rq  )r   ztype[nodes.AsyncFunctionDef]rL   r+   rk   r   r0  rg  )r   ztype[_FunctionT]rL   r{  rk   r   r0  r,   )rL   rr  rk   r   r0  z2nodes.Attribute | nodes.AssignAttr | nodes.DelAttr)rL   rs  rk   r   r0  z-nodes.Name | nodes.AssignName | nodes.DelName)r   ztype[nodes.With]rL   ru  rk   r   r0  rv  )r   ztype[nodes.AsyncWith]rL   rj  rk   r   r0  rk  )r   ztype[_WithT]rL   zast.With | ast.AsyncWithrk   r   r0  r.   )rL   ru  rk   r   r0  r   )rL   rw  rk   r   r0  r   )rL   rx  rk   r   r0  r   )_r   
__module____qualname____doc__r@   rO   rX   rp   r}   r	   r   rx   sysversion_infor   r   r  r  r   r  r  r  r  r#  r(  r-  r   r:  r?  rE  rH  rM  rY  r\  rd  rj  rS  rp  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!  r3  r6  r9  r?  rC  rF  rI  rO  rT  rY  r\  r_  rb  r   rA   r?   r0   r0   4   s   ;
 .2	00 +0 	0
 
0$UU 
U5
C5
 L5
 
	5
n),7:EI	( 	O 
O	T 
T	N 
N		),	)6<	)#	) 
	) 
R 
R	L 
L	T 
T	N 
N	T 
T	T 
T	L 
L	N 
N	L 
L	J 
J	R 
R	R 
R	P 
P		&)	&39	& 	& 
	& 
N 
N	J 
J	R 
R	J 
J		&)	&39	& 	& 
	& 
H 
H	V 
V	X 
X		%(	%28	%	% 
	% 
T 
T	N 
N	F 
F	L 
L	N 
N	T 
T		'*	'4:	'!	' 
	' 
T 
T	P 
P	N 
N	J 
J	R 
R		N 	N*0	NH	N 
	N 
R 
R	O 
Ow&X X	J 
J	L 
L	N 
N	H 
H	P 
P	U 
U	T 
T	P 
P	H 
Hw&T T	L 
Lw&X XT T),)6<)#) ) 
P 
P	L 
L	J 
J	L 
L	T 
Tw&P P&*&4:& & & '*'4:'!' ' +.+8>+%+ + *-*7=*$* * ),)6<)#) ) '*'4:'!' ' X XT TT TT T	E 
E	@ 
@*3=Yv!V!	! 
!@!:!DJ!	2!0M(M28M	M
=	?"" %+8;	  %+8<	 %+8B	 (
" DH& &*0&<@&	&P
*%/5	*C  
!	:
--&,-7A-	)-& 
%/5	$ "*1;A	  '/;EK	 &<FL	*8",2	&  * 2A KQ 	    %)% #% 	%
 
 % %88 58 	8
 
8tH#H-3H	H
$.4	"*!*+1*	;*X  "	&06	"
%%&,%	6%N	



 

" "  "$.4	   #+3=C	  (0=GM	  ' 	
 
6:
	 7"			&		06					&	06		
	*
	4:
	!
		)	39	 		(	28		&	&	06		(	%	/5			 	S #rA   r0   )8r~  
__future__r   rF   r  rb   collections.abcr   r   ior   tokenizer   r   typingr	   r
   r   r   r   r   astroidr   astroid._astr   r   r   astroid.constr   r   astroid.managerr   astroid.nodesr   astroid.nodes.node_classesr   astroid.nodes.utilsr   astroid.typingr   r&   __annotations__r'   re   rd   r,   r  r  r-   r2  r"  r.   rv   rR  NodesWithDocsTyper0   r   rA   r?   <module>r     s   
 # 
 
  /  / G G  U U - *   1 ( * $"!$#
  		
34		 \5#4#4e6L6LM
ENN3	5::u	7%,,8I8IIJ W WrA   