
    e)                   @   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mZ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j\                  ej^                        Z0 edejb                  ejd                        Z3 edejh                  ejj                        Z6eejn                  ejp                  ej\                  f   Z9 G d d       Z:y)!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)IS_PYPYPY38	PY39_PLUS
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                  f   e Zd ZdZ	 	 d	 	 	 	 	 	 	 ddZddZ	 	 	 	 ddZ	 	 	 	 	 	 ddZddZ	 	 	 	 	 	 	 	 	 	 ddZ	e
r4e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j                  d,k  redd-       Zedd.       Zedd/       Zedd0       Zedd1       Zedd2       Ze	 	 	 	 	 	 dd3       Zedd4       Zedd5       Zej                  d6k\  r	edd7       Zedd8       Zedd9       Zedd:       Zedd;       Zedd<       Zedd=       Zedd>       Zedd?       Zedd@       Zej                  dAk\  r	eddB       ZeddC       Zej                  d6k\  r!eddD       ZeddE       Ze	 	 	 	 	 	 ddF       ZeddG       ZeddH       ZeddI       ZeddJ       ZeddK       Zej                  dLk\  r}eddM       ZeddN       ZeddO       Ze	 	 	 	 	 	 d dP       Ze	 	 	 	 	 	 ddQ       Ze	 	 	 	 	 	 ddR       ZeddS       ZeddT       ZeddU       ZeddV       ZeddW       ZeddX       Zed	dY       Zd
dZZdd[Zdd\Zdd]Zdd^Z	 	 	 	 	 	 dd_Z	 	 	 	 	 	 dd`Z	 	 	 	 	 	 ddaZddbZddcZdddZddeZddfZe	 	 	 	 	 	 	 	 ddg       Zeddh       Z	 	 	 	 	 	 	 	 ddiZddjZddkZddlZddmZddnZ 	 d	 	 	 	 	 	 	 ddoZ!ddpZ"ddqZ#	 	 	 	 	 	 ddrZ$	 	 	 	 	 	 ddsZ%ddtZ&	 	 	 	 	 	 	 	 dduZ'ddvZ(ddwZ)ddxZ*	 	 	 	 	 	 ddyZ+e	 	 	 	 	 	 	 	 ddz       Z,e	 	 	 	 	 	 	 	 dd{       Z,	 	 	 	 	 	 	 	 dd|Z,dd}Z-	 	 	 	 	 	 dd~Z.e	 	 	 	 	 	 	 	 dd       Z/e	 	 	 	 	 	 	 	 dd       Z/	 	 	 	 	 	 	 	 ddZ/	 	 	 	 	 	 ddZ0	 	 	 	 	 	 ddZ1	 	 	 	 	 	 ddZ2ddZ3ddZ4ddZ5ddZ6ddZ7	 	 	 	 	 	 ddZ8ddZ9ej                  d,k  r	 	 	 	 	 	 ddZ:ddZ;ddZ<ddZ=ddZ>ddZ?	 	 	 	 	 	 ddZ@ddZAddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZP	 	 	 	 	 	 ddZQddZRddZSe	 	 	 	 	 	 	 	 dd       ZTe	 	 	 	 	 	 	 	 dd       ZT	 	 	 	 	 	 	 	 ddZTd dZUd!dZVd"dZWej                  dLk\  rZddZX	 	 	 	 	 	 ddZY	 	 	 	 	 	 ddZZ	 	 	 	 	 	 d dZ[	 	 	 	 	 	 ddZ\	 	 	 	 	 	 ddZ]	 	 	 	 	 	 ddZ^	 	 	 	 	 	 ddZ_ddZ`ddZay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       3/usr/lib/python3/dist-packages/astroid/rebuilder.py__init__zTreeRebuilder.__init__7   sX      )-TZZ%4
BD:<8:VX "3"5D"/D    c                   	 |j                   rt        |j                   d   t        j                        r}|j                   d   j                  }t        |t        j
                        rJt        |j                  t              r0|}|j                   dd |_         |j                  dk(  r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
col_offset
IndexError)r>   nodefirst_valuedoc_ast_nodes       rB   _get_doczTreeRebuilder._get_docI   s    	yyZ		!chh?"iil00k3<<8Z%%s> $/L $		!"DI $.."426/-- Tz  	Tz	s   B/B6 6	CCc                    | j                   j                  j                  t        |j                        t
        j                        S N)r=   context_classesgettypectxr   Loadr>   rQ   s     rB   _get_contextzTreeRebuilder._get_context\   s/     ""2266tDHH~w||TTrD   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   r5   rF   asyncdefclass>   r`   )linenorO   
end_linenoend_col_offset)r8   rc   rH   rb   jointokenNAMErI   r   AsyncFunctionDefFunctionDefr   r   readlinerY   stringnamer   startend)	r>   rQ   parentrc   rA   start_tokenkeyword_tokenssearch_tokents	            rB   _get_position_infoz TreeRebuilder._get_position_infoi   sl    zz__
991,,JyyDKK!OjAB(,+0::-fe445"L 1 12 L"L $!8!89 	A'FFejj(HH		)vv'88|+"#K88w&K	 ;;!2!21!559"((+{{QUU1X-1558	
 	
rD   c                l    d|_         d|_        |j                         D ]  }| j                  |        y)a  Reset end_lineno and end_col_offset attributes for PyPy 3.8.

        For some nodes, these are either set to -1 or only partially assigned.
        To keep consistency across astroid and pylint, reset all.

        This has been fixed in PyPy 3.9.
        For reference, an (incomplete) list of nodes with issues:
            - ClassDef          - For
            - FunctionDef       - While
            - Call              - If
            - Decorators        - Try
            - With              - Assign
        N)rc   rd   get_children_reset_end_lineno)r>   newnode
child_nodes      rB   rw   zTreeRebuilder._reset_end_lineno   s:     "!%!..0 	/J"":.	/rD   c           	     <   | j                  |      \  }}t        j                  |||g|      }|j                  |j                  D cg c]  }| j                  ||       c}| j                  ||             t        rt        r| j                  |       |S c c}w )zmVisit a Module node by returning a fresh instance of it.

        Note: Method not called by 'visit'
        )rl   filepathpackage)doc_node)	rT   r   ModulepostinitrH   visitr   r   rw   )r>   rQ   modnamemodpathr}   rS   rx   childs           rB   visit_modulezTreeRebuilder.visit_module   s     "]]40l,,	
 	59YY?ETZZw'?ZZg6 	 	
 t""7+ @s   Bc                     y rV    r>   rQ   ro   s      rB   r   zTreeRebuilder.visit       rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit        rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit   r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit	  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit!  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit%  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit)  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit-  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit1  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit5  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit9  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit=  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visitA  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visitE  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visitI  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visitM  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visitQ  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visitW  r   rD   )   	   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit]      rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visita  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visite  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visiti  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visitm  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visitq  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visitu  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit{  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   )r      c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   )r      c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit       rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   )r   
   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                     y rV   r   r   s      rB   r   zTreeRebuilder.visit  r   rD   c                
   |y |j                   }|| j                  v r| j                  |   }nN|j                  }dt        j	                  ||      j                         z   }t        | |      }|| j                  |<    |||      S )Nvisit_)	__class__r<   __name__r)   rX   lowergetattr)r>   rQ   ro   clsvisit_methodcls_name
visit_names          rB   r   zTreeRebuilder.visit  s    <nn$###,,S1L||H!HLL8$D$J$J$LLJ"44L%1Dc"D&))rD   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.rG   N)r9   rl   root	set_localro   r\   s     rB   _save_assignmentzTreeRebuilder._save_assignment$  sk    $))t/A/A"/E"EIIK!!$))T2;;;999KK!!$))T2rD   c                <    | j                  |||j                        S )z8Visit an arg node by returning a fresh AssName instance.)visit_assignnameargr   s      rB   	visit_argzTreeRebuilder.visit_arg-  s    $$T6488<<rD   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                  |      }t        rT|j                  D ]E  }|j                  |j                  j                  |_        |j                  j                  |_	        G |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)rc   rd   ro   )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   rb   rO   rc   rd   r   r   r   
annotationr   r   r   r   check_type_commentr   ro   r   )r>   rQ   ro   r   r   vararg_node
kwarg_noderx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                          rB   visit_argumentszTreeRebuilder.visit_arguments1  s   ! kkZZ
//#{{DKKOO"jjDJJNNd  ""&&&11*99   !!%%%00)88 /
2 9=		Bu

5'*BB<@MMJ5DJJug.JJ*.)-;;[[__F#zz$++*@*@'J::JJNNE"jj)>)>HO  G>>-%(^^%>%>CN),)F)FC&G
 ?CooNUdjj0N
N?C?O?OPetzz%1PPFJiiPstzz#..':PP;???"
47DJJs~~w/"
 "
 @D?O?OPetzz%1PP;?;K;K#
47DJJs~~w/#
 #
 IM		
?DD##E'#:
 
 IM#
?DD##E'#:#
 #
 IMHXHX$
?DD##E'#:$
  $
 	!####9$;-+/$;%= 	 	
  ~~~NN$$VW5NN$$UG4{ CJ$ OPP"
 Q#

#
$
sB   Q ;QQ
;Q$#Q#Q
Q3#Q#&Q(Q-:Q2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.rb   rO   rc   rd   ro   N)
r   Assertrb   rO   rc   rd   msgr   r   test)r>   rQ   ro   rx   r  s        rB   visit_assertzTreeRebuilder.visit_assert  sw    ,,;;..
 "88**TXXw/CDIIw7=rD   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SyntaxErrorrH   r   rI   r   rK   rL   )r>   rQ   ro   type_comment_asttype_objects        rB   r  z TreeRebuilder.check_type_comment  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 rV   )r  r   r  argtypesr   returns)r>   rQ   ro   r  r  elemr  s          rB   check_function_type_commentz)TreeRebuilder.check_function_type_comment  s       	:4;L;LM
  !%2B2K2K2Qr"
)-DJJtV$"
 "
 ##jj!1!9!96BG    		"
s   B B	BBc                D    | j                  t        j                  ||      S rV   )_visit_functiondefr   rh   r   s      rB   visit_asyncfunctiondefz$TreeRebuilder.visit_asyncfunctiondef  s     &&u'='=tVLLrD   c                D    | j                  t        j                  ||      S rV   )
_visit_forr   AsyncForr   s      rB   visit_asyncforzTreeRebuilder.visit_asyncfor  s    u~~tV<<rD   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S Nr  )rL   )	r   Awaitrb   rO   rc   rd   r   r   rL   r>   rQ   ro   rx   s       rB   visit_awaitzTreeRebuilder.visit_await  sX    ++;;..
 	tzz$**g>?rD   c                D    | j                  t        j                  ||      S rV   )_visit_withr   	AsyncWithr   s      rB   visit_asyncwithzTreeRebuilder.visit_asyncwith  s    v>>rD   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   )targetsrL   type_annotation)r   Assignrb   rO   rc   rd   r  r   r'  r   rL   )r>   rQ   ro   rx   r(  r   s         rB   visit_assignzTreeRebuilder.visit_assign  s    ,,;;..
 11$w1G=A\\JETZZ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   simplerL   )r   	AnnAssignrb   rO   rc   rd   r   r   r,  r   r-  rL   r   s       rB   visit_annassignzTreeRebuilder.visit_annassign   s    //;;..
 	::dkk73zz$//7;;;**TZZ1	 	 	
 rD   c                     y rV   r   r>   rQ   ro   	node_names       rB   r   zTreeRebuilder.visit_assignname       	rD   c                     y rV   r   r1  s       rB   r   zTreeRebuilder.visit_assignname  s    rD   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rl   rb   rO   rc   rd   ro   )r   r   rb   rO   rc   rd   r   )r>   rQ   ro   r2  rx   s        rB   r   zTreeRebuilder.visit_assignname  sV     "";;..
 	g&rD   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.=oprb   rO   rc   rd   ro   )r   	AugAssignr=   bin_op_classesrY   r:  rb   rO   rc   rd   r   r   r,  rL   r   s       rB   visit_augassignzTreeRebuilder.visit_augassign/  s    //""11$tww-@3F;;..
 	JJt{{G,djjW.M	
 rD   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.r9  )r   BinOpr=   r<  rY   r:  rb   rO   rc   rd   r   r   leftrightr   s       rB   visit_binopzTreeRebuilder.visit_binop>  s    ++""11$tww-@;;..
 	JJtyy'*DJJtzz7,K	
 rD   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.r9  )r   BoolOpr=   bool_op_classesrY   r:  rb   rO   rc   rd   r   valuesr   r>   rQ   ro   rx   r   s        rB   visit_boolopzTreeRebuilder.visit_boolopM  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   Breakrb   rO   rc   rd   r   s      rB   visit_breakzTreeRebuilder.visit_breakZ  s4    {{;;..
 	
rD   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   Callrb   rO   rc   rd   r   r   rM  r   rN  rG  s        rB   
visit_callzTreeRebuilder.visit_calld  s    **;;..
 	DIIw/:>))D$**UG,D>BmmLUdjj0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.r6  N	metaclass)positionr~   type_params)rT   r   ClassDefrl   rb   rO   rc   rd   rN  r   r   rL   visit_decoratorsr   basesrH   rt   r   rT  )r>   rQ   ro   newstylerS   rx   rR  r'   
decoratorsr   kwdparams               rB   visit_classdefzTreeRebuilder.visit_classdeft  s    "]]40l..;;..
 	}} 	G{{k) JJw8>>		 **49
59ZZ@ETZZw'@59YY?ETZZw'?  ==77k) 

3(
 ,,T7;ZZg6 BFAQAQRE73R 	 	
" ! A? S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   Continuerb   rO   rc   rd   r   s      rB   visit_continuezTreeRebuilder.visit_continue  s4    ~~;;..
 	
rD   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   Comparerb   rO   rc   rd   r   r   r@  zipopscomparatorsr=   cmp_op_classesr   )r>   rQ   ro   rx   r:  exprs         rB   visit_comparezTreeRebuilder.visit_compare  s    --;;..
 	JJtyy'* #&dhh0@0@"A
 R ''66r||DJJtW-		
 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)ro   rb   rO   rc   rd   )	r   r   r   r   r,  iterifsboolis_asyncrG  s        rB   visit_comprehensionz!TreeRebuilder.visit_comprehension  s     %% 
 	JJt{{G,JJtyy'*59XX>ETZZw'>		
  ?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   rG   r  )	decorator_listrb   rc   rd   r   
DecoratorsrO   r   r   )r>   rQ   ro   rb   rc   rd   rx   r   s           rB   rV  zTreeRebuilder.visit_decorators  s     ""
 $$Q'..((,77
,,R0??""!)
 	$BUBUV$**UG4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   Deleterb   rO   rc   rd   r   r'  r   rG  s        rB   visit_deletezTreeRebuilder.visit_delete  sf    ,,;;..
 	$,,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  )
rb  keysrF  r   r   
DictUnpackrb   rO   rc   rd   )r>   rQ   ro   rx   keyrL   rebuilt_valuerebuilt_keys           rB   _visit_dict_itemszTreeRebuilder._visit_dict_items  s      dii5 	-JC JJug6M#..(//,77,77#0#?#?! #jjg6},,	-s   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   Dictrb   rO   rc   rd   listr|  r   )r>   rQ   ro   rx   itemss        rB   
visit_dictzTreeRebuilder.visit_dict
  sg    **;;..
 @D""49@
 	rD   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   DictComprb   rO   rc   rd   r   r   ry  rL   
generatorsrG  s        rB   visit_dictcompzTreeRebuilder.visit_dictcomp  s    ..;;..
 	JJtxx)JJtzz7+59__EETZZ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   rK   rb   rO   rc   rd   r   r   rL   r   s       rB   
visit_exprzTreeRebuilder.visit_expr)  sU    **;;..
 	DJJ89rD   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   rb   rO   rc   rd   r   r   rY   r   rl   rH   rG  s        rB   visit_excepthandlerz!TreeRebuilder.visit_excepthandler5  s     %%;;..
 	JJtyy'*!!$;59YY?ETZZw'?	

  @s   B5c                     y rV   r   r>   r   rQ   ro   s       rB   r  zTreeRebuilder._visit_forG  r3  rD   c                     y rV   r   r  s       rB   r  zTreeRebuilder._visit_forM  r3  rD   c                   |j                   }t        rWt        sQt        |t        j
                        r7| j                  r+| j                  |j                  dz
     j                  d      } ||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.rF   r_   r  r   )r,  ri  rH   orelser(  )rO   r   r   rI   rJ   r  r8   rb   indexrc   rd   r  r   r   r,  ri  rH   r  )r>   r   rQ   ro   rO   rx   r(  r   s           rB   r  zTreeRebuilder._visit_forS  s    __
9D#,,)GDJJDKK!O4::7CJ;;!..
 11$w1G::dkk73DIIw/:>))D$**UG,D<@KKH5DJJug.H+ 	 	
 	 EHs   7E E	c                D    | j                  t        j                  ||      S rV   )r  r   Forr   s      rB   	visit_forzTreeRebuilder.visit_form  s    uyy$77rD   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levelrb   rO   rc   rd   ro   )r  rl   asnamer   
ImportFrommoduler  rb   rO   rc   rd   r:   append)r>   rQ   ro   aliasr  rx   s         rB   visit_importfromzTreeRebuilder.visit_importfromp  s     :>D%**ell+DD""[[&B**$;;..	
 	&&w/ Es   B.c                     y rV   r   r  s       rB   r  z TreeRebuilder._visit_functiondef  r3  rD   c                     y rV   r   r  s       rB   r  z TreeRebuilder._visit_functiondef  s     	rD   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   r6  N)	r   rH   rY  r  type_comment_returnsr   rS  r~   rT  )r9   r  rT   rb   ro  rl   rO   rc   rd   rV  r  r   r  r   r   rH   rt   r   rT  pop)r>   r   rQ   ro   rS   rb   rx   rY  r  r   r  type_comment_annotationr   r[  s                 rB   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 BFAQAQRE73R 	 	
 	  E Ss   %F9
:F>c                D    | j                  t        j                  ||      S rV   )r  r   ri   r   s      rB   visit_functiondefzTreeRebuilder.visit_functiondef  s     &&u'8'8$GGrD   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   GeneratorExprb   rO   rc   rd   r   r   eltr  rG  s        rB   visit_generatorexpz TreeRebuilder.visit_generatorexp  s     $$;;..
 	JJtxx)59__EETZZ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.)attrnamerb   rO   rc   rd   ro   )r]   r   Delr   DelAttrattrrb   rO   rc   rd   Store
AssignAttrrI   r   r;   r  	Attributer   r   rL   r>   rQ   ro   contextrx   s        rB   visit_attributezTreeRebuilder.visit_attribute  s     ##D)gkk! mm{{????#22G %&&{{????#22G fe&9&9: %%,,W5oo{{????#22G 	DJJ89rD   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  rb   rO   rc   rd   ro   rG   )
r   Globalr  rb   rO   rc   rd   r9   
setdefaultr  )r>   rQ   ro   rx   rl   s        rB   visit_globalzTreeRebuilder.visit_global  s    ,,**;;..
 

 L""2&11$;BB7KLrD   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   Ifrb   rO   rc   rd   r   r   r	  rH   r  rG  s        rB   visit_ifzTreeRebuilder.visit_if  s    ((;;..
 	JJtyy'*59YY?ETZZw'?59[[AETZZ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   IfExprb   rO   rc   rd   r   r   r	  rH   r  r   s       rB   visit_ifexpzTreeRebuilder.visit_ifexp+  s~    ++;;..
 	JJtyy'*JJtyy'*JJt{{G,	

 rD   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  rl   r  r   Importrb   rO   rc   rd   r   r7   )r>   rQ   ro   r  r  rx   rl   r  s           rB   visit_importzTreeRebuilder.visit_import;  s    9=D%**ell+DD,,;;..
 $MM 	:LD&>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 rv  )	r   	JoinedStrrb   rO   rc   rd   r   rF  r   rG  s        rB   visit_joinedstrzTreeRebuilder.visit_joinedstrL  sf    //;;..
 	$++N$**UG4NO Ort  c                .   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      |j                  | j                  |j                  |             |S )Nr  )rL   
conversionformat_spec)r   FormattedValuerb   rO   rc   rd   r   r   rL   r  r  r   s       rB   visit_formattedvaluez"TreeRebuilder.visit_formattedvalueW  s~     &&;;..
 	**TZZ1

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

 rD   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      | j                  |j                  |             |S rv  )
r   	NamedExprrb   rO   rc   rd   r   r   r,  rL   r   s       rB   visit_namedexprzTreeRebuilder.visit_namedexprh  sk    //;;..
 	JJt{{G,djjW.M	
 rD   c           	         t        j                  t        j                  |      }|j	                  |j
                  D cg c]  }| j                  ||       c}       |S c c}w )z>Visit an ExtSlice node by returning a fresh instance of Tuple.)rZ   ro   )r   Tupler   r[   r   dimsr   )r>   rQ   ro   rx   dims        rB   visit_extslicezTreeRebuilder.visit_extslicew  sK    
 kkgll6BG$))L3djjg6LMN Ms   A!c                :    | j                  |j                  |      S )z;Visit a Index node by returning a fresh instance of NodeNG.)r   rL   r   s      rB   visit_indexzTreeRebuilder.visit_index  s    ::djj&11rD   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.rb   NrO   rc   rd   )r   rb   rO   rc   rd   ro   )r   r    r   r   r   r   rL   r   s       rB   visit_keywordzTreeRebuilder.visit_keyword  so    --440t\48t\48"4)94@
 	DJJ89rD   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   Lambdarb   rO   rc   rd   r   r   r   rH   r   s       rB   visit_lambdazTreeRebuilder.visit_lambda  sf    ,,;;..
 	DIIw7DIIw9WXrD   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.rZ   rb   rO   rc   rd   ro   )
r]   r   Listrb   rO   rc   rd   r   eltsr   r>   rQ   ro   r  rx   r   s         rB   
visit_listzTreeRebuilder.visit_list  sy    ##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   ListComprb   rO   rc   rd   r   r   r  r  rG  s        rB   visit_listcompzTreeRebuilder.visit_listcomp  s}    ..;;..
 	JJtxx)59__EETZZ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.r6  )r]   r   r  r   DelNameidrb   rO   rc   rd   r  r   Namer   r   r   r  s        rB   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!!'*rD   c                    t        j                  |j                  |j                  |j                  |j
                  |j                  |      S )z6Visit a Nonlocal node and return a new instance of it.r  )r   Nonlocalr  rb   rO   rc   rd   r   s      rB   visit_nonlocalzTreeRebuilder.visit_nonlocal  s;    ~~**;;..
 	
rD   c           	         t        j                  |j                  |j                  |j                  |j
                  |j                  |j                  |      S )z=Visit a Constant node by returning a fresh instance of Const.)rL   kindrb   rO   rc   rd   ro   )r   ConstrL   r  rb   rO   rc   rd   r   s      rB   visit_constantzTreeRebuilder.visit_constant  sB    {{**;;..
 	
rD   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |||j                               |S )z;Visit a ParamSpec node by returning a fresh instance of it.r  rl   )	r   	ParamSpecrb   rO   rc   rd   r   r   rl   r   s       rB   visit_paramspeczTreeRebuilder.visit_paramspec  s\    //;;..
 	d33D'499MNrD   c                    t        j                  |j                  |j                  |j                  |j
                  |      S )z6Visit a Pass node by returning a fresh instance of it.r  )r   Passrb   rO   rc   rd   r   s      rB   
visit_passzTreeRebuilder.visit_pass  s4    zz;;..
 	
rD   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   Raiserb   rO   rc   rd   r   r   r  r  r   s       rB   visit_raisezTreeRebuilder.visit_raise  sq    ++;;..
 	

488W-**TZZ1 	 	
 rD   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S )z8Visit a Return node by returning a fresh instance of it.r  )	r   Returnrb   rO   rc   rd   r   r   rL   r   s       rB   visit_returnzTreeRebuilder.visit_return!  sU    ,,;;..
 	DJJ89rD   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   Setrb   rO   rc   rd   r   r  r   rG  s        rB   	visit_setzTreeRebuilder.visit_set-  sf    ));;..
 	$))L$**UG4LM Mrt  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   SetComprb   rO   rc   rd   r   r   r  r  rG  s        rB   visit_setcompzTreeRebuilder.visit_setcomp9  s}    --;;..
 	JJtxx)59__EETZZ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.rb   NrO   rc   rd   r  )r   upperstep)r   Slicer   r   r   r   r  r	  r   s       rB   visit_slicezTreeRebuilder.visit_sliceH  s    ++440t\48t\48"4)94@
 	**TZZ1**TZZ1DIIw/ 	 	

 rD   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  )r]   r   	Subscriptrb   rO   rc   rd   r   r   rL   slicer  s        rB   visit_subscriptzTreeRebuilder.visit_subscriptY  s~    ##D)//;;..
 	JJtzz7+TZZ

G-L	
 rD   c                   | j                  |      }t        j                  ||j                  |j                  |j
                  |j                  |      }|j                  | j                  |j                  |             |S )z5Visit a Starred node and return a new instance of it.r  )
r]   r   Starredrb   rO   rc   rd   r   r   rL   r  s        rB   visit_starredzTreeRebuilder.visit_starredi  sh    ##D)--;;..
 	DJJ89rD   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  rH   handlersr  	finalbody)r   Tryrb   rO   rc   rd   r   rH   r   r  r  r  rG  s        rB   	visit_tryzTreeRebuilder.visit_tryw  s    ));;..
 	:>))D$**UG,D>BmmLUdjj0L<@KKH5DJJug.H?C~~Netzz%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   TryStarrb   rO   rc   rd   r   rH   r   r  r  r  )r>   rQ   ro   rx   ns        rB   visit_trystarzTreeRebuilder.visit_trystar  s    --;;..
 	26))<Q$**Q(<6:mmDdjjG,D48KK@qDJJq'*@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  )
r]   r   r  rb   rO   rc   rd   r   r  r   r  s         rB   visit_tuplezTreeRebuilder.visit_tuple  sy    ##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  )rl   rT  rL   )r   	TypeAliasrb   rO   rc   rd   r   r   rl   rT  rL   )r>   rQ   ro   rx   ps        rB   visit_typealiaszTreeRebuilder.visit_typealias  s    //;;..
 	DIIw/9=9I9IJAAw/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  )rl   bound)r   r   rb   rO   rc   rd   r   r   rl   r   r%  r   s       rB   visit_typevarzTreeRebuilder.visit_typevar  su    --;;..
 	&&tWdii@**TZZ1 	 	
 rD   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   TypeVarTuplerb   rO   rc   rd   r   r   rl   r   s       rB   visit_typevartuplez TreeRebuilder.visit_typevartuple  s`     $$;;..
 	d33D'499MNrD   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.r9  )r   UnaryOpr=   unary_op_classesr:  r   rb   rO   rc   rd   r   r   operandr   s       rB   visit_unaryopzTreeRebuilder.visit_unaryop  ss    --""33DGG4E4EF;;..
 	DLL':;rD   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   Whilerb   rO   rc   rd   r   r   r	  rH   r  rG  s        rB   visit_whilezTreeRebuilder.visit_while  s    ++;;..
 	JJtyy'*59YY?ETZZw'?59[[AETZZw'A	

  @Ar  c                     y rV   r   r  s       rB   r#  zTreeRebuilder._visit_with  r3  rD   c                     y rV   r   r  s       rB   r#  zTreeRebuilder._visit_with  r3  rD   c           
     .    |j                   }t        rWt        sQt        |t        j
                        r7 j                  r+ j                  |j                  dz
     j                  d      } ||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 )NrF   r_   r  c                |    j                  | j                        }j                  | j                        }||fS rV   )r   context_exproptional_vars)r   rf  varrx   r>   s      rB   visit_childz.TreeRebuilder._visit_with.<locals>.visit_child  s9    ::e00':D**U00':C9rD   r   )r  rH   r(  )r   zast.withitemreturnztuple[NodeNG, NodeNG | None])rO   r   r   rI   rJ   r$  r8   rb   r  rc   rd   r  r   r  rH   r   )	r>   r   rQ   ro   rO   r9  r(  r   rx   s	   `       @rB   r#  zTreeRebuilder._visit_with   s     __
9D#--)HTZZDKK!O4::7CJ;;!..
	
 11$w1G37::>%;u%>:>))D$**UG,D+ 	 	

 	 ?Ds   
D)D
c                D    | j                  t        j                  ||      S rV   )r#  r   Withr   s      rB   
visit_withzTreeRebuilder.visit_with   s    

D&99rD   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S )z7Visit a Yield node by returning a fresh instance of it.r  )	r   Yieldrb   rO   rc   rd   r   r   rL   r   s       rB   visit_yieldzTreeRebuilder.visit_yield#  sU    ++;;..
 	DJJ89rD   c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S rv  )	r   	YieldFromrb   rO   rc   rd   r   r   rL   r   s       rB   visit_yieldfromzTreeRebuilder.visit_yieldfrom/  sU    //;;..
 	DJJ89rD   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   Matchrb   rO   rc   rd   r   r   rE  rF  )r>   rQ   ro   rx   cases        rB   visit_matchzTreeRebuilder.visit_match<  s    kk{{????#22G 

4<<9=AZZHTtzz$0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guardrH   )r   r!   r   r   rK  rL  rH   rG  s        rB   visit_matchcasezTreeRebuilder.visit_matchcaseJ  ss     ooV4G

4<<9jjW5>BiiHUdjj0H  
 N Is   &B	c                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |             |S r  )	r   
MatchValuerb   rO   rc   rd   r   r   rL   r   s       rB   visit_matchvaluezTreeRebuilder.visit_matchvalueU  s\     &&{{????#22G 4::djj'#BCNrD   c                    t        j                  |j                  |j                  |j                  |j
                  |j                  |      S )N)rL   rb   rO   rc   rd   ro   )r   MatchSingletonrL   rb   rO   rc   rd   r   s      rB   visit_matchsingletonz"TreeRebuilder.visit_matchsingletonb  s?     ''jj{{????#22 rD   c           	        t        j                  |j                  |j                  |j                  |j
                  |      }|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w Nr  )patterns)	r   MatchSequencerb   rO   rc   rd   r   rV  r   r>   rQ   ro   rx   rK  s        rB   visit_matchsequencez!TreeRebuilder.visit_matchsequencen  st     )){{????#22G FJmmT7$**Wg6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  )rw  rV  rest)r   MatchMappingrb   rO   rc   rd   r   rw  r   rV  r   r\  )r>   rQ   ro   rx   r   rK  s         rB   visit_matchmappingz TreeRebuilder.visit_matchmapping}  s     (({{????#22G >BiiHUdjj0HFJmmT7$**Wg6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   rV  	kwd_attrskwd_patterns)r   
MatchClassrb   rO   rc   rd   r   r   r   rV  r`  ra  rX  s        rB   visit_matchclasszTreeRebuilder.visit_matchclass  s     &&{{????#22G JJtxx1FJmmT7$**Wg6T..@D@Q@Q5<DJJw0	   N Us   7C
+Cc                    t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |||j                               |S )Nr  r  )	r   	MatchStarrb   rO   rc   rd   r   r   rl   r   s       rB   visit_matchstarzTreeRebuilder.visit_matchstar  s^     oo{{????#22G $"7"7gtyy"QRNrD   c                   t        j                  |j                  |j                  |j                  |j
                  |      }|j                  | j                  |j                  |      | j                  |||j                               |S )Nr  )rK  rl   )r   MatchAsrb   rO   rc   rd   r   r   rK  r   rl   r   s       rB   visit_matchaszTreeRebuilder.visit_matchas  su    mm{{????#22G 

4<<9**4$))D   NrD   c           	        t        j                  |j                  |j                  |j                  |j
                  |      }|j                  |j                  D cg c]  }| j                  ||       c}       |S c c}w rU  )	r   MatchOrrb   rO   rc   rd   r   rV  r   rX  s        rB   visit_matchorzTreeRebuilder.visit_matchor  sp    mm{{????#22G FJmmT7$**Wg6T   N UrZ  )NN)r?   r   r@   zParserModule | NonerA   
str | Noner:  None)rQ   r*   r:  z+tuple[T_Doc, ast.Constant | ast.Str | None])rQ   zMast.Attribute | ast.List | ast.Name | ast.Subscript | ast.Starred | ast.Tupler:  r   )rQ   5ast.ClassDef | ast.FunctionDef | ast.AsyncFunctionDefro   z;nodes.ClassDef | nodes.FunctionDef | nodes.AsyncFunctionDefr:  zPosition | None)rx   znodes.NodeNGr:  rn  )
rQ   r+   r   rN   r   rN   r}   rk  r:  znodes.Module)rQ   zast.argro   r   r:  nodes.AssignName)rQ   zast.argumentsro   r   r:  znodes.Arguments)rQ   z
ast.Assertro   r   r:  znodes.Assert)rQ   r.   ro   r   r:  nodes.AsyncFunctionDef)rQ   ast.AsyncForro   r   r:  nodes.AsyncFor)rQ   z	ast.Awaitro   r   r:  znodes.Await)rQ   ast.AsyncWithro   r   r:  nodes.AsyncWith)rQ   z
ast.Assignro   r   r:  znodes.Assign)rQ   zast.AnnAssignro   r   r:  znodes.AnnAssign)rQ   zast.AugAssignro   r   r:  znodes.AugAssign)rQ   z	ast.BinOpro   r   r:  znodes.BinOp)rQ   z
ast.BoolOpro   r   r:  znodes.BoolOp)rQ   z	ast.Breakro   r   r:  znodes.Break)rQ   zast.Callro   r   r:  z
nodes.Call)rQ   r,   ro   r   r:  nodes.ClassDef)rQ   zast.Continuero   r   r:  znodes.Continue)rQ   zast.Comparero   r   r:  znodes.Compare)rQ   zast.comprehensionro   r   r:  znodes.Comprehension)rQ   z
ast.Deletero   r   r:  znodes.Delete)rQ   ast.Dictro   r   r:  
nodes.Dict)rQ   zast.DictCompro   r   r:  znodes.DictComp)rQ   zast.Exprro   r   r:  z
nodes.Expr)rQ   zast.ExceptHandlerro   r   r:  znodes.ExceptHandler)rQ   ast.Forro   r   r:  	nodes.For)rQ   zast.ImportFromro   r   r:  znodes.ImportFrom)rQ   r-   ro   r   r:  nodes.FunctionDef)rQ   zast.GeneratorExpro   r   r:  znodes.GeneratorExp)rQ   ast.Attributero   r   r:  znodes.Attribute)rQ   z
ast.Globalro   r   r:  znodes.Global)rQ   zast.Ifro   r   r:  znodes.If)rQ   z	ast.IfExpro   r   r:  znodes.IfExp)rQ   z
ast.Importro   r   r:  znodes.Import)rQ   zast.JoinedStrro   r   r:  znodes.JoinedStr)rQ   zast.FormattedValuero   r   r:  znodes.FormattedValue)rQ   zast.NamedExprro   r   r:  znodes.NamedExpr)rQ   zast.ExtSlicero   nodes.Subscriptr:  nodes.Tuple)rQ   z	ast.Indexro   r}  r:  r   )rQ   zast.keywordro   r   r:  znodes.Keyword)rQ   z
ast.Lambdaro   r   r:  znodes.Lambda)rQ   zast.Listro   r   r:  z
nodes.List)rQ   zast.ListCompro   r   r:  znodes.ListComp)rQ   ast.Namero   r   r:  z;nodes.Name | nodes.Const | nodes.AssignName | nodes.DelName)rQ   zast.Nonlocalro   r   r:  znodes.Nonlocal)rQ   zast.Constantro   r   r:  znodes.Const)rQ   zast.ParamSpecro   r   r:  znodes.ParamSpec)rQ   zast.Passro   r   r:  z
nodes.Pass)rQ   z	ast.Raisero   r   r:  znodes.Raise)rQ   z
ast.Returnro   r   r:  znodes.Return)rQ   zast.Setro   r   r:  z	nodes.Set)rQ   zast.SetCompro   r   r:  znodes.SetComp)rQ   z	ast.Slicero   r}  r:  znodes.Slice)rQ   zast.Subscriptro   r   r:  r}  )rQ   zast.Starredro   r   r:  znodes.Starred)rQ   zast.Tryro   r   r:  z	nodes.Try)rQ   zast.TryStarro   r   r:  znodes.TryStar)rQ   z	ast.Tuplero   r   r:  r~  )rQ   zast.TypeAliasro   r   r:  znodes.TypeAlias)rQ   zast.TypeVarro   r   r:  znodes.TypeVar)rQ   zast.TypeVarTuplero   r   r:  znodes.TypeVarTuple)rQ   zast.UnaryOpro   r   r:  znodes.UnaryOp)rQ   z	ast.Whilero   r   r:  znodes.While)rQ   ast.Withro   r   r:  
nodes.With)rQ   	ast.Yieldro   r   r:  znodes.Yield)rQ   ast.YieldFromro   r   r:  znodes.YieldFrom)rQ   z	ast.Matchro   r   r:  znodes.Match)rQ   zast.match_casero   r   r:  znodes.MatchCase)rQ   zast.MatchValuero   r   r:  znodes.MatchValue)rQ   zast.MatchSingletonro   r   r:  znodes.MatchSingleton)rQ   zast.MatchSequencero   r   r:  znodes.MatchSequence)rQ   zast.MatchMappingro   r   r:  znodes.MatchMapping)rQ   zast.MatchClassro   r   r:  znodes.MatchClass)rQ   zast.MatchStarro   r   r:  znodes.MatchStar)rQ   zast.MatchAsro   r   r:  znodes.MatchAs)rQ   zast.MatchOrro   r   r:  znodes.MatchOr)rQ   zast.patternro   r   r:  znodes.Pattern)rQ   ast.ASTro   r   r:  r   )rQ   rn  ro   r   r:  rn  )rQ   zast.AST | Nonero   r   r:  NodeNG | None)rQ   z nodes.AssignName | nodes.DelNamer:  rn  )rQ   zHast.Assign | ast.arg | ast.For | ast.AsyncFor | ast.With | ast.AsyncWithro   zZnodes.Assign | nodes.Arguments | nodes.For | nodes.AsyncFor | nodes.With | nodes.AsyncWithr:  r  )rQ   &ast.FunctionDef | ast.AsyncFunctionDefro   r   r:  z)tuple[NodeNG | None, list[NodeNG]] | None)rQ   r  ro   r   r2  rN   r:  rp  )rQ   r  ro   r   r2  rn  r:  rn  )rQ   r  ro   r   r2  rm  r:  znodes.AssignName | None)T)rQ   r,   ro   r   rX  rk  r:  rv  )rQ   ro  ro   r   r:  znodes.Decorators | None)rQ   rw  ro   r   rx   rx  r:  z,Generator[tuple[NodeNG, NodeNG], None, None])r   ztype[nodes.For]rQ   ry  ro   r   r:  rz  )r   ztype[nodes.AsyncFor]rQ   rr  ro   r   r:  rs  )r   ztype[_ForT]rQ   zast.For | ast.AsyncForro   r   r:  r0   )r   ztype[nodes.FunctionDef]rQ   r-   ro   r   r:  r{  )r   ztype[nodes.AsyncFunctionDef]rQ   r.   ro   r   r:  rq  )r   ztype[_FunctionT]rQ   r  ro   r   r:  r/   )rQ   r|  ro   r   r:  z2nodes.Attribute | nodes.AssignAttr | nodes.DelAttr)rQ   r  ro   r   r:  z-nodes.Name | nodes.AssignName | nodes.DelName)r   ztype[nodes.With]rQ   r  ro   r   r:  r  )r   ztype[nodes.AsyncWith]rQ   rt  ro   r   r:  ru  )r   ztype[_WithT]rQ   zast.With | ast.AsyncWithro   r   r:  r1   )rQ   r  ro   r   r:  r   )rQ   r  ro   r   r:  r   )rQ   r  ro   r   r:  r   )br   
__module____qualname____doc__rC   rT   r]   rt   rw   r   r	   r   r   sysversion_infor   r   r  r
  r  r  r  r  r!  r%  r*  r/  r   r=  rB  rH  rK  rP  r\  r_  rg  rm  rV  rs  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r#  r&  r)  r.  r1  r#  r=  r@  rC  rI  rM  rP  rS  rY  r^  rc  rf  ri  rl  r   rD   rB   r3   r3   4   s   ;
 .2	00 +0 	0
 
0$&UU 
U5
C5
 L5
 
	5
n/&),7:EI	, 		 
	 
	 
	 
	 
	 
	,	6<	#	 
	
 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	*	4:	!	 
	
 
	 
	 f$    
	 
	 
	 
	 
	 
	 
	 
	 
	 	*0	H	 
	
 
	 
	 
	 
	 w&  
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 w&  
	 
	 w&    ,6<# 
 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 w&      .8>% 
 -7=$ 
 ,6<# 
           
	 
	 
	 
	*3=]~ ! U ! ! 
 !D!:!DJ!	2!0M(M28M	M
=	?"" %+8;	 
  %+8B	 (
" DH$ $*0$<@$	$L
*%/5	*C  
!	:
--&,-7A-	5-& 
%/5	$ "*1;A	 
 '/;EK	 
&<FL	48",2	& *2AKQ	 
 ) # 	
 
  66 56 	6
 
6pH#H-3H	H
$.4	"*!*+1*	;*X  "	&06	" & 	$	.=			2
%%&,%	6%N	



 

" "  "$.4	   #+3=C	 
 (0=GM	 
 ' 	
 
@:
	 7"			&		06					&	06		
	*
	4:
	!
		)	39	 		(	28		&	&	06		(	%	/5			 	S #rD   r3   );r  
__future__r   rJ   r  rf   collections.abcr   r   ior   tokenizer   r   typingr	   r
   r   r   r   r   astroidr   astroid._astr   r   r   astroid.constr   r   r   r   r   astroid.managerr   astroid.nodesr   astroid.nodes.node_classesr   astroid.nodes.utilsr   astroid.typingr   r)   __annotations__r*   ri   rh   r/   r  r  r0   r<  r$  r1   r   rU  NodesWithDocsTyper3   r   rD   rB   <module>r     s   
 # 
 
  /  / G G  U U G G *   1 ( * $"!$#
  		
34		 \5#4#4e6L6LM
ENN3	5::u	7%,,8I8IIJ Z ZrD   