
    X-Pho                    *   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@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZ ddl[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZd ddlemfZf ddlgmhZhmiZimjZj dd	lkmlZl dd
lmmnZn  G d dene8                   Zo G d def          ZpdS )z{Base visitor that implements an identity AST transform.

Subclass TransformVisitor to perform non-trivial transformations.
    )annotations)Iterable)Optionalcast)R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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!ddCZ"ddE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d.dZTd/dZUd0dZVd1dZWd2dZXd3dZYd4dZZd5dZ[ddZ\d6dZ]d7dZ^d8dZ_d9dZ`d:dÄZad;dńZbd<dȄZcd=d˄Zdd>d΄Zed?dфZfd@dԄZgdAdׄZhdBdڄZidCd܄ZjdDd߄ZkdS (E  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    R/var/www/html/test/jupyter/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      rq   
<dictcomp>z4TransformVisitor.visit_mypy_file.<locals>.<dictcomp>   s&    ZZZeuzz||ZZZrs   )ignored_lines)rm   r}   itemsr2   
statementsdefsis_bom	_fullnamepathrJ   names)rp   rt   r}   news       rq   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	
rs   r(   c                N    t          |j                                                  S N)r(   idsrx   rp   rt   s     rq   visit_importzTransformVisitor.visit_import   s    dhmmoo&&&rs   r*   c                f    t          |j        |j        |j                                                  S r   )r*   idrelativer   rx   r   s     rq   visit_import_fromz"TransformVisitor.visit_import_from   s$    $'4=$*//2C2CDDDrs   r)   c                6    t          |j        |j                  S r   )r)   r   r   r   s     rq   visit_import_allz!TransformVisitor.visit_import_all   s    $-000rs   argumentr	   c                    t          |                     |j                  |j        |j        |j                  }|                    |           |S r   )r	   	visit_varvariabletype_annotationinitializerkindset_line)rp   r   args      rq   copy_argumentzTransformVisitor.copy_argument   sM    NN8,--$ M	
 
 	X
rs   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 rw   r   ry   r   rp   s     rq   
<listcomp>z3TransformVisitor.visit_func_def.<locals>.<listcomp>   '    ???T$$???rs   )FuncMapInitializerbodyacceptr#   name	argumentsblockr   r   rc   optional_typetypecopy_function_attributesr   is_decoratedis_conditionalabstract_status	is_staticis_classis_propertyis_finaloriginal_defro   rf   )rp   rt   initstmtr   results   `     rq   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Jrs   r-   c           
         t           fd|j        D                                  |j                  t	          t
          t                                        |j                                      } 	                    ||           |S )Nc                :    g | ]}                     |          S rw   r   r   s     rq   r   z6TransformVisitor.visit_lambda_expr.<locals>.<listcomp>   r   rs   )
r-   r   r   r   r   r   rc   r   r   r   rp   rt   r   s   `  rq   visit_lambda_exprz"TransformVisitor.visit_lambda_expr   s{    ???????JJty!!,'););DI)F)FGG
 

 	%%c4000
rs   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_coroutinerz   )rp   r   r   s      rq   r   z)TransformVisitor.copy_function_attributes   sb    =(&".#0#0!)!<%-%D"=rs   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 rw   )r   r;   r   )ry   itemrp   s     rq   r   z>TransformVisitor.visit_overloaded_func_def.<locals>.<listcomp>   s/    NNN4lDKK$5$566NNNrs   )r~   ziprz   r:   r   r   r   
isinstancerd   r   r   r   r   r   implr   r;   r   )rp   rt   r~   newitemolditemr   new_types   `      rq   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
rs   r   c           	     2    t          |j                             |j                  |j                             |j                                       |j                            }|j	        |_	        |j
        |_
         fd|j        D             |_        |S )Nc                :    g | ]}                     |          S rw   expr)ry   	decoratorrp   s     rq   r   z4TransformVisitor.visit_class_def.<locals>.<listcomp>  s%    PPP9$))I..PPPrs   )r   r   r   r   	type_varsexpressionsbase_type_exprsoptional_expr	metaclassfullnamer   
decoratorsr   s   `  rq   visit_class_defz TransformVisitor.visit_class_def  s    IJJty!!NT122t~..
 
 }9PPPPPPP
rs   r&   c                N    t          |j                                                  S r   )r&   r   rx   r   s     rq   visit_global_declz"TransformVisitor.visit_global_decl  s    $*//++,,,rs   r7   c                N    t          |j                                                  S r   )r7   r   rx   r   s     rq   visit_nonlocal_declz$TransformVisitor.visit_nonlocal_decl  s    DJOO--...rs   r   c                ^    t          |                     |j                  |j                  S )N)is_unreachable)r   r   r   r   r   s     rq   visit_blockzTransformVisitor.visit_block  s&    T__TY//@STTTTrs   r   c                    |                      |j                  }|j        j        |_        t          ||                     |j                  |                     |j                            }|j        |_        |S r   )	r   funcrz   r   r   r   r   varr   )rp   rt   r   r   s       rq   visit_decoratorz TransformVisitor.visit_decorator  sb    ""49--IN	d..t??PTPXAYAYZZ*
rs   rT   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   )rn   rT   r   r   r   rz   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      rq   r   zTransformVisitor.visit_var"  s    4<<%%$)T//	::;;99l}&*&B#"2!0*}*#'#<  $ 6T T
rs   r    c                P    t          |                     |j                            S r   )r    r   r   s     rq   visit_expression_stmtz&TransformVisitor.visit_expression_stmt8  s    dii	22333rs   r   c                ,    |                      |          S r   )duplicate_assignmentr   s     rq   visit_assignment_stmtz&TransformVisitor.visit_assignment_stmt;  s    ((...rs   c                &   t          |                     |j                  |                     |j                  |                     |j                            }|j        |_        |j        |_        |                     |j	                  |_	        |S r   )
r   r   lvaluesr   rvaluer   unanalyzed_typerz   is_final_defr   r   s      rq   r   z%TransformVisitor.duplicate_assignment>  s{    T\**IIdk""t344
 

 9,%%di00
rs   r8   c                    t          |j        |                     |j                  |                     |j                            S r   )r8   opr   lvaluer   r   s     rq   visit_operator_assignment_stmtz/TransformVisitor.visit_operator_assignment_stmtI  s6     &dgtyy/E/EtyyQUQ\G]G]^^^rs   rU   c                    t          |                     |j                  |                     |j                  |                     |j                            S r   )rU   r   r   r   optional_block	else_bodyr   s     rq   visit_while_stmtz!TransformVisitor.visit_while_stmtN  sG    IIdi  $**TY"7"79L9LT^9\9\
 
 	
rs   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      rq   visit_for_stmtzTransformVisitor.visit_for_stmtS  s    IIdj!!IIdi  JJty!!//t9::
 
 }++DO<<
rs   rA   c                P    t          |                     |j                            S r   )rA   r   r   r   s     rq   visit_return_stmtz"TransformVisitor.visit_return_stmt_  s     $,,TY77888rs   r
   c                    t          |                     |j                  |                     |j                            S r   )r
   r   r   msgr   s     rq   visit_assert_stmtz"TransformVisitor.visit_assert_stmtb  s0    $))DI..0B0B480L0LMMMrs   r   c                P    t          |                     |j                            S r   )r   r   r   s     rq   visit_del_stmtzTransformVisitor.visit_del_stmte  s    tyy++,,,rs   r'   c                    t          |                     |j                  |                     |j                  |                     |j                            S r   )r'   r   r   blocksr   r   r   r   s     rq   visit_if_stmtzTransformVisitor.visit_if_stmth  sK    TY''KK	""//
 
 	
rs   r   c                    t                      S r   )r   r   s     rq   visit_break_stmtz!TransformVisitor.visit_break_stmto  s    {{rs   r   c                    t                      S r   )r   r   s     rq   visit_continue_stmtz$TransformVisitor.visit_continue_stmtr      ~~rs   r=   c                    t                      S r   )r=   r   s     rq   visit_pass_stmtz TransformVisitor.visit_pass_stmtu  s    zzrs   r?   c                    t          |                     |j                  |                     |j                            S r   )r?   r   r   	from_exprr   s     rq   visit_raise_stmtz!TransformVisitor.visit_raise_stmtx  s2    ++DI668J8J4>8Z8Z[[[rs   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      rq   visit_try_stmtzTransformVisitor.visit_try_stmt{  s    JJty!!	**%%dj11KK&&// 122
 
 l
rs   rV   c                4    t                               |j                                       |j                                       |j                                       |j                            }|j	        |_	         fd|j
        D             |_
        |S )Nc                :    g | ]}                     |          S rw   r   )ry   typrp   s     rq   r   z4TransformVisitor.visit_with_stmt.<locals>.<listcomp>  s#    LLLdiinnLLLrs   )rV   r   r   r  targetr   r   r   r   r  analyzed_typesr   s   `  rq   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
rs   prY   c                    t          |j        |                     |j                  nd |j        |                     |j                  nd           S )N)patternr   )rY   r.  r   duplicate_namerp   r,  s     rq   visit_as_patternz!TransformVisitor.visit_as_pattern  sU    /0y/DDLL+++$010B$$QV,,,
 
 
 	
rs   r\   c                D     t           fd|j        D                       S )Nc                :    g | ]}                     |          S rw   r.  ry   patrp   s     rq   r   z5TransformVisitor.visit_or_pattern.<locals>.<listcomp>  s%    BBB$,,s++BBBrs   )r\   patternsr0  s   ` rq   visit_or_patternz!TransformVisitor.visit_or_pattern  s(    BBBBqzBBBCCCrs   ra   c                P    t          |                     |j                            S r   )ra   r   r0  s     rq   visit_value_patternz$TransformVisitor.visit_value_pattern  s    DIIaf--...rs   r_   c                *    t          |j                  S r   )r_   valuer0  s     rq   visit_singleton_patternz(TransformVisitor.visit_singleton_pattern  s    (((rs   r^   c                D     t           fd|j        D                       S )Nc                :    g | ]}                     |          S rw   r4  r5  s     rq   r   z;TransformVisitor.visit_sequence_pattern.<locals>.<listcomp>  s%    HHHcS 1 1HHHrs   )r^   r7  r0  s   ` rq   visit_sequence_patternz'TransformVisitor.visit_sequence_pattern  s(    HHHHQZHHHIIIrs   r`   c                b    t          |j        |                     |j                  nd           S r   )r`   capturer/  r0  s     rq   visit_starred_patternz&TransformVisitor.visit_starred_pattern  s-    	@Ud11!)<<<[_```rs   r[   c                     t           fd|j        D              fd|j        D             |j                             |j                  nd           S )Nc                :    g | ]}                     |          S rw   r   ry   r   rp   s     rq   r   z:TransformVisitor.visit_mapping_pattern.<locals>.<listcomp>  s#    555d$))D//555rs   c                :    g | ]}                     |          S rw   r4  r5  s     rq   r   z:TransformVisitor.visit_mapping_pattern.<locals>.<listcomp>  s%    :::#DLL%%:::rs   )keysvaluesrest)r[   rH  rI  rJ  r/  r0  s   ` rq   visit_mapping_patternz&TransformVisitor.visit_mapping_pattern  sk    5555af555:::::::010B$$QV,,,
 
 
 	
rs   rZ   c                     |j                                        }t          |t                    sJ t	          | fd|j        D             t          |j                   fd|j        D                       S )Nc                :    g | ]}                     |          S rw   r4  r5  s     rq   r   z8TransformVisitor.visit_class_pattern.<locals>.<listcomp>  s%    DDDsc**DDDrs   c                :    g | ]}                     |          S rw   r4  r5  s     rq   r   z8TransformVisitor.visit_class_pattern.<locals>.<listcomp>  s%    JJJ#DLL--JJJrs   )	class_refpositionalskeyword_keyskeyword_values)	rO  r   r   r@   rZ   rP  listrQ  rR  )rp   r,  rO  s   `  rq   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	
 
 
 	
rs   or0   c                     t                               |j                   fd|j        D                                  |j                                       |j                            S )Nc                :    g | ]}                     |          S rw   r4  )ry   r,  rp   s     rq   r   z5TransformVisitor.visit_match_stmt.<locals>.<listcomp>  s#    :::!dll1oo:::rs   )subjectr7  guardsbodies)r0   r   rX  r7  r  rY  r  rZ  )rp   rU  s   ` rq   visit_match_stmtz!TransformVisitor.visit_match_stmt  sh    IIai((::::qz:::,,QX66;;qx((	
 
 
 	
rs   rF   c                *    t          |j                  S r   )rF   r   r   s     rq   visit_star_exprz TransformVisitor.visit_star_expr  s    	"""rs   r,   c                *    t          |j                  S r   )r,   r<  r   s     rq   visit_int_exprzTransformVisitor.visit_int_expr      tz"""rs   rH   c                *    t          |j                  S r   )rH   r<  r   s     rq   visit_str_exprzTransformVisitor.visit_str_expr  r`  rs   r   c                *    t          |j                  S r   )r   r<  r   s     rq   visit_bytes_exprz!TransformVisitor.visit_bytes_expr      $$$rs   r!   c                *    t          |j                  S r   )r!   r<  r   s     rq   visit_float_exprz!TransformVisitor.visit_float_expr  re  rs   r   c                *    t          |j                  S r   )r   r<  r   s     rq   visit_complex_exprz#TransformVisitor.visit_complex_expr  s    4:&&&rs   r   c                    t                      S r   )r   r   s     rq   visit_ellipsiszTransformVisitor.visit_ellipsis  r  rs   r4   c                ,    |                      |          S r   r/  r   s     rq   visit_name_exprz TransformVisitor.visit_name_expr  s    ""4(((rs   c                r    t          |j                  }|                     ||           |j        |_        |S r   )r4   r   copy_refis_special_formr   s      rq   r/  zTransformVisitor.duplicate_name  s7     ty!!c4   "2
rs   r1   c                    t          |                     |j                  |j                  }|j        r|j        |_        |                     ||           |S r   )r1   r   r   def_varrp  )rp   rt   members      rq   visit_member_exprz"TransformVisitor.visit_member_expr  sO    DIIdi00$)<<< 	* "\FNfd###rs   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   rt   r   rT   r   r   r   r   r#   ro   get
is_new_defis_inferred_def)rp   r   r   r)  s       rq   rp  zTransformVisitor.copy_ref  s    =(fc"" 		C }$$//	** 	C^^FJ//FF(( 	C.2266BBF!,&6rs   rX   c                P    t          |                     |j                            S r   )rX   r   r   s     rq   visit_yield_from_exprz&TransformVisitor.visit_yield_from_expr  s    TYYty11222rs   rW   c                P    t          |                     |j                            S r   )rW   r   r   r   s     rq   visit_yield_exprz!TransformVisitor.visit_yield_expr  s     ++DI66777rs   r   c                P    t          |                     |j                            S r   )r   r   r   s     rq   visit_await_exprz!TransformVisitor.visit_await_expr  s    49--...rs   r   c           	        t          |                     |j                  |                     |j                  |j                                        |j                                        |                     |j	                            S r   )
r   r   calleer   args	arg_kindsrx   	arg_namesr   analyzedr   s     rq   visit_call_exprz TransformVisitor.visit_call_expr  sm    IIdk""TY''N!!N!!t}--
 
 	
rs   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      rq   visit_op_exprzTransformVisitor.visit_op_expr  sy    GIIdi  IIdj!!-($*<*<T]*K*KLL	
 
 ,,T-=>>
rs   r   c                     t          |j                             |j                            } fd|j        D             |_        |S )Nc                :    g | ]}                     |          S rw   )r   )ry   trp   s     rq   r   z:TransformVisitor.visit_comparison_expr.<locals>.<listcomp>  s'    MMMaD..q11MMMrs   )r   	operatorsr   operandsmethod_typesr   s   `  rq   visit_comparison_exprz&TransformVisitor.visit_comparison_expr  sH    T^T-=-=dm-L-LMMMMMM4;LMMM
rs   r   c                    t          |                     |j                  |                     |j                            S r   )r   r   r   r   s     rq   visit_cast_exprz TransformVisitor.visit_cast_expr  s.    		$),,dii	.B.BCCCrs   r   c                    t          |                     |j                  |                     |j                            S r   )r   r   r   r   s     rq   visit_assert_type_exprz'TransformVisitor.visit_assert_type_expr  s.    dii	22DIIdi4H4HIIIrs   rB   c                    |j         t          k    r7|j        J t          t          |                     |j                            S |S )N)r   r   )r   r   r   rB   r   s     rq   visit_reveal_exprz"TransformVisitor.visit_reveal_expr"  sE    9##9(((;TYYty5I5IJJJJ Krs   rI   c                    |                      |j                  }t          |t                    sJ t	          |j        |          }|j        |_        |S r   )r   callr   r   rI   r   r   )rp   rt   r  r   s       rq   visit_super_exprz!TransformVisitor.visit_super_expr*  sJ    yy##$)))))	4((9
rs   r   c                    t          |                     |j                  |                     |j                            S r   )r   r/  r)  r   r<  r   s     rq   visit_assignment_exprz&TransformVisitor.visit_assignment_expr1  s0    d11$+>>		$*@U@UVVVrs   rS   c                    t          |j        |                     |j                            }|                     |j                  |_        |S r   )rS   r   r   r   r  r   s      rq   visit_unary_exprz!TransformVisitor.visit_unary_expr4  s>    49!5!566,,T-=>>
rs   r/   c                P    t          |                     |j                            S r   )r/   r   r~   r   s     rq   visit_list_exprz TransformVisitor.visit_list_expr9  s     ((44555rs   r   c                D     t           fd|j        D                       S )Nc                r    g | ]3\  }}|r                     |          nd                      |          f4S r   r   )ry   keyr<  rp   s      rq   r   z4TransformVisitor.visit_dict_expr.<locals>.<listcomp>>  sA    ^^^ZS%-diinnntyy/?/?@^^^rs   )r   r~   r   s   ` rq   visit_dict_exprz TransformVisitor.visit_dict_expr<  s0    ^^^^SWS]^^^
 
 	
rs   rM   c                P    t          |                     |j                            S r   )rM   r   r~   r   s     rq   visit_tuple_exprz!TransformVisitor.visit_tuple_exprA  s     ))$*55666rs   rD   c                P    t          |                     |j                            S r   )rD   r   r~   r   s     rq   visit_set_exprzTransformVisitor.visit_set_exprD  s     t''
33444rs   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      rq   visit_index_exprz!TransformVisitor.visit_index_exprG  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
rs   rO   c                    t          |                     |j                  |                     |j                            S r   )rO   r   r   r   s     rq   r  z'TransformVisitor.visit_type_applicationS  s.    tyy33TZZ
5K5KLLLrs   r.   c                    |                      |j                  }|                    |j                   t          |          S r   )duplicate_generator	generatorr   r.   rp   rt   r  s      rq   visit_list_comprehensionz)TransformVisitor.visit_list_comprehensionV  s;    ,,T^<<	4>*** +++rs   rC   c                    |                      |j                  }|                    |j                   t          |          S r   )r  r  r   rC   r  s      rq   visit_set_comprehensionz(TransformVisitor.visit_set_comprehension[  s;    ,,T^<<	4>***	***rs   r   c                     t                               |j                                       |j                   fd|j        D              fd|j        D              fd|j        D             |j                  S )Nc                :    g | ]}                     |          S rw   r   ry   r  rp   s     rq   r   zCTransformVisitor.visit_dictionary_comprehension.<locals>.<listcomp>f  %    888%TYYu888rs   c                :    g | ]}                     |          S rw   r   ry   srp   s     rq   r   zCTransformVisitor.visit_dictionary_comprehension.<locals>.<listcomp>g  #    222aTYYq\\222rs   c                ,    g | ]}fd |D             S )c                :    g | ]}                     |          S rw   r   ry   condrp   s     rq   r   zNTransformVisitor.visit_dictionary_comprehension.<locals>.<listcomp>.<listcomp>h  #    555$diioo555rs   rw   ry   
conditionsrp   s     rq   r   zCTransformVisitor.visit_dictionary_comprehension.<locals>.<listcomp>h  .    WWW*5555*555WWWrs   )r   r   r  r<  indices	sequences	condlistsr  r   s   ` rq   visit_dictionary_comprehensionz/TransformVisitor.visit_dictionary_comprehension`  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
 
 	
rs   r%   c                ,    |                      |          S r   )r  r   s     rq   visit_generator_exprz%TransformVisitor.visit_generator_exprl  s    ''---rs   c                     t                               |j                   fd|j        D              fd|j        D              fd|j        D             |j                  S )Nc                :    g | ]}                     |          S rw   r   r  s     rq   r   z8TransformVisitor.duplicate_generator.<locals>.<listcomp>r  r  rs   c                :    g | ]}                     |          S rw   r   r  s     rq   r   z8TransformVisitor.duplicate_generator.<locals>.<listcomp>s  r  rs   c                ,    g | ]}fd |D             S )c                :    g | ]}                     |          S rw   r   r  s     rq   r   zCTransformVisitor.duplicate_generator.<locals>.<listcomp>.<listcomp>t  r  rs   rw   r  s     rq   r   z8TransformVisitor.duplicate_generator.<locals>.<listcomp>t  r  rs   )r%   r   	left_exprr  r  r  r  r   s   ` rq   r  z$TransformVisitor.duplicate_generatoro  sv    IIdn%%88884<88822224>222WWWWWWWM
 
 	
rs   rE   c                    t          |                     |j                  |                     |j                  |                     |j                            S r   )rE   r   begin_index	end_indexstrider   s     rq   visit_slice_exprz!TransformVisitor.visit_slice_exprx  sN    t/00t~..t{++
 
 	
rs   r   c                    t          |                     |j                  |                     |j                  |                     |j                            S r   )r   r   r  if_expr	else_exprr   s     rq   visit_conditional_exprz'TransformVisitor.visit_conditional_expr  sE    IIdi  $))DL"9"9499T^;T;T
 
 	
rs   rQ   c           	         t          |j        |j        |                     |j                  |                     |j                  |                     |j                  |j                  S N)variance)	rQ   r   r   r   rI  r   upper_bounddefaultr  r   s     rq   visit_type_var_exprz$TransformVisitor.visit_type_var_expr  s\    IMJJt{##IId&''IIdl##]
 
 
 	
rs   r<   c                    t          |j        |j        |                     |j                  |                     |j                  |j                  S r  )r<   r   r   r   r  r  r  r   s     rq   visit_paramspec_exprz%TransformVisitor.visit_paramspec_expr  sK    IMIId&''IIdl##]
 
 
 	
rs   rR   c           	         t          |j        |j        |                     |j                  |j        |                     |j                  |j                  S r  )rR   r   r   r   r  tuple_fallbackr  r  r   s     rq   visit_type_var_tuple_exprz*TransformVisitor.visit_type_var_tuple_expr  sQ    IMIId&''IIdl##]
 
 
 	
rs   rN   c                *    t          |j                  S r   )rN   rt   r   s     rq   r  z&TransformVisitor.visit_type_alias_expr      TY'''rs   r5   c                l    t          |j        |j        |j        |j                  }|j        |_        |S )N)rz   column)r5   r   old_typerz   r  r   )rp   rt   ress      rq   visit_newtype_exprz#TransformVisitor.visit_newtype_expr  s.    $)T]4;WWW9
rs   r3   c                *    t          |j                  S r   )r3   r   r   s     rq   visit_namedtuple_exprz&TransformVisitor.visit_namedtuple_expr  s    di(((rs   r   c                B    t          |j        |j        |j                  S r   )r   r   r~   rI  r   s     rq   visit_enum_call_exprz%TransformVisitor.visit_enum_call_expr  s    DItz4;???rs   rP   r6   c                *    t          |j                  S r   )rP   r   r   s     rq   visit_typeddict_exprz%TransformVisitor.visit_typeddict_expr  r  rs   r>   c                *    t          |j                  S r   )r>   r   r   s     rq   visit__promote_exprz$TransformVisitor.visit__promote_expr  s    49%%%rs   rK   c                P    t          |                     |j                            S r   )rK   r   r   s     rq   visit_temp_nodez TransformVisitor.visit_temp_node  s    		$),,---rs   c                Z    |                     |           }|                    |           |S r   )r   r   r   s      rq   rt   zTransformVisitor.node  s*    kk$T
rs   c                    |                     |           }t          |t                    sJ |                    |           |S r   )r   r   r2   r   r   s      rq   mypyfilezTransformVisitor.mypyfile  s@    kk$#x(((((T
rs   r   r   c                    |                     |           }t          |t                    sJ |                    |           |S r   )r   r   r   r   )rp   r   r   s      rq   r   zTransformVisitor.expr  s@    kk$#z*****T
rs   r   rG   c                    |                     |           }t          |t                    sJ |                    |           |S r   )r   r   rG   r   )rp   r   r   s      rq   r   zTransformVisitor.stmt  s@    kk$#y)))))T
rs   r.  r]   c                    |                     |           }t          |t                    sJ |                    |           |S r   )r   r   r]   r   )rp   r.  r   s      rq   r.  zTransformVisitor.pattern  s@    nnT""#w'''''W
rs   Expression | Nonec                4    |r|                      |          S d S r   r   )rp   r   s     rq   r   zTransformVisitor.optional_expr       	99T??"4rs   r   c                H    |                      |          }|j        |_        |S r   )r   rz   )rp   r   r   s      rq   r   zTransformVisitor.block  s#    u%%:
rs   Block | Nonec                4    |r|                      |          S d S r   r   )rp   r   s     rq   r   zTransformVisitor.optional_block  s!     	::e$$$4rs   r   list[Statement]c                       fd|D             S )Nc                :    g | ]}                     |          S rw   )r   )ry   r   rp   s     rq   r   z/TransformVisitor.statements.<locals>.<listcomp>  s#    777D		$777rs   rw   )rp   r   s   ` rq   r   zTransformVisitor.statements  s    7777J7777rs   r   list[Expression]c                       fd|D             S )Nc                :    g | ]}                     |          S rw   r   rF  s     rq   r   z0TransformVisitor.expressions.<locals>.<listcomp>  s#    888D		$888rs   rw   rp   r   s   ` rq   r   zTransformVisitor.expressions  s    8888K8888rs   Iterable[Expression | None]list[Expression | None]c                       fd|D             S )Nc                :    g | ]}                     |          S rw   )r   rF  s     rq   r   z9TransformVisitor.optional_expressions.<locals>.<listcomp>  s'    AAAT""4((AAArs   rw   r  s   ` rq   r  z%TransformVisitor.optional_expressions  s      BAAA[AAAArs   r  list[Block]c                       fd|D             S )Nc                :    g | ]}                     |          S rw   r  )ry   r   rp   s     rq   r   z+TransformVisitor.blocks.<locals>.<listcomp>  s%    666e

5!!666rs   rw   )rp   r  s   ` rq   r  zTransformVisitor.blocks  s    6666v6666rs   r   list[NameExpr]c                       fd|D             S )Nc                :    g | ]}                     |          S rw   rm  )ry   r   rp   s     rq   r   z*TransformVisitor.names.<locals>.<listcomp>  s'    <<<d##D))<<<rs   rw   )rp   r   s   ` rq   r   zTransformVisitor.names  s    <<<<e<<<<rs   Iterable[NameExpr | None]list[NameExpr | None]c                    g }|D ]B}|r)|                     |                     |                     -|                     d            C|S r   )appendr/  )rp   r   r   r   s       rq   r  zTransformVisitor.optional_names  s[    (* 	$ 	$D $d11$778888d####rs   r   re   c                    |S r   rw   rp   r   s     rq   r   zTransformVisitor.type  s    rs   Type | Nonec                4    |r|                      |          S d S r   r'  r  s     rq   r   zTransformVisitor.optional_type  r   rs   r   
list[Type]c                       fd|D             S )Nc                :    g | ]}                     |          S rw   r'  )ry   r   rp   s     rq   r   z*TransformVisitor.types.<locals>.<listcomp>  s#    222D		$222rs   rw   )rp   r   s   ` rq   r   zTransformVisitor.types  s    2222E2222rs   N)rj   rk   )rt   r2   rj   r2   )rt   r(   rj   r(   )rt   r*   rj   r*   )rt   r)   rj   r)   )r   r	   rj   r	   )rt   r#   rj   r#   )rt   r-   rj   r-   )r   r$   r   r$   rj   rk   )rt   r:   rj   r:   )rt   r   rj   r   )rt   r&   rj   r&   )rt   r7   rj   r7   )rt   r   rj   r   )rt   r   rj   r   )rt   rT   rj   rT   )rt   r    rj   r    )rt   r   rj   r   )rt   r8   rj   r8   )rt   rU   rj   rU   )rt   r"   rj   r"   )rt   rA   rj   rA   )rt   r
   rj   r
   )rt   r   rj   r   )rt   r'   rj   r'   )rt   r   rj   r   )rt   r   rj   r   )rt   r=   rj   r=   )rt   r?   rj   r?   )rt   rL   rj   rL   )rt   rV   rj   rV   )r,  rY   rj   rY   )r,  r\   rj   r\   )r,  ra   rj   ra   )r,  r_   rj   r_   )r,  r^   rj   r^   )r,  r`   rj   r`   )r,  r[   rj   r[   )r,  rZ   rj   rZ   )rU  r0   rj   r0   )rt   rF   rj   rF   )rt   r,   rj   r,   )rt   rH   rj   rH   )rt   r   rj   r   )rt   r!   rj   r!   )rt   r   rj   r   )rt   r   rj   r   )rt   r4   rj   r4   )rt   r1   rj   r1   )r   r@   r   r@   rj   rk   )rt   rX   rj   rX   )rt   rW   rj   rW   )rt   r   rj   r   )rt   r   rj   r   )rt   r9   rj   r9   )rt   r   rj   r   )rt   r   rj   r   )rt   r   rj   r   )rt   rB   rj   rB   )rt   rI   rj   rI   )rt   r   rj   r   )rt   rS   rj   rS   )rt   r/   rj   r/   )rt   r   rj   r   )rt   rM   rj   rM   )rt   rD   rj   rD   )rt   r+   rj   r+   )rt   rO   rj   rO   )rt   r.   rj   r.   )rt   rC   rj   rC   )rt   r   rj   r   )rt   r%   rj   r%   )rt   rE   rj   rE   )rt   r   rj   r   )rt   rQ   rj   rQ   )rt   r<   rj   r<   )rt   rR   rj   rR   )rt   rN   rj   rN   )rt   r5   rj   r5   )rt   r3   rj   r3   )rt   r   rj   r   )rt   rP   rj   r6   )rt   r>   rj   r>   )rt   rK   rj   rK   )rt   r6   rj   r6   )r   r   rj   r   )r   rG   rj   rG   )r.  r]   rj   r]   )r   r  rj   r  )r   r   rj   r   )r   r  rj   r  )r   r  rj   r  )r   r  rj   r  )r   r  rj   r  )r  r  rj   r  )r   r  rj   r  )r   r  rj   r  )r   re   rj   re   )r   r  rj   r  )r   r  rj   r  )l__name__
__module____qualname____doc__rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r  r  r  r$  r+  r1  r8  r:  r=  r@  rC  rK  rT  r[  r]  r_  rb  rd  rg  ri  rk  rn  r/  ru  rp  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rt   r  r   r   r.  r   r   r   r   r   r  r  r   r  r   r   r   rw   rs   rq   ri   ri   p   sw        (? ? ? ?   ' ' ' '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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 3rs   ri   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.
    transformerri   rj   rk   c                    || _         d S r   )r&  )rp   r&  s     rq   rr   zFuncMapInitializer.__init__  s    &rs   rt   r#   c                    || j         j        vr.t          |j        |j        |j        d           | j         j        |<   t                                          |           d S r   )r&  ro   r#   r   r   r   superr   )rp   rt   	__class__s     rq   r   z!FuncMapInitializer.visit_func_def  s]    t'<<<:A	4>49d; ;D1$7 	t$$$$$rs   )r&  ri   rj   rk   )rt   r#   rj   rk   )r!  r"  r#  r$  rr   r   __classcell__)r*  s   @rq   r   r     s[         
' ' ' '% % % % % % % % % %rs   r   N)qr$  
__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   mypy.patternsrY   rZ   r[   r\   r]   r^   r_   r`   ra   mypy.traverserrb   
mypy.typesrc   rd   re   	mypy.utilrf   mypy.visitorrg   ri   r   rw   rs   rq   <module>r5     so   
 # " " " " " $ $ $ $ $ $ ! ! ! ! ! ! ! !S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S Sh
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 , + + + + + 5 5 5 5 5 5 5 5 5 5 * * * * * * $ $ $ $ $ $_
3 _
3 _
3 _
3 _
3{4( _
3 _
3 _
3D% % % % %) % % % % %rs   