
    c4                   2   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 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' ej(        dk    rddlm)Z) n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TypeVarUnioncastoverload)nodes)ParserModuleget_parser_moduleparse_function_type_comment)IS_PYPYPY38	PY38_PLUS	PY39_PLUSContext)AstroidManager)NodeNG)Position)SuccessfulInferenceResult      )Final	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	dd$Z
eredd(            Zedd+            Zedd.            Zedd1            Zedd4            Zedd7            Zedd:            Zedd=            Zedd@            ZeddC            ZeddF            ZeddI            ZeddL            ZeddO            ZeddR            ZeddU            ZeddX            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dd            Zedd            Zedd            Zedd            Zej        dk    r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     rAe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        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dd            Zedd            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d,Z'dd.Z(dd/Z)dd0Z*dd1Z+dd2Z,edd5            Z-edd7            Z-dd;Z-dd<Z.dd=Z/edd?            Z0eddA            Z0ddDZ0ddEZ1ddFZ2ddHZ3ddIZ4ddJZ5ddKZ6ddLZ7ddMZ8ddNZ9ej        dk    rddOZ:ej        dk     rddPZ;ddQZ<ddRZ=ddSZ>ddTZ?ddUZ@ddWZAddXZBddYZCej        dk     rddZZDdd[ZEdd]ZFeFZGdd^ZHdd_ZIdd`ZJddaZKddbZLddcZMdddZNddeZOdÐdfZPddhZQddjZRdŐdkZSdƐdlZTdǐdmZUeddo            ZVeddq            ZVdduZVddvZWddwZXddxZYej        dk    r>dːdyZZd̐dzZ[d͐d{Z\dΐd|Z]dϐd}Z^dАd~Z_dѐdZ`dҐdZadӐdZbdԐdZcd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                      | _        n|| _        | j        j	        | _
        d S )N
)_managersplit_data_global_names_import_from_nodes_delayed_assattr_visit_methsr   _parser_modulemodule_module)selfr6   r7   r9   s       1lib/python3.11/site-packages/astroid/rebuilder.py__init__zTreeRebuilder.__init__<   sz      )-7TZZ%%%4
BD:<8:VX 	0"3"5"5D"/D*1    noder,   +tuple[T_Doc, ast.Constant | ast.Str | None]c                   	 |j         rt          |j         d         | j        j                  r|j         d         j        }t          || j        j                  s;t          r`t          || j        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
isinstancerH   ExprvalueStrr   Constantstr
col_offset
IndexError)rI   rM   first_valuedoc_ast_nodes       rJ   _get_doczTreeRebuilder._get_docO   s    	y .Z	!dl6GHH ."il0k4<+;<< ..";0EFF. #;#4c::.
 $/L $	!""DI $."4 726/-- 	 	 	D	Tzs   B>C 
CCMast.Attribute | ast.List | ast.Name | ast.Subscript | ast.Starred | ast.Tupler   c                z    | j         j                            t          |j                  t
          j                  S N)rF   context_classesgettypectxr   LoadrI   rM   s     rJ   _get_contextzTreeRebuilder._get_contextd   s*     "266tDH~~w|TTTrL   5ast.ClassDef | ast.FunctionDef | ast.AsyncFunctionDefparent;nodes.ClassDef | nodes.FunctionDef | nodes.AsyncFunctionDefPosition | Nonec                   | j         sdS t          |dd          }|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:
        >>> ^^^^^^^^^^^^^^^^^^^
        N
end_linenor   r>   rP   asyncdefclass>   ro   )linenorY   rm   end_col_offset)rA   getattrrR   rq   jointokenNAMErS   r   AsyncFunctionDefFunctionDefr   r   readlinerc   stringnamer   startend)	rI   rM   ri   rm   r9   start_tokenkeyword_tokenssearch_tokents	            rJ   _get_position_infoz TreeRebuilder._get_position_infoq   s    z 	4!(|T!B!B
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	
 
 
 	
rL   NodesWithDocsTypec                
   | j         r|j        r|j        dS t          rdS |j        pd}|j        j        }t          r	t
          sd}d                    | j         |dz
  |                   }d\  }}d}t          j        t          j	        t          j
        t          j        h}t          |t          j                  rd}t          t!          |          j                  D ]}	|du r|du r!|	j        t          j        k    r|	j        dv rd}nl|du rh|	j        t          j        k    rS|	j        t          j        k    r	|dk    rd}n5|	j        t          j        k    r|dz  }n|	j        t          j        k    r|dz  }|	j        |v r|	j        t          j        k    r n dS dS ||	j        d         z   dz
  |j        _        |	j        d         |j        _        ||	j        d         z   dz
  |j        _        |	j        d         |j        _        dS )	z9Fix start and end position of doc nodes for Python < 3.8.NrP   r>   )FFr   TF>   ro   rp   ) rA   doc_noderq   r   r   r   rt   ru   NEWLINEINDENTNLCOMMENTrS   r   Moduler   r   ry   rc   rv   rz   OP
exact_typeCOLONLPARRPARSTRINGr|   rY   r}   rm   rr   )
rI   rM   rq   	end_ranger9   found_start	found_endopen_brackets
skip_tokenr   s
             rJ   _fix_doc_node_positionz$TreeRebuilder._fix_doc_node_position   s)   z 	 	$+ 	F 	F! $ 4	 	9 	IyyFQJ$:;<<!-Y %u|UXu}U
dEL)) 	I $!899 	 	AE! 5(+%*,+ $44+
 #'KK D( +QVux-? +|u{2 +}7I +$(		3 +%*3 +%*v# v% FFF%
2Q6#$71: #)AE!H#4q#8 '(uQx$$$rL   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        - TryExcept
            - With              - TryFinally
            - Assign
        N)rm   rr   get_children_reset_end_lineno)rI   r   
child_nodes      rJ   r   zTreeRebuilder._reset_end_lineno   sP     "!%!..00 	/ 	/J"":....	/ 	/rL   r-   modnamerX   modpathpackageboolnodes.Modulec                X                          |          \  }}t          j        |||g|d                               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'
        N)r{   filepathr   ri   c                <    g | ]}                     |          S  visit.0childr   rI   s     rJ   
<listcomp>z.TreeRebuilder.visit_module.<locals>.<listcomp>   '    ???ETZZw''???rL   )r   )
r]   r   r   postinitrR   r   r   r   r   r   )rI   rM   r   r   r   r\   r   s   `     @rJ   visit_modulezTreeRebuilder.visit_module   s     "]]400l,
 
 
 	?????TY???ZZg66 	 	
 	
 	
 	##G,,, 	,t 	,""7+++rL   ast.argr   nodes.AssignNamec                    d S r`   r   rI   rM   ri   s      rJ   r   zTreeRebuilder.visit      CrL   ast.argumentsnodes.Argumentsc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   
ast.Assertnodes.Assertc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   r0   nodes.AsyncFunctionDefc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  	     CrL   ast.AsyncFornodes.AsyncForc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   	ast.Awaitnodes.Awaitc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.AsyncWithnodes.AsyncWithc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit"  r   rL   
ast.Assignnodes.Assignc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit&  r   rL   ast.AnnAssignnodes.AnnAssignc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit*  r   rL   ast.AugAssignnodes.AugAssignc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit.  r   rL   	ast.BinOpnodes.BinOpc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit2  r   rL   
ast.BoolOpnodes.BoolOpc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit6  r   rL   	ast.Breaknodes.Breakc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit:  r   rL   ast.Call
nodes.Callc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit>  r   rL   r.   nodes.ClassDefc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitB  r   rL   ast.Continuenodes.Continuec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitF  r   rL   ast.Comparenodes.Comparec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitJ  r   rL   ast.comprehensionnodes.Comprehensionc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitN  r   rL   
ast.Deletenodes.Deletec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitR  r   rL   ast.Dict
nodes.Dictc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitV  r   rL   ast.DictCompnodes.DictCompc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitZ  r   rL   ast.Expr
nodes.Exprc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit^  r   rL   ast.ExceptHandlernodes.ExceptHandlerc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitb  r   rL   ast.For	nodes.Forc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitf  r   rL   ast.ImportFromnodes.ImportFromc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitj  r   rL   r/   nodes.FunctionDefc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitn  r   rL   ast.GeneratorExpnodes.GeneratorExpc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitr  r   rL   ast.Attributenodes.Attributec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitv  r   rL   
ast.Globalnodes.Globalc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitz  r   rL   ast.Ifnodes.Ifc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit~  r   rL   	ast.IfExpnodes.IfExpc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   
ast.Importnodes.Importc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.JoinedStrnodes.JoinedStrc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.FormattedValuenodes.FormattedValuec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   r   ast.NamedExprnodes.NamedExprc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit      rL   )r   	   ast.ExtSlicenodes.Subscriptnodes.Tuplec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r  rL   	ast.Indexc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r  rL   ast.keywordnodes.Keywordc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   
ast.Lambdanodes.Lambdac                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.List
nodes.Listc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.ListCompnodes.ListCompc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.Name;nodes.Name | nodes.Const | nodes.AssignName | nodes.DelNamec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.Nonlocalnodes.Nonlocalc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.Ellipsisnodes.Constc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r  rL   ast.NameConstantc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r  rL   ast.Strc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r  rL   	ast.Bytesc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r  rL   ast.Numc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r  rL   ast.Constantc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.Pass
nodes.Passc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   	ast.Raisenodes.Raisec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   
ast.Returnnodes.Returnc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.Set	nodes.Setc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.SetCompnodes.SetCompc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   	ast.Slicenodes.Slicec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.Subscriptc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.Starrednodes.Starredc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.Try"nodes.TryExcept | nodes.TryFinallyc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   	ast.Tuplec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.UnaryOpnodes.UnaryOpc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   	ast.Whilenodes.Whilec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.With
nodes.Withc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit
  r   rL   	ast.Yieldnodes.Yieldc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   ast.YieldFromnodes.YieldFromc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r   rL   )r   
   	ast.Matchnodes.Matchc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r  rL   ast.match_casenodes.MatchCasec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit  r  rL   ast.MatchValuenodes.MatchValuec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit   r  rL   ast.MatchSingletonnodes.MatchSingletonc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit$  	     rL   ast.MatchSequencenodes.MatchSequencec                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit*  rx  rL   ast.MatchMappingnodes.MatchMappingc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit0  rx  rL   ast.MatchClassnodes.MatchClassc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit6  r  rL   ast.MatchStarnodes.MatchStarc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit:  r  rL   ast.MatchAsnodes.MatchAsc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visit>  r  rL   ast.MatchOrnodes.MatchOrc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitB  r  rL   ast.patternnodes.Patternc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitF  r  rL   ast.ASTc                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitJ  r   rL   c                    d S r`   r   r   s      rJ   r   zTreeRebuilder.visitN  r   rL   ast.AST | NoneNodeNG | Nonec                    |d S |j         }|| j        v r| j        |         }nQ|j        }dt                              ||                                          z   }t          | |          }|| j        |<    |||          S )Nvisit_)	__class__rE   __name__r+   rb   lowerrs   )rI   rM   ri   clsvisit_methodcls_name
visit_names          rJ   r   zTreeRebuilder.visitR  s     	4n$## 	2,S1LL|H!HLL8$D$D$J$J$L$LLJ"444L%1Dc"|D&)))rL    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.rQ   N)rB   r{   root	set_localri   rf   s     rJ   _save_assignmentzTreeRebuilder._save_assignment_  s     	3$)t/A"/E"E 	3IIKK!!$)T22222;9K!!$)T22222rL   c                :    |                      |||j                  S )z8Visit an arg node by returning a fresh AssName instance.)visit_assignnameargr   s      rJ   	visit_argzTreeRebuilder.visit_argh  s    $$T648<<<rL   c                |    d}d}t          j        |j        r|j        j        nd|j        r|j        j        nd|           fd|j        D             } fd|j        D             }d}d}g }	|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             }g }t          r( fd|j        D             }	 fd	|j        D             } fd
|j        D             } fd|j
        D             }g }t          r fd|j        D             }                    ||||	|||||||||           j        sJ |rj                            |           |rj                            |           S )z<Visit an Arguments node by returning a fresh instance of it.Nc                <    g | ]}                     |          S r   r   r   s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>u  s'    BBBu

5'**BBBrL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>v  s'    JJJ5DJJug..JJJrL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s'    NNNUdjj00NNNrL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s'    PPPetzz%11PPPrL   c                F    g | ]}                     |j                  S r   r   
annotationr   r  r   rI   s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s)    PPPstzz#.'::PPPrL   c                F    g | ]}                     |j                  S r   r  r  s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s6     "
 "
 "
47DJJs~w//"
 "
 "
rL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s'    TTT%4::eW55TTTrL   c                F    g | ]}                     |j                  S r   r  r  s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s6     ' ' '8;

3>733' ' 'rL   c                >    g | ]}                     |           S ri   check_type_commentr   s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s9     
 
 
?DD##E'#::
 
 
rL   c                >    g | ]}                     |           S r  r  r   s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s9     #
 #
 #
?DD##E'#::#
 #
 #
rL   c                >    g | ]}                     |           S r  r  r   s     rJ   r   z1TreeRebuilder.visit_arguments.<locals>.<listcomp>  s<     ( ( ( ''g'>>( ( (rL   )argsdefaults
kwonlyargsposonlyargskw_defaultsr   kwonlyargs_annotationsposonlyargs_annotationsvarargannotationkwargannotationtype_comment_argstype_comment_kwonlyargstype_comment_posonlyargs)r   r   varargr  kwargr  r  r   r  r   r  rm   rr   r  r   r  r   ri   r  )rI   rM   ri   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   s   `                  @rJ   visit_argumentszTreeRebuilder.visit_argumentsl  sX   ! /#{4DKOO"j2DJNNd
 

 CBBBB	BBBJJJJJDMJJJ*.)-.0; 	K[_F#zz$+*@'JJ: 	IJNE"jj)>HHO 	G  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"
 "
 "
 "
 "
;??"
 "
 "
 8: 	TTTTT4CSTTTK' ' ' ' '?C?O' ' '#
 
 
 
 
HL	
 
 
#
 #
 #
 #
 #
HL#
 #
 #
 9;  	( ( ( ( (!-( ( ($
 	!####9$;-+/$;%= 	 	
 	
 	
  ~ 	6N$$VW555 	5N$$UG444rL   c           
     .   t          j        |j        |j        t	          |dd          t	          |dd          |          }d}|j        r|                     |j        |          }|                    |                     |j        |          |           |S )z8Visit a Assert node by returning a fresh instance of it.rm   Nrr   rq   rY   rm   rr   ri   )	r   Assertrq   rY   rs   msgr   r   test)rI   rM   ri   r   r  s        rJ   visit_assertzTreeRebuilder.visit_assert  s    ,;t\488"4)94@@
 
 
 "8 	0**TXw//CDIw77===rL   Hast.Assign | ast.arg | ast.For | ast.AsyncFor | ast.With | ast.AsyncWithZnodes.Assign | nodes.Arguments | nodes.For | nodes.AsyncFor | nodes.With | nodes.AsyncWithc                "   t          |dd           }|sd S 	 | 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 )Ntype_commentr   r  )
rs   rF   parseSyntaxErrorrR   r   rS   r   rT   rU   )rI   rM   ri   r  type_comment_asttype_objects         rJ   r  z TreeRebuilder.check_type_comment  s     t^T:: 	4	#288FF 	 	 	44	  $ 	4jj!1!6q!9&jII+uz22 	4  s   2 
A A &ast.FunctionDef | ast.AsyncFunctionDef)tuple[NodeNG | None, list[NodeNG]] | Nonec                     t          |dd           }|sd S 	 t          |          }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 )Nr  c                <    g | ]}                     |          S r   r   )r   elemri   rI   s     rJ   r   z=TreeRebuilder.check_function_type_comment.<locals>.<listcomp>  s4     "
 "
 "
)-DJJtV$$"
 "
 "
rL   )rs   r   r  argtypesreturnsr   )rI   rM   ri   r  r  r  r  s   ` `    rJ   check_function_type_commentz)TreeRebuilder.check_function_type_comment  s     t^T:: 	4	:<HH 	 	 	44	   	4!%"
 "
 "
 "
 "
2B2K2Qr"
 "
 "
 # 	Cjj!1!96BBG  s   ) 
77c                D    |                      t          j        ||          S r`   )_visit_functiondefr   rw   r   s      rJ   visit_asyncfunctiondefz$TreeRebuilder.visit_asyncfunctiondef  s     &&u'=tVLLLrL   c                D    |                      t          j        ||          S r`   )
_visit_forr   AsyncForr   s      rJ   visit_asyncforzTreeRebuilder.visit_asyncfor  s    u~tV<<<rL   c           
         t          j        |j        |j        t	          |dd           t	          |dd           |          }|                    |                     |j        |                     |S )Nrm   rr   r  rU   )r   Awaitrq   rY   rs   r   r   rU   rI   rM   ri   r   s       rJ   visit_awaitzTreeRebuilder.visit_await  sr    +;t\488"4)94@@
 
 
 	tzz$*g>>???rL   c                D    |                      t          j        ||          S r`   )_visit_withr   	AsyncWithr   s      rJ   visit_asyncwithzTreeRebuilder.visit_asyncwith  s    v>>>rL   c           
     @    t          j        |j        |j        t	          |dd          t	          |dd          |                               |          }                     fd|j        D                                  |j	                  |           S )z8Visit a Assign node by returning a fresh instance of it.rm   Nrr   r  r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z.TreeRebuilder.visit_assign.<locals>.<listcomp>)  s'    JJJETZZw//JJJrL   )targetsrU   type_annotation)
r   Assignrq   rY   rs   r  r   r  r   rU   )rI   rM   ri   r  r   s   `   @rJ   visit_assignzTreeRebuilder.visit_assign  s    ,;t\488"4)94@@
 
 
 11$w1GGJJJJJT\JJJ**TZ11+ 	 	
 	
 	

 rL   c           
     Z   t          j        |j        |j        t	          |dd          t	          |dd          |          }|                    |                     |j        |          |                     |j        |          |j	        |                     |j
        |                     |S )z<Visit an AnnAssign node by returning a fresh instance of it.rm   Nrr   r  )targetr  simplerU   )r   	AnnAssignrq   rY   rs   r   r   r  r  r  rU   r  s       rJ   visit_annassignzTreeRebuilder.visit_annassign/  s    /;t\488"4)94@@
 
 
 	::dk733zz$/7;;;**TZ11	 	 	
 	
 	
 rL   	node_namec                    d S r`   r   rI   rM   ri   r  s       rJ   r  zTreeRebuilder.visit_assignnameA  	     	rL   c                    d S r`   r   r  s       rJ   r  zTreeRebuilder.visit_assignnameG  s    rL   nodes.AssignName | Nonec                    |dS t          j        ||j        |j        t	          |dd          t	          |dd          |          }|                     |           |S )z_Visit a node and return a AssignName node.

        Note: Method not called by 'visit'
        Nrm   rr   r{   rq   rY   rm   rr   ri   )r   
AssignNamerq   rY   rs   r  )rI   rM   ri   r  r   s        rJ   r  zTreeRebuilder.visit_assignnameK  sr      	4";t\488"4)94@@
 
 
 	g&&&rL   c                d   t          j        | j        j        t	          |j                           dz   |j        |j        t          |dd          t          |dd          |          }|	                    | 
                    |j        |          | 
                    |j        |                     |S )z;Visit a AugAssign node by returning a fresh instance of it.=rm   Nrr   oprq   rY   rm   rr   ri   )r   	AugAssignrF   bin_op_classesrc   r  rq   rY   rs   r   r   r  rU   r  s       rJ   visit_augassignzTreeRebuilder.visit_augassign`  s    /"1$tw--@3F;t\488"4)94@@
 
 
 	JJt{G,,djjW.M.M	
 	
 	
 rL   c                ^   t          j        | j        j        t	          |j                           |j        |j        t          |dd          t          |dd          |          }|	                    | 
                    |j        |          | 
                    |j        |                     |S )z7Visit a BinOp node by returning a fresh instance of it.rm   Nrr   r  )r   BinOprF   r  rc   r  rq   rY   rs   r   r   leftrightr  s       rJ   visit_binopzTreeRebuilder.visit_binopp  s    +"1$tw--@;t\488"4)94@@
 
 
 	JJty'**DJJtz7,K,K	
 	
 	
 rL   c                     t          j         j        j        t	          |j                           |j        |j        t          |dd          t          |dd          |          	                     fd|j
        D                        S )z8Visit a BoolOp node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z.TreeRebuilder.visit_boolop.<locals>.<listcomp>  '    NNN$**UG44NNNrL   )r   BoolOprF   bool_op_classesrc   r  rq   rY   rs   r   valuesr  s   `  @rJ   visit_boolopzTreeRebuilder.visit_boolop  s    ,"24==A;t\488"4)94@@
 
 
 	NNNNN$+NNNOOOrL   c           
         t          j        |j        |j        t	          |dd          t	          |dd          |          S )z7Visit a Break node by returning a fresh instance of it.rm   Nrr   r  )r   Breakrq   rY   rs   r   s      rJ   visit_breakzTreeRebuilder.visit_break  sG    {;t\488"4)94@@
 
 
 	
rL   c           
     6    t          j        |j        |j        t	          |dd          t	          |dd          |                                                   |j                   fd|j        D              fd|j	        D                        S )z:Visit a CallFunc node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z,TreeRebuilder.visit_call.<locals>.<listcomp>  '    DDD$**UG,,DDDrL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z,TreeRebuilder.visit_call.<locals>.<listcomp>  s'    LLLUdjj00LLLrL   )funcr  keywords)
r   Callrq   rY   rs   r   r   r  r  r  r  s   `  @rJ   
visit_callzTreeRebuilder.visit_call  s    *;t\488"4)94@@
 
 
 	DIw//DDDDD$)DDDLLLLLdmLLL 	 	
 	
 	

 rL   Tnewstylec                |                          |          \  }}t          j        |j        |j        |j        t          |dd          t          |dd          |          d}|j        D ]*}|j        dk    r 	                    |          j
        } n+                     |          }                     fd|j        D              fd|j        D             ||| fd|j        D                                  |           	                    |          	                                           S )
z(Visit a ClassDef node to become astroid.rm   Nrr   r  	metaclassc                <    g | ]}                     |          S r   r   r   s     rJ   r   z0TreeRebuilder.visit_classdef.<locals>.<listcomp>  s'    @@@ETZZw''@@@rL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z0TreeRebuilder.visit_classdef.<locals>.<listcomp>  r   rL   c                R    g | ]#}|j         d k                        |          $S )r!  )r  r   )r   kwdr   rI   s     rJ   r   z0TreeRebuilder.visit_classdef.<locals>.<listcomp>  sD       7k)

3((  rL   )positionr   )r]   r   ClassDefr{   rq   rY   rs   r  r  r   rU   visit_decoratorsr   basesrR   r   r   )	rI   rM   ri   r  r\   r!  r)   
decoratorsr   s	   `       @rJ   visit_classdefzTreeRebuilder.visit_classdef  s    "]]400l.;t\488"4)94@@
 
 
 	} 	 	G{k)  JJw88>	 **499
@@@@@TZ@@@?????TY???    =  
 ,,T7;;ZZg66 	 	
 	
 	
 	##G,,,rL   c           
         t          j        |j        |j        t	          |dd          t	          |dd          |          S )z:Visit a Continue node by returning a fresh instance of it.rm   Nrr   r  )r   Continuerq   rY   rs   r   s      rJ   visit_continuezTreeRebuilder.visit_continue  sG    ~;t\488"4)94@@
 
 
 	
rL   c           
     4    t          j        |j        |j        t	          |dd          t	          |dd          |                                                   |j                   fdt          |j	        |j
                  D                        S )z9Visit a Compare node by returning a fresh instance of it.rm   Nrr   r  c                p    g | ]2\  }}j         j        |j                                     |          f3S r   )rF   cmp_op_classesr  r   )r   r  exprr   rI   s      rJ   r   z/TreeRebuilder.visit_compare.<locals>.<listcomp>  sR       
 R '6r|DJJtW--  rL   )r   Comparerq   rY   rs   r   r   r
  zipopscomparatorsr  s   `  @rJ   visit_comparezTreeRebuilder.visit_compare  s    -;t\488"4)94@@
 
 
 	JJty'**    
 #&dh0@"A"A  		
 		
 		
 rL   c                    t          j        |                                                   |j                                       |j                   fd|j        D             t          |j                             S )z?Visit a Comprehension node by returning a fresh instance of it.c                <    g | ]}                     |          S r   r   r   s     rJ   r   z5TreeRebuilder.visit_comprehension.<locals>.<listcomp>  s'    >>>ETZZw''>>>rL   )	r   r    r   r   r  iterifsr   is_asyncr  s   `  @rJ   visit_comprehensionz!TreeRebuilder.visit_comprehension  s     %f--JJt{G,,JJty'**>>>>>TX>>>		
 	
 	
 rL   nodes.Decorators | Nonec                J    |j         sdS t          j        dk    r7|j         d         j        }|j         d         j        }|j         d         j        }n|j        }d}d}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   r   rQ   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z2TreeRebuilder.visit_decorators.<locals>.<listcomp>  s'    VVV$**UG44VVVrL   )
decorator_listsysversion_inforq   rm   rr   r   
DecoratorsrY   r   )rI   rM   ri   rq   rm   rr   r   s   `     @rJ   r(  zTreeRebuilder.visit_decorators  s     " 	4 v% 	"(+2F,R0;J!04CNN[FJ!N"!)
 
 
 	VVVVV$BUVVVWWWrL   c           
          t          j        |j        |j        t	          |dd          t	          |dd          |                               fd|j        D                        S )z8Visit a Delete node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z.TreeRebuilder.visit_delete.<locals>.<listcomp>'  s'    OOO$**UG44OOOrL   )r   Deleterq   rY   rs   r   r  r  s   `  @rJ   visit_deletezTreeRebuilder.visit_delete  s{    ,;t\488"4)94@@
 
 
 	OOOOO$,OOOPPPrL   ,Generator[tuple[NodeNG, NodeNG], None, None]c              #  6  K   t          |j        |j                  D ]{\  }}|                     ||          }|sBt	          j        |j        |j        t          |dd           t          |dd           |          }n|                     ||          }||fV  |d S Nrm   rr   r  )	r4  keysr  r   r   
DictUnpackrq   rY   rs   )rI   rM   ri   r   keyrU   rebuilt_valuerebuilt_keys           rJ   _visit_dict_itemszTreeRebuilder._visit_dict_items*  s       di55 	- 	-JC JJug66M 7#.(/,7&}lDII#*=:JD#Q#Q!   #jjg66},,,,,	- 	-rL   c           
         t          j        |j        |j        t	          |dd          t	          |dd          |          }t          |                     |||                    }|                    |           |S )z6Visit a Dict node by returning a fresh instance of it.rm   Nrr   r  )r   Dictrq   rY   rs   listrQ  r   )rI   rM   ri   r   itemss        rJ   
visit_dictzTreeRebuilder.visit_dict>  s    *;t\488"4)94@@
 
 
 TX""499T
 T
 	rL   c           
     B    t          j        |j        |j        t	          |dd          t	          |dd          |                                                   |j                                       |j                   fd|j	        D                        S )z:Visit a DictComp node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z0TreeRebuilder.visit_dictcomp.<locals>.<listcomp>[  '    EEEETZZw''EEErL   )
r   DictComprq   rY   rs   r   r   rN  rU   
generatorsr  s   `  @rJ   visit_dictcompzTreeRebuilder.visit_dictcompN  s    .;t\488"4)94@@
 
 
 	JJtx))JJtz7++EEEEET_EEE	
 	
 	

 rL   c           
         t          j        |j        |j        t	          |dd          t	          |dd          |          }|                    |                     |j        |                     |S )z6Visit a Expr node by returning a fresh instance of it.rm   Nrr   r  )r   rT   rq   rY   rs   r   r   rU   r  s       rJ   
visit_exprzTreeRebuilder.visit_expr_  so    *;t\488"4)94@@
 
 
 	DJ88999rL   c           
     D    t          j        |j        |j        t	          |dd          t	          |dd          |                                                   |j                                       ||j	                   fd|j
        D                        S )z@Visit an ExceptHandler node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z5TreeRebuilder.visit_excepthandler.<locals>.<listcomp>{  r   rL   )r   r!   rq   rY   rs   r   r   rc   r  r{   rR   r  s   `  @rJ   visit_excepthandlerz!TreeRebuilder.visit_excepthandlerl  s     %;t\488"4)94@@
 
 
 	JJty'**!!$;;?????TY???	
 	
 	

 rL   r  type[nodes.For]c                    d S r`   r   rI   r  rM   ri   s       rJ   r  zTreeRebuilder._visit_for  r  rL   type[nodes.AsyncFor]c                    d S r`   r   rd  s       rJ   r  zTreeRebuilder._visit_for  r  rL   type[_ForT]ast.For | ast.AsyncForr2   c           
     :    |j         }t          rPt          sIt          |t          j                  r/ j        r( j        |j        dz
                               d          } ||j        |t          |dd          t          |dd          |           
                    |          }                                         |j                                       |j                   fd|j        D              fd	|j        D             |
           S )z5Visit a For node by returning a fresh instance of it.rP   rn   rm   Nrr   r  r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z,TreeRebuilder._visit_for.<locals>.<listcomp>  r  rL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z,TreeRebuilder._visit_for.<locals>.<listcomp>  s'    HHH5DJJug..HHHrL   )r  r:  rR   orelser  )rY   r   r   rS   astr  rA   rq   indexrs   r  r   r   r  r:  rR   rl  )rI   r  rM   ri   rY   r  r   s   `     @rJ   r  zTreeRebuilder._visit_for  s;    _
 	D9 	DD#,)G)G 	DDJ 	DDK!O4::7CCJ#;!t\488"4)94@@
 
 
 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+ 	 	
 	
 	
 rL   c                D    |                      t          j        ||          S r`   )r  r   Forr   s      rJ   	visit_forzTreeRebuilder.visit_for  s    uy$777rL   c                    d |j         D             }t          j        |j        pd||j        pd|j        |j        t          |dd          t          |dd          |          }| j        	                    |           |S )z=Visit an ImportFrom node by returning a fresh instance of it.c                *    g | ]}|j         |j        fS r   r{   asnamer   aliass     rJ   r   z2TreeRebuilder.visit_importfrom.<locals>.<listcomp>  !    DDD%*el+DDDrL    Nrm   rr   )fromnamenameslevelrq   rY   rm   rr   ri   )
r{  r   
ImportFromrG   r|  rq   rY   rs   rC   append)rI   rM   ri   r{  r   s        rJ   visit_importfromzTreeRebuilder.visit_importfrom  s     EDDDD"[&B*$;t\488"4)94@@

 

 

 	&&w///rL   type[nodes.FunctionDef]c                    d S r`   r   rd  s       rJ   r  z TreeRebuilder._visit_functiondef  r  rL   type[nodes.AsyncFunctionDef]c                    d S r`   r   rd  s       rJ   r  z TreeRebuilder._visit_functiondef  s	     	rL   type[_FunctionT]r1   c                "     j                             i                                 |          \  }}|j        }t          r|j        r|j        d         j        } ||j        ||j        t          |dd          t          |dd          |           	                    |          }|j
        r                     |j
                  }nd}dx}}	                     |          }
|
r|
\  }	}                                         |j                   fd|j        D             |||	|                     |                               |                                                      j                                          S )z,Visit an FunctionDef node to become astroid.r   rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z4TreeRebuilder._visit_functiondef.<locals>.<listcomp>  r  rL   )r  rR   r*  r  type_comment_returnsr  r&  r   )rB   r~  r]   rq   r   rA  r{   rY   rs   r(  r  r   r  r   r  rR   r   r   pop)rI   r  rM   ri   r\   rq   r*  r  r  r  type_comment_annotationr   s   `          @rJ   r  z TreeRebuilder._visit_functiondef  s    	!!"%%%!]]400l 	3, 	3 (+2F#t\488"4)94@@
 
 
 **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 	 		
 		
 		
 	##G,,,   rL   c                D    |                      t          j        ||          S r`   )r  r   rx   r   s      rJ   visit_functiondefzTreeRebuilder.visit_functiondef  s     &&u'8$GGGrL   c           
         t          j        |j        |j        t	          |dd          t	          |dd          |                                                   |j                   fd|j        D                        S )z>Visit a GeneratorExp node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z4TreeRebuilder.visit_generatorexp.<locals>.<listcomp>  rY  rL   )	r   GeneratorExprq   rY   rs   r   r   eltr[  r  s   `  @rJ   visit_generatorexpz TreeRebuilder.visit_generatorexp  s     $;t\488"4)94@@
 
 
 	JJtx))EEEEET_EEE	
 	
 	
 rL   2nodes.Attribute | nodes.AssignAttr | nodes.DelAttrc                   |                      |          }|t          j        k    rHt          j        |j        |j        |j        t          |dd          t          |dd          |          }n|t          j	        k    r|t          j
        |j        |j        |j        t          |dd          t          |dd          |          }t          |t          j                  s| j                            |           nGt          j        |j        |j        |j        t          |dd          t          |dd          |          }|                    |                     |j        |                     |S )z<Visit an Attribute node by returning a fresh instance of it.rm   Nrr   )attrnamerq   rY   rm   rr   ri   )rg   r   Delr   DelAttrattrrq   rY   rs   Store
AssignAttrrS   r!   rD   r~  	Attributer   r   rU   rI   rM   ri   contextr   s        rJ   visit_attributezTreeRebuilder.visit_attribute  sm    ##D))gk! %	 m{?"4t<<&t-=tDD  GG % 	&{?"4t<<&t-=tDD  G fe&9:: 6 %,,W555o{?"4t<<&t-=tDD  G 	DJ88999rL   c                   t          j        |j        |j        |j        t          |dd          t          |dd          |          }| j        r>|j        D ]6}| j        d                             |g                               |           7|S )z&Visit a Global node to become astroid.rm   Nrr   r{  rq   rY   rm   rr   ri   rQ   )	r   Globalr{  rq   rY   rs   rB   
setdefaultr~  )rI   rM   ri   r   r{   s        rJ   visit_globalzTreeRebuilder.visit_globalI  s    ,*;t\488"4)94@@
 
 
  	L
 L L"2&11$;;BB7KKKKrL   c           
     4    t          j        |j        |j        t	          |dd          t	          |dd          |                                                   |j                   fd|j        D              fd|j	        D                        S )z5Visit an If node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z*TreeRebuilder.visit_if.<locals>.<listcomp>e  r   rL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z*TreeRebuilder.visit_if.<locals>.<listcomp>f  '    AAAETZZw''AAArL   )
r   Ifrq   rY   rs   r   r   r  rR   rl  r  s   `  @rJ   visit_ifzTreeRebuilder.visit_ifY  s    (;t\488"4)94@@
 
 
 	JJty'**?????TY???AAAAAT[AAA	
 	
 	

 rL   c           
     L   t          j        |j        |j        t	          |dd          t	          |dd          |          }|                    |                     |j        |          |                     |j        |          |                     |j	        |                     |S )z7Visit a IfExp node by returning a fresh instance of it.rm   Nrr   r  )
r   IfExprq   rY   rs   r   r   r  rR   rl  r  s       rJ   visit_ifexpzTreeRebuilder.visit_ifexpj  s    +;t\488"4)94@@
 
 
 	JJty'**JJty'**JJt{G,,	
 	
 	

 rL   c                ,   d |j         D             }t          j        ||j        |j        t          |dd          t          |dd          |          }|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   rt  rv  s     rJ   r   z.TreeRebuilder.visit_import.<locals>.<listcomp>}  rx  rL   rm   Nrr   r  .r   )r{  r   Importrq   rY   rs   r  r@   )rI   rM   ri   r{  r   r{   ru  s          rJ   visit_importzTreeRebuilder.visit_import{  s    DDDDD,;t\488"4)94@@
 
 
 $M 	: 	:LD&>TDTZZ__Q/9999rL   c           
          t          j        |j        |j        t	          |dd           t	          |dd           |                               fd|j        D                        S )Nrm   rr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z1TreeRebuilder.visit_joinedstr.<locals>.<listcomp>  r  rL   )r   	JoinedStrrq   rY   rs   r   r  r  s   `  @rJ   visit_joinedstrzTreeRebuilder.visit_joinedstr  s{    /;t\488"4)94@@
 
 
 	NNNNN$+NNNOOOrL   c           
     $   t          j        |j        |j        t	          |dd           t	          |dd           |          }|                    |                     |j        |          |j        |                     |j	        |                     |S rK  )
r   FormattedValuerq   rY   rs   r   r   rU   
conversionformat_specr  s       rJ   visit_formattedvaluez"TreeRebuilder.visit_formattedvalue  s     &;t\488"4)94@@
 
 
 	JJtz7++OJJt'11	
 	
 	

 rL   c           
        t          j        |j        |j        t	          |dd           t	          |dd           |          }|                    |                     |j        |          |                     |j        |                     |S rK  )	r   	NamedExprrq   rY   rs   r   r   r  rU   r  s       rJ   visit_namedexprzTreeRebuilder.visit_namedexpr  s     o{?"4t<<&t-=tDD  G 

4;00$**TZ2Q2Q   NrL   c                     t          j        t          j        |                               fd|j        D                        S )z>Visit an ExtSlice node by returning a fresh instance of Tuple.)rd   ri   c                <    g | ]}                     |          S r   r   )r   dimr   rI   s     rJ   r   z0TreeRebuilder.visit_extslice.<locals>.<listcomp>  s'    LLL3djjg66LLLrL   )r   Tupler   re   r   dimsr  s   `  @rJ   visit_extslicezTreeRebuilder.visit_extslice  sO    
 kgl6BBBGLLLLL$)LLLMMMNrL   c                8    |                      |j        |          S )z;Visit a Index node by returning a fresh instance of NodeNG.)r   rU   r   s      rJ   visit_indexzTreeRebuilder.visit_index  s    ::dj&111rL   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.rq   NrY   rm   rr   )r  rq   rY   rm   rr   ri   )r   r"   r  rs   r   r   rU   r  s       rJ   visit_keywordzTreeRebuilder.visit_keyword  s    -4400t\488t\488"4)94@@
 
 
 	DJ88999rL   c           
        t          j        |j        |j        t	          |dd          t	          |dd          |          }|                    |                     |j        |          |                     |j        |                     |S )z8Visit a Lambda node by returning a fresh instance of it.rm   Nrr   r  )	r   Lambdarq   rY   rs   r   r   r  rR   r  s       rJ   visit_lambdazTreeRebuilder.visit_lambda  s    ,;t\488"4)94@@
 
 
 	DIw77DIw9W9WXXXrL   c                                          |          }t          j        ||j        |j        t          |dd          t          |dd          |                               fd|j        D                        S )z6Visit a List node by returning a fresh instance of it.rm   Nrr   rd   rq   rY   rm   rr   ri   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z,TreeRebuilder.visit_list.<locals>.<listcomp>  '    LLL$**UG44LLLrL   )rg   r   Listrq   rY   rs   r   eltsr  s   `   @rJ   
visit_listzTreeRebuilder.visit_list  s    ##D))*;t\488"4)94@@
 
 
 	LLLLL$)LLLMMMrL   c           
         t          j        |j        |j        t	          |dd          t	          |dd          |                                                   |j                   fd|j        D                        S )z:Visit a ListComp node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z0TreeRebuilder.visit_listcomp.<locals>.<listcomp>  rY  rL   )	r   ListComprq   rY   rs   r   r   r  r[  r  s   `  @rJ   visit_listcompzTreeRebuilder.visit_listcomp  s    .;t\488"4)94@@
 
 
 	JJtx))EEEEET_EEE	
 	
 	
 rL   -nodes.Name | nodes.AssignName | nodes.DelNamec                   |                      |          }|t          j        k    rHt          j        |j        |j        |j        t          |dd          t          |dd          |          }n|t          j	        k    rHt          j
        |j        |j        |j        t          |dd          t          |dd          |          }nGt          j        |j        |j        |j        t          |dd          t          |dd          |          }|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.rm   Nrr   r  )rg   r   r  r   DelNameidrq   rY   rs   r  r   Namer   r   r  r  s        rJ   r  zTreeRebuilder.visit_name  sb    ##D))gk! 	mW{?"4t<<&t-=tDD  GG % 	&W{?"4t<<&t-=tDD  GG jW{?"4t<<&t-=tDD  G w{GM22 	+5!15=!@A7KKG!!'***rL   c                    t          j        |j        |j        |j        t          |dd          t          |dd          |          S )z6Visit a Nonlocal node and return a new instance of it.rm   Nrr   r  )r   Nonlocalr{  rq   rY   rs   r   s      rJ   visit_nonlocalzTreeRebuilder.visit_nonlocal0  sL    ~*;t\488"4)94@@
 
 
 	
rL   c                    t          j        |j        |j        |j        |j        t          |dd          t          |dd          |          S )z=Visit a Constant node by returning a fresh instance of Const.rm   Nrr   )rU   kindrq   rY   rm   rr   ri   )r   ConstrU   r  rq   rY   rs   r   s      rJ   visit_constantzTreeRebuilder.visit_constant<  sQ    {*;t\488"4)94@@	
 	
 	
 		
rL   c                P    t          j        t          |j        |j        |          S )z>Visit an Ellipsis node by returning a fresh instance of Const.)rU   rq   rY   ri   )r   r  Ellipsisrq   rY   r   s      rJ   visit_ellipsiszTreeRebuilder.visit_ellipsisK  s+    ;{?	   rL   c                N    t          j        |j        |j        |j        |          S r`   )r   r  rU   rq   rY   r   s      rJ   visit_nameconstantz TreeRebuilder.visit_nameconstantT  s*     ;
	  rL   ast.Str | ast.Bytesc                N    t          j        |j        |j        |j        |          S )zAVisit a String/Bytes node by returning a fresh instance of Const.)r   r  srq   rY   r   s      rJ   	visit_strzTreeRebuilder.visit_str_  (    ;	  rL   c                N    t          j        |j        |j        |j        |          S )z8Visit a Num node by returning a fresh instance of Const.)r   r  nrq   rY   r   s      rJ   	visit_numzTreeRebuilder.visit_numj  r  rL   c           
         t          j        |j        |j        t	          |dd          t	          |dd          |          S )z6Visit a Pass node by returning a fresh instance of it.rm   Nrr   r  )r   Passrq   rY   rs   r   s      rJ   
visit_passzTreeRebuilder.visit_passs  sG    z;t\488"4)94@@
 
 
 	
rL   c           
        t          j        |j        |j        t	          |dd          t	          |dd          |          }|                    |                     |j        |          |                     |j        |                     |S )z7Visit a Raise node by returning a fresh instance of it.rm   Nrr   r  )exccause)	r   Raiserq   rY   rs   r   r   r  r  r  s       rJ   visit_raisezTreeRebuilder.visit_raise~  s    +;t\488"4)94@@
 
 
 	

48W--**TZ11 	 	
 	
 	
 rL   c           
         t          j        |j        |j        t	          |dd          t	          |dd          |          }|j        .|                    |                     |j        |                     |S )z8Visit a Return node by returning a fresh instance of it.rm   Nrr   r  )r   Returnrq   rY   rs   rU   r   r   r  s       rJ   visit_returnzTreeRebuilder.visit_return  sy    ,;t\488"4)94@@
 
 
 : 	>TZZ
G<<===rL   c           
          t          j        |j        |j        t	          |dd          t	          |dd          |                               fd|j        D                        S )z5Visit a Set node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z+TreeRebuilder.visit_set.<locals>.<listcomp>  r  rL   )r   Setrq   rY   rs   r   r  r  s   `  @rJ   	visit_setzTreeRebuilder.visit_set  s{    );t\488"4)94@@
 
 
 	LLLLL$)LLLMMMrL   c           
         t          j        |j        |j        t	          |dd          t	          |dd          |                                                   |j                   fd|j        D                        S )z9Visit a SetComp node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z/TreeRebuilder.visit_setcomp.<locals>.<listcomp>  rY  rL   )	r   SetComprq   rY   rs   r   r   r  r[  r  s   `  @rJ   visit_setcompzTreeRebuilder.visit_setcomp  s    -;t\488"4)94@@
 
 
 	JJtx))EEEEET_EEE	
 	
 	
 rL   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.rq   NrY   rm   rr   r  )r  upperstep)r   Slicers   r   r   r  r  r  r  s       rJ   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// 	 	
 	
 	

 rL   c                D   |                      |          }t          j        ||j        |j        t          |dd          t          |dd          |          }|                    |                     |j        |          |                     |j	        |                     |S )z;Visit a Subscript node by returning a fresh instance of it.rm   Nrr   r  )
rg   r   	Subscriptrq   rY   rs   r   r   rU   slicer  s        rJ   visit_subscriptzTreeRebuilder.visit_subscript  s    ##D))/;t\488"4)94@@
 
 
 	JJtz7++TZZ
G-L-L	
 	
 	
 rL   c                   |                      |          }t          j        ||j        |j        t          |dd          t          |dd          |          }|                    |                     |j        |                     |S )z5Visit a Starred node and return a new instance of it.rm   Nrr   r  )	rg   r   Starredrq   rY   rs   r   r   rU   r  s        rJ   visit_starredzTreeRebuilder.visit_starred  s    ##D))-;t\488"4)94@@
 
 
 	DJ88999rL   nodes.TryExceptc                    t           j        dk    ri|j        }|j        }g |j        |j        |j        }t          |          D ]}|j        }|j        } t          j	        |j
        |j        |||          n t          j	        |j
        |j        |                               fd|j        D              fd|j        D              fd|j        D                        S )z;Visit a TryExcept node by returning a fresh instance of it.r   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z1TreeRebuilder.visit_tryexcept.<locals>.<listcomp>  r   rL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z1TreeRebuilder.visit_tryexcept.<locals>.<listcomp>  s'    CCCETZZw''CCCrL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z1TreeRebuilder.visit_tryexcept.<locals>.<listcomp>  r  rL   )rB  rC  rm   rr   rR   handlersrl  reversedr   	TryExceptrq   rY   r   )rI   rM   ri   rm   rr   all_childrenr   r   s   `      @rJ   visit_tryexceptzTreeRebuilder.visit_tryexcept  s!   v% 	L J!0N*TDI*T*T*TL!,//  "-
!&!5o{?%-  GG odk4?FKKG?????TY???CCCCCT]CCCAAAAAT[AAA	
 	
 	

 rL   )nodes.TryExcept | nodes.TryFinally | Nonec           
         |j         rt          j        |j        |j        t          |dd           t          |dd           |          |j        r                     |          g}n fd|j        D             }	                    | fd|j         D                        S |j        r                     ||          S d S )Nrm   rr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z+TreeRebuilder.visit_try.<locals>.<listcomp>  s'    JJJu

5'22JJJrL   c                <    g | ]}                     |          S r   r   )r   r  r   rI   s     rJ   r   z+TreeRebuilder.visit_try.<locals>.<listcomp>  s'    #S#S#SqDJJq'$:$:#S#S#SrL   )
	finalbodyr   
TryFinallyrq   rY   rs   r  r  rR   r   )rI   rM   ri   rR   r   s   `   @rJ   	visit_tryzTreeRebuilder.visit_try  s    
 > 	&{?"4t<<&t-=tDD  G } K,,T7;;<JJJJJ	JJJT#S#S#S#S#SDN#S#S#STTTN= 	6''f555trL   c                                          |          }t          j        ||j        |j        t          |dd          t          |dd          |                               fd|j        D                        S )z7Visit a Tuple node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z-TreeRebuilder.visit_tuple.<locals>.<listcomp>-  r  rL   )rg   r   r  rq   rY   rs   r   r  r  s   `   @rJ   visit_tuplezTreeRebuilder.visit_tuple!  s    ##D))+;t\488"4)94@@
 
 
 	LLLLL$)LLLMMMrL   c                   t          j        | j        j        |j        j                 |j        |j        t          |dd          t          |dd          |          }|	                    | 
                    |j        |                     |S )z9Visit a UnaryOp node by returning a fresh instance of it.rm   Nrr   r  )r   UnaryOprF   unary_op_classesr  r  rq   rY   rs   r   r   operandr  s       rJ   visit_unaryopzTreeRebuilder.visit_unaryop0  s    -"3DG4EF;t\488"4)94@@
 
 
 	DL'::;;;rL   c           
     4    t          j        |j        |j        t	          |dd          t	          |dd          |                                                   |j                   fd|j        D              fd|j	        D                        S )z7Visit a While node by returning a fresh instance of it.rm   Nrr   r  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z-TreeRebuilder.visit_while.<locals>.<listcomp>J  r   rL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z-TreeRebuilder.visit_while.<locals>.<listcomp>K  r  rL   )
r   Whilerq   rY   rs   r   r   r  rR   rl  r  s   `  @rJ   visit_whilezTreeRebuilder.visit_while>  s    +;t\488"4)94@@
 
 
 	JJty'**?????TY???AAAAAT[AAA	
 	
 	

 rL   type[nodes.With]c                    d S r`   r   rd  s       rJ   r  zTreeRebuilder._visit_withO  r  rL   type[nodes.AsyncWith]c                    d S r`   r   rd  s       rJ   r  zTreeRebuilder._visit_withU  r  rL   type[_WithT]ast.With | ast.AsyncWithr3   c           
         |j         }t          rPt          sIt          |t          j                  r/ j        r( j        |j        dz
                               d          } ||j        |t          |dd           t          |dd           |          d fd
 
                    |          }                    fd|j        D              fd|j        D             |           S )NrP   rn   rm   rr   r  r   ast.withitemr;   tuple[NodeNG, NodeNG | None]c                x                         | j                  }                     | j                  }||fS r`   )r   context_exproptional_vars)r   r2  varr   rI   s      rJ   visit_childz.TreeRebuilder._visit_with.<locals>.visit_childo  s9    ::e0'::D**U0'::C9rL   r  c                &    g | ]} |          S r   r   )r   r   r7  s     rJ   r   z-TreeRebuilder._visit_with.<locals>.<listcomp>v  s#    >>>%;;u%%>>>rL   c                <    g | ]}                     |          S r   r   r   s     rJ   r   z-TreeRebuilder._visit_with.<locals>.<listcomp>w  r  rL   )rU  rR   r  )r   r1  r;   r2  )rY   r   r   rS   rm  r  rA   rq   rn  rs   r  r   rU  rR   )rI   r  rM   ri   rY   r  r   r7  s   `     @@rJ   r  zTreeRebuilder._visit_with[  s6    _
 	D9 	DD#-)H)H 	DTZ 	DDK!O4::7CCJ#;!t\488"4)94@@
 
 
	 	 	 	 	 	 	
 11$w1GG>>>>4:>>>DDDDD$)DDD+ 	 	
 	
 	

 rL   c                D    |                      t          j        ||          S r`   )r  r   Withr   s      rJ   
visit_withzTreeRebuilder.visit_with|  s    
D&999rL   c           
         t          j        |j        |j        t	          |dd          t	          |dd          |          }|j        .|                    |                     |j        |                     |S )z7Visit a Yield node by returning a fresh instance of it.rm   Nrr   r  )r   Yieldrq   rY   rs   rU   r   r   r  s       rJ   visit_yieldzTreeRebuilder.visit_yield  sy    +;t\488"4)94@@
 
 
 : 	>TZZ
G<<===rL   c           
         t          j        |j        |j        t	          |dd           t	          |dd           |          }|j        .|                    |                     |j        |                     |S rK  )r   	YieldFromrq   rY   rs   rU   r   r   r  s       rJ   visit_yieldfromzTreeRebuilder.visit_yieldfrom  sy    /;t\488"4)94@@
 
 
 : 	>TZZ
G<<===rL   c                     t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D                        S )Nr  c                <    g | ]}                     |          S r   r   )r   caser   rI   s     rJ   r   z-TreeRebuilder.visit_match.<locals>.<listcomp>  s'    HHHTtzz$00HHHrL   )subjectcases)
r   Matchrq   rY   rm   rr   r   r   rF  rG  r  s   `  @rJ   visit_matchzTreeRebuilder.visit_match  s    k{??#2  G 

4<99HHHHHTZHHH     NrL   c                     t          j        |                                                   |j                                       |j                   fd|j        D                        S )Nr  c                <    g | ]}                     |          S r   r   r   s     rJ   r   z1TreeRebuilder.visit_matchcase.<locals>.<listcomp>  '    HHHUdjj00HHHrL   )patternguardrR   )r   r#   r   r   rM  rN  rR   r  s   `  @rJ   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    
 NrL   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |                     |S )Nr  r  )	r   
MatchValuerq   rY   rm   rr   r   r   rU   r  s       rJ   visit_matchvaluezTreeRebuilder.visit_matchvalue  sa     &{??#2  G 4::dj'#B#BCCCNrL   c                h    t          j        |j        |j        |j        |j        |j        |          S )N)rU   rq   rY   rm   rr   ri   )r   MatchSingletonrU   rq   rY   rm   rr   r   s      rJ   visit_matchsingletonz"TreeRebuilder.visit_matchsingleton  s;     'j{??#2   rL   c                     t          j        |j        |j        |j        |j        |                               fd|j        D                        S )Nr  c                <    g | ]}                     |          S r   r   r   rM  r   rI   s     rJ   r   z5TreeRebuilder.visit_matchsequence.<locals>.<listcomp>  '    TTT7$**Wg66TTTrL   patterns)r   MatchSequencerq   rY   rm   rr   r   r[  r  s   `  @rJ   visit_matchsequencez!TreeRebuilder.visit_matchsequence  sw     ){??#2  G TTTTTdmTTT     NrL   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     rJ   r   z4TreeRebuilder.visit_matchmapping.<locals>.<listcomp>  rL  rL   c                <    g | ]}                     |          S r   r   rX  s     rJ   r   z4TreeRebuilder.visit_matchmapping.<locals>.<listcomp>  rY  rL   )rL  r[  rest)r   MatchMappingrq   rY   rm   rr   r   rL  r[  r  ra  r  s   `  @rJ   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    
 NrL   c                    t          j        |j        |j        |j        |j        |                                                   |j                   fd|j	        D             |j
         fd|j        D                        S )Nr  c                <    g | ]}                     |          S r   r   rX  s     rJ   r   z2TreeRebuilder.visit_matchclass.<locals>.<listcomp>  rY  rL   c                <    g | ]}                     |          S r   r   rX  s     rJ   r   z2TreeRebuilder.visit_matchclass.<locals>.<listcomp>  s4       5<DJJw00  rL   )r  r[  	kwd_attrskwd_patterns)r   
MatchClassrq   rY   rm   rr   r   r   r  r[  rg  rh  r  s   `  @rJ   visit_matchclasszTreeRebuilder.visit_matchclass  s     &{??#2  G JJtx11TTTTTdmTTT.    @D@Q  	     NrL   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |||j                             |S )Nr  )r{   )	r   	MatchStarrq   rY   rm   rr   r   r  r{   r  s       rJ   visit_matchstarzTreeRebuilder.visit_matchstar  sd     o{??#2  G $"7"7gty"Q"QRRRNrL   c                    t          j        |j        |j        |j        |j        |          }|                    |                     |j        |          | 	                    |||j
                             |S )Nr  )rM  r{   )r   MatchAsrq   rY   rm   rr   r   r   rM  r  r{   r  s       rJ   visit_matchaszTreeRebuilder.visit_matchas  s    m{??#2  G 

4<99**4$)DD     NrL   c                     t          j        |j        |j        |j        |j        |                               fd|j        D                        S )Nr  c                <    g | ]}                     |          S r   r   rX  s     rJ   r   z/TreeRebuilder.visit_matchor.<locals>.<listcomp>,  rY  rL   rZ  )r   MatchOrrq   rY   rm   rr   r   r[  r  s   `  @rJ   visit_matchorzTreeRebuilder.visit_matchor#  st    m{??#2  G TTTTTdmTTT     NrL   )NN)r6   r   r7   r8   r9   r:   r;   r<   )rM   r,   r;   rN   )rM   r^   r;   r   )rM   rh   ri   rj   r;   rk   )rM   r   r;   r<   )r   r   r;   r<   )
rM   r-   r   rX   r   rX   r   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r0   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r.   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r/   ri   r   r;   r   )rM   r   ri   r   r;   r   )rM   r  ri   r   r;   r  )rM   r  ri   r   r;   r  )rM   r  ri   r   r;   r  )rM   r
  ri   r   r;   r  )rM   r  ri   r   r;   r  )rM   r  ri   r   r;   r  )rM   r  ri   r   r;   r  )rM   r  ri   r   r;   r  )rM   r  ri   r  r;   r  )rM   r  ri   r  r;   r   )rM   r!  ri   r   r;   r"  )rM   r$  ri   r   r;   r%  )rM   r'  ri   r   r;   r(  )rM   r*  ri   r   r;   r+  )rM   r-  ri   r   r;   r.  )rM   r0  ri   r   r;   r1  )rM   r3  ri   r   r;   r4  )rM   r6  ri   r   r;   r4  )rM   r8  ri   r   r;   r4  )rM   r:  ri   r   r;   r4  )rM   r<  ri   r   r;   r4  )rM   r>  ri   r   r;   r4  )rM   r@  ri   r   r;   rA  )rM   rC  ri   r   r;   rD  )rM   rF  ri   r   r;   rG  )rM   rI  ri   r   r;   rJ  )rM   rL  ri   r   r;   rM  )rM   rO  ri   r  r;   rP  )rM   rR  ri   r   r;   r  )rM   rT  ri   r   r;   rU  )rM   rW  ri   r   r;   rX  )rM   rZ  ri   r   r;   r  )rM   r\  ri   r   r;   r]  )rM   r_  ri   r   r;   r`  )rM   rb  ri   r   r;   rc  )rM   re  ri   r   r;   rf  )rM   rh  ri   r   r;   ri  )rM   rl  ri   r   r;   rm  )rM   ro  ri   r   r;   rp  )rM   rr  ri   r   r;   rs  )rM   ru  ri   r   r;   rv  )rM   ry  ri   r   r;   rz  )rM   r|  ri   r   r;   r}  )rM   r  ri   r   r;   r  )rM   r  ri   r   r;   r  )rM   r  ri   r   r;   r  )rM   r  ri   r   r;   r  )rM   r  ri   r   r;   r  )rM   r  ri   r   r;   r   )rM   r<   ri   r   r;   r<   )rM   r  ri   r   r;   r  )rM   r  r;   r<   )rM   r  ri   r  r;   r  )rM   r  ri   r   r;   r  )rM   r  ri   r   r  rX   r;   r   )rM   r  ri   r   r  r<   r;   r<   )rM   r  ri   r   r  r:   r;   r  )T)rM   r.   ri   r   r  r   r;   r   )rM   rh   ri   r   r;   r>  )rM   r   ri   r   r   r   r;   rI  )r  rb  rM   r   ri   r   r;   r   )r  re  rM   r   ri   r   r;   r   )r  rg  rM   rh  ri   r   r;   r2   )r  r  rM   r/   ri   r   r;   r   )r  r  rM   r0   ri   r   r;   r   )r  r  rM   r  ri   r   r;   r1   )rM   r  ri   r   r;   r  )rM   r-  ri   r   r;   r  )rM   r  ri   r   r;   r4  )rM   rW  ri   r   r;   r  )rM   rW  ri   r   r;   r  )r  r*  rM   rb  ri   r   r;   rc  )r  r,  rM   r   ri   r   r;   r   )r  r.  rM   r/  ri   r   r;   r3   )rM   rb  ri   r   r;   r   )rM   re  ri   r   r;   r   )rM   rh  ri   r   r;   r   )dr  
__module____qualname____doc__rK   r]   rg   r   r   r   r   r	   r   r   rB  rC  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r.  r7  r=  r(  rH  rQ  rV  r\  r^  ra  r  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  visit_bytesr  r  r  r  r  r  r  r  r  r  r  r  r$  r)  r  r<  r?  rB  rI  rO  rR  rU  r]  rc  rj  rm  rp  rt  r   rL   rJ   r5   r5   9   s       ;;
 .2	2 2 2 2 2&   *U U U U5
 5
 5
 5
n00 00 00 00d/ / / /(   0  J		 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	
 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	
 v% 	   X f$ 	   X    X 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	
 
	 	 	 
	 f$ 	   X    X    X    X    X 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	
 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 
	 	 	 
	 w& 2	   X    X    X    X
    X
    X
    X    X    X    X    X 
	 	 	 
	 
	 	 	 
	* * * *3 3 3 3= = = =L L L L\    !! !! !! !!F! ! ! !2M M M M
= = = =
 
 
 
? ? ? ?   $   $    X
    X   *           	
 	
 	
 	
   $ DH# # # # #J	
 	
 	
 	
   ,      @   - - - -(       "      &    X
    X
   68 8 8 8   (    X
    X5 5 5 5nH H H H
   $- - - -^       "   "   $
 
 
 
   $ 6! 	 	 	 	  &  2	 	 	 		2 	2 	2 	2             ( ( ( (T

 

 

 


 
 
 
 &  (	 	 	 			 		 		 			 	 	 	  	 	 	 		
 	
 	
 	
   "             "   "      :   2         "    X
    X
   B: : : :       7" T	 	 	 			 		 		 			 	 	 	
	 
	 
	 
		 	 	 		 	 	 	&	 	 	 	(	 	 	 		 	 	 	 	 	 	 	 	 	ST TrL   r5   );rw  
__future__r   rm  rB  ru   collections.abcr   r   ior   tokenizer   r   typingr	   r
   r   r   r   astroidr   astroid._astr   r   r   astroid.constr   r   r   r   r   astroid.managerr   astroid.nodesr   astroid.nodes.utilsr   astroid.typingr   rC  r   typing_extensionsr+   __annotations__r,   rx   rw   r1   rp  r  r2   r;  r  r3   r   r'  r   r5   r   rL   rJ   <module>r     s  
   # " " " " " 



 



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