
    nip                    .   d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
mZmZmZmZ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@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[ ddl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZe ddlfmgZg ddlhmiZimjZjmkZk dd	llmmZm dd
lnmoZo  G d deoe8                   Zp G d deg          ZqdS )z{Base visitor that implements an identity AST transform.

Subclass TransformVisitor to perform non-trivial transformations.
    )annotations)Iterable)Optionalcast)S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	MatchStmt
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TypeFormExprTypeVarExprTypeVarTupleExpr	UnaryExprVar	WhileStmtWithStmt	YieldExprYieldFromExpr)		AsPatternClassPatternMappingPattern	OrPatternPatternSequencePatternSingletonPatternStarredPatternValuePattern)TraverserVisitor)FunctionLike
ProperTypeType)replace_object_state)NodeVisitorc                     e Zd ZdZddZddZdd	ZddZddZddZ	ddZ
ddZddZddZddZddZdd Zdd"Zdd$Zdd&Zdd(Zdd*Zdd+Zdd-Zdd/Zdd1Zdd3Zdd5Zdd7Zdd9Zdd;Zdd=Zdd?Z ddAZ!d dCZ"ddEZ#ddHZ$ddJZ%ddLZ&ddNZ'ddPZ(ddRZ)ddTZ*d	dVZ+d
dYZ,dd[Z-dd]Z.dd_Z/ddaZ0ddcZ1ddeZ2ddgZ3ddiZ4ddjZ5ddlZ6ddnZ7ddpZ8ddrZ9ddtZ:ddvZ;ddxZ<ddzZ=dd|Z>dd~Z?ddZ@ddZAddZBd dZCd!dZDd"dZEd#dZFd$dZGd%dZHd&dZId'dZJd(dZKd)dZLd*dZMd+dZNd+dZOd,dZPd-dZQd.dZRd/dZSd0dZTd1dZUd2dZVd3dZWd4dZXd5dZYd6dZZd7dZ[d8dZ\ddZ]d9dZ^d:dZ_d;dZ`d<dÄZad=dńZbd>dǄZcd?dʄZdd@d̈́ZedAdЄZfdBdӄZgdCdքZhdDdلZidEd܄ZjdFdބZkdGdZldS (H  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                0    d| _         i | _        i | _        d S )NF)	test_onlyvar_mapfunc_placeholder_map)selfs    O/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/mypy/treetransform.py__init__zTransformVisitor.__init__   s$      (*
 =?!!!    noder2   c                $   | j         s
J d            d |j                                        D             }t          |                     |j                  g |j        |          }|j        |_        |j        |_        t                      |_
        |S )Nz0This visitor should not be used for whole files.c                >    i | ]\  }}||                                 S  )copy).0linecodess      rr   
<dictcomp>z4TransformVisitor.visit_mypy_file.<locals>.<dictcomp>   s&    ZZZeuzz||ZZZrt   )ignored_lines)rn   r~   itemsr2   
statementsdefsis_bom	_fullnamepathrJ   names)rq   ru   r~   news       rr   visit_mypy_filez TransformVisitor.visit_mypy_file   s    ~QQQQQQZZt?Q?W?W?Y?YZZZtty112t{R_```9MM	
rt   r(   c                N    t          |j                                                  S N)r(   idsry   rq   ru   s     rr   visit_importzTransformVisitor.visit_import   s    dhmmoo&&&rt   r*   c                f    t          |j        |j        |j                                                  S r   )r*   idrelativer   ry   r   s     rr   visit_import_fromz"TransformVisitor.visit_import_from   s$    $'4=$*//2C2CDDDrt   r)   c                6    t          |j        |j                  S r   )r)   r   r   r   s     rr   visit_import_allz!TransformVisitor.visit_import_all   s    $-000rt   argumentr	   c                    t          |                     |j                  |j        |j        |j                  }|                    |           |S r   )r	   	visit_varvariabletype_annotationinitializerkindset_line)rq   r   args      rr   copy_argumentzTransformVisitor.copy_argument   sM    NN8,--$ M	
 
 	X
rt   r#   c                    t                     }|j        j        D ]}|                    |           t          |j         fd|j        D                                  |j                  t          t          t                    
                    |j                                      }                     ||           |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        | j        v r j        |         }t/          ||           |S |S )Nc                :    g | ]}                     |          S rx   r   rz   r   rq   s     rr   
<listcomp>z3TransformVisitor.visit_func_def.<locals>.<listcomp>   '    ???T$$???rt   )FuncMapInitializerbodyacceptr#   name	argumentsblockr   r   rd   optional_typetypecopy_function_attributesr   is_decoratedis_conditionalabstract_status	is_staticis_classis_propertyis_finaloriginal_defrp   rg   )rq   ru   initstmtr   results   `     rr   visit_func_defzTransformVisitor.visit_func_def   sC    "$''IN 	 	DKKI???????JJty!!,'););DI)F)FGG	
 
 	%%c4000,!0"2}*},4,,,
 .t4F ---MJrt   r-   c           
         t           fd|j        D                                  |j                  t	          t
          t                                        |j                                      } 	                    ||           |S )Nc                :    g | ]}                     |          S rx   r   r   s     rr   r   z6TransformVisitor.visit_lambda_expr.<locals>.<listcomp>   r   rt   )
r-   r   r   r   r   r   rd   r   r   r   rq   ru   r   s   `  rr   visit_lambda_exprz"TransformVisitor.visit_lambda_expr   s{    ???????JJty!!,'););DI)F)FGG
 

 	%%c4000
rt   r   r$   originalc                    |j         |_         |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        d S r   )	infomin_argsmax_posis_overloadis_generatoris_coroutineis_async_generatoris_awaitable_coroutiner{   )rq   r   r   s      rr   r   z)TransformVisitor.copy_function_attributes   sb    =(&".#0#0!)!<%-%D"=rt   r:   c                     fd|j         D             }t          ||j                   D ]\  }}|j        |_        t          |          }|j        |_                             |j                  }t          |t                    sJ ||_        |j	        |_	        |j
        |_
        |j        |_        |j        |_        |j        |_        |j        r2t          t           |j                                                 |_        |S )Nc                `    g | ]*}t          t          |                                        +S rx   )r   r;   r   )rz   itemrq   s     rr   r   z>TransformVisitor.visit_overloaded_func_def.<locals>.<listcomp>   s/    NNN4lDKK$5$566NNNrt   )r   zipr{   r:   r   r   r   
isinstancere   r   r   r   r   r   implr   r;   r   )rq   ru   r   newitemolditemr   new_types   `      rr   visit_overloaded_func_defz*TransformVisitor.visit_overloaded_func_def   s    NNNN4:NNN #E4: 6 6 	( 	(GW"<GLL&&%%di00(J/////9}*}9 	BL$)*:*:4*@*@AACH
rt   r   c           	     2    t          |j                             |j                  |j                             |j                                       |j                            }|j	        |_	        |j
        |_
         fd|j        D             |_        |S )Nc                :    g | ]}                     |          S rx   expr)rz   	decoratorrq   s     rr   r   z4TransformVisitor.visit_class_def.<locals>.<listcomp>  s%    PPP9$))I..PPPrt   )r   r   r   r   	type_varsexpressionsbase_type_exprsoptional_expr	metaclassfullnamer   
decoratorsr   s   `  rr   visit_class_defz TransformVisitor.visit_class_def  s    IJJty!!NT122t~..
 
 }9PPPPPPP
rt   r&   c                N    t          |j                                                  S r   )r&   r   ry   r   s     rr   visit_global_declz"TransformVisitor.visit_global_decl  s    $*//++,,,rt   r7   c                N    t          |j                                                  S r   )r7   r   ry   r   s     rr   visit_nonlocal_declz$TransformVisitor.visit_nonlocal_decl  s    DJOO--...rt   r   c                ^    t          |                     |j                  |j                  S )N)is_unreachable)r   r   r   r   r   s     rr   visit_blockzTransformVisitor.visit_block  s&    T__TY//@STTTTrt   r   c                    |                      |j                  }|j        j        |_        t          ||                     |j                  |                     |j                            }|j        |_        |S r   )	r   funcr{   r   r   r   r   varr   )rq   ru   r   r   s       rr   visit_decoratorz TransformVisitor.visit_decorator  sb    ""49--IN	d..t??PTPXAYAYZZ*
rt   rU   c                   || j         v r| j         |         S t          |j        |                     |j                            }|j        |_        |j        |_        |j        |_        |j        |_        |j	        |_	        |j
        |_
        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |                    |           || j         |<   |S r   )ro   rU   r   r   r   r{   r   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   s      rr   r   zTransformVisitor.visit_var#  s    4<<%%$)T//	::;;99l}&*&B#"2!0*}*#'#<  $ 6T T
rt   r    c                P    t          |                     |j                            S r   )r    r   r   s     rr   visit_expression_stmtz&TransformVisitor.visit_expression_stmt9  s    dii	22333rt   r   c                ,    |                      |          S r   )duplicate_assignmentr   s     rr   visit_assignment_stmtz&TransformVisitor.visit_assignment_stmt<  s    ((...rt   c                &   t          |                     |j                  |                     |j                  |                     |j                            }|j        |_        |j        |_        |                     |j	                  |_	        |S r   )
r   r   lvaluesr   rvaluer   unanalyzed_typer{   is_final_defr   r   s      rr   r   z%TransformVisitor.duplicate_assignment?  s{    T\**IIdk""t344
 

 9,%%di00
rt   r8   c                    t          |j        |                     |j                  |                     |j                            S r   )r8   opr   lvaluer   r   s     rr   visit_operator_assignment_stmtz/TransformVisitor.visit_operator_assignment_stmtJ  s6     &dgtyy/E/EtyyQUQ\G]G]^^^rt   rV   c                    t          |                     |j                  |                     |j                  |                     |j                            S r   )rV   r   r   r   optional_block	else_bodyr   s     rr   visit_while_stmtz!TransformVisitor.visit_while_stmtO  sG    IIdi  $**TY"7"79L9LT^9\9\
 
 	
rt   r"   c           	     r   t          |                     |j                  |                     |j                  |                     |j                  |                     |j                  |                     |j                            }|j	        |_	        |                     |j
                  |_
        |S r   )r"   r   indexr   r   r   r  r   unanalyzed_index_typeis_async
index_typer   s      rr   visit_for_stmtzTransformVisitor.visit_for_stmtT  s    IIdj!!IIdi  JJty!!//t9::
 
 }++DO<<
rt   rA   c                P    t          |                     |j                            S r   )rA   r   r   r   s     rr   visit_return_stmtz"TransformVisitor.visit_return_stmt`  s     $,,TY77888rt   r
   c                    t          |                     |j                  |                     |j                            S r   )r
   r   r   msgr   s     rr   visit_assert_stmtz"TransformVisitor.visit_assert_stmtc  s0    $))DI..0B0B480L0LMMMrt   r   c                P    t          |                     |j                            S r   )r   r   r   s     rr   visit_del_stmtzTransformVisitor.visit_del_stmtf  s    tyy++,,,rt   r'   c                    t          |                     |j                  |                     |j                  |                     |j                            S r   )r'   r   r   blocksr   r   r  r   s     rr   visit_if_stmtzTransformVisitor.visit_if_stmti  sK    TY''KK	""//
 
 	
rt   r   c                    t                      S r   )r   r   s     rr   visit_break_stmtz!TransformVisitor.visit_break_stmtp  s    {{rt   r   c                    t                      S r   )r   r   s     rr   visit_continue_stmtz$TransformVisitor.visit_continue_stmts      ~~rt   r=   c                    t                      S r   )r=   r   s     rr   visit_pass_stmtz TransformVisitor.visit_pass_stmtv  s    zzrt   r?   c                    t          |                     |j                  |                     |j                            S r   )r?   r   r   	from_exprr   s     rr   visit_raise_stmtz!TransformVisitor.visit_raise_stmty  s2    ++DI668J8J4>8Z8Z[[[rt   rL   c           
     f   t          |                     |j                  |                     |j                  |                     |j                  |                     |j                  | 	                    |j
                  | 	                    |j                            }|j        |_        |S r   )rL   r   r   optional_namesvarsoptional_expressionstypesr  handlersr   r  finally_bodyis_starr   s      rr   visit_try_stmtzTransformVisitor.visit_try_stmt|  s    JJty!!	**%%dj11KK&&// 122
 
 l
rt   rW   c                4    t                               |j                                       |j                                       |j                                       |j                            }|j	        |_	         fd|j
        D             |_
        |S )Nc                :    g | ]}                     |          S rx   r   )rz   typrq   s     rr   r   z4TransformVisitor.visit_with_stmt.<locals>.<listcomp>  s#    LLLdiinnLLLrt   )rW   r   r   r   targetr   r   r   r   r  analyzed_typesr   s   `  rr   visit_with_stmtz TransformVisitor.visit_with_stmt  s    TY''%%dk22JJty!!t344	
 
 }LLLL8KLLL
rt   prZ   c                    t          |j        |                     |j                  nd |j        |                     |j                  nd           S )N)patternr   )rZ   r/  r   duplicate_namerq   r-  s     rr   visit_as_patternz!TransformVisitor.visit_as_pattern  sU    /0y/DDLL+++$010B$$QV,,,
 
 
 	
rt   r]   c                D     t           fd|j        D                       S )Nc                :    g | ]}                     |          S rx   r/  rz   patrq   s     rr   r   z5TransformVisitor.visit_or_pattern.<locals>.<listcomp>  s%    BBB$,,s++BBBrt   )r]   patternsr1  s   ` rr   visit_or_patternz!TransformVisitor.visit_or_pattern  s(    BBBBqzBBBCCCrt   rb   c                P    t          |                     |j                            S r   )rb   r   r1  s     rr   visit_value_patternz$TransformVisitor.visit_value_pattern  s    DIIaf--...rt   r`   c                *    t          |j                  S r   )r`   valuer1  s     rr   visit_singleton_patternz(TransformVisitor.visit_singleton_pattern  s    (((rt   r_   c                D     t           fd|j        D                       S )Nc                :    g | ]}                     |          S rx   r5  r6  s     rr   r   z;TransformVisitor.visit_sequence_pattern.<locals>.<listcomp>  s%    HHHcS 1 1HHHrt   )r_   r8  r1  s   ` rr   visit_sequence_patternz'TransformVisitor.visit_sequence_pattern  s(    HHHHQZHHHIIIrt   ra   c                b    t          |j        |                     |j                  nd           S r   )ra   capturer0  r1  s     rr   visit_starred_patternz&TransformVisitor.visit_starred_pattern  s-    	@Ud11!)<<<[_```rt   r\   c                     t           fd|j        D              fd|j        D             |j                             |j                  nd           S )Nc                :    g | ]}                     |          S rx   r   rz   r   rq   s     rr   r   z:TransformVisitor.visit_mapping_pattern.<locals>.<listcomp>  s#    555d$))D//555rt   c                :    g | ]}                     |          S rx   r5  r6  s     rr   r   z:TransformVisitor.visit_mapping_pattern.<locals>.<listcomp>  s%    :::#DLL%%:::rt   )keysvaluesrest)r\   rI  rJ  rK  r0  r1  s   ` rr   visit_mapping_patternz&TransformVisitor.visit_mapping_pattern  sk    5555af555:::::::010B$$QV,,,
 
 
 	
rt   r[   c                     |j                                        }t          |t                    sJ t	          | fd|j        D             t          |j                   fd|j        D                       S )Nc                :    g | ]}                     |          S rx   r5  r6  s     rr   r   z8TransformVisitor.visit_class_pattern.<locals>.<listcomp>  s%    DDDsc**DDDrt   c                :    g | ]}                     |          S rx   r5  r6  s     rr   r   z8TransformVisitor.visit_class_pattern.<locals>.<listcomp>  s%    JJJ#DLL--JJJrt   )	class_refpositionalskeyword_keyskeyword_values)	rP  r   r   r@   r[   rQ  listrR  rS  )rq   r-  rP  s   `  rr   visit_class_patternz$TransformVisitor.visit_class_pattern  s    K&&t,,	)W-----DDDDamDDDan--JJJJ9IJJJ	
 
 
 	
rt   or0   c                     t                               |j                   fd|j        D                                  |j                                       |j                            S )Nc                :    g | ]}                     |          S rx   r5  )rz   r-  rq   s     rr   r   z5TransformVisitor.visit_match_stmt.<locals>.<listcomp>  s#    :::!dll1oo:::rt   )subjectr8  guardsbodies)r0   r   rY  r8  r   rZ  r  r[  )rq   rV  s   ` rr   visit_match_stmtz!TransformVisitor.visit_match_stmt  sh    IIai((::::qz:::,,QX66;;qx((	
 
 
 	
rt   rF   c                *    t          |j                  S r   )rF   r   r   s     rr   visit_star_exprz TransformVisitor.visit_star_expr  s    	"""rt   r,   c                *    t          |j                  S r   )r,   r=  r   s     rr   visit_int_exprzTransformVisitor.visit_int_expr      tz"""rt   rH   c                *    t          |j                  S r   )rH   r=  r   s     rr   visit_str_exprzTransformVisitor.visit_str_expr  ra  rt   r   c                *    t          |j                  S r   )r   r=  r   s     rr   visit_bytes_exprz!TransformVisitor.visit_bytes_expr      $$$rt   r!   c                *    t          |j                  S r   )r!   r=  r   s     rr   visit_float_exprz!TransformVisitor.visit_float_expr  rf  rt   r   c                *    t          |j                  S r   )r   r=  r   s     rr   visit_complex_exprz#TransformVisitor.visit_complex_expr  s    4:&&&rt   r   c                    t                      S r   )r   r   s     rr   visit_ellipsiszTransformVisitor.visit_ellipsis  r  rt   r4   c                ,    |                      |          S r   r0  r   s     rr   visit_name_exprz TransformVisitor.visit_name_expr  s    ""4(((rt   c                r    t          |j                  }|                     ||           |j        |_        |S r   )r4   r   copy_refis_special_formr   s      rr   r0  zTransformVisitor.duplicate_name  s7     ty!!c4   "2
rt   r1   c                    t          |                     |j                  |j                  }|j        r|j        |_        |                     ||           |S r   )r1   r   r   def_varrq  )rq   ru   members      rr   visit_member_exprz"TransformVisitor.visit_member_expr  sO    DIIdi00$)<<< 	* "\FNfd###rt   r@   c                   |j         |_         |j        |_        |j        }t          |t                    r&|j         t
          k    r|                     |          }n`t          |t                    r|                     |j                  }n0t          |t                    r| j
                            ||          }||_        |j        |_        |j        |_        d S r   )r   r   ru   r   rU   r   r   r   r   r#   rp   get
is_new_defis_inferred_def)rq   r   r   r*  s       rr   rq  zTransformVisitor.copy_ref  s    =(fc"" 		C }$$//	** 	C^^FJ//FF(( 	C.2266BBF!,&6rt   rY   c                P    t          |                     |j                            S r   )rY   r   r   s     rr   visit_yield_from_exprz&TransformVisitor.visit_yield_from_expr  s    TYYty11222rt   rX   c                P    t          |                     |j                            S r   )rX   r   r   r   s     rr   visit_yield_exprz!TransformVisitor.visit_yield_expr  s     ++DI66777rt   r   c                P    t          |                     |j                            S r   )r   r   r   s     rr   visit_await_exprz!TransformVisitor.visit_await_expr  s    49--...rt   r   c           	        t          |                     |j                  |                     |j                  |j                                        |j                                        |                     |j	                            S r   )
r   r   calleer   args	arg_kindsry   	arg_namesr   analyzedr   s     rr   visit_call_exprz TransformVisitor.visit_call_expr  sm    IIdk""TY''N!!N!!t}--
 
 	
rt   r9   c                >   t          |j        |                     |j                  |                     |j                  t          t          t                   |                     |j	                                      }| 
                    |j                  |_        |S r   )r9   r   r   leftrightr   r   rN   r   r  r   method_typer   s      rr   visit_op_exprzTransformVisitor.visit_op_expr  sy    GIIdi  IIdj!!-($*<*<T]*K*KLL	
 
 ,,T-=>>
rt   r   c                     t          |j                             |j                            } fd|j        D             |_        |S )Nc                :    g | ]}                     |          S rx   )r   )rz   trq   s     rr   r   z:TransformVisitor.visit_comparison_expr.<locals>.<listcomp>  s'    MMMaD..q11MMMrt   )r   	operatorsr   operandsmethod_typesr   s   `  rr   visit_comparison_exprz&TransformVisitor.visit_comparison_expr  sH    T^T-=-=dm-L-LMMMMMM4;LMMM
rt   r   c                    t          |                     |j                  |                     |j                            S r   )r   r   r   r   s     rr   visit_cast_exprz TransformVisitor.visit_cast_expr  s.    		$),,dii	.B.BCCCrt   rQ   c                P    t          |                     |j                            S r   )rQ   r   r   s     rr   visit_type_form_exprz%TransformVisitor.visit_type_form_expr   s    DIIdi00111rt   r   c                    t          |                     |j                  |                     |j                            S r   )r   r   r   r   s     rr   visit_assert_type_exprz'TransformVisitor.visit_assert_type_expr#  s.    dii	22DIIdi4H4HIIIrt   rB   c                    |j         t          k    r7|j        J t          t          |                     |j                            S |S )N)r   r   )r   r   r   rB   r   s     rr   visit_reveal_exprz"TransformVisitor.visit_reveal_expr&  sE    9##9(((;TYYty5I5IJJJJ Krt   rI   c                    |                      |j                  }t          |t                    sJ t	          |j        |          }|j        |_        |S r   )r   callr   r   rI   r   r   )rq   ru   r  r   s       rr   visit_super_exprz!TransformVisitor.visit_super_expr.  sJ    yy##$)))))	4((9
rt   r   c                    t          |                     |j                  |                     |j                            S r   )r   r0  r*  r   r=  r   s     rr   visit_assignment_exprz&TransformVisitor.visit_assignment_expr5  s0    d11$+>>		$*@U@UVVVrt   rT   c                    t          |j        |                     |j                            }|                     |j                  |_        |S r   )rT   r   r   r   r  r   s      rr   visit_unary_exprz!TransformVisitor.visit_unary_expr8  s>    49!5!566,,T-=>>
rt   r/   c                P    t          |                     |j                            S r   )r/   r   r   r   s     rr   visit_list_exprz TransformVisitor.visit_list_expr=  s     ((44555rt   r   c                D     t           fd|j        D                       S )Nc                r    g | ]3\  }}|r                     |          nd                      |          f4S r   r   )rz   keyr=  rq   s      rr   r   z4TransformVisitor.visit_dict_expr.<locals>.<listcomp>B  sA    ^^^ZS%-diinnntyy/?/?@^^^rt   )r   r   r   s   ` rr   visit_dict_exprz TransformVisitor.visit_dict_expr@  s0    ^^^^SWS]^^^
 
 	
rt   rM   c                P    t          |                     |j                            S r   )rM   r   r   r   s     rr   visit_tuple_exprz!TransformVisitor.visit_tuple_exprE  s     ))$*55666rt   rD   c                P    t          |                     |j                            S r   )rD   r   r   r   s     rr   visit_set_exprzTransformVisitor.visit_set_exprH  s     t''
33444rt   r+   c                   t          |                     |j                  |                     |j                            }|j        r|                     |j                  |_        |j        rxt          |j        t                    r | 	                    |j                  |_        n| 
                    |j                  |_        |j                            |j                   |S r   )r+   r   baser  r  r   r  r   rO   visit_type_applicationvisit_type_alias_exprr   r   s      rr   visit_index_exprz!TransformVisitor.visit_index_exprK  s    		$),,dii
.C.CDD 	:"ii(899CO= 	1$-99 I#::4=II#99$-HHL!!$-000
rt   rO   c                    t          |                     |j                  |                     |j                            S r   )rO   r   r!  r   s     rr   r  z'TransformVisitor.visit_type_applicationW  s.    tyy33TZZ
5K5KLLLrt   r.   c                    |                      |j                  }|                    |j                   t          |          S r   )duplicate_generator	generatorr   r.   rq   ru   r  s      rr   visit_list_comprehensionz)TransformVisitor.visit_list_comprehensionZ  s;    ,,T^<<	4>*** +++rt   rC   c                    |                      |j                  }|                    |j                   t          |          S r   )r  r  r   rC   r  s      rr   visit_set_comprehensionz(TransformVisitor.visit_set_comprehension_  s;    ,,T^<<	4>***	***rt   r   c                     t                               |j                                       |j                   fd|j        D              fd|j        D              fd|j        D             |j                  S )Nc                :    g | ]}                     |          S rx   r   rz   r  rq   s     rr   r   zCTransformVisitor.visit_dictionary_comprehension.<locals>.<listcomp>j  %    888%TYYu888rt   c                :    g | ]}                     |          S rx   r   rz   srq   s     rr   r   zCTransformVisitor.visit_dictionary_comprehension.<locals>.<listcomp>k  #    222aTYYq\\222rt   c                ,    g | ]}fd |D             S )c                :    g | ]}                     |          S rx   r   rz   condrq   s     rr   r   zNTransformVisitor.visit_dictionary_comprehension.<locals>.<listcomp>.<listcomp>l  #    555$diioo555rt   rx   rz   
conditionsrq   s     rr   r   zCTransformVisitor.visit_dictionary_comprehension.<locals>.<listcomp>l  .    WWW*5555*555WWWrt   )r   r   r  r=  indices	sequences	condlistsr  r   s   ` rr   visit_dictionary_comprehensionz/TransformVisitor.visit_dictionary_comprehensiond  s     'IIdhIIdj!!88884<88822224>222WWWWWWWM
 
 	
rt   r%   c                ,    |                      |          S r   )r  r   s     rr   visit_generator_exprz%TransformVisitor.visit_generator_exprp  s    ''---rt   c                     t                               |j                   fd|j        D              fd|j        D              fd|j        D             |j                  S )Nc                :    g | ]}                     |          S rx   r   r  s     rr   r   z8TransformVisitor.duplicate_generator.<locals>.<listcomp>v  r  rt   c                :    g | ]}                     |          S rx   r   r  s     rr   r   z8TransformVisitor.duplicate_generator.<locals>.<listcomp>w  r  rt   c                ,    g | ]}fd |D             S )c                :    g | ]}                     |          S rx   r   r  s     rr   r   zCTransformVisitor.duplicate_generator.<locals>.<listcomp>.<listcomp>x  r  rt   rx   r  s     rr   r   z8TransformVisitor.duplicate_generator.<locals>.<listcomp>x  r  rt   )r%   r   	left_exprr  r  r  r  r   s   ` rr   r  z$TransformVisitor.duplicate_generators  sv    IIdn%%88884<88822224>222WWWWWWWM
 
 	
rt   rE   c                    t          |                     |j                  |                     |j                  |                     |j                            S r   )rE   r   begin_index	end_indexstrider   s     rr   visit_slice_exprz!TransformVisitor.visit_slice_expr|  sN    t/00t~..t{++
 
 	
rt   r   c                    t          |                     |j                  |                     |j                  |                     |j                            S r   )r   r   r  if_expr	else_exprr   s     rr   visit_conditional_exprz'TransformVisitor.visit_conditional_expr  sE    IIdi  $))DL"9"9499T^;T;T
 
 	
rt   rR   c           	         t          |j        |j        |                     |j                  |                     |j                  |                     |j                  |j                  S N)variance)	rR   r   r   r!  rJ  r   upper_bounddefaultr  r   s     rr   visit_type_var_exprz$TransformVisitor.visit_type_var_expr  s\    IMJJt{##IId&''IIdl##]
 
 
 	
rt   r<   c                    t          |j        |j        |                     |j                  |                     |j                  |j                  S r  )r<   r   r   r   r  r  r  r   s     rr   visit_paramspec_exprz%TransformVisitor.visit_paramspec_expr  sK    IMIId&''IIdl##]
 
 
 	
rt   rS   c           	         t          |j        |j        |                     |j                  |j        |                     |j                  |j                  S r  )rS   r   r   r   r  tuple_fallbackr  r  r   s     rr   visit_type_var_tuple_exprz*TransformVisitor.visit_type_var_tuple_expr  sQ    IMIId&''IIdl##]
 
 
 	
rt   rN   c                *    t          |j                  S r   )rN   ru   r   s     rr   r  z&TransformVisitor.visit_type_alias_expr      TY'''rt   r5   c                l    t          |j        |j        |j        |j                  }|j        |_        |S )N)r{   column)r5   r   old_typer{   r  r   )rq   ru   ress      rr   visit_newtype_exprz#TransformVisitor.visit_newtype_expr  s.    $)T]4;WWW9
rt   r3   c                *    t          |j                  S r   )r3   r   r   s     rr   visit_namedtuple_exprz&TransformVisitor.visit_namedtuple_expr  s    di(((rt   r   c                B    t          |j        |j        |j                  S r   )r   r   r   rJ  r   s     rr   visit_enum_call_exprz%TransformVisitor.visit_enum_call_expr  s    DItz4;???rt   rP   r6   c                *    t          |j                  S r   )rP   r   r   s     rr   visit_typeddict_exprz%TransformVisitor.visit_typeddict_expr  r  rt   r>   c                *    t          |j                  S r   )r>   r   r   s     rr   visit__promote_exprz$TransformVisitor.visit__promote_expr  s    49%%%rt   rK   c                P    t          |                     |j                            S r   )rK   r   r   s     rr   visit_temp_nodez TransformVisitor.visit_temp_node  s    		$),,---rt   c                Z    |                     |           }|                    |           |S r   )r   r   r   s      rr   ru   zTransformVisitor.node  s*    kk$T
rt   c                    |                     |           }t          |t                    sJ |                    |           |S r   )r   r   r2   r   r   s      rr   mypyfilezTransformVisitor.mypyfile  s@    kk$#x(((((T
rt   r   r   c                    |                     |           }t          |t                    sJ |                    |           |S r   )r   r   r   r   )rq   r   r   s      rr   r   zTransformVisitor.expr  s@    kk$#z*****T
rt   r   rG   c                    |                     |           }t          |t                    sJ |                    |           |S r   )r   r   rG   r   )rq   r   r   s      rr   r   zTransformVisitor.stmt  s@    kk$#y)))))T
rt   r/  r^   c                    |                     |           }t          |t                    sJ |                    |           |S r   )r   r   r^   r   )rq   r/  r   s      rr   r/  zTransformVisitor.pattern  s@    nnT""#w'''''W
rt   Expression | Nonec                4    |r|                      |          S d S r   r   )rq   r   s     rr   r   zTransformVisitor.optional_expr       	99T??"4rt   r   c                H    |                      |          }|j        |_        |S r   )r   r{   )rq   r   r   s      rr   r   zTransformVisitor.block  s#    u%%:
rt   Block | Nonec                4    |r|                      |          S d S r   r   )rq   r   s     rr   r   zTransformVisitor.optional_block  s!     	::e$$$4rt   r   list[Statement]c                       fd|D             S )Nc                :    g | ]}                     |          S rx   )r   )rz   r   rq   s     rr   r   z/TransformVisitor.statements.<locals>.<listcomp>  s#    777D		$777rt   rx   )rq   r   s   ` rr   r   zTransformVisitor.statements  s    7777J7777rt   r   list[Expression]c                       fd|D             S )Nc                :    g | ]}                     |          S rx   r   rG  s     rr   r   z0TransformVisitor.expressions.<locals>.<listcomp>  s#    888D		$888rt   rx   rq   r   s   ` rr   r   zTransformVisitor.expressions  s    8888K8888rt   Iterable[Expression | None]list[Expression | None]c                       fd|D             S )Nc                :    g | ]}                     |          S rx   )r   rG  s     rr   r   z9TransformVisitor.optional_expressions.<locals>.<listcomp>  s'    AAAT""4((AAArt   rx   r  s   ` rr   r   z%TransformVisitor.optional_expressions  s      BAAA[AAAArt   r  list[Block]c                       fd|D             S )Nc                :    g | ]}                     |          S rx   r  )rz   r   rq   s     rr   r   z+TransformVisitor.blocks.<locals>.<listcomp>  s%    666e

5!!666rt   rx   )rq   r  s   ` rr   r  zTransformVisitor.blocks  s    6666v6666rt   r   list[NameExpr]c                       fd|D             S )Nc                :    g | ]}                     |          S rx   rn  )rz   r   rq   s     rr   r   z*TransformVisitor.names.<locals>.<listcomp>  s'    <<<d##D))<<<rt   rx   )rq   r   s   ` rr   r   zTransformVisitor.names  s    <<<<e<<<<rt   Iterable[NameExpr | None]list[NameExpr | None]c                    g }|D ]B}|r)|                     |                     |                     -|                     d            C|S r   )appendr0  )rq   r   r   r   s       rr   r  zTransformVisitor.optional_names  s[    (* 	$ 	$D $d11$778888d####rt   r   rf   c                    |S r   rx   rq   r   s     rr   r   zTransformVisitor.type  s    rt   Type | Nonec                4    |r|                      |          S d S r   r(  r  s     rr   r   zTransformVisitor.optional_type  r  rt   r!  
list[Type]c                       fd|D             S )Nc                :    g | ]}                     |          S rx   r(  )rz   r   rq   s     rr   r   z*TransformVisitor.types.<locals>.<listcomp>  s#    222D		$222rt   rx   )rq   r!  s   ` rr   r!  zTransformVisitor.types  s    2222E2222rt   N)rk   rl   )ru   r2   rk   r2   )ru   r(   rk   r(   )ru   r*   rk   r*   )ru   r)   rk   r)   )r   r	   rk   r	   )ru   r#   rk   r#   )ru   r-   rk   r-   )r   r$   r   r$   rk   rl   )ru   r:   rk   r:   )ru   r   rk   r   )ru   r&   rk   r&   )ru   r7   rk   r7   )ru   r   rk   r   )ru   r   rk   r   )ru   rU   rk   rU   )ru   r    rk   r    )ru   r   rk   r   )ru   r8   rk   r8   )ru   rV   rk   rV   )ru   r"   rk   r"   )ru   rA   rk   rA   )ru   r
   rk   r
   )ru   r   rk   r   )ru   r'   rk   r'   )ru   r   rk   r   )ru   r   rk   r   )ru   r=   rk   r=   )ru   r?   rk   r?   )ru   rL   rk   rL   )ru   rW   rk   rW   )r-  rZ   rk   rZ   )r-  r]   rk   r]   )r-  rb   rk   rb   )r-  r`   rk   r`   )r-  r_   rk   r_   )r-  ra   rk   ra   )r-  r\   rk   r\   )r-  r[   rk   r[   )rV  r0   rk   r0   )ru   rF   rk   rF   )ru   r,   rk   r,   )ru   rH   rk   rH   )ru   r   rk   r   )ru   r!   rk   r!   )ru   r   rk   r   )ru   r   rk   r   )ru   r4   rk   r4   )ru   r1   rk   r1   )r   r@   r   r@   rk   rl   )ru   rY   rk   rY   )ru   rX   rk   rX   )ru   r   rk   r   )ru   r   rk   r   )ru   r9   rk   r9   )ru   r   rk   r   )ru   r   rk   r   )ru   rQ   rk   rQ   )ru   r   rk   r   )ru   rB   rk   rB   )ru   rI   rk   rI   )ru   r   rk   r   )ru   rT   rk   rT   )ru   r/   rk   r/   )ru   r   rk   r   )ru   rM   rk   rM   )ru   rD   rk   rD   )ru   r+   rk   r+   )ru   rO   rk   rO   )ru   r.   rk   r.   )ru   rC   rk   rC   )ru   r   rk   r   )ru   r%   rk   r%   )ru   rE   rk   rE   )ru   r   rk   r   )ru   rR   rk   rR   )ru   r<   rk   r<   )ru   rS   rk   rS   )ru   rN   rk   rN   )ru   r5   rk   r5   )ru   r3   rk   r3   )ru   r   rk   r   )ru   rP   rk   r6   )ru   r>   rk   r>   )ru   rK   rk   rK   )ru   r6   rk   r6   )r   r   rk   r   )r   rG   rk   rG   )r/  r^   rk   r^   )r   r  rk   r  )r   r   rk   r   )r   r  rk   r  )r   r  rk   r  )r   r  rk   r  )r   r  rk   r  )r  r  rk   r  )r   r  rk   r  )r   r  rk   r  )r   rf   rk   rf   )r   r  rk   r  )r!  r!  rk   r!  )m__name__
__module____qualname____doc__rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r  r%  r,  r2  r9  r;  r>  rA  rD  rL  rU  r\  r^  r`  rc  re  rh  rj  rl  ro  r0  rv  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  r  r  r  r  r  r  r  r  r  r  r  r  ru   r  r   r   r/  r   r   r   r   r   r   r  r   r  r   r   r!  rx   rt   rr   rj   rj   q   s        (? ? ? ?   ' ' ' 'E E E E1 1 1 1   * * * *X   	! 	! 	! 	!   $   - - - -/ / / /U U U U      ,4 4 4 4/ / / /	 	 	 	_ _ _ _

 
 
 


 
 
 
9 9 9 9N N N N- - - -
 
 
 
         \ \ \ \
 
 
 
	 	 	 	
 
 
 
D D D D/ / / /) ) ) )J J J Ja a a a
 
 
 

 
 
 

 
 
 
# # # ## # # ## # # #% % % %% % % %' ' ' '   ) ) ) )      7 7 7 7$3 3 3 38 8 8 8/ / / /
 
 
 
      
D D D D2 2 2 2J J J J      W W W W   
6 6 6 6
 
 
 

7 7 7 75 5 5 5
 
 
 
M M M M, , , ,
+ + + +


 

 

 

. . . .
 
 
 

 
 
 

 
 
 


 
 
 

 
 
 

 
 
 
( ( ( (   
) ) ) )@ @ @ @( ( ( (& & & &. . . .   
                  
   8 8 8 89 9 9 9B B B B
7 7 7 7= = = =         3 3 3 3 3 3rt   rj   c                  ,     e Zd ZdZd
dZd fd	Z xZS )r   zThis traverser creates mappings from nested FuncDefs to placeholder FuncDefs.

    The placeholders will later be replaced with transformed nodes.
    transformerrj   rk   rl   c                    || _         d S r   )r)  )rq   r)  s     rr   rs   zFuncMapInitializer.__init__  s    &rt   ru   r#   c                    || j         j        vr.t          |j        |j        |j        d           | j         j        |<   t                                          |           d S r   )r)  rp   r#   r   r   r   superr   )rq   ru   	__class__s     rr   r   z!FuncMapInitializer.visit_func_def  s]    t'<<<:A	4>49d; ;D1$7 	t$$$$$rt   )r)  rj   rk   rl   )ru   r#   rk   rl   )r$  r%  r&  r'  rs   r   __classcell__)r-  s   @rr   r   r     s[         
' ' ' '% % % % % % % % % %rt   r   N)rr'  
__future__r   collections.abcr   typingr   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/   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   rW   rX   rY   mypy.patternsrZ   r[   r\   r]   r^   r_   r`   ra   rb   mypy.traverserrc   
mypy.typesrd   re   rf   	mypy.utilrg   mypy.visitorrh   rj   r   rx   rt   rr   <module>r8     s{   
 # " " " " " $ $ $ $ $ $ ! ! ! ! ! ! ! !T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T Tj
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 , + + + + + 5 5 5 5 5 5 5 5 5 5 * * * * * * $ $ $ $ $ $b
3 b
3 b
3 b
3 b
3{4( b
3 b
3 b
3J% % % % %) % % % % %rt   