o
    7šfïh  ã                   @  s„  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@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQ ddlRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZ ddl[m\Z\ eeddG d	d
„ d
e\d ƒƒƒZ]G dd„ de]ƒZ^G dd„ de]ƒZ_d7dd„Z`G dd„ de]ƒZaG dd„ deaƒZbd7dd„ZcG dd„ deaƒZdd7dd„ZeG d d!„ d!e]ƒZfd8d$d%„ZgG d&d'„ d'eaƒZhd9d+d,„ZiG d-d.„ d.eaƒZjd:d0d1„ZkG d2d3„ d3eaƒZld;d5d6„ZmdS )<zGeneric node traverser visitoré    )Úannotations)Ú
mypyc_attrÚtrait)KÚ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Ú	RaiseStmtÚ
ReturnStmtÚ
RevealExprÚSetComprehensionÚSetExprÚ	SliceExprÚStarExprÚStrExprÚ	SuperExprÚTryStmtÚ	TupleExprÚ	TypeAliasÚTypeAliasExprÚTypeApplicationÚTypedDictExprÚTypeVarExprÚTypeVarTupleExprÚ	UnaryExprÚ	WhileStmtÚWithStmtÚ	YieldExprÚYieldFromExpr)Ú	AsPatternÚClassPatternÚMappingPatternÚ	OrPatternÚSequencePatternÚSingletonPatternÚStarredPatternÚValuePattern)ÚNodeVisitorT)Úallow_interpreted_subclassesc                   @  sJ  e Zd ZdZd±dd„Zd²dd	„Zd³dd„Zd´dd„Zdµdd„Zd¶dd„Z	d·dd„Z
d¸dd„Zd¹dd„Zdºd!d"„Zd»d$d%„Zd¼d'd(„Zd½d*d+„Zd¾d-d.„Zd¿d0d1„ZdÀd3d4„ZdÁd6d7„ZdÂd9d:„ZdÃd<d=„ZdÄd?d@„ZdÅdBdC„ZdÆdEdF„ZdÇdHdI„ZdÈdKdL„ZdÉdNdO„ZdÊdQdR„ZdËdTdU„ZdÌdWdX„ZdÍdZd[„Z dÎd]d^„Z!dÏd`da„Z"dÐdcdd„Z#dÑdfdg„Z$dÒdidj„Z%dÓdldm„Z&dÔdodp„Z'dÕdrds„Z(dÖdudv„Z)d×dxdy„Z*dØd{d|„Z+dÙd~d„Z,dÚdd‚„Z-dÛd„d…„Z.dÜd‡dˆ„Z/dÝdŠd‹„Z0dÞddŽ„Z1dßdd‘„Z2dàd“d”„Z3dád–d—„Z4dâd™dš„Z5dãdœd„Z6dädŸd „Z7dåd¢d£„Z8dæd¥d¦„Z9dçd¨d©„Z:dèd«d¬„Z;déd®d¯„Z<d°S )êÚ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                 C  s   d S ©N© ©Úselfr^   r^   úG/home/ertert/spirit/venv/lib/python3.10/site-packages/mypy/traverser.pyÚ__init__l   s   zTraverserVisitor.__init__Úor/   c                 C  ó   |j D ]}| | ¡ qd S r]   )ÚdefsÚaccept)r`   rc   Údr^   r^   ra   Úvisit_mypy_fileq   ó   
ÿz TraverserVisitor.visit_mypy_fileÚblockr   c                 C  rd   r]   )Úbodyrf   )r`   rj   Úsr^   r^   ra   Úvisit_blocku   ri   zTraverserVisitor.visit_blockr!   c                 C  sV   |j d ur#|j D ]}|j}|d ur| | ¡ q|j D ]}|  |j¡ q|j | ¡ d S r]   )Ú	argumentsÚinitializerrf   Ú	visit_varÚvariablerk   )r`   rc   ÚargÚinitr^   r^   ra   Ú
visit_funcy   s   


€
zTraverserVisitor.visit_funcr    c                 C  ó   |   |¡ d S r]   ©rt   ©r`   rc   r^   r^   ra   Úvisit_func_def…   ó   zTraverserVisitor.visit_func_defr7   c                 C  s0   |j D ]}| | ¡ q|jr|j | ¡ d S d S r]   )Úitemsrf   Úimpl©r`   rc   Úitemr^   r^   ra   Úvisit_overloaded_func_defˆ   s
   
ÿz*TraverserVisitor.visit_overloaded_func_defr   c                 C  s~   |j D ]}| | ¡ q|jD ]}| | ¡ q|jr|j | ¡ |j ¡ D ]}| | ¡ q$|j | ¡ |jr=|j | ¡ d S d S r]   )Ú
decoratorsrf   Úbase_type_exprsÚ	metaclassÚkeywordsÚvaluesre   Úanalyzed)r`   rc   rg   ÚbaseÚvr^   r^   ra   Úvisit_class_defŽ   s   

ÿz TraverserVisitor.visit_class_defr   c                 C  s2   |j  | ¡ |j | ¡ |jD ]}| | ¡ qd S r]   )Úfuncrf   Úvarr   )r`   rc   Ú	decoratorr^   r^   ra   Úvisit_decorator›   s
   
ÿz TraverserVisitor.visit_decoratorr   c                 C  ó   |j  | ¡ d S r]   ©Úexprrf   rw   r^   r^   ra   Úvisit_expression_stmt¡   ó   z&TraverserVisitor.visit_expression_stmtr	   c                 C  s&   |j  | ¡ |jD ]}| | ¡ q	d S r]   )Úrvaluerf   Úlvalues)r`   rc   Úlr^   r^   ra   Úvisit_assignment_stmt¤   s   
ÿz&TraverserVisitor.visit_assignment_stmtr5   c                 C  ó   |j  | ¡ |j | ¡ d S r]   )r‘   rf   Úlvaluerw   r^   r^   ra   Úvisit_operator_assignment_stmt©   ó   z/TraverserVisitor.visit_operator_assignment_stmtrL   c                 C  ó2   |j  | ¡ |j | ¡ |jr|j | ¡ d S d S r]   ©rŽ   rf   rk   Ú	else_bodyrw   r^   r^   ra   Úvisit_while_stmt­   ó
   ÿz!TraverserVisitor.visit_while_stmtr   c                 C  s>   |j  | ¡ |j | ¡ |j | ¡ |jr|j | ¡ d S d S r]   )Úindexrf   rŽ   rk   r›   rw   r^   r^   ra   Úvisit_for_stmt³   s   ÿzTraverserVisitor.visit_for_stmtr;   c                 C  ó   |j d ur|j  | ¡ d S d S r]   r   rw   r^   r^   ra   Úvisit_return_stmtº   ó   
ÿz"TraverserVisitor.visit_return_stmtr   c                 C  ó4   |j d ur|j  | ¡ |jd ur|j | ¡ d S d S r]   )rŽ   rf   Úmsgrw   r^   r^   ra   Úvisit_assert_stmt¾   ó
   

ÿz"TraverserVisitor.visit_assert_stmtr   c                 C  r    r]   r   rw   r^   r^   ra   Úvisit_del_stmtÄ   r¢   zTraverserVisitor.visit_del_stmtr$   c                 C  sF   |j D ]}| | ¡ q|jD ]}| | ¡ q|jr!|j | ¡ d S d S r]   rš   )r`   rc   ÚeÚbr^   r^   ra   Úvisit_if_stmtÈ   s   

ÿzTraverserVisitor.visit_if_stmtr:   c                 C  r£   r]   )rŽ   rf   Ú	from_exprrw   r^   r^   ra   Úvisit_raise_stmtÐ   r¦   z!TraverserVisitor.visit_raise_stmtrC   c                 C  sž   |j  | ¡ tt|jƒƒD ]}|j| }|d ur| | ¡ |j|  | ¡ q|jD ]}|d ur4| | ¡ q)|jd ur@|j | ¡ |jd urM|j | ¡ d S d S r]   )	rk   rf   ÚrangeÚlenÚtypesÚhandlersÚvarsr›   Úfinally_body)r`   rc   ÚiÚtpr†   r^   r^   ra   Úvisit_try_stmtÖ   s   



€

ÿzTraverserVisitor.visit_try_stmtrM   c                 C  sP   t t|jƒƒD ]}|j|  | ¡ |j| }|d ur| | ¡ q|j | ¡ d S r]   )r­   r®   rŽ   rf   Útargetrk   )r`   rc   r³   Útargr^   r^   ra   Úvisit_with_stmtå   s   

€z TraverserVisitor.visit_with_stmtr-   c                 C  s`   |j  | ¡ tt|jƒƒD ] }|j|  | ¡ |j| }|d ur%| | ¡ |j|  | ¡ qd S r]   )Úsubjectrf   r­   r®   ÚpatternsÚguardsÚbodies)r`   rc   r³   Úguardr^   r^   ra   Úvisit_match_stmtí   s   

ûz!TraverserVisitor.visit_match_stmtr.   c                 C  rŒ   r]   r   rw   r^   r^   ra   Úvisit_member_exprö   r   z"TraverserVisitor.visit_member_exprrO   c                 C  rŒ   r]   r   rw   r^   r^   ra   Úvisit_yield_from_exprù   r   z&TraverserVisitor.visit_yield_from_exprrN   c                 C  s   |j r|j  | ¡ d S d S r]   r   rw   r^   r^   ra   Úvisit_yield_exprü   s   ÿz!TraverserVisitor.visit_yield_exprr   c                 C  s<   |j  | ¡ |jD ]}| | ¡ q	|jr|j | ¡ d S d S r]   )Úcalleerf   Úargsr„   ©r`   rc   Úar^   r^   ra   Úvisit_call_expr   s   
ÿz TraverserVisitor.visit_call_exprr6   c                 C  s6   |j  | ¡ |j | ¡ |jd ur|j | ¡ d S d S r]   )Úleftrf   Úrightr„   rw   r^   r^   ra   Úvisit_op_expr  s
   
ÿzTraverserVisitor.visit_op_exprr   c                 C  rd   r]   )Úoperandsrf   )r`   rc   Úoperandr^   r^   ra   Úvisit_comparison_expr  ri   z&TraverserVisitor.visit_comparison_exprr?   c                 C  sJ   |j d ur|j  | ¡ |jd ur|j | ¡ |jd ur#|j | ¡ d S d S r]   )Úbegin_indexrf   Ú	end_indexÚstriderw   r^   r^   ra   Úvisit_slice_expr  ó   


ÿz!TraverserVisitor.visit_slice_exprr   c                 C  rŒ   r]   r   rw   r^   r^   ra   Úvisit_cast_expr  r   z TraverserVisitor.visit_cast_exprr   c                 C  rŒ   r]   r   rw   r^   r^   ra   Úvisit_assert_type_expr  r   z'TraverserVisitor.visit_assert_type_exprr<   c                 C  s.   |j tkr|jd usJ ‚|j | ¡ d S 	 d S r]   )Úkindr   rŽ   rf   rw   r^   r^   ra   Úvisit_reveal_expr  s   
z"TraverserVisitor.visit_reveal_exprr   c                 C  r•   r]   )r¶   rf   Úvaluerw   r^   r^   ra   Úvisit_assignment_expr'  r˜   z&TraverserVisitor.visit_assignment_exprrK   c                 C  rŒ   r]   r   rw   r^   r^   ra   Úvisit_unary_expr+  r   z!TraverserVisitor.visit_unary_exprr,   c                 C  rd   r]   ©rz   rf   r|   r^   r^   ra   Úvisit_list_expr.  ri   z TraverserVisitor.visit_list_exprrD   c                 C  rd   r]   rÙ   r|   r^   r^   ra   Úvisit_tuple_expr2  ri   z!TraverserVisitor.visit_tuple_exprr   c                 C  s0   |j D ]\}}|d ur| | ¡ | | ¡ qd S r]   rÙ   )r`   rc   Úkr†   r^   r^   ra   Úvisit_dict_expr6  s
   
ýz TraverserVisitor.visit_dict_exprr>   c                 C  rd   r]   rÙ   r|   r^   r^   ra   Úvisit_set_expr<  ri   zTraverserVisitor.visit_set_exprr(   c                 C  r™   r]   )r…   rf   rž   r„   rw   r^   r^   ra   Úvisit_index_expr@  r   z!TraverserVisitor.visit_index_exprr"   c                 C  sV   t |j|j|jƒD ]\}}}| | ¡ | | ¡ |D ]}| | ¡ qq	|j | ¡ d S r]   )ÚzipÚindicesÚ	sequencesÚ	condlistsrf   Ú	left_expr©r`   rc   rž   ÚsequenceÚ
conditionsÚcondr^   r^   ra   Úvisit_generator_exprF  s   

ÿz%TraverserVisitor.visit_generator_exprr   c                 C  sb   t |j|j|jƒD ]\}}}| | ¡ | | ¡ |D ]}| | ¡ qq	|j | ¡ |j | ¡ d S r]   )rà   rá   râ   rã   rf   ÚkeyrÖ   rå   r^   r^   ra   Úvisit_dictionary_comprehensionN  s   

ÿz/TraverserVisitor.visit_dictionary_comprehensionr+   c                 C  rŒ   r]   ©Ú	generatorrf   rw   r^   r^   ra   Úvisit_list_comprehensionW  r   z)TraverserVisitor.visit_list_comprehensionr=   c                 C  rŒ   r]   rì   rw   r^   r^   ra   Úvisit_set_comprehensionZ  r   z(TraverserVisitor.visit_set_comprehensionr   c                 C  s(   |j  | ¡ |j | ¡ |j | ¡ d S r]   )rè   rf   Úif_exprÚ	else_exprrw   r^   r^   ra   Úvisit_conditional_expr]  s   z'TraverserVisitor.visit_conditional_exprrG   c                 C  rŒ   r]   r   rw   r^   r^   ra   Úvisit_type_applicationb  r   z'TraverserVisitor.visit_type_applicationr*   c                 C  ru   r]   rv   rw   r^   r^   ra   Úvisit_lambda_expre  ry   z"TraverserVisitor.visit_lambda_exprr@   c                 C  rŒ   r]   r   rw   r^   r^   ra   Úvisit_star_exprh  r   z TraverserVisitor.visit_star_exprr
   c                 C  rŒ   r]   r   rw   r^   r^   ra   Úvisit_await_exprk  r   z!TraverserVisitor.visit_await_exprrB   c                 C  rŒ   r]   )Úcallrf   rw   r^   r^   ra   Úvisit_super_exprn  r   z!TraverserVisitor.visit_super_exprrP   c                 C  r£   r]   )Úpatternrf   Únamerw   r^   r^   ra   Úvisit_as_patternq  r¦   z!TraverserVisitor.visit_as_patternrS   c                 C  rd   r]   ©rº   rf   ©r`   rc   Úpr^   r^   ra   Úvisit_or_patternw  ri   z!TraverserVisitor.visit_or_patternrW   c                 C  rŒ   r]   r   rw   r^   r^   ra   Úvisit_value_pattern{  r   z$TraverserVisitor.visit_value_patternrT   c                 C  rd   r]   rü   rý   r^   r^   ra   Úvisit_sequence_pattern~  ri   z'TraverserVisitor.visit_sequence_patternrV   c                 C  r    r]   )Úcapturerf   rw   r^   r^   ra   Úvisit_starred_pattern‚  r¢   z&TraverserVisitor.visit_starred_patternrR   c                 C  sJ   |j D ]}| | ¡ q|jD ]}| | ¡ q|jd ur#|j | ¡ d S d S r]   )Úkeysrf   rƒ   Úrest)r`   rc   rê   rÖ   r^   r^   ra   Úvisit_mapping_pattern†  rÑ   z&TraverserVisitor.visit_mapping_patternrQ   c                 C  s<   |j  | ¡ |jD ]}| | ¡ q	|jD ]}| | ¡ qd S r]   )Ú	class_refrf   ÚpositionalsÚkeyword_values)r`   rc   rþ   r†   r^   r^   ra   Úvisit_class_patternŽ  s   

ÿz$TraverserVisitor.visit_class_patternr%   c                 C  rd   r]   ©Úassignmentsrf   rÄ   r^   r^   ra   Úvisit_import•  ri   zTraverserVisitor.visit_importr'   c                 C  rd   r]   r  rÄ   r^   r^   ra   Úvisit_import_from™  ri   z"TraverserVisitor.visit_import_fromN©r[   r\   ©rc   r/   r[   r\   ©rj   r   r[   r\   )rc   r!   r[   r\   ©rc   r    r[   r\   ©rc   r7   r[   r\   ©rc   r   r[   r\   ©rc   r   r[   r\   ©rc   r   r[   r\   ©rc   r	   r[   r\   ©rc   r5   r[   r\   ©rc   rL   r[   r\   ©rc   r   r[   r\   ©rc   r;   r[   r\   ©rc   r   r[   r\   ©rc   r   r[   r\   ©rc   r$   r[   r\   ©rc   r:   r[   r\   ©rc   rC   r[   r\   ©rc   rM   r[   r\   ©rc   r-   r[   r\   ©rc   r.   r[   r\   ©rc   rO   r[   r\   ©rc   rN   r[   r\   ©rc   r   r[   r\   ©rc   r6   r[   r\   ©rc   r   r[   r\   ©rc   r?   r[   r\   ©rc   r   r[   r\   ©rc   r   r[   r\   ©rc   r<   r[   r\   ©rc   r   r[   r\   ©rc   rK   r[   r\   ©rc   r,   r[   r\   ©rc   rD   r[   r\   ©rc   r   r[   r\   ©rc   r>   r[   r\   ©rc   r(   r[   r\   ©rc   r"   r[   r\   ©rc   r   r[   r\   ©rc   r+   r[   r\   ©rc   r=   r[   r\   ©rc   r   r[   r\   ©rc   rG   r[   r\   ©rc   r*   r[   r\   ©rc   r@   r[   r\   ©rc   r
   r[   r\   ©rc   rB   r[   r\   ©rc   rP   r[   r\   ©rc   rS   r[   r\   ©rc   rW   r[   r\   ©rc   rT   r[   r\   ©rc   rV   r[   r\   ©rc   rR   r[   r\   ©rc   rQ   r[   r\   ©rc   r%   r[   r\   ©rc   r'   r[   r\   )=Ú__name__Ú
__module__Ú__qualname__Ú__doc__rb   rh   rm   rt   rx   r~   r‡   r‹   r   r”   r—   rœ   rŸ   r¡   r¥   r§   rª   r¬   rµ   r¸   r¾   r¿   rÀ   rÁ   rÆ   rÉ   rÌ   rÐ   rÒ   rÓ   rÕ   r×   rØ   rÚ   rÛ   rÝ   rÞ   rß   ré   rë   rî   rï   rò   ró   rô   rõ   rö   rø   rû   rÿ   r   r  r  r  r
  r  r  r^   r^   r^   ra   rZ   a   sv    





















	


















	














rZ   Nc                      sè  e Zd ZdZdôdd„Zdõ‡ fd
d„Zdö‡ fdd„Zd÷‡ fdd„Zdø‡ fdd„Zdù‡ fdd„Z	dú‡ fdd„Z
dû‡ fdd„Zdü‡ fdd „Zdý‡ fd"d#„Zdþ‡ fd%d&„Zdÿ‡ fd(d)„Zd ‡ fd,d-„Zd‡ fd/d0„Zd‡ fd2d3„Zd‡ fd5d6„Zd‡ fd8d9„Zd‡ fd;d<„Zd‡ fd>d?„Zd‡ fdAdB„Zd‡ fdDdE„Zd	‡ fdGdH„Zd
‡ fdJdK„Zd‡ fdMdN„Zd‡ fdPdQ„Zd‡ fdSdT„Zd‡ fdVdW„Zd‡ fdYdZ„Zd‡ fd\d]„Z d‡ fd_d`„Z!d‡ fdbdc„Z"d‡ fdedf„Z#d‡ fdhdi„Z$d‡ fdkdl„Z%d‡ fdndo„Z&d‡ fdqdr„Z'd‡ fdtdu„Z(d‡ fdwdx„Z)d‡ fdzd{„Z*d‡ fd}d~„Z+d‡ fd€d„Z,d‡ fdƒd„„Z-d‡ fd†d‡„Z.d‡ fd‰dŠ„Z/d ‡ fdŒd„Z0d!‡ fdd„Z1d"‡ fd’d“„Z2d#‡ fd•d–„Z3d$‡ fd˜d™„Z4d%‡ fd›dœ„Z5d&‡ fdždŸ„Z6d'‡ fd¡d¢„Z7d(‡ fd¤d¥„Z8d)‡ fd§d¨„Z9d*‡ fdªd«„Z:d+‡ fd­d®„Z;d,‡ fd°d±„Z<d-‡ fd³d´„Z=d.‡ fd¶d·„Z>d/‡ fd¹dº„Z?d0‡ fd¼d½„Z@d1‡ fd¿dÀ„ZAd2‡ fdÂdÃ„ZBd3‡ fdÅdÆ„ZCd4‡ fdÈdÉ„ZDd5‡ fdËdÌ„ZEd6‡ fdÎdÏ„ZFd7‡ fdÑdÒ„ZGd8‡ fdÔdÕ„ZHd9‡ fd×dØ„ZId:‡ fdÚdÛ„ZJd;‡ fdÝdÞ„ZKd<‡ fdàdá„ZLd=‡ fdãdä„ZMd>‡ fdædç„ZNd?‡ fdédê„ZOd@‡ fdìdí„ZPdA‡ fdïdð„ZQdB‡ fdòdó„ZR‡  ZSS (C  Ú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 to skip recursing into a node

    Note that this traverser still doesn't visit some internal
    mypy constructs like _promote expression and Var.
    rc   r3   r[   Úboolc                 C  s   dS ©NTr^   rw   r^   r^   ra   Úvisitª  s   zExtendedTraverserVisitor.visitr/   r\   c                   ó   |   |¡sd S tƒ  |¡ d S r]   )rN  Úsuperrh   rw   ©Ú	__class__r^   ra   rh   ®  ó   
z(ExtendedTraverserVisitor.visit_mypy_filer%   c                   rO  r]   )rN  rP  r  rw   rQ  r^   ra   r  µ  rS  z%ExtendedTraverserVisitor.visit_importr'   c                   rO  r]   )rN  rP  r  rw   rQ  r^   ra   r  º  rS  z*ExtendedTraverserVisitor.visit_import_fromr&   c                   rO  r]   )rN  rP  Úvisit_import_allrw   rQ  r^   ra   rT  ¿  rS  z)ExtendedTraverserVisitor.visit_import_allr    c                   rO  r]   )rN  rP  rx   rw   rQ  r^   ra   rx   Æ  rS  z'ExtendedTraverserVisitor.visit_func_defr7   c                   rO  r]   )rN  rP  r~   rw   rQ  r^   ra   r~   Ë  rS  z2ExtendedTraverserVisitor.visit_overloaded_func_defr   c                   rO  r]   )rN  rP  r‡   rw   rQ  r^   ra   r‡   Ð  rS  z(ExtendedTraverserVisitor.visit_class_defr#   c                   rO  r]   )rN  rP  Úvisit_global_declrw   rQ  r^   ra   rU  Õ  rS  z*ExtendedTraverserVisitor.visit_global_declr4   c                   rO  r]   )rN  rP  Úvisit_nonlocal_declrw   rQ  r^   ra   rV  Ú  rS  z,ExtendedTraverserVisitor.visit_nonlocal_declr   c                   rO  r]   )rN  rP  r‹   rw   rQ  r^   ra   r‹   ß  rS  z(ExtendedTraverserVisitor.visit_decoratorrE   c                   rO  r]   )rN  rP  Úvisit_type_aliasrw   rQ  r^   ra   rW  ä  rS  z)ExtendedTraverserVisitor.visit_type_aliasrj   r   c                   rO  r]   )rN  rP  rm   )r`   rj   rQ  r^   ra   rm   ë  rS  z$ExtendedTraverserVisitor.visit_blockr   c                   rO  r]   )rN  rP  r   rw   rQ  r^   ra   r   ð  rS  z.ExtendedTraverserVisitor.visit_expression_stmtr	   c                   rO  r]   )rN  rP  r”   rw   rQ  r^   ra   r”   õ  rS  z.ExtendedTraverserVisitor.visit_assignment_stmtr5   c                   rO  r]   )rN  rP  r—   rw   rQ  r^   ra   r—   ú  rS  z7ExtendedTraverserVisitor.visit_operator_assignment_stmtrL   c                   rO  r]   )rN  rP  rœ   rw   rQ  r^   ra   rœ   ÿ  rS  z)ExtendedTraverserVisitor.visit_while_stmtr   c                   rO  r]   )rN  rP  rŸ   rw   rQ  r^   ra   rŸ     rS  z'ExtendedTraverserVisitor.visit_for_stmtr;   c                   rO  r]   )rN  rP  r¡   rw   rQ  r^   ra   r¡   	  rS  z*ExtendedTraverserVisitor.visit_return_stmtr   c                   rO  r]   )rN  rP  r¥   rw   rQ  r^   ra   r¥     rS  z*ExtendedTraverserVisitor.visit_assert_stmtr   c                   rO  r]   )rN  rP  r§   rw   rQ  r^   ra   r§     rS  z'ExtendedTraverserVisitor.visit_del_stmtr$   c                   rO  r]   )rN  rP  rª   rw   rQ  r^   ra   rª     rS  z&ExtendedTraverserVisitor.visit_if_stmtr   c                   rO  r]   )rN  rP  Úvisit_break_stmtrw   rQ  r^   ra   rX    rS  z)ExtendedTraverserVisitor.visit_break_stmtr   c                   rO  r]   )rN  rP  Úvisit_continue_stmtrw   rQ  r^   ra   rY  "  rS  z,ExtendedTraverserVisitor.visit_continue_stmtr9   c                   rO  r]   )rN  rP  Úvisit_pass_stmtrw   rQ  r^   ra   rZ  '  rS  z(ExtendedTraverserVisitor.visit_pass_stmtr:   c                   rO  r]   )rN  rP  r¬   rw   rQ  r^   ra   r¬   ,  rS  z)ExtendedTraverserVisitor.visit_raise_stmtrC   c                   rO  r]   )rN  rP  rµ   rw   rQ  r^   ra   rµ   1  rS  z'ExtendedTraverserVisitor.visit_try_stmtrM   c                   rO  r]   )rN  rP  r¸   rw   rQ  r^   ra   r¸   6  rS  z(ExtendedTraverserVisitor.visit_with_stmtr-   c                   rO  r]   )rN  rP  r¾   rw   rQ  r^   ra   r¾   ;  rS  z)ExtendedTraverserVisitor.visit_match_stmtr)   c                   rO  r]   )rN  rP  Úvisit_int_exprrw   rQ  r^   ra   r[  B  rS  z'ExtendedTraverserVisitor.visit_int_exprrA   c                   rO  r]   )rN  rP  Úvisit_str_exprrw   rQ  r^   ra   r\  G  rS  z'ExtendedTraverserVisitor.visit_str_exprr   c                   rO  r]   )rN  rP  Úvisit_bytes_exprrw   rQ  r^   ra   r]  L  rS  z)ExtendedTraverserVisitor.visit_bytes_exprr   c                   rO  r]   )rN  rP  Úvisit_float_exprrw   rQ  r^   ra   r^  Q  rS  z)ExtendedTraverserVisitor.visit_float_exprr   c                   rO  r]   )rN  rP  Úvisit_complex_exprrw   rQ  r^   ra   r_  V  rS  z+ExtendedTraverserVisitor.visit_complex_exprr   c                   rO  r]   )rN  rP  Úvisit_ellipsisrw   rQ  r^   ra   r`  [  rS  z'ExtendedTraverserVisitor.visit_ellipsisr@   c                   rO  r]   )rN  rP  rõ   rw   rQ  r^   ra   rõ   `  rS  z(ExtendedTraverserVisitor.visit_star_exprr1   c                   rO  r]   )rN  rP  Úvisit_name_exprrw   rQ  r^   ra   ra  e  rS  z(ExtendedTraverserVisitor.visit_name_exprr.   c                   rO  r]   )rN  rP  r¿   rw   rQ  r^   ra   r¿   j  rS  z*ExtendedTraverserVisitor.visit_member_exprrO   c                   rO  r]   )rN  rP  rÀ   rw   rQ  r^   ra   rÀ   o  rS  z.ExtendedTraverserVisitor.visit_yield_from_exprrN   c                   rO  r]   )rN  rP  rÁ   rw   rQ  r^   ra   rÁ   t  rS  z)ExtendedTraverserVisitor.visit_yield_exprr   c                   rO  r]   )rN  rP  rÆ   rw   rQ  r^   ra   rÆ   y  rS  z(ExtendedTraverserVisitor.visit_call_exprr6   c                   rO  r]   )rN  rP  rÉ   rw   rQ  r^   ra   rÉ   ~  rS  z&ExtendedTraverserVisitor.visit_op_exprr   c                   rO  r]   )rN  rP  rÌ   rw   rQ  r^   ra   rÌ   ƒ  rS  z.ExtendedTraverserVisitor.visit_comparison_exprr   c                   rO  r]   )rN  rP  rÒ   rw   rQ  r^   ra   rÒ   ˆ  rS  z(ExtendedTraverserVisitor.visit_cast_exprr   c                   rO  r]   )rN  rP  rÓ   rw   rQ  r^   ra   rÓ     rS  z/ExtendedTraverserVisitor.visit_assert_type_exprr<   c                   rO  r]   )rN  rP  rÕ   rw   rQ  r^   ra   rÕ   ’  rS  z*ExtendedTraverserVisitor.visit_reveal_exprrB   c                   rO  r]   )rN  rP  rø   rw   rQ  r^   ra   rø   —  rS  z)ExtendedTraverserVisitor.visit_super_exprr   c                   rO  r]   )rN  rP  r×   rw   rQ  r^   ra   r×   œ  rS  z.ExtendedTraverserVisitor.visit_assignment_exprrK   c                   rO  r]   )rN  rP  rØ   rw   rQ  r^   ra   rØ   ¡  rS  z)ExtendedTraverserVisitor.visit_unary_exprr,   c                   rO  r]   )rN  rP  rÚ   rw   rQ  r^   ra   rÚ   ¦  rS  z(ExtendedTraverserVisitor.visit_list_exprr   c                   rO  r]   )rN  rP  rÝ   rw   rQ  r^   ra   rÝ   «  rS  z(ExtendedTraverserVisitor.visit_dict_exprrD   c                   rO  r]   )rN  rP  rÛ   rw   rQ  r^   ra   rÛ   °  rS  z)ExtendedTraverserVisitor.visit_tuple_exprr>   c                   rO  r]   )rN  rP  rÞ   rw   rQ  r^   ra   rÞ   µ  rS  z'ExtendedTraverserVisitor.visit_set_exprr(   c                   rO  r]   )rN  rP  rß   rw   rQ  r^   ra   rß   º  rS  z)ExtendedTraverserVisitor.visit_index_exprrG   c                   rO  r]   )rN  rP  ró   rw   rQ  r^   ra   ró   ¿  rS  z/ExtendedTraverserVisitor.visit_type_applicationr*   c                   rO  r]   )rN  rP  rô   rw   rQ  r^   ra   rô   Ä  rS  z*ExtendedTraverserVisitor.visit_lambda_exprr+   c                   rO  r]   )rN  rP  rî   rw   rQ  r^   ra   rî   É  rS  z1ExtendedTraverserVisitor.visit_list_comprehensionr=   c                   rO  r]   )rN  rP  rï   rw   rQ  r^   ra   rï   Î  rS  z0ExtendedTraverserVisitor.visit_set_comprehensionr   c                   rO  r]   )rN  rP  rë   rw   rQ  r^   ra   rë   Ó  rS  z7ExtendedTraverserVisitor.visit_dictionary_comprehensionr"   c                   rO  r]   )rN  rP  ré   rw   rQ  r^   ra   ré   Ø  rS  z-ExtendedTraverserVisitor.visit_generator_exprr?   c                   rO  r]   )rN  rP  rÐ   rw   rQ  r^   ra   rÐ   Ý  rS  z)ExtendedTraverserVisitor.visit_slice_exprr   c                   rO  r]   )rN  rP  rò   rw   rQ  r^   ra   rò   â  rS  z/ExtendedTraverserVisitor.visit_conditional_exprrI   c                   rO  r]   )rN  rP  Úvisit_type_var_exprrw   rQ  r^   ra   rb  ç  rS  z,ExtendedTraverserVisitor.visit_type_var_exprr8   c                   rO  r]   )rN  rP  Úvisit_paramspec_exprrw   rQ  r^   ra   rc  ì  rS  z-ExtendedTraverserVisitor.visit_paramspec_exprrJ   c                   rO  r]   )rN  rP  Úvisit_type_var_tuple_exprrw   rQ  r^   ra   rd  ñ  rS  z2ExtendedTraverserVisitor.visit_type_var_tuple_exprrF   c                   rO  r]   )rN  rP  Úvisit_type_alias_exprrw   rQ  r^   ra   re  ö  rS  z.ExtendedTraverserVisitor.visit_type_alias_exprr0   c                   rO  r]   )rN  rP  Úvisit_namedtuple_exprrw   rQ  r^   ra   rf  û  rS  z.ExtendedTraverserVisitor.visit_namedtuple_exprr   c                   rO  r]   )rN  rP  Úvisit_enum_call_exprrw   rQ  r^   ra   rg     rS  z-ExtendedTraverserVisitor.visit_enum_call_exprrH   c                   rO  r]   )rN  rP  Úvisit_typeddict_exprrw   rQ  r^   ra   rh    rS  z-ExtendedTraverserVisitor.visit_typeddict_exprr2   c                   rO  r]   )rN  rP  Úvisit_newtype_exprrw   rQ  r^   ra   ri  
  rS  z+ExtendedTraverserVisitor.visit_newtype_exprr
   c                   rO  r]   )rN  rP  rö   rw   rQ  r^   ra   rö     rS  z)ExtendedTraverserVisitor.visit_await_exprrP   c                   rO  r]   )rN  rP  rû   rw   rQ  r^   ra   rû     rS  z)ExtendedTraverserVisitor.visit_as_patternrS   c                   rO  r]   )rN  rP  rÿ   rw   rQ  r^   ra   rÿ     rS  z)ExtendedTraverserVisitor.visit_or_patternrW   c                   rO  r]   )rN  rP  r   rw   rQ  r^   ra   r      rS  z,ExtendedTraverserVisitor.visit_value_patternrU   c                   rO  r]   )rN  rP  Úvisit_singleton_patternrw   rQ  r^   ra   rj  %  rS  z0ExtendedTraverserVisitor.visit_singleton_patternrT   c                   rO  r]   )rN  rP  r  rw   rQ  r^   ra   r  *  rS  z/ExtendedTraverserVisitor.visit_sequence_patternrV   c                   rO  r]   )rN  rP  r  rw   rQ  r^   ra   r  /  rS  z.ExtendedTraverserVisitor.visit_starred_patternrR   c                   rO  r]   )rN  rP  r  rw   rQ  r^   ra   r  4  rS  z.ExtendedTraverserVisitor.visit_mapping_patternrQ   c                   rO  r]   )rN  rP  r
  rw   rQ  r^   ra   r
  9  rS  z,ExtendedTraverserVisitor.visit_class_pattern)rc   r3   r[   rL  r  rE  rF  )rc   r&   r[   r\   r  r  r  )rc   r#   r[   r\   )rc   r4   r[   r\   r  )rc   rE   r[   r\   r  r  r  r  r  r  r  r  r  r  )rc   r   r[   r\   )rc   r   r[   r\   )rc   r9   r[   r\   r  r   r!  r"  )rc   r)   r[   r\   )rc   rA   r[   r\   )rc   r   r[   r\   )rc   r   r[   r\   )rc   r   r[   r\   )rc   r   r[   r\   r;  )rc   r1   r[   r\   r#  r$  r%  r&  r'  r(  r*  r+  r,  r=  r-  r.  r/  r1  r0  r2  r3  r9  r:  r6  r7  r5  r4  r)  r8  )rc   rI   r[   r\   )rc   r8   r[   r\   )rc   rJ   r[   r\   )rc   rF   r[   r\   )rc   r0   r[   r\   )rc   r   r[   r\   )rc   rH   r[   r\   )rc   r2   r[   r\   r<  r>  r?  r@  )rc   rU   r[   r\   rA  rB  rC  rD  )TrG  rH  rI  rJ  rN  rh   r  r  rT  rx   r~   r‡   rU  rV  r‹   rW  rm   r   r”   r—   rœ   rŸ   r¡   r¥   r§   rª   rX  rY  rZ  r¬   rµ   r¸   r¾   r[  r\  r]  r^  r_  r`  rõ   ra  r¿   rÀ   rÁ   rÆ   rÉ   rÌ   rÒ   rÓ   rÕ   rø   r×   rØ   rÚ   rÝ   rÛ   rÞ   rß   ró   rô   rî   rï   rë   ré   rÐ   rò   rb  rc  rd  re  rf  rg  rh  ri  rö   rû   rÿ   r   rj  r  r  r  r
  Ú__classcell__r^   r^   rQ  ra   rK  ž  s¢    
rK  c                   @  s    e Zd Zd
dd„Zddd„Zd	S )ÚReturnSeekerr[   r\   c                 C  ó
   d| _ d S ©NF©Úfoundr_   r^   r^   ra   rb   @  ó   
zReturnSeeker.__init__rc   r;   c                 C  s0   |j d u st|j tƒr|j jdkrd S d| _d S )Nr\   T)rŽ   Ú
isinstancer1   rú   rp  rw   r^   r^   ra   r¡   C  s   "
zReturnSeeker.visit_return_stmtNr  r  )rG  rH  rI  rb   r¡   r^   r^   r^   ra   rl  ?  s    
rl  Úfdefr   r[   rL  c                 C  ó   t ƒ }|  |¡ |jS )znFind if a function has a non-trivial return statement.

    Plain 'return' and 'return None' don't count.
    )rl  rf   rp  ©rs  Úseekerr^   r^   ra   Úhas_return_statementI  s   
rw  c                      s(   e Zd Zd	dd„Zd
‡ fdd„Z‡  ZS )ÚFuncCollectorBaser[   r\   c                 C  rm  rn  )Úinside_funcr_   r^   r^   ra   rb   T  rq  zFuncCollectorBase.__init__Údefnr    c                   s&   | j sd| _ tƒ  |¡ d| _ d S d S ©NTF)ry  rP  rx   )r`   rz  rQ  r^   ra   rx   W  s
   
ýz FuncCollectorBase.visit_func_defr  )rz  r    r[   r\   )rG  rH  rI  rb   rx   rk  r^   r^   rQ  ra   rx  S  s    
rx  c                      ó(   e Zd Zd	‡ fdd„Zd
dd„Z‡  ZS )ÚYieldSeekerr[   r\   c                   ó   t ƒ  ¡  d| _d S rn  ©rP  rb   rp  r_   rQ  r^   ra   rb   _  ó   

zYieldSeeker.__init__rc   rN   c                 C  rm  rM  ro  rw   r^   r^   ra   rÁ   c  rq  zYieldSeeker.visit_yield_exprr  r%  )rG  rH  rI  rb   rÁ   rk  r^   r^   rQ  ra   r}  ^  ó    r}  c                 C  rt  r]   )r}  rf   rp  ru  r^   r^   ra   Úhas_yield_expressiong  ó   
r‚  c                      r|  )ÚYieldFromSeekerr[   r\   c                   r~  rn  r  r_   rQ  r^   ra   rb   n  r€  zYieldFromSeeker.__init__rc   rO   c                 C  rm  rM  ro  rw   r^   r^   ra   rÀ   r  rq  z%YieldFromSeeker.visit_yield_from_exprr  r$  )rG  rH  rI  rb   rÀ   rk  r^   r^   rQ  ra   r„  m  r  r„  c                 C  rt  r]   )r„  rf   rp  ru  r^   r^   ra   Úhas_yield_from_expressionv  rƒ  r…  c                      r|  )ÚAwaitSeekerr[   r\   c                   r~  rn  r  r_   rQ  r^   ra   rb   }  r€  zAwaitSeeker.__init__rc   r
   c                 C  rm  rM  ro  rw   r^   r^   ra   rö     rq  zAwaitSeeker.visit_await_exprr  r<  )rG  rH  rI  rb   rö   rk  r^   r^   rQ  ra   r†  |  r  r†  rŽ   r   c                 C  rt  r]   )r†  rf   rp  )rŽ   rv  r^   r^   ra   Úhas_await_expression…  rƒ  r‡  c                      r|  )ÚReturnCollectorr[   r\   c                   s   t ƒ  ¡  g | _d S r]   )rP  rb   Úreturn_statementsr_   rQ  r^   ra   rb   Œ  r€  zReturnCollector.__init__Ústmtr;   c                 C  s   | j  |¡ d S r]   )r‰  Úappend©r`   rŠ  r^   r^   ra   r¡     r   z!ReturnCollector.visit_return_stmtr  )rŠ  r;   r[   r\   )rG  rH  rI  rb   r¡   rk  r^   r^   rQ  ra   rˆ  ‹  r  rˆ  Únoder3   úlist[ReturnStmt]c                 C  rt  r]   )rˆ  rf   r‰  ©r  r†   r^   r^   ra   Úall_return_statements”  rƒ  r  c                      ó6   e Zd Zd‡ fdd„Zd‡ fdd„Zddd„Z‡  ZS )ÚYieldCollectorr[   r\   c                   ó   t ƒ  ¡  d| _g | _d S rn  )rP  rb   Úin_assignmentÚyield_expressionsr_   rQ  r^   ra   rb   ›  ó   

zYieldCollector.__init__rŠ  r	   c                   ó   d| _ tƒ  |¡ d| _ d S r{  ©r”  rP  r”   rŒ  rQ  r^   ra   r”      ó   
z$YieldCollector.visit_assignment_stmtrŽ   rN   c                 C  ó   | j  || jf¡ d S r]   )r•  r‹  r”  ©r`   rŽ   r^   r^   ra   rÁ   ¥  ó   zYieldCollector.visit_yield_exprr  ©rŠ  r	   r[   r\   )rŽ   rN   r[   r\   )rG  rH  rI  rb   r”   rÁ   rk  r^   r^   rQ  ra   r’  š  ó    r’  úlist[tuple[YieldExpr, bool]]c                 C  rt  r]   )r’  rf   r•  r  r^   r^   ra   Úall_yield_expressions©  rƒ  r   c                      r‘  )ÚYieldFromCollectorr[   r\   c                   r“  rn  )rP  rb   r”  Úyield_from_expressionsr_   rQ  r^   ra   rb   °  r–  zYieldFromCollector.__init__rŠ  r	   c                   r—  r{  r˜  rŒ  rQ  r^   ra   r”   µ  r™  z(YieldFromCollector.visit_assignment_stmtrŽ   rO   c                 C  rš  r]   )r¢  r‹  r”  r›  r^   r^   ra   rÀ   º  rœ  z(YieldFromCollector.visit_yield_from_exprr  r  )rŽ   rO   r[   r\   )rG  rH  rI  rb   r”   rÀ   rk  r^   r^   rQ  ra   r¡  ¯  rž  r¡  ú list[tuple[YieldFromExpr, bool]]c                 C  rt  r]   )r¡  rf   r¢  r  r^   r^   ra   Úall_yield_from_expressions¾  rƒ  r¤  )rs  r   r[   rL  )rŽ   r   r[   rL  )r  r3   r[   rŽ  )r  r3   r[   rŸ  )r  r3   r[   r£  )nrJ  Ú
__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.   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   Úmypy.patternsrP   rQ   rR   rS   rT   rU   rV   rW   Úmypy.visitorrX   rZ   rK  rl  rw  rx  r}  r‚  r„  r…  r†  r‡  rˆ  r  r’  r   r¡  r¤  r^   r^   r^   ra   Ú<module>   s>    þ6 (M
  =   $



	
	
	
	
