
    niw                    r   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@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZV ddlWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_ ddl`maZa e ed           G d	 d
ead                                           Zb G d deb          Zc G d deb          Zdd5dZe G d deb          Zfd6dZg G d deb          Zhd7dZi G d deb          Zj G d  d!ej          Zkd5d"Zl G d# d$ej          Zmd5d%Zn G d& d'eb          Zod8d)Zp G d* d+ej          Zqd9d.Zr G d/ d0ej          Zsd:d2Zt G d3 d4ej          ZudS );zGeneric node traverser visitor    )annotations)
mypyc_attrtrait)P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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ZQddZRddZSd dZTddZUddZVddZWddZXdS (  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.
    returnNonec                    d S N selfs    K/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/mypy/traverser.py__init__zTraverserVisitor.__init__q           or0   c               D    |j         D ]}|                    |            d S re   )defsaccept)rh   rm   ds      ri   visit_mypy_filez TraverserVisitor.visit_mypy_filev   s.     	 	AHHTNNNN	 	rl   blockr   c               D    |j         D ]}|                    |            d S re   )bodyrp   )rh   rs   ss      ri   visit_blockzTraverserVisitor.visit_blockz   s.     	 	AHHTNNNN	 	rl   r"   c                   |j         L|j         D ] }|j        }||                    |            !|j         D ]}|                     |j                   |j                            |            d S re   )	argumentsinitializerrp   	visit_varvariableru   )rh   rm   arginits       ri   
visit_funczTraverserVisitor.visit_func~   s}    ;"{ & &#KK%%%{ - -s|,,,,	drl   r!   c               0    |                      |           d S re   r   rh   rm   s     ri   visit_func_defzTraverserVisitor.visit_func_def       rl   r8   c                   |j         D ]}|                    |            |j        r|j                            |            d S d S re   )itemsrp   implrh   rm   items      ri   visit_overloaded_func_defz*TraverserVisitor.visit_overloaded_func_def   sV    G 	 	DKK6 	 FMM$	  	 rl   r   c                  |j         D ]}|                    |            |j        D ]}|                    |            |j        r|j                            |            |j                                        D ]}|                    |            |j                            |            |j        r|j                            |            d S d S re   )
decoratorsrp   base_type_exprs	metaclasskeywordsvaluesro   analyzed)rh   rm   rq   basevs        ri   visit_class_defz TraverserVisitor.visit_class_def   s     	 	AHHTNNNN% 	 	DKK; 	%Kt$$$""$$ 	 	AHHTNNNN	d: 	$Jd#####	$ 	$rl   r   c                   |j                             |            |j                            |            |j        D ]}|                    |            d S re   )funcrp   varr   )rh   rm   	decorators      ri   visit_decoratorz TraverserVisitor.visit_decorator   s\    	d	T 	# 	#IT""""	# 	#rl   r   c               :    |j                             |            d S re   exprrp   r   s     ri   visit_expression_stmtz&TraverserVisitor.visit_expression_stmt       	drl   r
   c               x    |j                             |            |j        D ]}|                    |            d S re   )rvaluerp   lvalues)rh   rm   ls      ri   visit_assignment_stmtz&TraverserVisitor.visit_assignment_stmt   sB    	 	 	AHHTNNNN	 	rl   r6   c               n    |j                             |            |j                            |            d S re   )r   rp   lvaluer   s     ri   visit_operator_assignment_stmtz/TraverserVisitor.visit_operator_assignment_stmt   s0    		rl   rR   c                   |j                             |            |j                            |            |j        r|j                            |            d S d S re   r   rp   ru   	else_bodyr   s     ri   visit_while_stmtz!TraverserVisitor.visit_while_stmt   sZ    	d	d; 	%Kt$$$$$	% 	%rl   r   c                   |j                             |            |j                            |            |j                            |            |j        r|j                            |            d S d S re   )indexrp   r   ru   r   r   s     ri   visit_for_stmtzTraverserVisitor.visit_for_stmt   sn    	t	d	d; 	%Kt$$$$$	% 	%rl   r=   c               L    |j         |j                             |            d S d S re   r   r   s     ri   visit_return_stmtz"TraverserVisitor.visit_return_stmt   ,    6FMM$ rl   r   c                   |j         |j                             |            |j        |j                            |            d S d S re   )r   rp   msgr   s     ri   visit_assert_stmtz"TraverserVisitor.visit_assert_stmt   sH    6FMM$5ELL rl   r   c               L    |j         |j                             |            d S d S re   r   r   s     ri   visit_del_stmtzTraverserVisitor.visit_del_stmt   r   rl   r%   c                   |j         D ]}|                    |            |j        D ]}|                    |            |j        r|j                            |            d S d S re   r   )rh   rm   ebs       ri   visit_if_stmtzTraverserVisitor.visit_if_stmt   sv     	 	AHHTNNNN 	 	AHHTNNNN; 	%Kt$$$$$	% 	%rl   r<   c                   |j         |j                             |            |j        |j                            |            d S d S re   )r   rp   	from_exprr   s     ri   visit_raise_stmtz!TraverserVisitor.visit_raise_stmt   sJ    6FMM$;"Kt$$$$$ #"rl   rF   c                  |j                             |            t          t          |j                            D ]F}|j        |         }||                    |            |j        |                             |            G|j        D ]}||                    |            |j        |j                            |            |j        |j                            |            d S d S re   )	ru   rp   rangelentypeshandlersvarsr   finally_body)rh   rm   itpr   s        ri   visit_try_stmtzTraverserVisitor.visit_try_stmt   s    	ds17||$$ 	' 	'AB~		$JqM  &&&& 	 	A};"Kt$$$>%N!!$''''' &%rl   rS   c               
   t          t          |j                            D ]F}|j        |                             |            |j        |         }||                    |            G|j                            |            d S re   )r   r   r   rp   targetru   )rh   rm   r   targs       ri   visit_with_stmtz TraverserVisitor.visit_with_stmt   sy    s16{{## 	" 	"AF1IT"""8A;DD!!!	drl   r.   c               J   |j                             |            t          t          |j                            D ]f}|j        |                             |            |j        |         }||                    |            |j        |                             |            gd S re   )subjectrp   r   r   patternsguardsbodies)rh   rm   r   guards       ri   visit_match_stmtz!TraverserVisitor.visit_match_stmt   s    		s1:'' 	% 	%AJqM  &&&HQKE T"""HQKt$$$$	% 	%rl   rJ   c               n    |j                             |            |j                            |            d S re   )namerp   valuer   s     ri   visit_type_alias_stmtz&TraverserVisitor.visit_type_alias_stmt   s0    	d	trl   r/   c               :    |j                             |            d S re   r   r   s     ri   visit_member_exprz"TraverserVisitor.visit_member_expr   r   rl   rU   c               :    |j                             |            d S re   r   r   s     ri   visit_yield_from_exprz&TraverserVisitor.visit_yield_from_expr  r   rl   rT   c               L    |j         r|j                             |            d S d S re   r   r   s     ri   visit_yield_exprz!TraverserVisitor.visit_yield_expr  s0    6 	 FMM$	  	 rl   r   c                   |j                             |            |j        D ]}|                    |            |j        r|j                            |            d S d S re   )calleerp   argsr   rh   rm   as      ri   visit_call_exprz TraverserVisitor.visit_call_expr	  sh    	 	 	AHHTNNNN: 	$Jd#####	$ 	$rl   r7   c                   |j                             |            |j                            |            |j        |j                            |            d S d S re   )leftrp   rightr   r   s     ri   visit_op_exprzTraverserVisitor.visit_op_expr  sV    	d	t:!Jd##### "!rl   r   c               D    |j         D ]}|                    |            d S re   )operandsrp   )rh   rm   operands      ri   visit_comparison_exprz&TraverserVisitor.visit_comparison_expr  s2    z 	! 	!GNN4    	! 	!rl   rA   c                   |j         |j                             |            |j        |j                            |            |j        |j                            |            d S d S re   )begin_indexrp   	end_indexstrider   s     ri   visit_slice_exprz!TraverserVisitor.visit_slice_expr  sh    =$M  &&&;"Kt$$$8HOOD!!!!!  rl   r   c               :    |j                             |            d S re   r   r   s     ri   visit_cast_exprz TraverserVisitor.visit_cast_expr"  r   rl   rM   c                   d S re   rf   r   s     ri   visit_type_form_exprz%TraverserVisitor.visit_type_form_expr%  rk   rl   r   c               :    |j                             |            d S re   r   r   s     ri   visit_assert_type_exprz'TraverserVisitor.visit_assert_type_expr(  r   rl   r>   c               p    |j         t          k    r%|j        J |j                            |            d S d S re   )kindr   r   rp   r   s     ri   visit_reveal_exprz"TraverserVisitor.visit_reveal_expr+  s>    6[  6%%%FMM$ Drl   r	   c               n    |j                             |            |j                            |            d S re   )r   rp   r   r   s     ri   visit_assignment_exprz&TraverserVisitor.visit_assignment_expr3  s0    		trl   rP   c               :    |j                             |            d S re   r   r   s     ri   visit_unary_exprz!TraverserVisitor.visit_unary_expr7  r   rl   r-   c               D    |j         D ]}|                    |            d S re   r   rp   r   s      ri   visit_list_exprz TraverserVisitor.visit_list_expr:  2    G 	 	DKK	 	rl   rG   c               D    |j         D ]}|                    |            d S re   r   r   s      ri   visit_tuple_exprz!TraverserVisitor.visit_tuple_expr>  r   rl   r   c               x    |j         D ]1\  }}||                    |            |                    |            2d S re   r   )rh   rm   kr   s       ri   visit_dict_exprz TraverserVisitor.visit_dict_exprB  sF    G 	 	DAq}HHTNNNN	 	rl   r@   c               D    |j         D ]}|                    |            d S re   r   r   s      ri   visit_set_exprzTraverserVisitor.visit_set_exprH  r   rl   r)   c                   |j                             |            |j                            |            |j        r|j                            |            d S d S re   )r   rp   r   r   r   s     ri   visit_index_exprz!TraverserVisitor.visit_index_exprL  sZ    	d	t: 	$Jd#####	$ 	$rl   r#   c                  t          |j        |j        |j                  D ]J\  }}}|                    |            |                    |            |D ]}|                    |            K|j                            |            d S re   )zipindices	sequences	condlistsrp   	left_exprrh   rm   r   sequence
conditionsconds         ri   visit_generator_exprz%TraverserVisitor.visit_generator_exprR  s    +.qy!+q{+S+S 	" 	"'E8ZOOD!!!LL" " "D!!!!"	4     rl   r   c               D   t          |j        |j        |j                  D ]J\  }}}|                    |            |                    |            |D ]}|                    |            K|j                            |            |j                            |            d S re   )r
  r  r  r  rp   keyr   r  s         ri   visit_dictionary_comprehensionz/TraverserVisitor.visit_dictionary_comprehensionZ  s    +.qy!+q{+S+S 	" 	"'E8ZOOD!!!LL" " "D!!!!"	T	trl   r,   c               :    |j                             |            d S re   	generatorrp   r   s     ri   visit_list_comprehensionz)TraverserVisitor.visit_list_comprehensionc      	4     rl   r?   c               :    |j                             |            d S re   r  r   s     ri   visit_set_comprehensionz(TraverserVisitor.visit_set_comprehensionf  r  rl   r   c                   |j                             |            |j                            |            |j                            |            d S re   )r  rp   if_expr	else_exprr   s     ri   visit_conditional_exprz'TraverserVisitor.visit_conditional_expri  sH    	d			4     rl   rK   c               :    |j                             |            d S re   r   r   s     ri   visit_type_applicationz'TraverserVisitor.visit_type_applicationn  r   rl   r+   c               0    |                      |           d S re   r   r   s     ri   visit_lambda_exprz"TraverserVisitor.visit_lambda_exprq  r   rl   rB   c               :    |j                             |            d S re   r   r   s     ri   visit_star_exprz TraverserVisitor.visit_star_exprt  r   rl   r   c               :    |j                             |            d S re   r   r   s     ri   visit_await_exprz!TraverserVisitor.visit_await_exprw  r   rl   rD   c               :    |j                             |            d S re   )callrp   r   s     ri   visit_super_exprz!TraverserVisitor.visit_super_exprz  r   rl   rV   c                   |j         |j                             |            |j        |j                            |            d S d S re   )patternrp   r   r   s     ri   visit_as_patternz!TraverserVisitor.visit_as_pattern}  sJ    9 IT"""6FMM$ rl   rY   c               D    |j         D ]}|                    |            d S re   r   rp   rh   rm   ps      ri   visit_or_patternz!TraverserVisitor.visit_or_pattern  .     	 	AHHTNNNN	 	rl   r]   c               :    |j                             |            d S re   r   r   s     ri   visit_value_patternz$TraverserVisitor.visit_value_pattern  r   rl   rZ   c               D    |j         D ]}|                    |            d S re   r1  r2  s      ri   visit_sequence_patternz'TraverserVisitor.visit_sequence_pattern  r5  rl   r\   c               L    |j         |j                             |            d S d S re   )capturerp   r   s     ri   visit_starred_patternz&TraverserVisitor.visit_starred_pattern  s.    9 IT""""" ! rl   rX   c                   |j         D ]}|                    |            |j        D ]}|                    |            |j        |j                            |            d S d S re   )keysrp   r   rest)rh   rm   r  r   s       ri   visit_mapping_patternz&TraverserVisitor.visit_mapping_pattern  sx    6 	 	CJJtX 	 	ELL6FMM$ rl   rW   c                   |j                             |            |j        D ]}|                    |            |j        D ]}|                    |            d S re   )	class_refrp   positionalskeyword_values)rh   rm   r3  r   s       ri   visit_class_patternz$TraverserVisitor.visit_class_pattern  sg    	4    	 	AHHTNNNN! 	 	AHHTNNNN	 	rl   r&   c               D    |j         D ]}|                    |            d S re   assignmentsrp   r   s      ri   visit_importzTraverserVisitor.visit_import  .     	 	AHHTNNNN	 	rl   r(   c               D    |j         D ]}|                    |            d S re   rG  r   s      ri   visit_import_fromz"TraverserVisitor.visit_import_from  rJ  rl   r2   c                   d S re   rf   r   s     ri   visit_name_exprz TraverserVisitor.visit_name_expr      trl   rC   c                   d S re   rf   r   s     ri   visit_str_exprzTraverserVisitor.visit_str_expr  rO  rl   r*   c                   d S re   rf   r   s     ri   visit_int_exprzTraverserVisitor.visit_int_expr  rO  rl   r   c                   d S re   rf   r   s     ri   visit_float_exprz!TraverserVisitor.visit_float_expr  rO  rl   r   c                   d S re   rf   r   s     ri   visit_bytes_exprz!TraverserVisitor.visit_bytes_expr  rO  rl   r   c                   d S re   rf   r   s     ri   visit_ellipsiszTraverserVisitor.visit_ellipsis  rO  rl   rQ   c                   d S re   rf   r   s     ri   r{   zTraverserVisitor.visit_var  rO  rl   r   c                   d S re   rf   r   s     ri   visit_continue_stmtz$TraverserVisitor.visit_continue_stmt  rO  rl   r:   c                   d S re   rf   r   s     ri   visit_pass_stmtz TraverserVisitor.visit_pass_stmt  rO  rl   r   c                   d S re   rf   r   s     ri   visit_break_stmtz!TraverserVisitor.visit_break_stmt  rO  rl   rE   c                   d S re   rf   r   s     ri   visit_temp_nodez TraverserVisitor.visit_temp_node  rO  rl   r5   c                   d S re   rf   r   s     ri   visit_nonlocal_declz$TraverserVisitor.visit_nonlocal_decl  rO  rl   r$   c                   d S re   rf   r   s     ri   visit_global_declz"TraverserVisitor.visit_global_decl  rO  rl   r'   c                   d S re   rf   r   s     ri   visit_import_allz!TraverserVisitor.visit_import_all  rO  rl   rN   c                   d S re   rf   r   s     ri   visit_type_var_exprz$TraverserVisitor.visit_type_var_expr  rO  rl   r9   c                   d S re   rf   r   s     ri   visit_paramspec_exprz%TraverserVisitor.visit_paramspec_expr  rO  rl   rO   c                   d S re   rf   r   s     ri   visit_type_var_tuple_exprz*TraverserVisitor.visit_type_var_tuple_expr  rO  rl   rI   c                   d S re   rf   r   s     ri   visit_type_alias_exprz&TraverserVisitor.visit_type_alias_expr  rO  rl   rH   c                   d S re   rf   r   s     ri   visit_type_aliasz!TraverserVisitor.visit_type_alias  rO  rl   r1   c                   d S re   rf   r   s     ri   visit_namedtuple_exprz&TraverserVisitor.visit_namedtuple_expr  rO  rl   rL   c                   d S re   rf   r   s     ri   visit_typeddict_exprz%TraverserVisitor.visit_typeddict_expr  rO  rl   r3   c                   d S re   rf   r   s     ri   visit_newtype_exprz#TraverserVisitor.visit_newtype_expr  rO  rl   r;   c                   d S re   rf   r   s     ri   visit__promote_exprz$TraverserVisitor.visit__promote_expr  rO  rl   r   c                   d S re   rf   r   s     ri   visit_complex_exprz#TraverserVisitor.visit_complex_expr  rO  rl   r   c                   d S re   rf   r   s     ri   visit_enum_call_exprz%TraverserVisitor.visit_enum_call_expr  rO  rl   r[   c                   d S re   rf   r   s     ri   visit_singleton_patternz(TraverserVisitor.visit_singleton_pattern  rO  rl   Nrb   rc   rm   r0   rb   rc   rs   r   rb   rc   )rm   r"   rb   rc   rm   r!   rb   rc   rm   r8   rb   rc   rm   r   rb   rc   rm   r   rb   rc   rm   r   rb   rc   rm   r
   rb   rc   rm   r6   rb   rc   rm   rR   rb   rc   rm   r   rb   rc   rm   r=   rb   rc   rm   r   rb   rc   rm   r   rb   rc   rm   r%   rb   rc   rm   r<   rb   rc   rm   rF   rb   rc   rm   rS   rb   rc   rm   r.   rb   rc   )rm   rJ   rb   rc   rm   r/   rb   rc   rm   rU   rb   rc   rm   rT   rb   rc   rm   r   rb   rc   rm   r7   rb   rc   rm   r   rb   rc   rm   rA   rb   rc   rm   r   rb   rc   rm   rM   rb   rc   rm   r   rb   rc   rm   r>   rb   rc   rm   r	   rb   rc   rm   rP   rb   rc   rm   r-   rb   rc   rm   rG   rb   rc   rm   r   rb   rc   rm   r@   rb   rc   rm   r)   rb   rc   rm   r#   rb   rc   rm   r   rb   rc   rm   r,   rb   rc   rm   r?   rb   rc   rm   r   rb   rc   rm   rK   rb   rc   rm   r+   rb   rc   rm   rB   rb   rc   rm   r   rb   rc   rm   rD   rb   rc   rm   rV   rb   rc   rm   rY   rb   rc   rm   r]   rb   rc   rm   rZ   rb   rc   rm   r\   rb   rc   rm   rX   rb   rc   rm   rW   rb   rc   rm   r&   rb   rc   rm   r(   rb   rc   rm   r2   rb   rc   rm   rC   rb   rc   rm   r*   rb   rc   rm   r   rb   rc   rm   r   rb   rc   rm   r   rb   rc   )rm   rQ   rb   rc   rm   r   rb   rc   rm   r:   rb   rc   rm   r   rb   rc   )rm   rE   rb   rc   rm   r5   rb   rc   rm   r$   rb   rc   rm   r'   rb   rc   rm   rN   rb   rc   rm   r9   rb   rc   rm   rO   rb   rc   rm   rI   rb   rc   rm   rH   rb   rc   rm   r1   rb   rc   rm   rL   rb   rc   rm   r3   rb   rc   )rm   r;   rb   rc   rm   r   rb   rc   rm   r   rb   rc   rm   r[   rb   rc   )Y__name__
__module____qualname____doc__rj   rr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r!  r#  r%  r'  r)  r,  r/  r4  r7  r9  r<  r@  rE  rI  rL  rN  rQ  rS  rU  rW  rY  r{   r\  r^  r`  rb  rd  rf  rh  rj  rl  rn  rp  rr  rt  rv  rx  rz  r|  r~  r  rf   rl   ri   ra   ra   f   s           
      
 
 
 
          $ $ $ $# # # #      
   % % % %% % % %                 % % % %% % % %( ( ( (   % % % %                $ $ $ $$ $ $ $! ! ! !" " " "                              $ $ $ $! ! ! !   ! ! ! !! ! ! !! ! ! !
                               # # # #                
                                                                                rl   ra   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ZS xZTS )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.
    rm   r4   rb   boolc                    dS NTrf   r   s     ri   visitzExtendedTraverserVisitor.visit  s    trl   r0   rc   c               x    |                      |          sd S t                                          |           d S re   )r  superrr   rh   rm   	__class__s     ri   rr   z(ExtendedTraverserVisitor.visit_mypy_file	  8    zz!}} 	F"""""rl   r&   c               x    |                      |          sd S t                                          |           d S re   )r  r  rI  r  s     ri   rI  z%ExtendedTraverserVisitor.visit_import  s8    zz!}} 	FQrl   r(   c               x    |                      |          sd S t                                          |           d S re   )r  r  rL  r  s     ri   rL  z*ExtendedTraverserVisitor.visit_import_from  8    zz!}} 	F!!!$$$$$rl   r'   c               x    |                      |          sd S t                                          |           d S re   )r  r  rh  r  s     ri   rh  z)ExtendedTraverserVisitor.visit_import_all  8    zz!}} 	F  #####rl   r!   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z'ExtendedTraverserVisitor.visit_func_def!  8    zz!}} 	Fq!!!!!rl   r8   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z2ExtendedTraverserVisitor.visit_overloaded_func_def&  8    zz!}} 	F))!,,,,,rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z(ExtendedTraverserVisitor.visit_class_def+  r  rl   r$   c               x    |                      |          sd S t                                          |           d S re   )r  r  rf  r  s     ri   rf  z*ExtendedTraverserVisitor.visit_global_decl0  r  rl   r5   c               x    |                      |          sd S t                                          |           d S re   )r  r  rd  r  s     ri   rd  z,ExtendedTraverserVisitor.visit_nonlocal_decl5  8    zz!}} 	F##A&&&&&rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z(ExtendedTraverserVisitor.visit_decorator:  r  rl   rH   c               x    |                      |          sd S t                                          |           d S re   )r  r  rr  r  s     ri   rr  z)ExtendedTraverserVisitor.visit_type_alias?  r  rl   rs   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  rw   )rh   rs   r  s     ri   rw   z$ExtendedTraverserVisitor.visit_blockF  s:    zz%   	FE"""""rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z.ExtendedTraverserVisitor.visit_expression_stmtK  8    zz!}} 	F%%a(((((rl   r
   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z.ExtendedTraverserVisitor.visit_assignment_stmtP  r  rl   r6   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z7ExtendedTraverserVisitor.visit_operator_assignment_stmtU  8    zz!}} 	F..q11111rl   rR   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z)ExtendedTraverserVisitor.visit_while_stmtZ  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z'ExtendedTraverserVisitor.visit_for_stmt_  r  rl   r=   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z*ExtendedTraverserVisitor.visit_return_stmtd  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z*ExtendedTraverserVisitor.visit_assert_stmti  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z'ExtendedTraverserVisitor.visit_del_stmtn  r  rl   r%   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z&ExtendedTraverserVisitor.visit_if_stmts  8    zz!}} 	Fa     rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r`  r  s     ri   r`  z)ExtendedTraverserVisitor.visit_break_stmtx  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r\  r  s     ri   r\  z,ExtendedTraverserVisitor.visit_continue_stmt}  r  rl   r:   c               x    |                      |          sd S t                                          |           d S re   )r  r  r^  r  s     ri   r^  z(ExtendedTraverserVisitor.visit_pass_stmt  r  rl   r<   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z)ExtendedTraverserVisitor.visit_raise_stmt  r  rl   rF   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z'ExtendedTraverserVisitor.visit_try_stmt  r  rl   rS   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z(ExtendedTraverserVisitor.visit_with_stmt  r  rl   r.   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z)ExtendedTraverserVisitor.visit_match_stmt  r  rl   r*   c               x    |                      |          sd S t                                          |           d S re   )r  r  rS  r  s     ri   rS  z'ExtendedTraverserVisitor.visit_int_expr  r  rl   rC   c               x    |                      |          sd S t                                          |           d S re   )r  r  rQ  r  s     ri   rQ  z'ExtendedTraverserVisitor.visit_str_expr  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  rW  r  s     ri   rW  z)ExtendedTraverserVisitor.visit_bytes_expr  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  rU  r  s     ri   rU  z)ExtendedTraverserVisitor.visit_float_expr  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r|  r  s     ri   r|  z+ExtendedTraverserVisitor.visit_complex_expr  8    zz!}} 	F""1%%%%%rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  rY  r  s     ri   rY  z'ExtendedTraverserVisitor.visit_ellipsis  r  rl   rB   c               x    |                      |          sd S t                                          |           d S re   )r  r  r'  r  s     ri   r'  z(ExtendedTraverserVisitor.visit_star_expr  r  rl   r2   c               x    |                      |          sd S t                                          |           d S re   )r  r  rN  r  s     ri   rN  z(ExtendedTraverserVisitor.visit_name_expr  r  rl   r/   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z*ExtendedTraverserVisitor.visit_member_expr  r  rl   rU   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z.ExtendedTraverserVisitor.visit_yield_from_expr  r  rl   rT   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z)ExtendedTraverserVisitor.visit_yield_expr  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z(ExtendedTraverserVisitor.visit_call_expr  r  rl   r7   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z&ExtendedTraverserVisitor.visit_op_expr  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z.ExtendedTraverserVisitor.visit_comparison_expr  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z(ExtendedTraverserVisitor.visit_cast_expr  r  rl   rM   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z-ExtendedTraverserVisitor.visit_type_form_expr  8    zz!}} 	F$$Q'''''rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z/ExtendedTraverserVisitor.visit_assert_type_expr  8    zz!}} 	F&&q)))))rl   r>   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z*ExtendedTraverserVisitor.visit_reveal_expr  r  rl   rD   c               x    |                      |          sd S t                                          |           d S re   )r  r  r,  r  s     ri   r,  z)ExtendedTraverserVisitor.visit_super_expr  r  rl   r	   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z.ExtendedTraverserVisitor.visit_assignment_expr  r  rl   rP   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z)ExtendedTraverserVisitor.visit_unary_expr  r  rl   r-   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z(ExtendedTraverserVisitor.visit_list_expr  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r  r  s     ri   r  z(ExtendedTraverserVisitor.visit_dict_expr  r  rl   rG   c               x    |                      |          sd S t                                          |           d S re   )r  r  r  r  s     ri   r  z)ExtendedTraverserVisitor.visit_tuple_expr  r  rl   r@   c               x    |                      |          sd S t                                          |           d S re   )r  r  r  r  s     ri   r  z'ExtendedTraverserVisitor.visit_set_expr  r  rl   r)   c               x    |                      |          sd S t                                          |           d S re   )r  r  r  r  s     ri   r  z)ExtendedTraverserVisitor.visit_index_expr  r  rl   rK   c               x    |                      |          sd S t                                          |           d S re   )r  r  r#  r  s     ri   r#  z/ExtendedTraverserVisitor.visit_type_application  r  rl   r+   c               x    |                      |          sd S t                                          |           d S re   )r  r  r%  r  s     ri   r%  z*ExtendedTraverserVisitor.visit_lambda_expr$  r  rl   r,   c               x    |                      |          sd S t                                          |           d S re   )r  r  r  r  s     ri   r  z1ExtendedTraverserVisitor.visit_list_comprehension)  s8    zz!}} 	F((+++++rl   r?   c               x    |                      |          sd S t                                          |           d S re   )r  r  r  r  s     ri   r  z0ExtendedTraverserVisitor.visit_set_comprehension.  8    zz!}} 	F''*****rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r  r  s     ri   r  z7ExtendedTraverserVisitor.visit_dictionary_comprehension3  r  rl   r#   c               x    |                      |          sd S t                                          |           d S re   )r  r  r  r  s     ri   r  z-ExtendedTraverserVisitor.visit_generator_expr8  r  rl   rA   c               x    |                      |          sd S t                                          |           d S re   )r  r  r   r  s     ri   r   z)ExtendedTraverserVisitor.visit_slice_expr=  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r!  r  s     ri   r!  z/ExtendedTraverserVisitor.visit_conditional_exprB  r  rl   rN   c               x    |                      |          sd S t                                          |           d S re   )r  r  rj  r  s     ri   rj  z,ExtendedTraverserVisitor.visit_type_var_exprG  r  rl   r9   c               x    |                      |          sd S t                                          |           d S re   )r  r  rl  r  s     ri   rl  z-ExtendedTraverserVisitor.visit_paramspec_exprL  r  rl   rO   c               x    |                      |          sd S t                                          |           d S re   )r  r  rn  r  s     ri   rn  z2ExtendedTraverserVisitor.visit_type_var_tuple_exprQ  r  rl   rI   c               x    |                      |          sd S t                                          |           d S re   )r  r  rp  r  s     ri   rp  z.ExtendedTraverserVisitor.visit_type_alias_exprV  r  rl   r1   c               x    |                      |          sd S t                                          |           d S re   )r  r  rt  r  s     ri   rt  z.ExtendedTraverserVisitor.visit_namedtuple_expr[  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r~  r  s     ri   r~  z-ExtendedTraverserVisitor.visit_enum_call_expr`  r  rl   rL   c               x    |                      |          sd S t                                          |           d S re   )r  r  rv  r  s     ri   rv  z-ExtendedTraverserVisitor.visit_typeddict_expre  r  rl   r3   c               x    |                      |          sd S t                                          |           d S re   )r  r  rx  r  s     ri   rx  z+ExtendedTraverserVisitor.visit_newtype_exprj  r  rl   r   c               x    |                      |          sd S t                                          |           d S re   )r  r  r)  r  s     ri   r)  z)ExtendedTraverserVisitor.visit_await_expro  r  rl   rV   c               x    |                      |          sd S t                                          |           d S re   )r  r  r/  r  s     ri   r/  z)ExtendedTraverserVisitor.visit_as_patternv  r  rl   rY   c               x    |                      |          sd S t                                          |           d S re   )r  r  r4  r  s     ri   r4  z)ExtendedTraverserVisitor.visit_or_pattern{  r  rl   r]   c               x    |                      |          sd S t                                          |           d S re   )r  r  r7  r  s     ri   r7  z,ExtendedTraverserVisitor.visit_value_pattern  r  rl   r[   c               x    |                      |          sd S t                                          |           d S re   )r  r  r  r  s     ri   r  z0ExtendedTraverserVisitor.visit_singleton_pattern  r$  rl   rZ   c               x    |                      |          sd S t                                          |           d S re   )r  r  r9  r  s     ri   r9  z/ExtendedTraverserVisitor.visit_sequence_pattern  r  rl   r\   c               x    |                      |          sd S t                                          |           d S re   )r  r  r<  r  s     ri   r<  z.ExtendedTraverserVisitor.visit_starred_pattern  r  rl   rX   c               x    |                      |          sd S t                                          |           d S re   )r  r  r@  r  s     ri   r@  z.ExtendedTraverserVisitor.visit_mapping_pattern  r  rl   rW   c               x    |                      |          sd S t                                          |           d S re   )r  r  rE  r  s     ri   rE  z,ExtendedTraverserVisitor.visit_class_pattern  r  rl   )rm   r4   rb   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )Ur  r  r  r  r  rr   rI  rL  rh  r   r   r   rf  rd  r   rr  rw   r   r   r   r   r   r   r   r   r   r`  r\  r^  r   r   r   r   rS  rQ  rW  rU  r|  rY  r'  rN  r   r   r   r   r   r   r   r   r   r   r,  r   r   r   r  r  r  r  r#  r%  r  r  r  r  r   r!  rj  rl  rn  rp  rt  r~  rv  rx  r)  r/  r4  r7  r  r9  r<  r@  rE  __classcell__r  s   @ri   r  r    s	       	 	   # # # # # #           
% % % % % %
$ $ $ $ $ $" " " " " "
- - - - - -
# # # # # #
% % % % % %
' ' ' ' ' '
# # # # # #
$ $ $ $ $ $# # # # # #
) ) ) ) ) )
) ) ) ) ) )
2 2 2 2 2 2
$ $ $ $ $ $
" " " " " "
% % % % % %
% % % % % %
" " " " " "
! ! ! ! ! !
$ $ $ $ $ $
' ' ' ' ' '
# # # # # #
$ $ $ $ $ $
" " " " " "
# # # # # #
$ $ $ $ $ $" " " " " "
" " " " " "
$ $ $ $ $ $
$ $ $ $ $ $
& & & & & &
" " " " " "
# # # # # #
# # # # # #
% % % % % %
) ) ) ) ) )
$ $ $ $ $ $
# # # # # #
! ! ! ! ! !
) ) ) ) ) )
# # # # # #
( ( ( ( ( (
* * * * * *
% % % % % %
$ $ $ $ $ $
) ) ) ) ) )
$ $ $ $ $ $
# # # # # #
# # # # # #
$ $ $ $ $ $
" " " " " "
$ $ $ $ $ $
* * * * * *
% % % % % %
, , , , , ,
+ + + + + +
2 2 2 2 2 2
( ( ( ( ( (
$ $ $ $ $ $
* * * * * *
' ' ' ' ' '
( ( ( ( ( (
- - - - - -
) ) ) ) ) )
) ) ) ) ) )
( ( ( ( ( (
( ( ( ( ( (
& & & & & &
$ $ $ $ $ $$ $ $ $ $ $
$ $ $ $ $ $
' ' ' ' ' '
+ + + + + +
* * * * * *
) ) ) ) ) )
) ) ) ) ) )
' ' ' ' ' ' ' ' ' 'rl   r  c                      e Zd ZddZd	dZdS )
ReturnSeekerrb   rc   c                    d| _         d S NFfoundrg   s    ri   rj   zReturnSeeker.__init__      


rl   rm   r=   c                z    |j         *t          |j         t                    r|j         j        dk    rd S d| _        d S )Nrc   T)r   
isinstancer2   r   rA  r   s     ri   r   zReturnSeeker.visit_return_stmt  s7    6>Z99>afkV>S>SF


rl   Nr  r  )r  r  r  rj   r   rf   rl   ri   r=  r=    s<                rl   r=  fdefr    rb   r  c                V    t                      }|                     |           |j        S )znFind if a function has a non-trivial return statement.

    Plain 'return' and 'return None' don't count.
    )r=  rp   rA  rE  seekers     ri   has_return_statementrI    s'    
 ^^FKK<rl   c                  8     e Zd Zd	 fdZd
 fdZd fdZ xZS )NameAndMemberCollectorrb   rc   c                d    t                                                       g | _        g | _        d S re   )r  rj   
name_exprsmember_exprsrh   r  s    ri   rj   zNameAndMemberCollector.__init__  s.    *,.0rl   rm   r2   c               ~    | j                             |           t                                          |           d S re   )rM  appendr  rN  r  s     ri   rN  z&NameAndMemberCollector.visit_name_expr  s7    q!!!"""""rl   r/   c               ~    | j                             |           t                                          |           d S re   )rN  rQ  r  r   r  s     ri   r   z(NameAndMemberCollector.visit_member_expr  s8      ###!!!$$$$$rl   r  r  r  )r  r  r  rj   rN  r   r:  r;  s   @ri   rK  rK    sy        1 1 1 1 1 1
# # # # # #% % % % % % % % % %rl   rK  noder   'tuple[list[NameExpr], list[MemberExpr]]c                d    t                      }|                     |           |j        |j        fS re   )rK  rp   rM  rN  rS  r   s     ri   all_name_and_member_expressionsrW    s+      AKKNNNL!.))rl   c                      e Zd ZddZd	dZdS )
StringSeekerrb   rc   c                    d| _         d S r?  r@  rg   s    ri   rj   zStringSeeker.__init__  rB  rl   rm   rC   c                   d| _         d S r  r@  r   s     ri   rQ  zStringSeeker.visit_str_expr      


rl   Nr  r  )r  r  r  rj   rQ  rf   rl   ri   rY  rY    s<                rl   rY  c                V    t                      }|                     |           |j        S re   )rY  rp   rA  rV  s     ri   has_str_expressionr^    s!    AKKNNN7Nrl   c                  (     e Zd ZddZd fdZ xZS )	FuncCollectorBaserb   rc   c                    d| _         d S r?  )inside_funcrg   s    ri   rj   zFuncCollectorBase.__init__  s     rl   defnr!   c                x    | j         s1d| _         t                                          |           d| _         d S d S NTF)rb  r  r   )rh   rc  r  s     ri   r   z FuncCollectorBase.visit_func_def  sF     	%#DGG""4((($D	% 	%rl   r  )rc  r!   rb   rc   )r  r  r  rj   r   r:  r;  s   @ri   r`  r`    sQ        ! ! ! !% % % % % % % % % %rl   r`  c                  (     e Zd Zd fdZddZ xZS )	YieldSeekerrb   rc   c                V    t                                                       d| _        d S r?  r  rj   rA  rO  s    ri   rj   zYieldSeeker.__init__  $    


rl   rm   rT   c                    d| _         d S r  r@  r   s     ri   r   zYieldSeeker.visit_yield_expr  r\  rl   r  r  )r  r  r  rj   r   r:  r;  s   @ri   rg  rg    Q                    rl   rg  c                V    t                      }|                     |           |j        S re   )rg  rp   rA  rG  s     ri   has_yield_expressionrn    %    ]]FKK<rl   c                  (     e Zd Zd fdZddZ xZS )	YieldFromSeekerrb   rc   c                V    t                                                       d| _        d S r?  ri  rO  s    ri   rj   zYieldFromSeeker.__init__  rj  rl   rm   rU   c                    d| _         d S r  r@  r   s     ri   r   z%YieldFromSeeker.visit_yield_from_expr  r\  rl   r  r  )r  r  r  rj   r   r:  r;  s   @ri   rq  rq    rl  rl   rq  c                V    t                      }|                     |           |j        S re   )rq  rp   rA  rG  s     ri   has_yield_from_expressionru    s'    FKK<rl   c                  (     e Zd Zd fdZddZ xZS )	AwaitSeekerrb   rc   c                V    t                                                       d| _        d S r?  ri  rO  s    ri   rj   zAwaitSeeker.__init__   rj  rl   rm   r   c                    d| _         d S r  r@  r   s     ri   r)  zAwaitSeeker.visit_await_expr  r\  rl   r  r  )r  r  r  rj   r)  r:  r;  s   @ri   rw  rw    rl  rl   rw  r   c                V    t                      }|                     |           |j        S re   )rw  rp   rA  )r   rH  s     ri   has_await_expressionr{    ro  rl   c                  (     e Zd Zd fdZddZ xZS )	ReturnCollectorrb   rc   c                V    t                                                       g | _        d S re   )r  rj   return_statementsrO  s    ri   rj   zReturnCollector.__init__  s'    35rl   stmtr=   c                :    | j                             |           d S re   )r  rQ  )rh   r  s     ri   r   z!ReturnCollector.visit_return_stmt  s    %%d+++++rl   r  )r  r=   rb   rc   )r  r  r  rj   r   r:  r;  s   @ri   r}  r}    sQ        6 6 6 6 6 6, , , , , , , ,rl   r}  r4   list[ReturnStmt]c                V    t                      }|                     |           |j        S re   )r}  rp   r  rV  s     ri   all_return_statementsr    s%    AKKNNNrl   c                  4     e Zd Zd
 fdZd fdZdd	Z xZS )YieldCollectorrb   rc   c                d    t                                                       d| _        g | _        d S r?  )r  rj   in_assignmentyield_expressionsrO  s    ri   rj   zYieldCollector.__init__  s/    "?Arl   r  r
   c                f    d| _         t                                          |           d| _         d S re  r  r  r   rh   r  r  s     ri   r   z$YieldCollector.visit_assignment_stmt#  1    !%%d+++"rl   r   rT   c                H    | j                             || j        f           d S re   )r  rQ  r  rh   r   s     ri   r   zYieldCollector.visit_yield_expr(  s'    %%tT-?&@AAAAArl   r  r  r
   rb   rc   )r   rT   rb   rc   )r  r  r  rj   r   r   r:  r;  s   @ri   r  r    s}        B B B B B B
# # # # # #
B B B B B B B Brl   r  list[tuple[YieldExpr, bool]]c                V    t                      }|                     |           |j        S re   )r  rp   r  rV  s     ri   all_yield_expressionsr  ,  s%    AKKNNNrl   c                  4     e Zd Zd
 fdZd fdZdd	Z xZS )YieldFromCollectorrb   rc   c                d    t                                                       d| _        g | _        d S r?  )r  rj   r  yield_from_expressionsrO  s    ri   rj   zYieldFromCollector.__init__3  s/    "HJ###rl   r  r
   c                f    d| _         t                                          |           d| _         d S re  r  r  s     ri   r   z(YieldFromCollector.visit_assignment_stmt8  r  rl   r   rU   c                H    | j                             || j        f           d S re   )r  rQ  r  r  s     ri   r   z(YieldFromCollector.visit_yield_from_expr=  s'    #**D$2D+EFFFFFrl   r  r  )r   rU   rb   rc   )r  r  r  rj   r   r   r:  r;  s   @ri   r  r  2  s}        K K K K K K
# # # # # #
G G G G G G G Grl   r  )rE  r    rb   r  )rS  r   rb   rT  )rS  r   rb   r  )r   r   rb   r  )rS  r4   rb   r  )rS  r4   rb   r  )vr  
__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   mypy.patternsrV   rW   rX   rY   rZ   r[   r\   r]   mypy.visitorr^   ra   r  r=  rI  rK  rW  rY  r^  r`  rg  rn  rq  ru  rw  r{  r}  r  r  r  r  rf   rl   ri   <module>r     s   $ $ " " " " " " - - - - - - - -Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 % $ $ $ $ $ ...N N N N N{4( N N /. Nbc' c' c' c' c'/ c' c' c'L    #      % % % % %- % % %* * * *    #      % % % % %( % % %    #          '          "      , , , , ,' , , ,   B B B B B& B B B   G G G G G* G G G G Grl   