
    yIf                      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j1        ej2                  Z3 edej4        ej5                  Z6eej7        ej8        ej.        f         Z9 G d d           Z:dS )!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                     e Zd ZdZ	 	 dddZ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dd2            Zedd5            Zedd8            Zedd;            Zedd>            ZeddA            ZeddD            ZeddG            ZeddJ            ZeddM            ZeddP            ZeddS            ZeddV            ZeddY            Zedd\            Zedd_            Zeddb            Zedde            Zeddh            Zeddk            Zeddn            Zeddq            Zeddt            Zeddw            Zeddz            Zedd}            Zedd            Zedd            Zedd            Zedd            Zedd            Zej        dk     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j        dk    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j        dk    reddʄ            Zedd̄            Zej        dk    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j        dk    redd            Zedd            Zedd            Zedd            Zedd            Zedd            Zedd            Zedd            ZedӐd             ZedԐd            ZedՐd            Zed֐d            Zedאd	            ZdؐdZdِdZddZddZddZdڐdZdېdZddZddZddZddZddZddZedܐd            Zedݐd             Zdސd"Zdd#Zdd$Zdd%Zdd&Zdd'Z 	 dߐdd*Z!dd+Z"dd,Z#dd-Z$dd/Z%dd0Z&dd2Z'dd3Z(dd4Z)dd5Z*dd6Z+edd9            Z,edd;            Z,dd?Z,dd@Z-ddAZ.eddC            Z/eddE            Z/ddHZ/ddIZ0ddJZ1ddLZ2ddMZ3ddNZ4ddOZ5ddPZ6ddQZ7ddRZ8ddSZ9ej        dk     rddTZ:ddUZ;ddVZ<ddWZ=ddXZ>ddYZ?dd[Z@dd\ZAdd]ZBdd^ZCdd_ZDdd`ZEddaZFddbZGddcZHdddZIddeZJddfZKddgZLddhZMddiZNdÐdjZOdĐdkZPdŐdlZQdƐdmZRdǐdnZSeddp            ZTeddr            ZTddvZTddwZUddxZVddyZWej        dk    r>dːdzZXd̐d{ZYd͐d|ZZdΐd}Z[dϐd~Z\dАdZ]dѐdZ^dҐdZ_dӐdZ`dԐdZadS dS (  TreeRebuilderz1Rebuilds the _ast tree to become an Astroid tree.Nmanagerr   parser_moduleParserModule | Nonedata
str | NonereturnNonec                    || _         |r|                    d          nd | _        g | _        g | _        g | _        i | _        |t                      | _        d S || _        d S )N
)	_managersplit_data_global_names_import_from_nodes_delayed_assattr_visit_methsr   _parser_module)selfr4   r5   r7   s       E/var/www/piapp/venv/lib/python3.11/site-packages/astroid/rebuilder.py__init__zTreeRebuilder.__init__7   sp      )-7TZZ%%%4
BD:<8:VX "3"5"5D"/D    noder*   +tuple[T_Doc, ast.Constant | ast.Str | None]c                j   	 |j         rt          |j         d         t          j                  rr|j         d         j        }t          |t          j                  rFt          |j        t                    r,|}|j         dd         |_         |j        dk    rd|_        ||fS n# t          $ r Y nw xY w|dfS )zReturn the doc ast node.r      N)	body
isinstanceastExprvalueConstantstr
col_offset
IndexError)rE   rI   first_valuedoc_ast_nodes       rF   _get_doczTreeRebuilder._get_docI   s    	y .Z	!ch?? ."il0k3<88 	.Z%s> > 	. $/L $	!""DI $."4426/-- 	 	 	D	Tzs   BB! !
B.-B.Mast.Attribute | ast.List | ast.Name | ast.Subscript | ast.Starred | ast.Tupler   c                z    | j         j                            t          |j                  t
          j                  S N)rD   context_classesgettypectxr   LoadrE   rI   s     rF   _get_contextzTreeRebuilder._get_context\   s*     "266tDH~~w|TTTrH   5ast.ClassDef | ast.FunctionDef | ast.AsyncFunctionDefparent;nodes.ClassDef | nodes.FunctionDef | nodes.AsyncFunctionDefPosition | Nonec                   | j         sdS |j        }|j        r|j        d         j        }d                    | 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 ]N}|'|j        t
          j        k    r|j        |j        k    r n&|j        |v r|j        |k    r|}B|j        dv rLd}OdS 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   r<   rL   asyncdefclass>   rj   )linenorU   
end_linenoend_col_offset)r?   rm   rN   rl   jointokenNAMErO   r   AsyncFunctionDefFunctionDefr   r   readliner_   stringnamer   startend)	rE   rI   re   rm   r7   start_tokenkeyword_tokenssearch_tokents	            rF   _get_position_infoz TreeRebuilder._get_position_infoi   s~    z 	4_
9 	-1,JyyDK!Oj$@ABB(,+0:-fe455 	#"LL 122 	# LL"L $!899 	 	A'Fej((H	))v''8|++"#K8w&&KK4;!21!559"(+{QU1X-158	
 
 
 	
rH   newnodenodes.NodeNGc                z    d|_         d|_        |                                D ]}|                     |           dS )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)rm   rn   get_children_reset_end_lineno)rE   r~   
child_nodes      rF   r   zTreeRebuilder._reset_end_lineno   sP     "!%!..00 	/ 	/J"":....	/ 	/rH   r+   modnamerT   modpathpackageboolnodes.Modulec                ,                          |          \  }}t          j        |||g|                               fd|j        D                                  |                     t          rt          r                                S )zmVisit a Module node by returning a fresh instance of it.

        Note: Method not called by 'visit'
        )rv   filepathr   c                <    g | ]}                     |          S  visit.0childr~   rE   s     rF   
<listcomp>z.TreeRebuilder.visit_module.<locals>.<listcomp>   '    ???ETZZw''???rH   )doc_node)	rY   r   ModulepostinitrN   r   r   r   r   )rE   rI   r   r   r   rX   r~   s   `     @rF   visit_modulezTreeRebuilder.visit_module   s     "]]400l,	
 
 
 	?????TY???ZZg66 	 	
 	
 	
  	,t 	,""7+++rH   ast.argr   nodes.AssignNamec                    d S r\   r   rE   rI   re   s      rF   r   zTreeRebuilder.visit       LOCrH   ast.argumentsnodes.Argumentsc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit       QTQTrH   
ast.Assertnodes.Assertc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit       KN3rH   r.   nodes.AsyncFunctionDefc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   	     &)SrH   ast.AsyncFornodes.AsyncForc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit       ORsrH   	ast.Awaitnodes.Awaitc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit       ILrH   ast.AsyncWithnodes.AsyncWithc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   r   rH   
ast.Assignnodes.Assignc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   r   rH   ast.AnnAssignnodes.AnnAssignc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   r   rH   ast.AugAssignnodes.AugAssignc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   r   rH   	ast.BinOpnodes.BinOpc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   r   rH   
ast.BoolOpnodes.BoolOpc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   r   rH   	ast.Breaknodes.Breakc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   r   rH   ast.Call
nodes.Callc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit       GJsrH   r,   nodes.ClassDefc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   r   rH   ast.Continuenodes.Continuec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   r   rH   ast.Comparenodes.Comparec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit       MPSrH   ast.comprehensionnodes.Comprehensionc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit   	     #&#rH   
ast.Deletenodes.Deletec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.Dict
nodes.Dictc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.DictCompnodes.DictCompc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.Expr
nodes.Exprc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.ExceptHandlernodes.ExceptHandlerc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.For	nodes.Forc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit      EHSrH   ast.ImportFromnodes.ImportFromc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  s    SVSVrH   r-   nodes.FunctionDefc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit      UXUXrH   ast.GeneratorExpnodes.GeneratorExpc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  s	     "%rH   ast.Attributenodes.Attributec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit$  r   rH   
ast.Globalnodes.Globalc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit'  r   rH   ast.Ifnodes.Ifc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit*  s    CF3rH   	ast.IfExpnodes.IfExpc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit-  r   rH   
ast.Importnodes.Importc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit0  r   rH   ast.JoinedStrnodes.JoinedStrc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit3  r   rH   ast.FormattedValuenodes.FormattedValuec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit6  	     $'3rH   ast.NamedExprnodes.NamedExprc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit;  r   rH   )   	   ast.ExtSlicenodes.Subscriptnodes.Tuplec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit@  s	     "crH   	ast.Indexc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitE  r   rH   ast.keywordnodes.Keywordc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitH  r   rH   
ast.Lambdanodes.Lambdac                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitK  r   rH   ast.List
nodes.Listc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitN  r   rH   ast.ListCompnodes.ListCompc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitQ  r   rH   ast.Name;nodes.Name | nodes.Const | nodes.AssignName | nodes.DelNamec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitT  s     KN#rH   ast.Nonlocalnodes.Nonlocalc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitY  r   rH   ast.Constantnodes.Constc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit\  r   rH   )r     ast.ParamSpecnodes.ParamSpecc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visita  r   rH   ast.Pass
nodes.Passc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitd  r   rH   	ast.Raisenodes.Raisec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitg  r   rH   
ast.Returnnodes.Returnc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitj  r   rH   ast.Set	nodes.Setc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitm  r   rH   ast.SetCompnodes.SetCompc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitp  r   rH   	ast.Slicenodes.Slicec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visits  s    RURUrH   ast.Subscriptc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visitv  r   rH   ast.Starrednodes.Starredc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visity  r   rH   ast.Try	nodes.Tryc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit|  r   rH   )r     ast.TryStarnodes.TryStarc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   	ast.Tuplec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.TypeAliasnodes.TypeAliasc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.TypeVarnodes.TypeVarc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.TypeVarTuplenodes.TypeVarTuplec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.UnaryOpnodes.UnaryOpc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   	ast.Whilenodes.Whilec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.With
nodes.Withc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   	ast.Yieldnodes.Yieldc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.YieldFromnodes.YieldFromc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   )r  
   	ast.Matchnodes.Matchc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.match_casenodes.MatchCasec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.MatchValuenodes.MatchValuec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r  rH   ast.MatchSingletonnodes.MatchSingletonc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  s	     (+srH   ast.MatchSequencenodes.MatchSequencec                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  s	     '*crH   ast.MatchMappingnodes.MatchMappingc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.MatchClassnodes.MatchClassc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r  rH   ast.MatchStarnodes.MatchStarc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.MatchAsnodes.MatchAsc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.MatchOrnodes.MatchOrc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.patternnodes.Patternc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  r   rH   ast.ASTc                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  s    BE#rH   c                    d S r\   r   r   s      rF   r   zTreeRebuilder.visit  s    =@SrH   ast.AST | NoneNodeNG | Nonec                    |d S |j         }|| j        v r| j        |         }nQ|j        }dt                              ||                                          z   }t          | |          }|| j        |<    |||          S )Nvisit_)	__class__rC   __name__r)   r^   lowergetattr)rE   rI   re   clsvisit_methodcls_name
visit_names          rF   r   zTreeRebuilder.visit  s    <4n$###,S1LL|H!HLL8$D$D$J$J$L$LLJ"444L%1Dc"|D&)))rH    nodes.AssignName | nodes.DelNamec                    | j         rC|j        | j         d         v r/|                                                    |j        |           dS |j        sJ |j        sJ |j                            |j        |           dS )zASave assignment situation since node.parent is not available yet.rM   N)r@   rv   root	set_localre   rb   s     rF   _save_assignmentzTreeRebuilder._save_assignment  s     	3$)t/A"/E"E"EIIKK!!$)T22222;9K!!$)T22222rH   c                :    |                      |||j                  S )z8Visit an arg node by returning a fresh AssName instance.)visit_assignnameargr   s      rF   	visit_argzTreeRebuilder.visit_arg  s    $$T648<<<rH   c                4    d}d}|j         }|j        }t          j        |j         r|j         j        nd|j        r|j        j        nd||r.t          |j        |j        |j        ||j        |j	                  nd|r.t          |j        |j        |j        ||j        |j	                  nd           fd|j
        D             } fd|j        D             }d}	d}
|j         r,|j         j        }                     |j         j                  }	|j        r,|j        j        }                     |j        j                  }
t          r3|j        D ]+}|j        "|j        j        |_        |j        j	        |_	        , fd|j        D             } fd|j        D             } fd|j
        D             } fd|j        D             } fd	|j        D             } fd
|j        D             } fd|j
        D             } fd|j        D             } fd|j        D             }                    |||||||||	|
|||           j        sJ |rj                            |           |rj                            |           S )z<Visit an Arguments node by returning a fresh instance of it.N)rm   rn   c                <    g | ]}                     |          S r   r   r   s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s'    BBBu

5'**BBBrH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s'    JJJ5DJJug..JJJrH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>)  s'    NNNUdjj00NNNrH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>*  '    PPPetzz%11PPPrH   c                F    g | ]}                     |j                  S r   r   
annotationr   r  r~   rE   s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>+  s)    PPPstzz#.'::PPPrH   c                F    g | ]}                     |j                  S r   r  r  s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>,  s6     "
 "
 "
47DJJs~w//"
 "
 "
rH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>0  r  rH   c                F    g | ]}                     |j                  S r   r  r  s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>1  s6     #
 #
 #
47DJJs~w//#
 #
 #
rH   c                >    g | ]}                     |           S re   check_type_commentr   s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>4  s9     
 
 
?DD##E'#::
 
 
rH   c                >    g | ]}                     |           S r  r  r   s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>7  s9     #
 #
 #
?DD##E'#::#
 #
 #
rH   c                >    g | ]}                     |           S r  r  r   s     rF   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>:  s9     $
 $
 $
?DD##E'#::$
 $
 $
rH   )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   rl   rU   rm   rn   r  r  r   r  r   r  r  r  r   re   r  )rE   rI   re   r  r  vararg_node
kwarg_noder  r  r  r  r  r  r  r   r  r  r  r  r  r  r~   s   `                    @rF   visit_argumentszTreeRebuilder.visit_arguments  s   ! kZ
/#{4DKOO"j2DJNNd 	
O&**5#.#=     	
N%))4#-#<    5
 
: CBBBB	BBBJJJJJDMJJJ*.)-; 	K[_F#zz$+*@'JJ: 	IJNE"jj)>HHO 	G  G G>-%(^%>CN),)FC&NNNNNdoNNN
PPPPPt?OPPPPPPPPdiPPP"
 "
 "
 "
 "
;??"
 "
 "
 QPPPPt?OPPP#
 #
 #
 #
 #
;?;K#
 #
 #

 
 
 
 
HL	
 
 
#
 #
 #
 #
 #
HL#
 #
 #
$
 $
 $
 $
 $
HLHX$
 $
 $
  	!####9$;-+/$;%= 	 	
 	
 	
  ~ 	6N$$VW555 	5N$$UG444rH   c                   t          j        |j        |j        |j        |j        |          }d}|j        r|                     |j        |          }|                    |                     |j	        |          |           |S )z8Visit a Assert node by returning a fresh instance of it.rl   rU   rm   rn   re   N)
r   Assertrl   rU   rm   rn   msgr   r   test)rE   rI   re   r~   r  s        rF   visit_assertzTreeRebuilder.visit_assertU  s    ,;.
 
 
 "8 	0**TXw//CDIw77===rH   Hast.Assign | ast.arg | ast.For | ast.AsyncFor | ast.With | ast.AsyncWithZnodes.Assign | nodes.Arguments | nodes.For | nodes.AsyncFor | nodes.With | nodes.AsyncWithc                   |j         sd S 	 | j                            |j                   }n# t          $ r Y d S w xY w|j        sd S |                     |j        d         |          }t          |t          j                  sd S |j	        S )Nr   r  )
type_commentrD   parseSyntaxErrorrN   r   rO   r   rQ   rR   )rE   rI   re   type_comment_asttype_objects        rF   r  z TreeRebuilder.check_type_commentd  s       	4	#2889JKK 	 	 	44	  $ 	4jj!1!6q!9&jII+uz22 	4  s   + 
99&ast.FunctionDef | ast.AsyncFunctionDef)tuple[NodeNG | None, list[NodeNG]] | Nonec                     |j         sd S 	 t          |j                   }n# t          $ r Y d S w xY w|sd S d } fd|j        pg D             }|j        r                     |j                  }||fS )Nc                <    g | ]}                     |          S r   r   )r   elemre   rE   s     rF   r   z=TreeRebuilder.check_function_type_comment.<locals>.<listcomp>  s4     "
 "
 "
)-DJJtV$$"
 "
 "
rH   )r  r   r  argtypesreturnsr   )rE   rI   re   r  r  r  s   ` `   rF   check_function_type_commentz)TreeRebuilder.check_function_type_comment  s       	4	:4;LMM 	 	 	44	   	4!%"
 "
 "
 "
 "
2B2K2Qr"
 "
 "
 # 	Cjj!1!96BBG  s   " 
00c                D    |                      t          j        ||          S r\   )_visit_functiondefr   rr   r   s      rF   visit_asyncfunctiondefz$TreeRebuilder.visit_asyncfunctiondef  s     &&u'=tVLLLrH   c                D    |                      t          j        ||          S r\   )
_visit_forr   AsyncForr   s      rF   visit_asyncforzTreeRebuilder.visit_asyncfor  s    u~tV<<<rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |                     |S Nr  )rR   )	r   Awaitrl   rU   rm   rn   r   r   rR   rE   rI   re   r~   s       rF   visit_awaitzTreeRebuilder.visit_await  s^    +;.
 
 
 	tzz$*g>>???rH   c                D    |                      t          j        ||          S r\   )_visit_withr   	AsyncWithr   s      rF   visit_asyncwithzTreeRebuilder.visit_asyncwith  s    v>>>rH   c                    t          j        |j        |j        |j        |j        |                               |          }                     fd|j        D              	                    |j
                  |           S )z8Visit a Assign node by returning a fresh instance of it.r  r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z.TreeRebuilder.visit_assign.<locals>.<listcomp>  s'    JJJETZZw//JJJrH   )targetsrR   type_annotation)r   Assignrl   rU   rm   rn   r  r   r  r   rR   )rE   rI   re   r  r~   s   `   @rF   visit_assignzTreeRebuilder.visit_assign  s    ,;.
 
 
 11$w1GGJJJJJT\JJJ**TZ11+ 	 	
 	
 	

 rH   c           	     2   t          j        |j        |j        |j        |j        |          }|                    |                     |j        |          |                     |j	        |          |j
        |                     |j        |                     |S )z<Visit an AnnAssign node by returning a fresh instance of it.r  )targetr  simplerR   )r   	AnnAssignrl   rU   rm   rn   r   r   r  r  r  rR   r  s       rF   visit_annassignzTreeRebuilder.visit_annassign  s    /;.
 
 
 	::dk733zz$/7;;;**TZ11	 	 	
 	
 	
 rH   	node_namec                    d S r\   r   rE   rI   re   r  s       rF   r  zTreeRebuilder.visit_assignname  s	     3rH   c                    d S r\   r   r  s       rF   r  zTreeRebuilder.visit_assignname  s	     srH   nodes.AssignName | Nonec                    |dS t          j        ||j        |j        |j        |j        |          }|                     |           |S )z_Visit a node and return a AssignName node.

        Note: Method not called by 'visit'
        Nrv   rl   rU   rm   rn   re   )r   r   rl   rU   rm   rn   r  )rE   rI   re   r  r~   s        rF   r  zTreeRebuilder.visit_assignname  s\     4";.
 
 
 	g&&&rH   c                <   t          j        | j        j        t	          |j                           dz   |j        |j        |j        |j	        |          }|
                    |                     |j        |          |                     |j        |                     |S )z;Visit a AugAssign node by returning a fresh instance of it.=oprl   rU   rm   rn   re   )r   	AugAssignrD   bin_op_classesr_   r  rl   rU   rm   rn   r   r   r  rR   r  s       rF   visit_augassignzTreeRebuilder.visit_augassign  s    /"1$tw--@3F;.
 
 
 	JJt{G,,djjW.M.M	
 	
 	
 rH   c                6   t          j        | j        j        t	          |j                           |j        |j        |j        |j	        |          }|
                    |                     |j        |          |                     |j        |                     |S )z7Visit a BinOp node by returning a fresh instance of it.r  )r   BinOprD   r  r_   r  rl   rU   rm   rn   r   r   leftrightr  s       rF   visit_binopzTreeRebuilder.visit_binop  s    +"1$tw--@;.
 
 
 	JJty'**DJJtz7,K,K	
 	
 	
 rH   c                     t          j         j        j        t	          |j                           |j        |j        |j        |j	        |          
                     fd|j        D                        S )z8Visit a BoolOp node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z.TreeRebuilder.visit_boolop.<locals>.<listcomp>  '    NNN$**UG44NNNrH   )r   BoolOprD   bool_op_classesr_   r  rl   rU   rm   rn   r   valuesr  s   `  @rF   visit_boolopzTreeRebuilder.visit_boolop  s}    ,"24==A;.
 
 
 	NNNNN$+NNNOOOrH   c                \    t          j        |j        |j        |j        |j        |          S )z7Visit a Break node by returning a fresh instance of it.r  )r   Breakrl   rU   rm   rn   r   s      rF   visit_breakzTreeRebuilder.visit_break  s3    {;.
 
 
 	
rH   c                    t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D              fd|j
        D                        S )z:Visit a CallFunc node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z,TreeRebuilder.visit_call.<locals>.<listcomp>2  '    DDD$**UG,,DDDrH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z,TreeRebuilder.visit_call.<locals>.<listcomp>3  '    LLLUdjj00LLLrH   )funcr  keywords)r   Callrl   rU   rm   rn   r   r   r  r  r  r  s   `  @rF   
visit_callzTreeRebuilder.visit_call'  s    *;.
 
 
 	DIw//DDDDD$)DDDLLLLLdmLLL 	 	
 	
 	

 rH   Tnewstylec                b                          |          \  }}t          j        |j        |j        |j        |j        |j        |          d}|j        D ]*}|j	        dk    r 
                    |          j        } n+                     |          }                     fd|j        D              fd|j        D             ||| fd|j        D                                  |           
                    |          t"          r fd|j        D             ng 	  	         S )	z(Visit a ClassDef node to become astroid.r  N	metaclassc                <    g | ]}                     |          S r   r   r   s     rF   r   z0TreeRebuilder.visit_classdef.<locals>.<listcomp>K  s'    @@@ETZZw''@@@rH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z0TreeRebuilder.visit_classdef.<locals>.<listcomp>L  r   rH   c                R    g | ]#}|j         d k                        |          $S )r  )r  r   )r   kwdr~   rE   s     rF   r   z0TreeRebuilder.visit_classdef.<locals>.<listcomp>P  s>       7k)) 

3(()))rH   c                <    g | ]}                     |          S r   r   r   paramr~   rE   s     rF   r   z0TreeRebuilder.visit_classdef.<locals>.<listcomp>X  '    JJJE7++JJJrH   )positionr   type_params)rY   r   ClassDefrv   rl   rU   rm   rn   r  r  r   rR   visit_decoratorsr   basesrN   r}   r   r'  )	rE   rI   re   r  rX   r  r'   
decoratorsr~   s	   `       @rF   visit_classdefzTreeRebuilder.visit_classdef7  s    "]]400l.;.
 
 
 	} 	 	G{k)) JJw88>	 * **499
@@@@@TZ@@@?????TY???    =  
 ,,T7;;ZZg66 JJJJJ9IJJJJ! 	 	
 	
 	
& rH   c                \    t          j        |j        |j        |j        |j        |          S )z:Visit a Continue node by returning a fresh instance of it.r  )r   Continuerl   rU   rm   rn   r   s      rF   visit_continuezTreeRebuilder.visit_continue_  s3    ~;.
 
 
 	
rH   c                    t          j        |j        |j        |j        |j        |                                                   |j                   fdt          |j
        |j                  D                        S )z9Visit a Compare node by returning a fresh instance of it.r  c                p    g | ]2\  }}j         j        |j                                     |          f3S r   )rD   cmp_op_classesr  r   )r   r  exprr~   rE   s      rF   r   z/TreeRebuilder.visit_compare.<locals>.<listcomp>t  sR       
 R '6r|DJJtW--  rH   )r   Comparerl   rU   rm   rn   r   r   r  zipopscomparatorsr  s   `  @rF   visit_comparezTreeRebuilder.visit_comparei  s    -;.
 
 
 	JJty'**    
 #&dh0@"A"A  		
 		
 		
 rH   c                    t          j        |dddd                                                   |j                                       |j                   fd|j        D             t          |j                             S )z?Visit a Comprehension node by returning a fresh instance of it.N)re   rl   rU   rm   rn   c                <    g | ]}                     |          S r   r   r   s     rF   r   z5TreeRebuilder.visit_comprehension.<locals>.<listcomp>  s'    >>>ETZZw''>>>rH   )	r   r   r   r   r  iterifsr   is_asyncr  s   `  @rF   visit_comprehensionz!TreeRebuilder.visit_comprehension~  s     % 
 
 
 	JJt{G,,JJty'**>>>>>TX>>>		
 	
 	
 rH   nodes.Decorators | Nonec                    |j         sdS |j         d         j        }|j         d         j        }|j         d         j        }t	          j        ||j        |||                               fd|j         D                        S )zqVisit a Decorators node by returning a fresh instance of it.

        Note: Method not called by 'visit'
        Nr   rM   r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z2TreeRebuilder.visit_decorators.<locals>.<listcomp>  s'    VVV$**UG44VVVrH   )decorator_listrl   rm   rn   r   
DecoratorsrU   r   )rE   rI   re   rl   rm   rn   r~   s   `     @rF   r)  zTreeRebuilder.visit_decorators  s     " 	4
 $Q'.(,7
,R0?"!)
 
 
 	VVVVV$BUVVVWWWrH   c                     t          j        |j        |j        |j        |j        |                               fd|j        D                        S )z8Visit a Delete node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z.TreeRebuilder.visit_delete.<locals>.<listcomp>  s'    OOO$**UG44OOOrH   )r   Deleterl   rU   rm   rn   r   r  r  s   `  @rF   visit_deletezTreeRebuilder.visit_delete  sg    ,;.
 
 
 	OOOOO$,OOOPPPrH   ,Generator[tuple[NodeNG, NodeNG], None, None]c              #    K   t          |j        |j                  D ]g\  }}|                     ||          }|s.t	          j        |j        |j        |j        |j	        |          }n|                     ||          }||fV  hd S Nr  )
r5  keysr  r   r   
DictUnpackrl   rU   rm   rn   )rE   rI   re   r~   keyrR   rebuilt_valuerebuilt_keys           rF   _visit_dict_itemszTreeRebuilder._visit_dict_items  s       di55 	- 	-JC JJug66M 
7#.(/,7,7#0#?!   #jjg66},,,,,	- 	-rH   c                    t          j        |j        |j        |j        |j        |          }t          |                     |||                    }|                    |           |S )z6Visit a Dict node by returning a fresh instance of it.r  )	r   Dictrl   rU   rm   rn   listrP  r   )rE   rI   re   r~   itemss        rF   
visit_dictzTreeRebuilder.visit_dict  su    *;.
 
 
 @D""499@
 @
 	rH   c                    t          j        |j        |j        |j        |j        |                                                   |j                                       |j	                   fd|j
        D                        S )z:Visit a DictComp node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z0TreeRebuilder.visit_dictcomp.<locals>.<listcomp>  '    EEEETZZw''EEErH   )r   DictComprl   rU   rm   rn   r   r   rM  rR   
generatorsr  s   `  @rF   visit_dictcompzTreeRebuilder.visit_dictcomp  s    .;.
 
 
 	JJtx))JJtz7++EEEEET_EEE	
 	
 	

 rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |                     |S )z6Visit a Expr node by returning a fresh instance of it.r  )	r   rQ   rl   rU   rm   rn   r   r   rR   r  s       rF   
visit_exprzTreeRebuilder.visit_expr  s[    *;.
 
 
 	DJ88999rH   c                    t          j        |j        |j        |j        |j        |                                                   |j                   	                    ||j
                   fd|j        D                        S )z@Visit an ExceptHandler node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z5TreeRebuilder.visit_excepthandler.<locals>.<listcomp>  r   rH   )r   r   rl   rU   rm   rn   r   r   r_   r  rv   rN   r  s   `  @rF   visit_excepthandlerz!TreeRebuilder.visit_excepthandler  s     %;.
 
 
 	JJty'**!!$;;?????TY???	
 	
 	

 rH   r  type[nodes.For]c                    d S r\   r   rE   r  rI   re   s       rF   r  zTreeRebuilder._visit_for  s	     CrH   type[nodes.AsyncFor]c                    d S r\   r   rc  s       rF   r  zTreeRebuilder._visit_for  s	     rH   type[_ForT]ast.For | ast.AsyncForr0   c                    |j         }t          rPt          sIt          |t          j                  r/ j        r( j        |j        dz
                               d          } ||j        ||j	        |j
        |                               |          }                                         |j                                       |j                   fd|j        D              fd|j        D             |           S )z5Visit a For node by returning a fresh instance of it.rL   ri   r  r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z,TreeRebuilder._visit_for.<locals>.<listcomp>*  r  rH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z,TreeRebuilder._visit_for.<locals>.<listcomp>+  '    HHH5DJJug..HHHrH   )r  r;  rN   orelser  )rU   r   r   rO   rP   r  r?   rl   indexrm   rn   r  r   r   r  r;  rN   rl  )rE   r  rI   re   rU   r  r~   s   `     @rF   r  zTreeRebuilder._visit_for  s'    _
 	D9 	DD#,)G)G 	DDJ 	DDK!O4::7CCJ#;!.
 
 
 11$w1GG::dk733DIw//DDDDD$)DDDHHHHHDKHHH+ 	 	
 	
 	
 rH   c                D    |                      t          j        ||          S r\   )r  r   Forr   s      rF   	visit_forzTreeRebuilder.visit_for0  s    uy$777rH   c           
         d |j         D             }t          j        |j        pd||j        pd|j        |j        |j        |j        |          }| j	        
                    |           |S )z=Visit an ImportFrom node by returning a fresh instance of it.c                *    g | ]}|j         |j        fS r   rv   asnamer   aliass     rF   r   z2TreeRebuilder.visit_importfrom.<locals>.<listcomp>7  !    DDD%*el+DDDrH    N)fromnamenameslevelrl   rU   rm   rn   re   )rz  r   
ImportFrommoduler{  rl   rU   rm   rn   rA   append)rE   rI   re   rz  r~   s        rF   visit_importfromzTreeRebuilder.visit_importfrom3  s~     EDDDD"[&B*$;.	
 	
 	
 	&&w///rH   type[nodes.FunctionDef]c                    d S r\   r   rc  s       rF   r  z TreeRebuilder._visit_functiondefF  s	      CrH   type[nodes.AsyncFunctionDef]c                    d S r\   r   rc  s       rF   r  z TreeRebuilder._visit_functiondefK  s	     "%rH   type[_FunctionT]r/   c                     j                             i                                 |          \  }}|j        }|j        r|j        d         j        } ||j        ||j        |j        |j        |           	                    |          }|j
        r                     |j
                  }nd}dx}}	                     |          }
|
r|
\  }	}                                         |j                   fd|j        D             |||	|                     |                               |          t"          r fd|j        D             ng 	  	          j                                          S )z,Visit an FunctionDef node to become astroid.r   r  Nc                <    g | ]}                     |          S r   r   r   s     rF   r   z4TreeRebuilder._visit_functiondef.<locals>.<listcomp>}  r  rH   c                <    g | ]}                     |          S r   r   r#  s     rF   r   z4TreeRebuilder._visit_functiondef.<locals>.<listcomp>  r%  rH   )	r  rN   r+  r  type_comment_returnsr  r&  r   r'  )r@   r~  rY   rl   rB  rv   rU   rm   rn   r)  r  r   r  r   r  rN   r}   r   r'  pop)rE   r  rI   re   rX   rl   r+  r  r  r  type_comment_annotationr~   s   `          @rF   r  z TreeRebuilder._visit_functiondefS  s    	!!"%%%!]]400l 	3 (+2F#.
 
 
 **499
< 	jjw77GGG3770"&"B"B4"Q"Q" 	N6M3 "3DIw//DDDDD$)DDD!!5/,,T7;;ZZg66 JJJJJ9IJJJJ 	 	
 	
 	
 	   rH   c                D    |                      t          j        ||          S r\   )r  r   rs   r   s      rF   visit_functiondefzTreeRebuilder.visit_functiondef  s     &&u'8$GGGrH   c                     t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D                        S )z>Visit a GeneratorExp node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z4TreeRebuilder.visit_generatorexp.<locals>.<listcomp>  rX  rH   )
r   GeneratorExprl   rU   rm   rn   r   r   eltrZ  r  s   `  @rF   visit_generatorexpz TreeRebuilder.visit_generatorexp  s     $;.
 
 
 	JJtx))EEEEET_EEE	
 	
 	
 rH   2nodes.Attribute | nodes.AssignAttr | nodes.DelAttrc                j   |                      |          }|t          j        k    r4t          j        |j        |j        |j        |j        |j	        |          }n|t          j
        k    rht          j        |j        |j        |j        |j        |j	        |          }t          |t          j                  s| j                            |           n3t          j        |j        |j        |j        |j        |j	        |          }|                    |                     |j        |                     |S )z<Visit an Attribute node by returning a fresh instance of it.)attrnamerl   rU   rm   rn   re   )rc   r   Delr   DelAttrattrrl   rU   rm   rn   Store
AssignAttrrO   r   rB   r~  	Attributer   r   rR   rE   rI   re   contextr~   s        rF   visit_attributezTreeRebuilder.visit_attribute  s-    ##D))gk!! m{??#2  GG %%&{??#2  G fe&9:: 6 %,,W555o{??#2  G 	DJ88999rH   c                    t          j        |j        |j        |j        |j        |j        |          }| j        r>|j        D ]6}| j        d                             |g           	                    |           7|S )z&Visit a Global node to become astroid.rz  rl   rU   rm   rn   re   rM   )
r   Globalrz  rl   rU   rm   rn   r@   
setdefaultr~  )rE   rI   re   r~   rv   s        rF   visit_globalzTreeRebuilder.visit_global  s    ,*;.
 
 
  	L
 L L"2&11$;;BB7KKKKrH   c                    t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D              fd|j
        D                        S )z5Visit an If node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z*TreeRebuilder.visit_if.<locals>.<listcomp>  r   rH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z*TreeRebuilder.visit_if.<locals>.<listcomp>  '    AAAETZZw''AAArH   )r   Ifrl   rU   rm   rn   r   r   r  rN   rl  r  s   `  @rF   visit_ifzTreeRebuilder.visit_if  s    (;.
 
 
 	JJty'**?????TY???AAAAAT[AAA	
 	
 	

 rH   c                $   t          j        |j        |j        |j        |j        |          }|                    |                     |j        |          |                     |j	        |          |                     |j
        |                     |S )z7Visit a IfExp node by returning a fresh instance of it.r  )r   IfExprl   rU   rm   rn   r   r   r  rN   rl  r  s       rF   visit_ifexpzTreeRebuilder.visit_ifexp  s    +;.
 
 
 	JJty'**JJty'**JJt{G,,	
 	
 	

 rH   c                   d |j         D             }t          j        ||j        |j        |j        |j        |          }|j         D ]8\  }}|p|}|                    |                    d          d         |           9|S )z8Visit a Import node by returning a fresh instance of it.c                *    g | ]}|j         |j        fS r   rs  ru  s     rF   r   z.TreeRebuilder.visit_import.<locals>.<listcomp>   rw  rH   r  .r   )	rz  r   Importrl   rU   rm   rn   r  r>   )rE   rI   re   rz  r~   rv   rt  s          rF   visit_importzTreeRebuilder.visit_import  s    DDDDD,;.
 
 
 $M 	: 	:LD&>TDTZZ__Q/9999rH   c                     t          j        |j        |j        |j        |j        |                               fd|j        D                        S )Nr  c                <    g | ]}                     |          S r   r   r   s     rF   r   z1TreeRebuilder.visit_joinedstr.<locals>.<listcomp>  r
  rH   )r   	JoinedStrrl   rU   rm   rn   r   r  r  s   `  @rF   visit_joinedstrzTreeRebuilder.visit_joinedstr  sg    /;.
 
 
 	NNNNN$+NNNOOOrH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |          |j	        |                     |j
        |                     |S )Nr  )rR   
conversionformat_spec)r   FormattedValuerl   rU   rm   rn   r   r   rR   r  r  r  s       rF   visit_formattedvaluez"TreeRebuilder.visit_formattedvalue  s     &;.
 
 
 	**TZ11

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

 rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |          |                     |j	        |                     |S rJ  )
r   	NamedExprrl   rU   rm   rn   r   r   r  rR   r  s       rF   visit_namedexprzTreeRebuilder.visit_namedexpr+  sv    /;.
 
 
 	JJt{G,,djjW.M.M	
 	
 	
 rH   c                     t          j        t          j        |                               fd|j        D                        S )z>Visit an ExtSlice node by returning a fresh instance of Tuple.)r`   re   c                <    g | ]}                     |          S r   r   )r   dimr~   rE   s     rF   r   z0TreeRebuilder.visit_extslice.<locals>.<listcomp>@  s'    LLL3djjg66LLLrH   )r   Tupler   ra   r   dimsr  s   `  @rF   visit_extslicezTreeRebuilder.visit_extslice:  sO    
 kgl6BBBGLLLLL$)LLLMMMNrH   c                8    |                      |j        |          S )z;Visit a Index node by returning a fresh instance of NodeNG.)r   rR   r   s      rF   visit_indexzTreeRebuilder.visit_indexC  s    ::dj&111rH   c                   t          j        |j        t          |dd          t          |dd          t          |dd          t          |dd          |          }|                    |                     |j        |                     |S )z9Visit a Keyword node by returning a fresh instance of it.rl   NrU   rm   rn   )r  rl   rU   rm   rn   re   )r   r    r  r  r   r   rR   r  s       rF   visit_keywordzTreeRebuilder.visit_keywordG  s    -4400t\488t\488"4)94@@
 
 
 	DJ88999rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |          |                     |j	        |                     |S )z8Visit a Lambda node by returning a fresh instance of it.r  )
r   Lambdarl   rU   rm   rn   r   r   r  rN   r  s       rF   visit_lambdazTreeRebuilder.visit_lambdaU  sm    ,;.
 
 
 	DIw77DIw9W9WXXXrH   c                                           |          }t          j        ||j        |j        |j        |j        |                               fd|j        D                        S )z6Visit a List node by returning a fresh instance of it.r`   rl   rU   rm   rn   re   c                <    g | ]}                     |          S r   r   r   s     rF   r   z,TreeRebuilder.visit_list.<locals>.<listcomp>l  '    LLL$**UG44LLLrH   )	rc   r   Listrl   rU   rm   rn   r   eltsr  s   `   @rF   
visit_listzTreeRebuilder.visit_lista  s}    ##D))*;.
 
 
 	LLLLL$)LLLMMMrH   c                     t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D                        S )z:Visit a ListComp node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z0TreeRebuilder.visit_listcomp.<locals>.<listcomp>z  rX  rH   )
r   ListComprl   rU   rm   rn   r   r   r  rZ  r  s   `  @rF   visit_listcompzTreeRebuilder.visit_listcompo  s    .;.
 
 
 	JJtx))EEEEET_EEE	
 	
 	
 rH   -nodes.Name | nodes.AssignName | nodes.DelNamec                f   |                      |          }|t          j        k    r4t          j        |j        |j        |j        |j        |j	        |          }nw|t          j
        k    r4t          j        |j        |j        |j        |j        |j	        |          }n3t          j        |j        |j        |j        |j        |j	        |          }|t          j        t          j
        fv rFt          t          t          j        t          j        f         |          }|                     |           |S )z6Visit a Name node by returning a fresh instance of it.r  )rc   r   r  r   DelNameidrl   rU   rm   rn   r  r   Namer   r   r  r  s        rF   r  zTreeRebuilder.visit_name~  s     ##D))gk!!mW{??#2  GG %%&W{??#2  GG jW{??#2  G w{GM2225!15=!@A7KKG!!'***rH   c                h    t          j        |j        |j        |j        |j        |j        |          S )z6Visit a Nonlocal node and return a new instance of it.r  )r   Nonlocalrz  rl   rU   rm   rn   r   s      rF   visit_nonlocalzTreeRebuilder.visit_nonlocal  s8    ~*;.
 
 
 	
rH   c           	     t    t          j        |j        |j        |j        |j        |j        |j        |          S )z=Visit a Constant node by returning a fresh instance of Const.)rR   kindrl   rU   rm   rn   re   )r   ConstrR   r  rl   rU   rm   rn   r   s      rF   visit_constantzTreeRebuilder.visit_constant  s=    {*;.
 
 
 	
rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |||j                             |S )z;Visit a ParamSpec node by returning a fresh instance of it.r  rv   )	r   	ParamSpecrl   rU   rm   rn   r   r  rv   r  s       rF   visit_paramspeczTreeRebuilder.visit_paramspec  sb    /;.
 
 
 	d33D'49MMNNNrH   c                \    t          j        |j        |j        |j        |j        |          S )z6Visit a Pass node by returning a fresh instance of it.r  )r   Passrl   rU   rm   rn   r   s      rF   
visit_passzTreeRebuilder.visit_pass  s3    z;.
 
 
 	
rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |          |                     |j	        |                     |S )z7Visit a Raise node by returning a fresh instance of it.r  )exccause)
r   Raiserl   rU   rm   rn   r   r   r  r  r  s       rF   visit_raisezTreeRebuilder.visit_raise  s|    +;.
 
 
 	

48W--**TZ11 	 	
 	
 	
 rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |                     |S )z8Visit a Return node by returning a fresh instance of it.r  )	r   Returnrl   rU   rm   rn   r   r   rR   r  s       rF   visit_returnzTreeRebuilder.visit_return  s[    ,;.
 
 
 	DJ88999rH   c                     t          j        |j        |j        |j        |j        |                               fd|j        D                        S )z5Visit a Set node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z+TreeRebuilder.visit_set.<locals>.<listcomp>  r  rH   )r   Setrl   rU   rm   rn   r   r  r  s   `  @rF   	visit_setzTreeRebuilder.visit_set  sg    );.
 
 
 	LLLLL$)LLLMMMrH   c                     t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D                        S )z9Visit a SetComp node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z/TreeRebuilder.visit_setcomp.<locals>.<listcomp>  rX  rH   )
r   SetComprl   rU   rm   rn   r   r   r  rZ  r  s   `  @rF   visit_setcompzTreeRebuilder.visit_setcomp  s    -;.
 
 
 	JJtx))EEEEET_EEE	
 	
 	
 rH   c           
     v   t          j        t          |dd          t          |dd          t          |dd          t          |dd          |          }|                    |                     |j        |          |                     |j        |          |                     |j        |                     |S )z7Visit a Slice node by returning a fresh instance of it.rl   NrU   rm   rn   r  )r  upperstep)r   Slicer  r   r   r  r  r  r  s       rF   visit_slicezTreeRebuilder.visit_slice  s    +4400t\488t\488"4)94@@
 
 
 	**TZ11**TZ11DIw// 	 	
 	
 	

 rH   c                   |                      |          }t          j        ||j        |j        |j        |j        |          }|                    |                     |j	        |          |                     |j
        |                     |S )z;Visit a Subscript node by returning a fresh instance of it.r  )rc   r   	Subscriptrl   rU   rm   rn   r   r   rR   slicer  s        rF   visit_subscriptzTreeRebuilder.visit_subscript  s    ##D))/;.
 
 
 	JJtz7++TZZ
G-L-L	
 	
 	
 rH   c                    |                      |          }t          j        ||j        |j        |j        |j        |          }|                    |                     |j	        |                     |S )z5Visit a Starred node and return a new instance of it.r  )
rc   r   Starredrl   rU   rm   rn   r   r   rR   r  s        rF   visit_starredzTreeRebuilder.visit_starred,  sq    ##D))-;.
 
 
 	DJ88999rH   c                &    t          j        |j        |j        |j        |j        |                               fd|j        D              fd|j        D              fd|j	        D              fd|j
        D                        S )z4Visit a Try node by returning a fresh instance of itr  c                <    g | ]}                     |          S r   r   r   s     rF   r   z+TreeRebuilder.visit_try.<locals>.<listcomp>D  r  rH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z+TreeRebuilder.visit_try.<locals>.<listcomp>E  r  rH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z+TreeRebuilder.visit_try.<locals>.<listcomp>F  rk  rH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z+TreeRebuilder.visit_try.<locals>.<listcomp>G  s'    NNNetzz%11NNNrH   rN   handlersrl  	finalbody)r   Tryrl   rU   rm   rn   r   rN   r
  rl  r  r  s   `  @rF   	visit_tryzTreeRebuilder.visit_try:  s    );.
 
 
 	DDDDD$)DDDLLLLLdmLLLHHHHHDKHHHNNNNNt~NNN	 	 	
 	
 	
 rH   c                &    t          j        |j        |j        |j        |j        |                               fd|j        D              fd|j        D              fd|j	        D              fd|j
        D                        S )Nr  c                <    g | ]}                     |          S r   r   r   nr~   rE   s     rF   r   z/TreeRebuilder.visit_trystar.<locals>.<listcomp>T  s'    <<<Q$**Q((<<<rH   c                <    g | ]}                     |          S r   r   r  s     rF   r   z/TreeRebuilder.visit_trystar.<locals>.<listcomp>U  s'    DDDdjjG,,DDDrH   c                <    g | ]}                     |          S r   r   r  s     rF   r   z/TreeRebuilder.visit_trystar.<locals>.<listcomp>V  s'    @@@qDJJq'**@@@rH   c                <    g | ]}                     |          S r   r   r  s     rF   r   z/TreeRebuilder.visit_trystar.<locals>.<listcomp>W  s'    FFF!tzz!W--FFFrH   r	  )r   TryStarrl   rU   rm   rn   r   rN   r
  rl  r  r  s   `  @rF   visit_trystarzTreeRebuilder.visit_trystarK  s    -;.
 
 
 	<<<<<$)<<<DDDDDdmDDD@@@@@DK@@@FFFFFt~FFF	 	 	
 	
 	
 rH   c                                           |          }t          j        ||j        |j        |j        |j        |                               fd|j        D                        S )z7Visit a Tuple node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z-TreeRebuilder.visit_tuple.<locals>.<listcomp>f  r  rH   )	rc   r   r  rl   rU   rm   rn   r   r  r  s   `   @rF   visit_tuplezTreeRebuilder.visit_tuple[  s}    ##D))+;.
 
 
 	LLLLL$)LLLMMMrH   c                    t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D                                  |j
                             S )z;Visit a TypeAlias node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   )r   pr~   rE   s     rF   r   z1TreeRebuilder.visit_typealias.<locals>.<listcomp>t  s'    JJJAAw//JJJrH   )rv   r'  rR   )r   	TypeAliasrl   rU   rm   rn   r   r   rv   r'  rR   r  s   `  @rF   visit_typealiaszTreeRebuilder.visit_typealiasi  s    /;.
 
 
 	DIw//JJJJJ9IJJJ**TZ11 	 	
 	
 	

 rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |||j                  | 	                    |j
        |                     |S )z9Visit a TypeVar node by returning a fresh instance of it.r  )rv   bound)r   r   rl   rU   rm   rn   r   r  rv   r   r   r  s       rF   visit_typevarzTreeRebuilder.visit_typevary  s    -;.
 
 
 	&&tWdi@@**TZ11 	 	
 	
 	
 rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |||j                             |S )z>Visit a TypeVarTuple node by returning a fresh instance of it.r  r  )	r   TypeVarTuplerl   rU   rm   rn   r   r  rv   r  s       rF   visit_typevartuplez TreeRebuilder.visit_typevartuple  se     $;.
 
 
 	d33D'49MMNNNrH   c                    t          j        | j        j        |j        j                 |j        |j        |j        |j	        |          }|
                    |                     |j        |                     |S )z9Visit a UnaryOp node by returning a fresh instance of it.r  )r   UnaryOprD   unary_op_classesr  r  rl   rU   rm   rn   r   r   operandr  s       rF   visit_unaryopzTreeRebuilder.visit_unaryop  sn    -"3DG4EF;.
 
 
 	DL'::;;;rH   c                    t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D              fd|j
        D                        S )z7Visit a While node by returning a fresh instance of it.r  c                <    g | ]}                     |          S r   r   r   s     rF   r   z-TreeRebuilder.visit_while.<locals>.<listcomp>  r   rH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z-TreeRebuilder.visit_while.<locals>.<listcomp>  r  rH   )r   Whilerl   rU   rm   rn   r   r   r  rN   rl  r  s   `  @rF   visit_whilezTreeRebuilder.visit_while  s    +;.
 
 
 	JJty'**?????TY???AAAAAT[AAA	
 	
 	

 rH   type[nodes.With]c                    d S r\   r   rc  s       rF   r  zTreeRebuilder._visit_with  s	     SrH   type[nodes.AsyncWith]c                    d S r\   r   rc  s       rF   r  zTreeRebuilder._visit_with  s	     #rH   type[_WithT]ast.With | ast.AsyncWithr1   c                    |j         }t          rPt          sIt          |t          j                  r/ j        r( j        |j        dz
                               d          } ||j        ||j	        |j
        |          d fd                     |	          }                    fd
|j        D              fd|j        D             |           S )NrL   ri   r  r   ast.withitemr9   tuple[NodeNG, NodeNG | None]c                x                         | j                  }                     | j                  }||fS r\   )r   context_exproptional_vars)r   r3  varr~   rE   s      rF   visit_childz.TreeRebuilder._visit_with.<locals>.visit_child  s9    ::e0'::D**U0'::C9rH   r  c                &    g | ]} |          S r   r   )r   r   r<  s     rF   r   z-TreeRebuilder._visit_with.<locals>.<listcomp>  s#    >>>%;;u%%>>>rH   c                <    g | ]}                     |          S r   r   r   s     rF   r   z-TreeRebuilder._visit_with.<locals>.<listcomp>  r  rH   )rT  rN   r  )r   r6  r9   r7  )rU   r   r   rO   rP   r  r?   rl   rm  rm   rn   r  r   rT  rN   )rE   r  rI   re   rU   r  r~   r<  s   `     @@rF   r  zTreeRebuilder._visit_with  s"    _
 	D9 	DD#-)H)H 	DTZ 	DDK!O4::7CCJ#;!.
 
 
	 	 	 	 	 	 	
 11$w1GG>>>>4:>>>DDDDD$)DDD+ 	 	
 	
 	

 rH   c                D    |                      t          j        ||          S r\   )r  r   Withr   s      rF   
visit_withzTreeRebuilder.visit_with  s    
D&999rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |                     |S )z7Visit a Yield node by returning a fresh instance of it.r  )	r   Yieldrl   rU   rm   rn   r   r   rR   r  s       rF   visit_yieldzTreeRebuilder.visit_yield  s[    +;.
 
 
 	DJ88999rH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |                     |S rJ  )	r   	YieldFromrl   rU   rm   rn   r   r   rR   r  s       rF   visit_yieldfromzTreeRebuilder.visit_yieldfrom  s[    /;.
 
 
 	DJ88999rH   c                     t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D                        S )Nr  c                <    g | ]}                     |          S r   r   )r   caser~   rE   s     rF   r   z-TreeRebuilder.visit_match.<locals>.<listcomp>  s'    HHHTtzz$00HHHrH   )subjectcases)
r   Matchrl   rU   rm   rn   r   r   rK  rL  r  s   `  @rF   visit_matchzTreeRebuilder.visit_match  s    k{??#2  G 

4<99HHHHHTZHHH     NrH   c                     t          j        |                                                   |j                                       |j                   fd|j        D                        S )Nr  c                <    g | ]}                     |          S r   r   r   s     rF   r   z1TreeRebuilder.visit_matchcase.<locals>.<listcomp>  '    HHHUdjj00HHHrH   )patternguardrN   )r   r!   r   r   rR  rS  rN   r  s   `  @rF   visit_matchcasezTreeRebuilder.visit_matchcase  s~     oV444G

4<99jjW55HHHHHdiHHH    
 NrH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |                     |S r  )	r   
MatchValuerl   rU   rm   rn   r   r   rR   r  s       rF   visit_matchvaluezTreeRebuilder.visit_matchvalue  sa     &{??#2  G 4::dj'#B#BCCCNrH   c                h    t          j        |j        |j        |j        |j        |j        |          S )N)rR   rl   rU   rm   rn   re   )r   MatchSingletonrR   rl   rU   rm   rn   r   s      rF   visit_matchsingletonz"TreeRebuilder.visit_matchsingleton#  s;     'j{??#2   rH   c                     t          j        |j        |j        |j        |j        |                               fd|j        D                        S )Nr  c                <    g | ]}                     |          S r   r   r   rR  r~   rE   s     rF   r   z5TreeRebuilder.visit_matchsequence.<locals>.<listcomp>:  '    TTT7$**Wg66TTTrH   patterns)r   MatchSequencerl   rU   rm   rn   r   r`  r  s   `  @rF   visit_matchsequencez!TreeRebuilder.visit_matchsequence/  sw     ){??#2  G TTTTTdmTTT     NrH   c           	         t          j        |j        |j        |j        |j        |                               fd|j        D              fd|j        D              	                    ||j
                             S )Nr  c                <    g | ]}                     |          S r   r   r   s     rF   r   z4TreeRebuilder.visit_matchmapping.<locals>.<listcomp>K  rQ  rH   c                <    g | ]}                     |          S r   r   r]  s     rF   r   z4TreeRebuilder.visit_matchmapping.<locals>.<listcomp>L  r^  rH   )rK  r`  rest)r   MatchMappingrl   rU   rm   rn   r   rK  r`  r  rf  r  s   `  @rF   visit_matchmappingz TreeRebuilder.visit_matchmapping>  s     ({??#2  G HHHHHdiHHHTTTTTdmTTT**4$)DD    
 NrH   c                    t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D             |j
         fd|j        D                        S )Nr  c                <    g | ]}                     |          S r   r   r]  s     rF   r   z2TreeRebuilder.visit_matchclass.<locals>.<listcomp>]  r^  rH   c                <    g | ]}                     |          S r   r   r]  s     rF   r   z2TreeRebuilder.visit_matchclass.<locals>.<listcomp>_  s4       5<DJJw00  rH   )r  r`  	kwd_attrskwd_patterns)r   
MatchClassrl   rU   rm   rn   r   r   r  r`  rl  rm  r  s   `  @rF   visit_matchclasszTreeRebuilder.visit_matchclassQ  s     &{??#2  G JJtx11TTTTTdmTTT.    @D@Q  	     NrH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |||j                             |S )Nr  r  )	r   	MatchStarrl   rU   rm   rn   r   r  rv   r  s       rF   visit_matchstarzTreeRebuilder.visit_matchstare  sd     o{??#2  G $"7"7gty"Q"QRRRNrH   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |          | 	                    |||j
                             |S )Nr  )rR  rv   )r   MatchAsrl   rU   rm   rn   r   r   rR  r  rv   r  s       rF   visit_matchaszTreeRebuilder.visit_matchast  s    m{??#2  G 

4<99**4$)DD     NrH   c                     t          j        |j        |j        |j        |j        |                               fd|j        D                        S )Nr  c                <    g | ]}                     |          S r   r   r]  s     rF   r   z/TreeRebuilder.visit_matchor.<locals>.<listcomp>  r^  rH   r_  )r   MatchOrrl   rU   rm   rn   r   r`  r  s   `  @rF   visit_matchorzTreeRebuilder.visit_matchor  st    m{??#2  G TTTTTdmTTT     NrH   )NN)r4   r   r5   r6   r7   r8   r9   r:   )rI   r*   r9   rJ   )rI   rZ   r9   r   )rI   rd   re   rf   r9   rg   )r~   r   r9   r:   )
rI   r+   r   rT   r   rT   r   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r.   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r,   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r-   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r   re   r   r9   r   )rI   r  re   r   r9   r  )rI   r  re   r   r9   r  )rI   r	  re   r   r9   r
  )rI   r  re   r  r9   r  )rI   r  re   r  r9   r   )rI   r  re   r   r9   r  )rI   r  re   r   r9   r  )rI   r  re   r   r9   r  )rI   r  re   r   r9   r  )rI   r   re   r   r9   r!  )rI   r#  re   r   r9   r$  )rI   r&  re   r   r9   r'  )rI   r*  re   r   r9   r+  )rI   r-  re   r   r9   r.  )rI   r0  re   r   r9   r1  )rI   r3  re   r   r9   r4  )rI   r6  re   r   r9   r7  )rI   r9  re   r   r9   r:  )rI   r<  re   r  r9   r=  )rI   r?  re   r   r9   r  )rI   rA  re   r   r9   rB  )rI   rD  re   r   r9   rE  )rI   rH  re   r   r9   rI  )rI   rK  re   r   r9   r  )rI   rM  re   r   r9   rN  )rI   rP  re   r   r9   rQ  )rI   rS  re   r   r9   rT  )rI   rV  re   r   r9   rW  )rI   rY  re   r   r9   rZ  )rI   r\  re   r   r9   r]  )rI   r_  re   r   r9   r`  )rI   rb  re   r   r9   rc  )rI   rf  re   r   r9   rg  )rI   ri  re   r   r9   rj  )rI   rl  re   r   r9   rm  )rI   ro  re   r   r9   rp  )rI   rr  re   r   r9   rs  )rI   ru  re   r   r9   rv  )rI   rx  re   r   r9   ry  )rI   r{  re   r   r9   r|  )rI   r~  re   r   r9   r  )rI   r  re   r   r9   r  )rI   r  re   r   r9   r  )rI   r  re   r   r9   r   )rI   r:   re   r   r9   r:   )rI   r  re   r   r9   r  )rI   r  r9   r:   )rI   r  re   r  r9   r  )rI   r  re   r   r9   r  )rI   r  re   r   r  rT   r9   r   )rI   r  re   r   r  r:   r9   r:   )rI   r  re   r   r  r8   r9   r  )T)rI   r,   re   r   r  r   r9   r   )rI   rd   re   r   r9   r?  )rI   r   re   r   r~   r   r9   rH  )r  ra  rI   r   re   r   r9   r   )r  rd  rI   r   re   r   r9   r   )r  rf  rI   rg  re   r   r9   r0   )r  r  rI   r-   re   r   r9   r   )r  r  rI   r.   re   r   r9   r   )r  r  rI   r  re   r   r9   r/   )rI   r   re   r   r9   r  )rI   r   re   r   r9   r  )r  r/  rI   r\  re   r   r9   r]  )r  r1  rI   r   re   r   r9   r   )r  r3  rI   r4  re   r   r9   r1   )rI   r\  re   r   r9   r   )rI   r_  re   r   r9   r   )rI   rb  re   r   r9   r   )br  
__module____qualname____doc__rG   rY   rc   r}   r   r   r	   r   r   sysversion_infor  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,  r/  r8  r>  r)  rG  rP  rU  r[  r]  r`  r  rp  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r!  r$  r)  r.  r  rA  rD  rG  rN  rT  rW  rZ  rb  rh  ro  rr  ru  ry  r   rH   rF   r3   r3   4   s       ;;
 .2	0 0 0 0 0$   &U U U U5
 5
 5
 5
n/ / / /&   ,  MA	OOO 
O	TTT 
T	NNN 
N		) 	) 	) 
	) 
RRR 
R	LLL 
L	TTT 
T	NNN 
N	TTT 
T	TTT 
T	LLL 
L	NNN 
N	LLL 
L	JJJ 
J	RRR 
R	RRR 
R	PPP 
P		& 	& 	& 
	& 
NNN 
N	JJJ 
J	RRR 
R	JJJ 
J		& 	& 	& 
	& 
HHH 
H	VVV 
V	XXX 
X		% 	% 	% 
	% 
TTT 
T	NNN 
N	FFF 
F	LLL 
L	NNN 
N	TTT 
T		' 	' 	' 
	' 
TTT 
Tf$$" " " X" TTT XT	PPP 
P	NNN 
N	JJJ 
J	RRR 
R		N 	N 	N 
	N 
RRR 
R	OOO 
Ow&&XXX XX	JJJ 
J	LLL 
L	NNN 
N	HHH 
H	PPP 
P	UUU 
U	TTT 
T	PPP 
P	HHH 
Hw&&TTT XT	LLL 
Lw&&XXX XXTTT XT) ) ) X) 
PPP 
P	LLL 
L	JJJ 
J	LLL 
L	TTT 
Tw&&PPP XP& & & X& ' ' ' X' + + + X+ * * * X* ) ) ) X) ' ' ' X' XXX XXTTT XTTTT XTTTT XT	EEE 
E	@@@ 
@* * * *3 3 3 3= = = =a a a aF   ! ! ! !@! ! ! !0M M M M
= = = =	 	 	 	? ? ? ?   "   "    X    X   (         
 
 
 
   " DH& & & & &P
 
 
 
   *   *   :
 
 
 
- - - -&       
 
 
 
   $    X    X   48 8 8 8   &       X  % % % X%8 8 8 8tH H H H
   "* * * *X              "	 	 	 	   "    &  	 	 	 		2 	2 	2 	2   
 
 
 
      % % % %N	
 	
 	
 	


 

 

 

   
 
 
 
    
 
 
 

 
 
 
      "          "              "               X    X   @: : : :
 
 
 
	 	 	 	 7""	 	 	 			 		 		 			 	 	 	
	 
	 
	 
		 	 	 		 	 	 	&	 	 	 	(	 	 	 		 	 	 	 	 	 	 	 	 	S #"rH   r3   );r|  
__future__r   rP   r}  rp   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*   rs   rr   r/   ro  r  r0   r@  r  r1   r   r(  NodesWithDocsTyper3   r   rH   rF   <module>r     sc  
   # " " " " " 



 



  / / / / / / / /       / / / / / / / / G G G G G G G G G G G G G G G G       U U U U U U U U U U G G G G G G G G G G G G G G * * * * * *             1 1 1 1 1 1 ( ( ( ( ( ( * * * * * * $"!$# #     		
34		 	 W\5#4e6LMM
EN33	5:u	7	7%,8IIJ [ [ [ [ [ [ [ [ [ [rH   