o
    tBhc                     @  s  d 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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZ ddl[m\Z\m]Z]m^Z^ ddl_m`Z` ddlambZb G d	d
 d
ebe6 ZcG dd deZZddS )z{Base visitor that implements an identity AST transform.

Subclass TransformVisitor to perform non-trivial transformations.
    )annotations)IterableOptionalcast)QGDEFREVEAL_TYPEArgument
AssertStmtAssertTypeExprAssignmentExprAssignmentStmt	AwaitExprBlock	BreakStmt	BytesExprCallExprCastExprClassDefComparisonExprComplexExprConditionalExprContinueStmt	DecoratorDelStmtDictExprDictionaryComprehensionEllipsisExprEnumCallExpr
ExpressionExpressionStmt	FloatExprForStmtFuncDefFuncItemGeneratorExpr
GlobalDeclIfStmtImport	ImportAll
ImportFrom	IndexExprIntExpr
LambdaExprListComprehensionListExpr
MemberExprMypyFileNamedTupleExprNameExprNewTypeExprNodeNonlocalDeclOperatorAssignmentStmtOpExprOverloadedFuncDefOverloadPartParamSpecExprPassStmtPromoteExpr	RaiseStmtRefExpr
ReturnStmt
RevealExprSetComprehensionSetExpr	SliceExprStarExpr	StatementStrExpr	SuperExprSymbolTableTempNodeTryStmt	TupleExprTypeAliasExprTypeApplicationTypedDictExprTypeVarExprTypeVarTupleExpr	UnaryExprVar	WhileStmtWithStmt	YieldExprYieldFromExpr)TraverserVisitor)FunctionLike
ProperTypeType)replace_object_state)NodeVisitorc                   @  s  e Zd ZdZd(ddZd)dd	Zd*ddZd+ddZd,ddZd-ddZ	d.ddZ
d/ddZd0d d!Zd1d#d$Zd2d&d'Zd3d)d*Zd4d,d-Zd5d/d0Zd6d2d3Zd7d5d6Zd8d8d9Zd9d;d<Zd9d=d>Zd:d@dAZd;dCdDZd<dFdGZd=dIdJZd>dLdMZd?dOdPZd@dRdSZdAdUdVZdBdXdYZdCd[d\Z dDd^d_Z!dEdadbZ"dFdddeZ#dGdgdhZ$dHdjdkZ%dIdmdnZ&dJdpdqZ'dKdsdtZ(dLdvdwZ)dMdydzZ*dNd|d}Z+dNd~dZ,dOddZ-dPddZ.dQddZ/dRddZ0dSddZ1dTddZ2dUddZ3dVddZ4dWddZ5dXddZ6dYddZ7dZddZ8d[ddZ9d\ddZ:d]ddZ;d^ddZ<d_ddZ=d`ddZ>daddZ?dbddZ@dcddZAddddZBdeddĄZCdfddǄZDdfddɄZEdgdd̄ZFdhddτZGdidd҄ZHdjddՄZIdkdd؄ZJdlddۄZKdmddބZLdnddZMdoddZNdpddZOdqddZPdrddZQdsddZRd)ddZSdtddZTduddZUdvddZVdwdd ZWdxddZXdyddZYdzd
dZZd{ddZ[d|ddZ\d}ddZ]d~ddZ^dddZ_dd!d"Z`dd%d&Zad'S (  TransformVisitora  Transform a semantically analyzed AST (or subtree) to an identical copy.

    Use the node() method to transform an AST node.

    Subclass to perform a non-identity transform.

    Notes:

     * This can only be used to transform functions or classes, not top-level
       statements, and/or modules as a whole.
     * Do not duplicate TypeInfo nodes. This would generally not be desirable.
     * Only update some name binding cross-references, but only those that
       refer to Var, Decorator or FuncDef nodes, not those targeting ClassDef or
       TypeInfo nodes.
     * Types are not transformed, but you can override type() to also perform
       type transformation.

    TODO nested classes and functions have not been tested well enough
    returnNonec                 C  s   d| _ i | _i | _d S )NF)	test_onlyvar_mapfunc_placeholder_mapself re   i/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/mypy/treetransform.py__init__x   s   
zTransformVisitor.__init__noder0   c                 C  sX   | j sJ ddd |j D }t| |jg |j|d}|j|_|j|_t	 |_
|S )Nz0This visitor should not be used for whole files.c                 S  s   i | ]\}}||d d  qS Nre   ).0linecodesre   re   rf   
<dictcomp>       z4TransformVisitor.visit_mypy_file.<locals>.<dictcomp>)ignored_lines)r`   ro   itemsr0   
statementsdefsis_bom	_fullnamepathrH   names)rd   rh   ro   newre   re   rf   visit_mypy_file   s   z TransformVisitor.visit_mypy_filer'   c                 C     t |jd d  S ri   )r'   idsrd   rh   re   re   rf   visit_import      zTransformVisitor.visit_importr)   c                 C  s   t |j|j|jd d  S ri   )r)   idrelativerv   r{   re   re   rf   visit_import_from      z"TransformVisitor.visit_import_fromr(   c                 C     t |j|jS ri   )r(   r~   r   r{   re   re   rf   visit_import_all      z!TransformVisitor.visit_import_allargumentr   c                 C  s*   t | |j|j|j|j}|| |S ri   )r   	visit_varvariabletype_annotationinitializerkindset_line)rd   r   argre   re   rf   copy_argument   s   

zTransformVisitor.copy_argumentr"   c              	     s   t  }|jjD ]}|| qt|j fdd|jD  |jttt	  
|j} || |j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_| jv rh j| }t|| |S |S )Nc                      g | ]}  |qS re   r   rj   r   rc   re   rf   
<listcomp>       z3TransformVisitor.visit_func_def.<locals>.<listcomp>)FuncMapInitializerbodyacceptr"   name	argumentsblockr   r   rX   optional_typetypecopy_function_attributesrt   is_decoratedis_conditionalabstract_status	is_staticis_classis_propertyis_finaloriginal_defrb   r[   )rd   rh   initstmtrw   resultre   rc   rf   visit_func_def   s0   




zTransformVisitor.visit_func_defr,   c                   sF   t  fdd|jD  |jttt  |j} 	|| |S )Nc                   r   re   r   r   rc   re   rf   r      r   z6TransformVisitor.visit_lambda_expr.<locals>.<listcomp>)
r,   r   r   r   r   r   rX   r   r   r   rd   rh   rw   re   rc   rf   visit_lambda_expr   s   
z"TransformVisitor.visit_lambda_exprrw   r#   originalc                 C  s4   |j |_ |j|_|j|_|j|_|j|_|j|_d S ri   )infomin_argsmax_posis_overloadis_generatorrk   )rd   rw   r   re   re   rf   r      s   z)TransformVisitor.copy_function_attributesr8   c                   s    fdd|j D }t||j D ]\}}|j|_qt|}|j|_ |j}t|ts.J ||_|j	|_	|j
|_
|j|_|j|_|j|_|jrRtt|j |_|S )Nc                   s   g | ]
}t t| qS re   )r   r9   r   )rj   itemrc   re   rf   r      s    z>TransformVisitor.visit_overloaded_func_def.<locals>.<listcomp>)rp   ziprk   r8   rt   r   r   
isinstancerY   r   r   r   r   r   implr   r9   r   )rd   rh   rp   newitemolditemrw   new_typere   rc   rf   visit_overloaded_func_def   s    
z*TransformVisitor.visit_overloaded_func_defr   c                   sV   t |j |j|j |j |j}|j	|_	|j
|_
 fdd|jD |_|S )Nc                   r   re   expr)rj   	decoratorrc   re   rf   r      r   z4TransformVisitor.visit_class_def.<locals>.<listcomp>)r   r   r   rr   	type_varsexpressionsbase_type_exprsoptional_expr	metaclassfullnamer   
decoratorsr   re   rc   rf   visit_class_def   s   


z TransformVisitor.visit_class_defr%   c                 C  ry   ri   )r%   rv   r{   re   re   rf   visit_global_decl  r}   z"TransformVisitor.visit_global_declr5   c                 C  ry   ri   )r5   rv   r{   re   re   rf   visit_nonlocal_decl  r}   z$TransformVisitor.visit_nonlocal_declr   c                 C     t | |jS ri   )r   rq   r   r{   re   re   rf   visit_block     zTransformVisitor.visit_blockr   c                 C  s>   |  |j}|jj|_t|| |j| |j}|j|_|S ri   )	r   funcrk   r   r   r   r   varr   )rd   rh   r   rw   re   re   rf   visit_decorator
  s
   
z TransformVisitor.visit_decoratorrR   c                 C  s   || j v r
| j | S t|j| |j}|j|_|j|_|j|_|j|_|j	|_	|j
|_
|j|_|j|_|j|_|j|_|j|_|j|_|j|_|| || j |< |S ri   )ra   rR   r   r   r   rk   rt   r   is_selfis_readyis_initialized_in_classis_staticmethodis_classmethodr   r   final_valuefinal_unset_in_classfinal_set_in_initr   r   re   re   rf   r     s&   



zTransformVisitor.visit_varr   c                 C     t | |jS ri   )r   r   r{   re   re   rf   visit_expression_stmt(  r   z&TransformVisitor.visit_expression_stmtr   c                 C  
   |  |S ri   )duplicate_assignmentr{   re   re   rf   visit_assignment_stmt+     
z&TransformVisitor.visit_assignment_stmtc                 C  sF   t | |j| |j| |j}|j|_|j|_| |j	|_	|S ri   )
r   r   lvaluesr   rvaluer   unanalyzed_typerk   is_final_defr   r   re   re   rf   r   .  s   


z%TransformVisitor.duplicate_assignmentr6   c                 C  s   t |j| |j| |jS ri   )r6   opr   lvaluer   r{   re   re   rf   visit_operator_assignment_stmt9  s   z/TransformVisitor.visit_operator_assignment_stmtrS   c                 C  s$   t | |j| |j| |jS ri   )rS   r   r   r   optional_block	else_bodyr{   re   re   rf   visit_while_stmt>     z!TransformVisitor.visit_while_stmtr!   c                 C  sR   t | |j| |j| |j| |j| |j}|j	|_	| |j
|_
|S ri   )r!   r   indexr   r   r   r   r   unanalyzed_index_typeis_async
index_typer   re   re   rf   visit_for_stmtC  s   




zTransformVisitor.visit_for_stmtr?   c                 C  r   ri   )r?   r   r   r{   re   re   rf   visit_return_stmtO  r   z"TransformVisitor.visit_return_stmtr	   c                 C  s   t | |j| |jS ri   )r	   r   r   msgr{   re   re   rf   visit_assert_stmtR  r   z"TransformVisitor.visit_assert_stmtr   c                 C  r   ri   )r   r   r{   re   re   rf   visit_del_stmtU  r   zTransformVisitor.visit_del_stmtr&   c                 C  s$   t | |j| |j| |jS ri   )r&   r   r   blocksr   r   r   r{   re   re   rf   visit_if_stmtX  
   


zTransformVisitor.visit_if_stmtr   c                 C     t  S ri   )r   r{   re   re   rf   visit_break_stmt_     z!TransformVisitor.visit_break_stmtr   c                 C  r   ri   )r   r{   re   re   rf   visit_continue_stmtb  r   z$TransformVisitor.visit_continue_stmtr;   c                 C  r   ri   )r;   r{   re   re   rf   visit_pass_stmte  r   z TransformVisitor.visit_pass_stmtr=   c                 C  s   t | |j| |jS ri   )r=   r   r   	from_exprr{   re   re   rf   visit_raise_stmth  r   z!TransformVisitor.visit_raise_stmtrJ   c              	   C  sB   t | |j| |j| |j| |j| 	|j
| 	|jS ri   )rJ   r   r   optional_namesvarsoptional_expressionstypesr   handlersr   r   finally_bodyr{   re   re   rf   visit_try_stmtk  s   





zTransformVisitor.visit_try_stmtrT   c                   sP   t  |j |j |j |j}|j	|_	 fdd|j
D |_
|S )Nc                   r   re   r   )rj   typrc   re   rf   r   }  r   z4TransformVisitor.visit_with_stmt.<locals>.<listcomp>)rT   r   r   r   targetr   r   r   r   r   analyzed_typesr   re   rc   rf   visit_with_stmtu  s   



z TransformVisitor.visit_with_stmtrD   c                 C  
   t |jS ri   )rD   r   r{   re   re   rf   visit_star_expr  r   z TransformVisitor.visit_star_exprr+   c                 C  r  ri   )r+   valuer{   re   re   rf   visit_int_expr  r   zTransformVisitor.visit_int_exprrF   c                 C  r  ri   )rF   r  r{   re   re   rf   visit_str_expr  r   zTransformVisitor.visit_str_exprr   c                 C  r  ri   )r   r  r{   re   re   rf   visit_bytes_expr  r   z!TransformVisitor.visit_bytes_exprr    c                 C  r  ri   )r    r  r{   re   re   rf   visit_float_expr  r   z!TransformVisitor.visit_float_exprr   c                 C  r  ri   )r   r  r{   re   re   rf   visit_complex_expr  r   z#TransformVisitor.visit_complex_exprr   c                 C  r   ri   )r   r{   re   re   rf   visit_ellipsis  r   zTransformVisitor.visit_ellipsisr2   c                 C  r   ri   duplicate_namer{   re   re   rf   visit_name_expr  r   z TransformVisitor.visit_name_exprc                 C  s"   t |j}| || |j|_|S ri   )r2   r   copy_refis_special_formr   re   re   rf   r    s   
zTransformVisitor.duplicate_namer/   c                 C  s2   t | |j|j}|jr|j|_| || |S ri   )r/   r   r   def_varr  )rd   rh   memberre   re   rf   visit_member_expr  s
   z"TransformVisitor.visit_member_exprr>   c                 C  s   |j |_ |j|_|j}t|tr|j tkr| |}nt|tr'| |j}nt|t	r3| j
||}||_|j|_|j|_d S ri   )r   r   rh   r   rR   r   r   r   r   r"   rb   get
is_new_defis_inferred_def)rd   rw   r   r   re   re   rf   r    s   




zTransformVisitor.copy_refrV   c                 C  r   ri   )rV   r   r{   re   re   rf   visit_yield_from_expr  r   z&TransformVisitor.visit_yield_from_exprrU   c                 C  r   ri   )rU   r   r   r{   re   re   rf   visit_yield_expr  r   z!TransformVisitor.visit_yield_exprr   c                 C  r   ri   )r   r   r{   re   re   rf   visit_await_expr  r   z!TransformVisitor.visit_await_exprr   c                 C  s<   t | |j| |j|jd d  |jd d  | |jS ri   )	r   r   calleer   args	arg_kinds	arg_namesr   analyzedr{   re   re   rf   visit_call_expr  s   


z TransformVisitor.visit_call_exprr7   c                 C  s0   t |j| |j| |j}| |j|_|S ri   )r7   r   r   leftrightr   method_typer   re   re   rf   visit_op_expr  s   zTransformVisitor.visit_op_exprr   c                   s.   t |j |j} fdd|jD |_|S )Nc                   r   re   )r   )rj   trc   re   rf   r     r   z:TransformVisitor.visit_comparison_expr.<locals>.<listcomp>)r   	operatorsr   operandsmethod_typesr   re   rc   rf   visit_comparison_expr  s   z&TransformVisitor.visit_comparison_exprr   c                 C     t | |j| |jS ri   )r   r   r   r{   re   re   rf   visit_cast_expr  r   z TransformVisitor.visit_cast_exprr
   c                 C  r)  ri   )r
   r   r   r{   re   re   rf   visit_assert_type_expr  r   z'TransformVisitor.visit_assert_type_exprr@   c                 C  s0   |j tkr|jd usJ tt| |jdS |S )N)r   r   )r   r   r   r@   r{   re   re   rf   visit_reveal_expr  s   
z"TransformVisitor.visit_reveal_exprrG   c                 C  s2   |  |j}t|tsJ t|j|}|j|_|S ri   )r   callr   r   rG   r   r   )rd   rh   r-  rw   re   re   rf   visit_super_expr  s
   z!TransformVisitor.visit_super_exprr   c                 C  r   ri   )r   r   r  r{   re   re   rf   visit_assignment_expr  r   z&TransformVisitor.visit_assignment_exprrQ   c                 C  s&   t |j| |j}| |j|_|S ri   )rQ   r   r   r   r"  r   re   re   rf   visit_unary_expr  s   z!TransformVisitor.visit_unary_exprr.   c                 C  r   ri   )r.   r   rp   r{   re   re   rf   visit_list_expr  r   z TransformVisitor.visit_list_exprr   c                   s   t  fdd|jD S )Nc                   s,   g | ]\}}|r  |nd   |fqS ri   r   )rj   keyr  rc   re   rf   r     s   , z4TransformVisitor.visit_dict_expr.<locals>.<listcomp>)r   rp   r{   re   rc   rf   visit_dict_expr  s   z TransformVisitor.visit_dict_exprrK   c                 C  r   ri   )rK   r   rp   r{   re   re   rf   visit_tuple_expr  r   z!TransformVisitor.visit_tuple_exprrB   c                 C  r   ri   )rB   r   rp   r{   re   re   rf   visit_set_expr  r   zTransformVisitor.visit_set_exprr*   c                 C  sp   t | |j| |j}|jr| |j|_|jr6t|jtr(| 	|j|_n| 
|j|_|j|j |S ri   )r*   r   baser   r"  r   r  r   rM   visit_type_applicationvisit_type_alias_exprr   r   re   re   rf   visit_index_expr  s   z!TransformVisitor.visit_index_exprrM   c                 C  r)  ri   )rM   r   r   r{   re   re   rf   r7    r   z'TransformVisitor.visit_type_applicationr-   c                 C      |  |j}||j t|S ri   )duplicate_generator	generatorr   r-   rd   rh   r<  re   re   rf   visit_list_comprehension     z)TransformVisitor.visit_list_comprehensionrA   c                 C  r:  ri   )r;  r<  r   rA   r=  re   re   rf   visit_set_comprehension  r?  z(TransformVisitor.visit_set_comprehensionr   c                   sT   t  |j |j fdd|jD  fdd|jD  fdd|jD |jS )Nc                   r   re   r   rj   r   rc   re   rf   r   !  r   zCTransformVisitor.visit_dictionary_comprehension.<locals>.<listcomp>c                   r   re   r   rj   src   re   rf   r   "  r   c                      g | ]} fd d|D qS )c                   r   re   r   rj   condrc   re   rf   r   #  r   zNTransformVisitor.visit_dictionary_comprehension.<locals>.<listcomp>.<listcomp>re   rj   
conditionsrc   re   rf   r   #  rn   )r   r   r2  r  indices	sequences	condlistsr   r{   re   rc   rf   visit_dictionary_comprehension  s   

z/TransformVisitor.visit_dictionary_comprehensionr$   c                 C  r   ri   )r;  r{   re   re   rf   visit_generator_expr'  r   z%TransformVisitor.visit_generator_exprc                   sJ   t  |j fdd|jD  fdd|jD  fdd|jD |jS )Nc                   r   re   r   rA  rc   re   rf   r   -  r   z8TransformVisitor.duplicate_generator.<locals>.<listcomp>c                   r   re   r   rB  rc   re   rf   r   .  r   c                   rD  )c                   r   re   r   rE  rc   re   rf   r   /  r   zCTransformVisitor.duplicate_generator.<locals>.<listcomp>.<listcomp>re   rG  rc   re   rf   r   /  rn   )r$   r   	left_exprrI  rJ  rK  r   r{   re   rc   rf   r;  *  s   
z$TransformVisitor.duplicate_generatorrC   c                 C  $   t | |j| |j| |jS ri   )rC   r   begin_index	end_indexstrider{   re   re   rf   visit_slice_expr3  r   z!TransformVisitor.visit_slice_exprr   c                 C  rO  ri   )r   r   rF  if_expr	else_exprr{   re   re   rf   visit_conditional_expr:  r   z'TransformVisitor.visit_conditional_exprrO   c                 C  s(   t |j|j| |j| |j|jdS N)variance)rO   r   r   r   valuesr   upper_boundrX  r{   re   re   rf   visit_type_var_expr?  s   

z$TransformVisitor.visit_type_var_exprr:   c                 C     t |j|j| |j|jdS rW  )r:   r   r   r   rZ  rX  r{   re   re   rf   visit_paramspec_exprH     z%TransformVisitor.visit_paramspec_exprrP   c                 C  r\  rW  )rP   r   r   r   rZ  rX  r{   re   re   rf   visit_type_var_tuple_exprM  r^  z*TransformVisitor.visit_type_var_tuple_exprrL   c                 C  r  ri   )rL   rh   r{   re   re   rf   r8  R  r   z&TransformVisitor.visit_type_alias_exprr3   c                 C  s$   t |j|j|j|jd}|j|_|S )N)rk   column)r3   r   old_typerk   r`  r   )rd   rh   resre   re   rf   visit_newtype_exprU  s   z#TransformVisitor.visit_newtype_exprr1   c                 C  r  ri   )r1   r   r{   re   re   rf   visit_namedtuple_exprZ  r   z&TransformVisitor.visit_namedtuple_exprr   c                 C  s   t |j|j|jS ri   )r   r   rp   rY  r{   re   re   rf   visit_enum_call_expr]  r}   z%TransformVisitor.visit_enum_call_exprrN   r4   c                 C  r  ri   )rN   r   r{   re   re   rf   visit_typeddict_expr`  r   z%TransformVisitor.visit_typeddict_exprr<   c                 C  r  ri   )r<   r   r{   re   re   rf   visit__promote_exprc  r   z$TransformVisitor.visit__promote_exprrI   c                 C  r   ri   )rI   r   r{   re   re   rf   visit_temp_nodef  r   z TransformVisitor.visit_temp_nodec                 C  s   | | }|| |S ri   )r   r   r   re   re   rf   rh   i  s   

zTransformVisitor.nodec                 C  &   | | }t|tsJ || |S ri   )r   r   r0   r   r   re   re   rf   mypyfilen     

zTransformVisitor.mypyfiler   r   c                 C  ri  ri   )r   r   r   r   )rd   r   rw   re   re   rf   r   t  rk  zTransformVisitor.exprr   rE   c                 C  ri  ri   )r   r   rE   r   )rd   r   rw   re   re   rf   r   z  rk  zTransformVisitor.stmtExpression | Nonec                 C     |r|  |S d S ri   r   )rd   r   re   re   rf   r        
zTransformVisitor.optional_exprr   c                 C  s   |  |}|j|_|S ri   )r   rk   )rd   r   rw   re   re   rf   r     s   
zTransformVisitor.blockBlock | Nonec                 C  rm  ri   r   )rd   r   re   re   rf   r     rn  zTransformVisitor.optional_blockrq   list[Statement]c                       fdd|D S )Nc                   r   re   )r   )rj   r   rc   re   rf   r     r   z/TransformVisitor.statements.<locals>.<listcomp>re   )rd   rq   re   rc   rf   rq     r}   zTransformVisitor.statementsr   list[Expression]c                   rr  )Nc                   r   re   r   rj   r   rc   re   rf   r     r   z0TransformVisitor.expressions.<locals>.<listcomp>re   rd   r   re   rc   rf   r     r}   zTransformVisitor.expressionsIterable[Expression | None]list[Expression | None]c                   rr  )Nc                   r   re   )r   rt  rc   re   rf   r     r   z9TransformVisitor.optional_expressions.<locals>.<listcomp>re   ru  re   rc   rf   r     s   z%TransformVisitor.optional_expressionsr   list[Block]c                   rr  )Nc                   r   re   rp  )rj   r   rc   re   rf   r     r   z+TransformVisitor.blocks.<locals>.<listcomp>re   )rd   r   re   rc   rf   r     r}   zTransformVisitor.blocksrv   list[NameExpr]c                   rr  )Nc                   r   re   r  )rj   r   rc   re   rf   r     r   z*TransformVisitor.names.<locals>.<listcomp>re   )rd   rv   re   rc   rf   rv     r}   zTransformVisitor.namesIterable[NameExpr | None]list[NameExpr | None]c                 C  s2   g }|D ]}|r| | | q| d  q|S ri   )appendr  )rd   rv   r   r   re   re   rf   r     s   zTransformVisitor.optional_namesr   rZ   c                 C  s   |S ri   re   rd   r   re   re   rf   r     s   zTransformVisitor.typeType | Nonec                 C  rm  ri   r   r}  re   re   rf   r     rn  zTransformVisitor.optional_typer   
list[Type]c                   rr  )Nc                   r   re   r   )rj   r   rc   re   rf   r     r   z*TransformVisitor.types.<locals>.<listcomp>re   )rd   r   re   rc   rf   r     r}   zTransformVisitor.typesN)r^   r_   )rh   r0   r^   r0   )rh   r'   r^   r'   )rh   r)   r^   r)   )rh   r(   r^   r(   )r   r   r^   r   )rh   r"   r^   r"   )rh   r,   r^   r,   )rw   r#   r   r#   r^   r_   )rh   r8   r^   r8   )rh   r   r^   r   )rh   r%   r^   r%   )rh   r5   r^   r5   )rh   r   r^   r   )rh   r   r^   r   )rh   rR   r^   rR   )rh   r   r^   r   )rh   r   r^   r   )rh   r6   r^   r6   )rh   rS   r^   rS   )rh   r!   r^   r!   )rh   r?   r^   r?   )rh   r	   r^   r	   )rh   r   r^   r   )rh   r&   r^   r&   )rh   r   r^   r   )rh   r   r^   r   )rh   r;   r^   r;   )rh   r=   r^   r=   )rh   rJ   r^   rJ   )rh   rT   r^   rT   )rh   rD   r^   rD   )rh   r+   r^   r+   )rh   rF   r^   rF   )rh   r   r^   r   )rh   r    r^   r    )rh   r   r^   r   )rh   r   r^   r   )rh   r2   r^   r2   )rh   r/   r^   r/   )rw   r>   r   r>   r^   r_   )rh   rV   r^   rV   )rh   rU   r^   rU   )rh   r   r^   r   )rh   r   r^   r   )rh   r7   r^   r7   )rh   r   r^   r   )rh   r   r^   r   )rh   r
   r^   r
   )rh   r@   r^   r@   )rh   rG   r^   rG   )rh   r   r^   r   )rh   rQ   r^   rQ   )rh   r.   r^   r.   )rh   r   r^   r   )rh   rK   r^   rK   )rh   rB   r^   rB   )rh   r*   r^   r*   )rh   rM   r^   rM   )rh   r-   r^   r-   )rh   rA   r^   rA   )rh   r   r^   r   )rh   r$   r^   r$   )rh   rC   r^   rC   )rh   r   r^   r   )rh   rO   r^   rO   )rh   r:   r^   r:   )rh   rP   r^   rP   )rh   rL   r^   rL   )rh   r3   r^   r3   )rh   r1   r^   r1   )rh   r   r^   r   )rh   rN   r^   r4   )rh   r<   r^   r<   )rh   rI   r^   rI   )rh   r4   r^   r4   )r   r   r^   r   )r   rE   r^   rE   )r   rl  r^   rl  )r   r   r^   r   )r   ro  r^   ro  )rq   rq  r^   rq  )r   rs  r^   rs  )r   rv  r^   rw  )r   rx  r^   rx  )rv   ry  r^   ry  )rv   rz  r^   r{  )r   rZ   r^   rZ   )r   r~  r^   r~  )r   r  r^   r  )b__name__
__module____qualname____doc__rg   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r#  r(  r*  r+  r,  r.  r/  r0  r1  r3  r4  r5  r9  r7  r>  r@  rL  rM  r;  rS  rV  r[  r]  r_  r8  rc  rd  re  rf  rg  rh  rh   rj  r   r   r   r   r   rq   r   r   r   rv   r   r   r   r   re   re   re   rf   r]   c   s    
,	
				
	r]   c                      s,   e Zd ZdZdddZd fd
dZ  ZS )r   zThis traverser creates mappings from nested FuncDefs to placeholder FuncDefs.

    The placeholders will later be replaced with transformed nodes.
    transformerr]   r^   r_   c                 C  s
   || _ d S ri   )r  )rd   r  re   re   rf   rg     r   zFuncMapInitializer.__init__rh   r"   c                   s8   || j jvrt|j|j|jd | j j|< t | d S ri   )r  rb   r"   r   r   r   superr   r{   	__class__re   rf   r     s
   z!FuncMapInitializer.visit_func_def)r  r]   r^   r_   )rh   r"   r^   r_   )r  r  r  r  rg   r   __classcell__re   re   r  rf   r     s    
r   N)er  
__future__r   typingr   r   r   
mypy.nodesr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   mypy.traverserrW   
mypy.typesrX   rY   rZ   	mypy.utilr[   mypy.visitorr\   r]   r   re   re   re   rf   <module>   s    N S    ^