
    iQz                    v   d 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-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW ddlXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z` ddlambZb e ed           G d	 d
ebd                                           Zc G d dec          Zd G d dec          Zed5dZf G d dec          Zgd6dZh G d dec          Zid7dZj G d dec          Zk G d  d!ek          Zld5d"Zm G d# d$ek          Znd5d%Zo G d& d'ec          Zpd8d)Zq G d* d+ek          Zrd9d.Zs G d/ d0ek          Ztd:d2Zu G d3 d4ek          ZvdS );zGeneric node traverser visitor    )annotations)
mypyc_attrtrait)QREVEAL_TYPE
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FuncBaseFuncDefFuncItemGeneratorExpr
GlobalDeclIfStmtImport	ImportAll
ImportFrom	IndexExprIntExpr
LambdaExprListComprehensionListExpr	MatchStmt
MemberExprMypyFileNamedTupleExprNameExprNewTypeExprNodeNonlocalDeclOperatorAssignmentStmtOpExprOverloadedFuncDefParamSpecExprPassStmtPromoteExpr	RaiseStmt
ReturnStmt
RevealExprSetComprehensionSetExpr	SliceExprStarExprStrExpr	SuperExprTemplateStrExprTempNodeTryStmt	TupleExpr	TypeAliasTypeAliasExprTypeAliasStmtTypeApplicationTypedDictExprTypeFormExprTypeVarExprTypeVarTupleExpr	UnaryExprVar	WhileStmtWithStmt	YieldExprYieldFromExpr)	AsPatternClassPatternMappingPattern	OrPatternSequencePatternSingletonPatternStarredPatternValuePattern)NodeVisitorT)allow_interpreted_subclassesc                     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dd0Zdd2Zdd4Zdd6Zdd8Zdd:Zdd<Zdd>Z dd@Z!ddBZ"ddDZ#ddFZ$ddHZ%ddJZ&ddLZ'ddNZ(ddPZ)ddRZ*ddTZ+ddVZ,ddXZ-ddZZ.dd\Z/dd^Z0dd`Z1ddbZ2dddZ3ddfZ4ddhZ5ddjZ6ddlZ7ddnZ8ddpZ9ddrZ:ddtZ;ddvZ<ddxZ=ddzZ>dd|Z?dd~Z@ddZAddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQd dZRddZSddZTddZUddZVddZWddZXddZYdS (  TraverserVisitora  A parse tree visitor that traverses the parse tree during visiting.

    It does not perform any actions outside the traversal. Subclasses
    should override visit methods to perform actions during
    traversal. Calling the superclass method allows reusing the
    traversal implementation.

    TODO: split this into more limited visitor (e.g. statements-only etc).
    This will improve performance since in many cases we don't need to recurse
    all the way down in various visitors that subclass this.
    returnNonec                    d S N selfs    M/root/projects/qq-shell/venv/lib64/python3.11/site-packages/mypy/traverser.py__init__zTraverserVisitor.__init__v           or0   c               D    |j         D ]}|                    |            d S rf   )defsaccept)ri   rn   ds      rj   visit_mypy_filez TraverserVisitor.visit_mypy_file{   s.     	 	AHHTNNNN	 	rm   blockr   c               D    |j         D ]}|                    |            d S rf   )bodyrq   )ri   rt   ss      rj   visit_blockzTraverserVisitor.visit_block   s.     	 	AHHTNNNN	 	rm   r"   c                   |j         L|j         D ] }|j        }||                    |            !|j         D ]}|                     |j                   |j                            |            d S rf   )	argumentsinitializerrq   	visit_varvariablerv   )ri   rn   arginits       rj   
visit_funczTraverserVisitor.visit_func   s}    ;"{ & &#KK%%%{ - -s|,,,,	drm   r!   c               0    |                      |           d S rf   r   ri   rn   s     rj   visit_func_defzTraverserVisitor.visit_func_def       rm   r8   c                   |j         D ]}|                    |            |j        r|j                            |            d S d S rf   )itemsrq   implri   rn   items      rj   visit_overloaded_func_defz*TraverserVisitor.visit_overloaded_func_def   sV    G 	 	DKK6 	 FMM$	  	 rm   r   c                  |j         D ]}|                    |            |j        D ]}|                    |            |j        r|j                            |            |j                                        D ]}|                    |            |j                            |            |j        r|j                            |            d S d S rf   )
decoratorsrq   base_type_exprs	metaclasskeywordsvaluesrp   analyzed)ri   rn   rr   basevs        rj   visit_class_defz TraverserVisitor.visit_class_def   s     	 	AHHTNNNN% 	 	DKK; 	%Kt$$$""$$ 	 	AHHTNNNN	d: 	$Jd#####	$ 	$rm   r   c                   |j                             |            |j                            |            |j        D ]}|                    |            d S rf   )funcrq   varr   )ri   rn   	decorators      rj   visit_decoratorz TraverserVisitor.visit_decorator   s\    	d	T 	# 	#IT""""	# 	#rm   r   c               :    |j                             |            d S rf   exprrq   r   s     rj   visit_expression_stmtz&TraverserVisitor.visit_expression_stmt       	drm   r
   c               x    |j                             |            |j        D ]}|                    |            d S rf   )rvaluerq   lvalues)ri   rn   ls      rj   visit_assignment_stmtz&TraverserVisitor.visit_assignment_stmt   sB    	 	 	AHHTNNNN	 	rm   r6   c               n    |j                             |            |j                            |            d S rf   )r   rq   lvaluer   s     rj   visit_operator_assignment_stmtz/TraverserVisitor.visit_operator_assignment_stmt   s0    		rm   rS   c                   |j                             |            |j                            |            |j        r|j                            |            d S d S rf   r   rq   rv   	else_bodyr   s     rj   visit_while_stmtz!TraverserVisitor.visit_while_stmt   sZ    	d	d; 	%Kt$$$$$	% 	%rm   r   c                   |j                             |            |j                            |            |j                            |            |j        r|j                            |            d S d S rf   )indexrq   r   rv   r   r   s     rj   visit_for_stmtzTraverserVisitor.visit_for_stmt   sn    	t	d	d; 	%Kt$$$$$	% 	%rm   r=   c               L    |j         |j                             |            d S d S rf   r   r   s     rj   visit_return_stmtz"TraverserVisitor.visit_return_stmt   ,    6FMM$ rm   r   c                   |j         |j                             |            |j        |j                            |            d S d S rf   )r   rq   msgr   s     rj   visit_assert_stmtz"TraverserVisitor.visit_assert_stmt   sH    6FMM$5ELL rm   r   c               L    |j         |j                             |            d S d S rf   r   r   s     rj   visit_del_stmtzTraverserVisitor.visit_del_stmt   r   rm   r%   c                   |j         D ]}|                    |            |j        D ]}|                    |            |j        r|j                            |            d S d S rf   r   )ri   rn   ebs       rj   visit_if_stmtzTraverserVisitor.visit_if_stmt   sv     	 	AHHTNNNN 	 	AHHTNNNN; 	%Kt$$$$$	% 	%rm   r<   c                   |j         |j                             |            |j        |j                            |            d S d S rf   )r   rq   	from_exprr   s     rj   visit_raise_stmtz!TraverserVisitor.visit_raise_stmt   sJ    6FMM$;"Kt$$$$$ #"rm   rG   c                  |j                             |            t          t          |j                            D ]F}|j        |         }||                    |            |j        |                             |            G|j        D ]}||                    |            |j        |j                            |            |j        |j                            |            d S d S rf   )	rv   rq   rangelentypeshandlersvarsr   finally_body)ri   rn   itpr   s        rj   visit_try_stmtzTraverserVisitor.visit_try_stmt   s    	ds17||$$ 	' 	'AB~		$JqM  &&&& 	 	A};"Kt$$$>%N!!$''''' &%rm   rT   c               
   t          t          |j                            D ]F}|j        |                             |            |j        |         }||                    |            G|j                            |            d S rf   )r   r   r   rq   targetrv   )ri   rn   r   targs       rj   visit_with_stmtz TraverserVisitor.visit_with_stmt   sy    s16{{## 	" 	"AF1IT"""8A;DD!!!	drm   r.   c               J   |j                             |            t          t          |j                            D ]f}|j        |                             |            |j        |         }||                    |            |j        |                             |            gd S rf   )subjectrq   r   r   patternsguardsbodies)ri   rn   r   guards       rj   visit_match_stmtz!TraverserVisitor.visit_match_stmt   s    		s1:'' 	% 	%AJqM  &&&HQKE T"""HQKt$$$$	% 	%rm   rK   c               n    |j                             |            |j                            |            d S rf   )namerq   valuer   s     rj   visit_type_alias_stmtz&TraverserVisitor.visit_type_alias_stmt   s0    	d	trm   r/   c               :    |j                             |            d S rf   r   r   s     rj   visit_member_exprz"TraverserVisitor.visit_member_expr  r   rm   rV   c               :    |j                             |            d S rf   r   r   s     rj   visit_yield_from_exprz&TraverserVisitor.visit_yield_from_expr  r   rm   rU   c               L    |j         r|j                             |            d S d S rf   r   r   s     rj   visit_yield_exprz!TraverserVisitor.visit_yield_expr
  s0    6 	 FMM$	  	 rm   r   c                   |j                             |            |j        D ]}|                    |            |j        r|j                            |            d S d S rf   )calleerq   argsr   ri   rn   as      rj   visit_call_exprz TraverserVisitor.visit_call_expr  sh    	 	 	AHHTNNNN: 	$Jd#####	$ 	$rm   r7   c                   |j                             |            |j                            |            |j        |j                            |            d S d S rf   )leftrq   rightr   r   s     rj   visit_op_exprzTraverserVisitor.visit_op_expr  sV    	d	t:!Jd##### "!rm   r   c               D    |j         D ]}|                    |            d S rf   )operandsrq   )ri   rn   operands      rj   visit_comparison_exprz&TraverserVisitor.visit_comparison_expr  s2    z 	! 	!GNN4    	! 	!rm   rA   c                   |j         |j                             |            |j        |j                            |            |j        |j                            |            d S d S rf   )begin_indexrq   	end_indexstrider   s     rj   visit_slice_exprz!TraverserVisitor.visit_slice_expr  sh    =$M  &&&;"Kt$$$8HOOD!!!!!  rm   r   c               :    |j                             |            d S rf   r   r   s     rj   visit_cast_exprz TraverserVisitor.visit_cast_expr'  r   rm   rN   c                   d S rf   rg   r   s     rj   visit_type_form_exprz%TraverserVisitor.visit_type_form_expr*  rl   rm   r   c               :    |j                             |            d S rf   r   r   s     rj   visit_assert_type_exprz'TraverserVisitor.visit_assert_type_expr-  r   rm   r>   c               p    |j         t          k    r%|j        J |j                            |            d S d S rf   )kindr   r   rq   r   s     rj   visit_reveal_exprz"TraverserVisitor.visit_reveal_expr0  s>    6[  6%%%FMM$ Drm   r	   c               n    |j                             |            |j                            |            d S rf   )r   rq   r   r   s     rj   visit_assignment_exprz&TraverserVisitor.visit_assignment_expr8  s0    		trm   rQ   c               :    |j                             |            d S rf   r   r   s     rj   visit_unary_exprz!TraverserVisitor.visit_unary_expr<  r   rm   r-   c               D    |j         D ]}|                    |            d S rf   r   rq   r   s      rj   visit_list_exprz TraverserVisitor.visit_list_expr?  2    G 	 	DKK	 	rm   rH   c               D    |j         D ]}|                    |            d S rf   r   r   s      rj   visit_tuple_exprz!TraverserVisitor.visit_tuple_exprC  r   rm   r   c               x    |j         D ]1\  }}||                    |            |                    |            2d S rf   r   )ri   rn   kr   s       rj   visit_dict_exprz TraverserVisitor.visit_dict_exprG  sF    G 	 	DAq}HHTNNNN	 	rm   rE   c                   |j         D ]k}t          |t                    r?|d                             |            |d         |d                             |            V|                    |            ld S )Nr      )r   
isinstancetuplerq   r   s      rj   visit_template_str_exprz(TraverserVisitor.visit_template_str_exprM  s{    G 	" 	"D$&& "Qt$$$7&GNN4(((D!!!!	" 	"rm   r@   c               D    |j         D ]}|                    |            d S rf   r   r   s      rj   visit_set_exprzTraverserVisitor.visit_set_exprV  r   rm   r)   c                   |j                             |            |j                            |            |j        r|j                            |            d S d S rf   )r   rq   r   r   r   s     rj   visit_index_exprz!TraverserVisitor.visit_index_exprZ  sZ    	d	t: 	$Jd#####	$ 	$rm   r#   c                  t          |j        |j        |j                  D ]J\  }}}|                    |            |                    |            |D ]}|                    |            K|j                            |            d S rf   )zipindices	sequences	condlistsrq   	left_exprri   rn   r   sequence
conditionsconds         rj   visit_generator_exprz%TraverserVisitor.visit_generator_expr`  s    +.qy!+q{+S+S 	" 	"'E8ZOOD!!!LL" " "D!!!!"	4     rm   r   c               D   t          |j        |j        |j                  D ]J\  }}}|                    |            |                    |            |D ]}|                    |            K|j                            |            |j                            |            d S rf   )r  r  r  r  rq   keyr   r  s         rj   visit_dictionary_comprehensionz/TraverserVisitor.visit_dictionary_comprehensionh  s    +.qy!+q{+S+S 	" 	"'E8ZOOD!!!LL" " "D!!!!"	T	trm   r,   c               :    |j                             |            d S rf   	generatorrq   r   s     rj   visit_list_comprehensionz)TraverserVisitor.visit_list_comprehensionq      	4     rm   r?   c               :    |j                             |            d S rf   r  r   s     rj   visit_set_comprehensionz(TraverserVisitor.visit_set_comprehensiont  r!  rm   r   c                   |j                             |            |j                            |            |j                            |            d S rf   )r  rq   if_expr	else_exprr   s     rj   visit_conditional_exprz'TraverserVisitor.visit_conditional_exprw  sH    	d			4     rm   rL   c               :    |j                             |            d S rf   r   r   s     rj   visit_type_applicationz'TraverserVisitor.visit_type_application|  r   rm   r+   c               0    |                      |           d S rf   r   r   s     rj   visit_lambda_exprz"TraverserVisitor.visit_lambda_expr  r   rm   rB   c               :    |j                             |            d S rf   r   r   s     rj   visit_star_exprz TraverserVisitor.visit_star_expr  r   rm   r   c               :    |j                             |            d S rf   r   r   s     rj   visit_await_exprz!TraverserVisitor.visit_await_expr  r   rm   rD   c               :    |j                             |            d S rf   )callrq   r   s     rj   visit_super_exprz!TraverserVisitor.visit_super_expr  r   rm   rW   c                   |j         |j                             |            |j        |j                            |            d S d S rf   )patternrq   r   r   s     rj   visit_as_patternz!TraverserVisitor.visit_as_pattern  sJ    9 IT"""6FMM$ rm   rZ   c               D    |j         D ]}|                    |            d S rf   r   rq   ri   rn   ps      rj   visit_or_patternz!TraverserVisitor.visit_or_pattern  .     	 	AHHTNNNN	 	rm   r^   c               :    |j                             |            d S rf   r   r   s     rj   visit_value_patternz$TraverserVisitor.visit_value_pattern  r   rm   r[   c               D    |j         D ]}|                    |            d S rf   r7  r8  s      rj   visit_sequence_patternz'TraverserVisitor.visit_sequence_pattern  r;  rm   r]   c               L    |j         |j                             |            d S d S rf   )capturerq   r   s     rj   visit_starred_patternz&TraverserVisitor.visit_starred_pattern  s.    9 IT""""" ! rm   rY   c                   |j         D ]}|                    |            |j        D ]}|                    |            |j        |j                            |            d S d S rf   )keysrq   r   rest)ri   rn   r  r   s       rj   visit_mapping_patternz&TraverserVisitor.visit_mapping_pattern  sx    6 	 	CJJtX 	 	ELL6FMM$ rm   rX   c                   |j                             |            |j        D ]}|                    |            |j        D ]}|                    |            d S rf   )	class_refrq   positionalskeyword_values)ri   rn   r9  r   s       rj   visit_class_patternz$TraverserVisitor.visit_class_pattern  sg    	4    	 	AHHTNNNN! 	 	AHHTNNNN	 	rm   r&   c               D    |j         D ]}|                    |            d S rf   assignmentsrq   r   s      rj   visit_importzTraverserVisitor.visit_import  .     	 	AHHTNNNN	 	rm   r(   c               D    |j         D ]}|                    |            d S rf   rM  r   s      rj   visit_import_fromz"TraverserVisitor.visit_import_from  rP  rm   r2   c                   d S rf   rg   r   s     rj   visit_name_exprz TraverserVisitor.visit_name_expr      trm   rC   c                   d S rf   rg   r   s     rj   visit_str_exprzTraverserVisitor.visit_str_expr  rU  rm   r*   c                   d S rf   rg   r   s     rj   visit_int_exprzTraverserVisitor.visit_int_expr  rU  rm   r   c                   d S rf   rg   r   s     rj   visit_float_exprz!TraverserVisitor.visit_float_expr  rU  rm   r   c                   d S rf   rg   r   s     rj   visit_bytes_exprz!TraverserVisitor.visit_bytes_expr  rU  rm   r   c                   d S rf   rg   r   s     rj   visit_ellipsiszTraverserVisitor.visit_ellipsis  rU  rm   rR   c                   d S rf   rg   r   s     rj   r|   zTraverserVisitor.visit_var  rU  rm   r   c                   d S rf   rg   r   s     rj   visit_continue_stmtz$TraverserVisitor.visit_continue_stmt  rU  rm   r:   c                   d S rf   rg   r   s     rj   visit_pass_stmtz TraverserVisitor.visit_pass_stmt  rU  rm   r   c                   d S rf   rg   r   s     rj   visit_break_stmtz!TraverserVisitor.visit_break_stmt  rU  rm   rF   c                   d S rf   rg   r   s     rj   visit_temp_nodez TraverserVisitor.visit_temp_node  rU  rm   r5   c                   d S rf   rg   r   s     rj   visit_nonlocal_declz$TraverserVisitor.visit_nonlocal_decl  rU  rm   r$   c                   d S rf   rg   r   s     rj   visit_global_declz"TraverserVisitor.visit_global_decl  rU  rm   r'   c                   d S rf   rg   r   s     rj   visit_import_allz!TraverserVisitor.visit_import_all  rU  rm   rO   c                   d S rf   rg   r   s     rj   visit_type_var_exprz$TraverserVisitor.visit_type_var_expr  rU  rm   r9   c                   d S rf   rg   r   s     rj   visit_paramspec_exprz%TraverserVisitor.visit_paramspec_expr  rU  rm   rP   c                   d S rf   rg   r   s     rj   visit_type_var_tuple_exprz*TraverserVisitor.visit_type_var_tuple_expr  rU  rm   rJ   c                   d S rf   rg   r   s     rj   visit_type_alias_exprz&TraverserVisitor.visit_type_alias_expr  rU  rm   rI   c                   d S rf   rg   r   s     rj   visit_type_aliasz!TraverserVisitor.visit_type_alias  rU  rm   r1   c                   d S rf   rg   r   s     rj   visit_namedtuple_exprz&TraverserVisitor.visit_namedtuple_expr  rU  rm   rM   c                   d S rf   rg   r   s     rj   visit_typeddict_exprz%TraverserVisitor.visit_typeddict_expr  rU  rm   r3   c                   d S rf   rg   r   s     rj   visit_newtype_exprz#TraverserVisitor.visit_newtype_expr  rU  rm   r;   c                   d S rf   rg   r   s     rj   visit__promote_exprz$TraverserVisitor.visit__promote_expr  rU  rm   r   c                   d S rf   rg   r   s     rj   visit_complex_exprz#TraverserVisitor.visit_complex_expr  rU  rm   r   c                   d S rf   rg   r   s     rj   visit_enum_call_exprz%TraverserVisitor.visit_enum_call_expr   rU  rm   r\   c                   d S rf   rg   r   s     rj   visit_singleton_patternz(TraverserVisitor.visit_singleton_pattern  rU  rm   Nrc   rd   rn   r0   rc   rd   rt   r   rc   rd   )rn   r"   rc   rd   rn   r!   rc   rd   rn   r8   rc   rd   rn   r   rc   rd   rn   r   rc   rd   rn   r   rc   rd   rn   r
   rc   rd   rn   r6   rc   rd   rn   rS   rc   rd   rn   r   rc   rd   rn   r=   rc   rd   rn   r   rc   rd   rn   r   rc   rd   rn   r%   rc   rd   rn   r<   rc   rd   rn   rG   rc   rd   rn   rT   rc   rd   rn   r.   rc   rd   )rn   rK   rc   rd   rn   r/   rc   rd   rn   rV   rc   rd   rn   rU   rc   rd   rn   r   rc   rd   rn   r7   rc   rd   rn   r   rc   rd   rn   rA   rc   rd   rn   r   rc   rd   rn   rN   rc   rd   rn   r   rc   rd   rn   r>   rc   rd   rn   r	   rc   rd   rn   rQ   rc   rd   rn   r-   rc   rd   rn   rH   rc   rd   rn   r   rc   rd   rn   rE   rc   rd   rn   r@   rc   rd   rn   r)   rc   rd   rn   r#   rc   rd   rn   r   rc   rd   rn   r,   rc   rd   rn   r?   rc   rd   rn   r   rc   rd   rn   rL   rc   rd   rn   r+   rc   rd   rn   rB   rc   rd   rn   r   rc   rd   rn   rD   rc   rd   rn   rW   rc   rd   rn   rZ   rc   rd   rn   r^   rc   rd   rn   r[   rc   rd   rn   r]   rc   rd   rn   rY   rc   rd   rn   rX   rc   rd   rn   r&   rc   rd   rn   r(   rc   rd   rn   r2   rc   rd   rn   rC   rc   rd   rn   r*   rc   rd   rn   r   rc   rd   rn   r   rc   rd   rn   r   rc   rd   )rn   rR   rc   rd   rn   r   rc   rd   rn   r:   rc   rd   rn   r   rc   rd   )rn   rF   rc   rd   rn   r5   rc   rd   rn   r$   rc   rd   rn   r'   rc   rd   rn   rO   rc   rd   rn   r9   rc   rd   rn   rP   rc   rd   rn   rJ   rc   rd   rn   rI   rc   rd   rn   r1   rc   rd   rn   rM   rc   rd   rn   r3   rc   rd   )rn   r;   rc   rd   rn   r   rc   rd   rn   r   rc   rd   rn   r\   rc   rd   )Z__name__
__module____qualname____doc__rk   rs   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r   r#  r'  r)  r+  r-  r/  r2  r5  r:  r=  r?  rB  rF  rK  rO  rR  rT  rW  rY  r[  r]  r_  r|   rb  rd  rf  rh  rj  rl  rn  rp  rr  rt  rv  rx  rz  r|  r~  r  r  r  r  rg   rm   rj   rb   rb   g   s       
 
   
      
 
 
 
          $ $ $ $# # # #      
   % % % %% % % %                 % % % %% % % %( ( ( (   % % % %                $ $ $ $$ $ $ $! ! ! !" " " "                           " " " "   $ $ $ $! ! ! !   ! ! ! !! ! ! !! ! ! !
                               # # # #                
                                                                                rm   rb   Nc                      e Zd ZdZddZd fd	Zd fdZd fdZd fdZd fdZ	d fdZ
d fdZd fdZd fdZd fdZd fdZd fd Zd fd"Zd fd$Zd fd&Zd fd(Zd fd*Zd fd,Zd fd.Zd fd0Zd fd2Zd fd4Zd fd6Zd fd8Zd fd:ZdÈ fd<ZdĈ fd>Zdň fd@Z dƈ fdBZ!dǈ fdDZ"dȈ fdFZ#dɈ fdHZ$dʈ fdJZ%dˈ fdLZ&d̈ fdNZ'd͈ fdPZ(dΈ fdRZ)dψ fdTZ*dЈ fdVZ+dш fdXZ,d҈ fdZZ-dӈ fd\Z.dԈ fd^Z/dՈ fd`Z0dֈ fdbZ1d׈ fddZ2d؈ fdfZ3dو fdhZ4dڈ fdjZ5dۈ fdlZ6d܈ fdnZ7d݈ fdpZ8dވ fdrZ9d߈ fdtZ:d fdvZ;d fdxZ<d fdzZ=d fd|Z>d fd~Z?d fdZ@d fdZAd fdZBd fdZCd fdZDd fdZEd fdZFd fdZGd fdZHd fdZId fdZJd fdZKd fdZLd fdZMd fdZNd fdZOd fdZPd fdZQd fdZRd fdZSd fdZT xZUS )ExtendedTraverserVisitora]  This is a more flexible traverser.

    In addition to the base traverser it:
        * has visit_ methods for leaf nodes
        * has common method that is called for all nodes
        * allows skipping recursing into a node

    Note that this traverser still doesn't visit some internal
    mypy constructs like _promote expression and Var.
    rn   r4   rc   boolc                    dS NTrg   r   s     rj   visitzExtendedTraverserVisitor.visit  s    trm   r0   rd   c               x    |                      |          sd S t                                          |           d S rf   )r  superrs   ri   rn   	__class__s     rj   rs   z(ExtendedTraverserVisitor.visit_mypy_file  8    zz!}} 	F"""""rm   r&   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rO  r  s     rj   rO  z%ExtendedTraverserVisitor.visit_import  s8    zz!}} 	FQrm   r(   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rR  r  s     rj   rR  z*ExtendedTraverserVisitor.visit_import_from#  8    zz!}} 	F!!!$$$$$rm   r'   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rn  r  s     rj   rn  z)ExtendedTraverserVisitor.visit_import_all(  8    zz!}} 	F  #####rm   r!   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z'ExtendedTraverserVisitor.visit_func_def/  8    zz!}} 	Fq!!!!!rm   r8   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z2ExtendedTraverserVisitor.visit_overloaded_func_def4  8    zz!}} 	F))!,,,,,rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z(ExtendedTraverserVisitor.visit_class_def9  r  rm   r$   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rl  r  s     rj   rl  z*ExtendedTraverserVisitor.visit_global_decl>  r  rm   r5   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rj  r  s     rj   rj  z,ExtendedTraverserVisitor.visit_nonlocal_declC  8    zz!}} 	F##A&&&&&rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z(ExtendedTraverserVisitor.visit_decoratorH  r  rm   rI   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rx  r  s     rj   rx  z)ExtendedTraverserVisitor.visit_type_aliasM  r  rm   rt   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rx   )ri   rt   r  s     rj   rx   z$ExtendedTraverserVisitor.visit_blockT  s:    zz%   	FE"""""rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z.ExtendedTraverserVisitor.visit_expression_stmtY  8    zz!}} 	F%%a(((((rm   r
   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z.ExtendedTraverserVisitor.visit_assignment_stmt^  r  rm   r6   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z7ExtendedTraverserVisitor.visit_operator_assignment_stmtc  8    zz!}} 	F..q11111rm   rS   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z)ExtendedTraverserVisitor.visit_while_stmth  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z'ExtendedTraverserVisitor.visit_for_stmtm  r  rm   r=   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z*ExtendedTraverserVisitor.visit_return_stmtr  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z*ExtendedTraverserVisitor.visit_assert_stmtw  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z'ExtendedTraverserVisitor.visit_del_stmt|  r  rm   r%   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z&ExtendedTraverserVisitor.visit_if_stmt  8    zz!}} 	Fa     rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rf  r  s     rj   rf  z)ExtendedTraverserVisitor.visit_break_stmt  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rb  r  s     rj   rb  z,ExtendedTraverserVisitor.visit_continue_stmt  r  rm   r:   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rd  r  s     rj   rd  z(ExtendedTraverserVisitor.visit_pass_stmt  r  rm   r<   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z)ExtendedTraverserVisitor.visit_raise_stmt  r  rm   rG   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z'ExtendedTraverserVisitor.visit_try_stmt  r  rm   rT   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z(ExtendedTraverserVisitor.visit_with_stmt  r  rm   r.   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z)ExtendedTraverserVisitor.visit_match_stmt  r  rm   r*   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rY  r  s     rj   rY  z'ExtendedTraverserVisitor.visit_int_expr  r  rm   rC   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rW  r  s     rj   rW  z'ExtendedTraverserVisitor.visit_str_expr  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r]  r  s     rj   r]  z)ExtendedTraverserVisitor.visit_bytes_expr  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r[  r  s     rj   r[  z)ExtendedTraverserVisitor.visit_float_expr  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r  r  s     rj   r  z+ExtendedTraverserVisitor.visit_complex_expr  8    zz!}} 	F""1%%%%%rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r_  r  s     rj   r_  z'ExtendedTraverserVisitor.visit_ellipsis  r  rm   rB   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r-  r  s     rj   r-  z(ExtendedTraverserVisitor.visit_star_expr  r  rm   r2   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rT  r  s     rj   rT  z(ExtendedTraverserVisitor.visit_name_expr  r  rm   r/   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z*ExtendedTraverserVisitor.visit_member_expr  r  rm   rV   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z.ExtendedTraverserVisitor.visit_yield_from_expr  r  rm   rU   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z)ExtendedTraverserVisitor.visit_yield_expr  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z(ExtendedTraverserVisitor.visit_call_expr  r  rm   r7   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z&ExtendedTraverserVisitor.visit_op_expr  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z.ExtendedTraverserVisitor.visit_comparison_expr  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z(ExtendedTraverserVisitor.visit_cast_expr  r  rm   rN   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z-ExtendedTraverserVisitor.visit_type_form_expr  8    zz!}} 	F$$Q'''''rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z/ExtendedTraverserVisitor.visit_assert_type_expr  8    zz!}} 	F&&q)))))rm   r>   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z*ExtendedTraverserVisitor.visit_reveal_expr   r  rm   rD   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r2  r  s     rj   r2  z)ExtendedTraverserVisitor.visit_super_expr  r  rm   r	   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z.ExtendedTraverserVisitor.visit_assignment_expr
  r  rm   rQ   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z)ExtendedTraverserVisitor.visit_unary_expr  r  rm   r-   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z(ExtendedTraverserVisitor.visit_list_expr  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r  r  s     rj   r  z(ExtendedTraverserVisitor.visit_dict_expr  r  rm   rE   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r
  r  s     rj   r
  z0ExtendedTraverserVisitor.visit_template_str_expr  8    zz!}} 	F''*****rm   rH   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r  r  s     rj   r  z)ExtendedTraverserVisitor.visit_tuple_expr#  r  rm   r@   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r  r  s     rj   r  z'ExtendedTraverserVisitor.visit_set_expr(  r  rm   r)   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r  r  s     rj   r  z)ExtendedTraverserVisitor.visit_index_expr-  r  rm   rL   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r)  r  s     rj   r)  z/ExtendedTraverserVisitor.visit_type_application2  r  rm   r+   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r+  r  s     rj   r+  z*ExtendedTraverserVisitor.visit_lambda_expr7  r  rm   r,   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z1ExtendedTraverserVisitor.visit_list_comprehension<  s8    zz!}} 	F((+++++rm   r?   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r#  r  s     rj   r#  z0ExtendedTraverserVisitor.visit_set_comprehensionA  r%  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r  r  s     rj   r  z7ExtendedTraverserVisitor.visit_dictionary_comprehensionF  r  rm   r#   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r  r  s     rj   r  z-ExtendedTraverserVisitor.visit_generator_exprK  r  rm   rA   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r   r  s     rj   r   z)ExtendedTraverserVisitor.visit_slice_exprP  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r'  r  s     rj   r'  z/ExtendedTraverserVisitor.visit_conditional_exprU  r  rm   rO   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rp  r  s     rj   rp  z,ExtendedTraverserVisitor.visit_type_var_exprZ  r  rm   r9   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rr  r  s     rj   rr  z-ExtendedTraverserVisitor.visit_paramspec_expr_  r  rm   rP   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rt  r  s     rj   rt  z2ExtendedTraverserVisitor.visit_type_var_tuple_exprd  r  rm   rJ   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rv  r  s     rj   rv  z.ExtendedTraverserVisitor.visit_type_alias_expri  r  rm   r1   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rz  r  s     rj   rz  z.ExtendedTraverserVisitor.visit_namedtuple_exprn  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r  r  s     rj   r  z-ExtendedTraverserVisitor.visit_enum_call_exprs  r  rm   rM   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r|  r  s     rj   r|  z-ExtendedTraverserVisitor.visit_typeddict_exprx  r  rm   r3   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r~  r  s     rj   r~  z+ExtendedTraverserVisitor.visit_newtype_expr}  r  rm   r   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r/  r  s     rj   r/  z)ExtendedTraverserVisitor.visit_await_expr  r  rm   rW   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r5  r  s     rj   r5  z)ExtendedTraverserVisitor.visit_as_pattern  r  rm   rZ   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r:  r  s     rj   r:  z)ExtendedTraverserVisitor.visit_or_pattern  r  rm   r^   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r=  r  s     rj   r=  z,ExtendedTraverserVisitor.visit_value_pattern  r  rm   r\   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r  r  s     rj   r  z0ExtendedTraverserVisitor.visit_singleton_pattern  r%  rm   r[   c               x    |                      |          sd S t                                          |           d S rf   )r  r  r?  r  s     rj   r?  z/ExtendedTraverserVisitor.visit_sequence_pattern  r  rm   r]   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rB  r  s     rj   rB  z.ExtendedTraverserVisitor.visit_starred_pattern  r  rm   rY   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rF  r  s     rj   rF  z.ExtendedTraverserVisitor.visit_mapping_pattern  r  rm   rX   c               x    |                      |          sd S t                                          |           d S rf   )r  r  rK  r  s     rj   rK  z,ExtendedTraverserVisitor.visit_class_pattern  r  rm   )rn   r4   rc   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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  )Vr  r  r  r  r  rs   rO  rR  rn  r   r   r   rl  rj  r   rx  rx   r   r   r   r   r   r   r   r   r   rf  rb  rd  r   r   r   r   rY  rW  r]  r[  r  r_  r-  rT  r   r   r   r   r   r   r   r   r   r   r2  r   r   r   r  r
  r  r  r  r)  r+  r   r#  r  r  r   r'  rp  rr  rt  rv  rz  r  r|  r~  r/  r5  r:  r=  r  r?  rB  rF  rK  __classcell__r  s   @rj   r  r    s	       	 	   # # # # # #           
% % % % % %
$ $ $ $ $ $" " " " " "
- - - - - -
# # # # # #
% % % % % %
' ' ' ' ' '
# # # # # #
$ $ $ $ $ $# # # # # #
) ) ) ) ) )
) ) ) ) ) )
2 2 2 2 2 2
$ $ $ $ $ $
" " " " " "
% % % % % %
% % % % % %
" " " " " "
! ! ! ! ! !
$ $ $ $ $ $
' ' ' ' ' '
# # # # # #
$ $ $ $ $ $
" " " " " "
# # # # # #
$ $ $ $ $ $" " " " " "
" " " " " "
$ $ $ $ $ $
$ $ $ $ $ $
& & & & & &
" " " " " "
# # # # # #
# # # # # #
% % % % % %
) ) ) ) ) )
$ $ $ $ $ $
# # # # # #
! ! ! ! ! !
) ) ) ) ) )
# # # # # #
( ( ( ( ( (
* * * * * *
% % % % % %
$ $ $ $ $ $
) ) ) ) ) )
$ $ $ $ $ $
# # # # # #
# # # # # #
+ + + + + +
$ $ $ $ $ $
" " " " " "
$ $ $ $ $ $
* * * * * *
% % % % % %
, , , , , ,
+ + + + + +
2 2 2 2 2 2
( ( ( ( ( (
$ $ $ $ $ $
* * * * * *
' ' ' ' ' '
( ( ( ( ( (
- - - - - -
) ) ) ) ) )
) ) ) ) ) )
( ( ( ( ( (
( ( ( ( ( (
& & & & & &
$ $ $ $ $ $$ $ $ $ $ $
$ $ $ $ $ $
' ' ' ' ' '
+ + + + + +
* * * * * *
) ) ) ) ) )
) ) ) ) ) )
' ' ' ' ' ' ' ' ' 'rm   r  c                      e Zd ZddZd	dZdS )
ReturnSeekerrc   rd   c                    d| _         d S NFfoundrh   s    rj   rk   zReturnSeeker.__init__      


rm   rn   r=   c                z    |j         *t          |j         t                    r|j         j        dk    rd S d| _        d S )Nrd   T)r   r  r2   r   rI  r   s     rj   r   zReturnSeeker.visit_return_stmt  s7    6>Z99>afkV>S>SF


rm   Nr  r  )r  r  r  rk   r   rg   rm   rj   rE  rE    s<                rm   rE  fdefr    rc   r  c                V    t                      }|                     |           |j        S )znFind if a function has a non-trivial return statement.

    Plain 'return' and 'return None' don't count.
    )rE  rq   rI  rL  seekers     rj   has_return_statementrP    s'    
 ^^FKK<rm   c                  8     e Zd Zd	 fdZd
 fdZd fdZ xZS )NameAndMemberCollectorrc   rd   c                d    t                                                       g | _        g | _        d S rf   )r  rk   
name_exprsmember_exprsri   r  s    rj   rk   zNameAndMemberCollector.__init__  s.    *,.0rm   rn   r2   c               ~    | j                             |           t                                          |           d S rf   )rT  appendr  rT  r  s     rj   rT  z&NameAndMemberCollector.visit_name_expr  s7    q!!!"""""rm   r/   c               ~    | j                             |           t                                          |           d S rf   )rU  rX  r  r   r  s     rj   r   z(NameAndMemberCollector.visit_member_expr  s8      ###!!!$$$$$rm   r  r  r  )r  r  r  rk   rT  r   rB  rC  s   @rj   rR  rR    sy        1 1 1 1 1 1
# # # # # #% % % % % % % % % %rm   rR  noder   'tuple[list[NameExpr], list[MemberExpr]]c                d    t                      }|                     |           |j        |j        fS rf   )rR  rq   rT  rU  rZ  r   s     rj   all_name_and_member_expressionsr^    s+      AKKNNNL!.))rm   c                      e Zd ZddZd	dZdS )
StringSeekerrc   rd   c                    d| _         d S rG  rH  rh   s    rj   rk   zStringSeeker.__init__  rJ  rm   rn   rC   c                   d| _         d S r  rH  r   s     rj   rW  zStringSeeker.visit_str_expr      


rm   Nr  r  )r  r  r  rk   rW  rg   rm   rj   r`  r`    s<                rm   r`  c                V    t                      }|                     |           |j        S rf   )r`  rq   rI  r]  s     rj   has_str_expressionre    s!    AKKNNN7Nrm   c                  (     e Zd ZddZd fdZ xZS )	FuncCollectorBaserc   rd   c                    d| _         d S rG  )inside_funcrh   s    rj   rk   zFuncCollectorBase.__init__  s     rm   defnr!   c                x    | j         s1d| _         t                                          |           d| _         d S d S NTF)ri  r  r   )ri   rj  r  s     rj   r   z FuncCollectorBase.visit_func_def  sF     	%#DGG""4((($D	% 	%rm   r  )rj  r!   rc   rd   )r  r  r  rk   r   rB  rC  s   @rj   rg  rg    sQ        ! ! ! !% % % % % % % % % %rm   rg  c                  (     e Zd Zd fdZddZ xZS )	YieldSeekerrc   rd   c                V    t                                                       d| _        d S rG  r  rk   rI  rV  s    rj   rk   zYieldSeeker.__init__  $    


rm   rn   rU   c                    d| _         d S r  rH  r   s     rj   r   zYieldSeeker.visit_yield_expr  rc  rm   r  r  )r  r  r  rk   r   rB  rC  s   @rj   rn  rn    Q                    rm   rn  c                V    t                      }|                     |           |j        S rf   )rn  rq   rI  rN  s     rj   has_yield_expressionru    %    ]]FKK<rm   c                  (     e Zd Zd fdZddZ xZS )	YieldFromSeekerrc   rd   c                V    t                                                       d| _        d S rG  rp  rV  s    rj   rk   zYieldFromSeeker.__init__  rq  rm   rn   rV   c                    d| _         d S r  rH  r   s     rj   r   z%YieldFromSeeker.visit_yield_from_expr  rc  rm   r  r  )r  r  r  rk   r   rB  rC  s   @rj   rx  rx    rs  rm   rx  c                V    t                      }|                     |           |j        S rf   )rx  rq   rI  rN  s     rj   has_yield_from_expressionr|    s'    FKK<rm   c                  (     e Zd Zd fdZddZ xZS )	AwaitSeekerrc   rd   c                V    t                                                       d| _        d S rG  rp  rV  s    rj   rk   zAwaitSeeker.__init__  rq  rm   rn   r   c                    d| _         d S r  rH  r   s     rj   r/  zAwaitSeeker.visit_await_expr  rc  rm   r  r  )r  r  r  rk   r/  rB  rC  s   @rj   r~  r~    rs  rm   r~  r   c                V    t                      }|                     |           |j        S rf   )r~  rq   rI  )r   rO  s     rj   has_await_expressionr    rv  rm   c                  (     e Zd Zd fdZddZ xZS )	ReturnCollectorrc   rd   c                V    t                                                       g | _        d S rf   )r  rk   return_statementsrV  s    rj   rk   zReturnCollector.__init__"  s'    35rm   stmtr=   c                :    | j                             |           d S rf   )r  rX  )ri   r  s     rj   r   z!ReturnCollector.visit_return_stmt&  s    %%d+++++rm   r  )r  r=   rc   rd   )r  r  r  rk   r   rB  rC  s   @rj   r  r  !  sQ        6 6 6 6 6 6, , , , , , , ,rm   r  r4   list[ReturnStmt]c                V    t                      }|                     |           |j        S rf   )r  rq   r  r]  s     rj   all_return_statementsr  *  s%    AKKNNNrm   c                  4     e Zd Zd
 fdZd fdZdd	Z xZS )YieldCollectorrc   rd   c                d    t                                                       d| _        g | _        d S rG  )r  rk   in_assignmentyield_expressionsrV  s    rj   rk   zYieldCollector.__init__1  s/    "?Arm   r  r
   c                f    d| _         t                                          |           d| _         d S rl  r  r  r   ri   r  r  s     rj   r   z$YieldCollector.visit_assignment_stmt6  1    !%%d+++"rm   r   rU   c                H    | j                             || j        f           d S rf   )r  rX  r  ri   r   s     rj   r   zYieldCollector.visit_yield_expr;  s'    %%tT-?&@AAAAArm   r  r  r
   rc   rd   )r   rU   rc   rd   )r  r  r  rk   r   r   rB  rC  s   @rj   r  r  0  s}        B B B B B B
# # # # # #
B B B B B B B Brm   r  list[tuple[YieldExpr, bool]]c                V    t                      }|                     |           |j        S rf   )r  rq   r  r]  s     rj   all_yield_expressionsr  ?  s%    AKKNNNrm   c                  4     e Zd Zd
 fdZd fdZdd	Z xZS )YieldFromCollectorrc   rd   c                d    t                                                       d| _        g | _        d S rG  )r  rk   r  yield_from_expressionsrV  s    rj   rk   zYieldFromCollector.__init__F  s/    "HJ###rm   r  r
   c                f    d| _         t                                          |           d| _         d S rl  r  r  s     rj   r   z(YieldFromCollector.visit_assignment_stmtK  r  rm   r   rV   c                H    | j                             || j        f           d S rf   )r  rX  r  r  s     rj   r   z(YieldFromCollector.visit_yield_from_exprP  s'    #**D$2D+EFFFFFrm   r  r  )r   rV   rc   rd   )r  r  r  rk   r   r   rB  rC  s   @rj   r  r  E  s}        K K K K K K
# # # # # #
G G G G G G G Grm   r  )rL  r    rc   r  )rZ  r   rc   r[  )rZ  r   rc   r  )r   r   rc   r  )rZ  r4   rc   r  )rZ  r4   rc   r  )wr  
__future__r   mypy_extensionsr   r   
mypy.nodesr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   mypy.patternsrW   rX   rY   rZ   r[   r\   r]   r^   mypy.visitorr_   rb   r  rE  rP  rR  r^  r`  re  rg  rn  ru  rx  r|  r~  r  r  r  r  r  r  rg   rm   rj   <module>r     s   $ $ " " " " " " - - - - - - - -R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R Rf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 % $ $ $ $ $ ...[ [ [ [ [{4( [ [ /. [|h' h' h' h' h'/ h' h' h'V    #      % % % % %- % % %* * * *    #      % % % % %( % % %    #          '          "      , , , , ,' , , ,   B B B B B& B B B   G G G G G* G G G G Grm   