o
    ØÝ2g{i  ã                   @  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@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR ddlSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[ 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„ZaG dd„ de^ƒZbG dd„ debƒZcd7dd„ZdG dd„ debƒZed7dd„ZfG d d!„ d!e^ƒZgd8d$d%„ZhG d&d'„ d'ebƒZid9d+d,„ZjG d-d.„ d.ebƒZkd:d0d1„ZlG d2d3„ d3ebƒZmd;d5d6„ZndS )<zGeneric node traverser visitoré    )Úannotations)Ú
mypyc_attrÚtrait)LÚ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ÚTypeAliasStmtÚTypeApplicationÚTypedDictExprÚTypeVarExprÚTypeVarTupleExprÚ	UnaryExprÚ	WhileStmtÚWithStmtÚ	YieldExprÚYieldFromExpr)Ú	AsPatternÚClassPatternÚMappingPatternÚ	OrPatternÚSequencePatternÚSingletonPatternÚStarredPatternÚValuePattern)ÚNodeVisitorT)Úallow_interpreted_subclassesc                   @  sT  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í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_   úF/home/garg/my-data/venv/lib/python3.10/site-packages/mypy/traverser.pyÚ__init__m   s   zTraverserVisitor.__init__Úor/   c                 C  ó   |j D ]}| | ¡ qd S r^   )ÚdefsÚaccept)ra   rd   Údr_   r_   rb   Úvisit_mypy_filer   ó   
ÿz TraverserVisitor.visit_mypy_fileÚblockr   c                 C  re   r^   )Úbodyrg   )ra   rk   Úsr_   r_   rb   Úvisit_blockv   rj   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Úinitializerrg   Ú	visit_varÚvariablerl   )ra   rd   ÚargÚinitr_   r_   rb   Ú
visit_funcz   s   


€
zTraverserVisitor.visit_funcr    c                 C  ó   |   |¡ d S r^   ©ru   ©ra   rd   r_   r_   rb   Úvisit_func_def†   ó   zTraverserVisitor.visit_func_defr7   c                 C  s0   |j D ]}| | ¡ q|jr|j | ¡ d S d S r^   )Úitemsrg   Úimpl©ra   rd   Úitemr_   r_   rb   Ú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^   )Ú
decoratorsrg   Úbase_type_exprsÚ	metaclassÚkeywordsÚvaluesrf   Úanalyzed)ra   rd   rh   ÚbaseÚvr_   r_   rb   Úvisit_class_def   s   

ÿz TraverserVisitor.visit_class_defr   c                 C  s2   |j  | ¡ |j | ¡ |jD ]}| | ¡ qd S r^   )Úfuncrg   Úvarr€   )ra   rd   Ú	decoratorr_   r_   rb   Úvisit_decoratorœ   s
   
ÿz TraverserVisitor.visit_decoratorr   c                 C  ó   |j  | ¡ d S r^   ©Úexprrg   rx   r_   r_   rb   Úvisit_expression_stmt¢   ó   z&TraverserVisitor.visit_expression_stmtr	   c                 C  s&   |j  | ¡ |jD ]}| | ¡ q	d S r^   )Úrvaluerg   Úlvalues)ra   rd   Úlr_   r_   rb   Úvisit_assignment_stmt¥   s   
ÿz&TraverserVisitor.visit_assignment_stmtr5   c                 C  ó   |j  | ¡ |j | ¡ d S r^   )r’   rg   Úlvaluerx   r_   r_   rb   Úvisit_operator_assignment_stmtª   ó   z/TraverserVisitor.visit_operator_assignment_stmtrM   c                 C  ó2   |j  | ¡ |j | ¡ |jr|j | ¡ d S d S r^   ©r   rg   rl   Ú	else_bodyrx   r_   r_   rb   Úvisit_while_stmt®   ó
   ÿz!TraverserVisitor.visit_while_stmtr   c                 C  s>   |j  | ¡ |j | ¡ |j | ¡ |jr|j | ¡ d S d S r^   )Úindexrg   r   rl   rœ   rx   r_   r_   rb   Úvisit_for_stmt´   s   ÿzTraverserVisitor.visit_for_stmtr;   c                 C  ó   |j d ur|j  | ¡ d S d S r^   rŽ   rx   r_   r_   rb   Ú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   rg   Úmsgrx   r_   r_   rb   Úvisit_assert_stmt¿   ó
   

ÿz"TraverserVisitor.visit_assert_stmtr   c                 C  r¡   r^   rŽ   rx   r_   r_   rb   Ú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›   )ra   rd   ÚeÚbr_   r_   rb   Úvisit_if_stmtÉ   s   

ÿzTraverserVisitor.visit_if_stmtr:   c                 C  r¤   r^   )r   rg   Ú	from_exprrx   r_   r_   rb   Ú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^   )	rl   rg   ÚrangeÚlenÚtypesÚhandlersÚvarsrœ   Úfinally_body)ra   rd   ÚiÚtpr‡   r_   r_   rb   Úvisit_try_stmt×   s   



€

ÿzTraverserVisitor.visit_try_stmtrN   c                 C  sP   t t|jƒƒD ]}|j|  | ¡ |j| }|d ur| | ¡ q|j | ¡ d S r^   )r®   r¯   r   rg   Útargetrl   )ra   rd   r´   Útargr_   r_   rb   Ú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^   )Úsubjectrg   r®   r¯   ÚpatternsÚguardsÚbodies)ra   rd   r´   Úguardr_   r_   rb   Úvisit_match_stmtî   s   

ûz!TraverserVisitor.visit_match_stmtrG   c                 C  r–   r^   )Únamerg   Úvaluerx   r_   r_   rb   Úvisit_type_alias_stmt÷   r™   z&TraverserVisitor.visit_type_alias_stmtr.   c                 C  r   r^   rŽ   rx   r_   r_   rb   Úvisit_member_exprû   r‘   z"TraverserVisitor.visit_member_exprrP   c                 C  r   r^   rŽ   rx   r_   r_   rb   Úvisit_yield_from_exprþ   r‘   z&TraverserVisitor.visit_yield_from_exprrO   c                 C  s   |j r|j  | ¡ d S d S r^   rŽ   rx   r_   r_   rb   Úvisit_yield_expr  s   ÿz!TraverserVisitor.visit_yield_exprr   c                 C  s<   |j  | ¡ |jD ]}| | ¡ q	|jr|j | ¡ d S d S r^   )Úcalleerg   Úargsr…   ©ra   rd   Úar_   r_   rb   Úvisit_call_expr  s   
ÿz TraverserVisitor.visit_call_exprr6   c                 C  s6   |j  | ¡ |j | ¡ |jd ur|j | ¡ d S d S r^   )Úleftrg   Úrightr…   rx   r_   r_   rb   Úvisit_op_expr  s
   
ÿzTraverserVisitor.visit_op_exprr   c                 C  re   r^   )Úoperandsrg   )ra   rd   Úoperandr_   r_   rb   Úvisit_comparison_expr  rj   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_indexrg   Ú	end_indexÚstriderx   r_   r_   rb   Úvisit_slice_expr  ó   


ÿz!TraverserVisitor.visit_slice_exprr   c                 C  r   r^   rŽ   rx   r_   r_   rb   Úvisit_cast_expr  r‘   z TraverserVisitor.visit_cast_exprr   c                 C  r   r^   rŽ   rx   r_   r_   rb   Ú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   rg   rx   r_   r_   rb   Úvisit_reveal_expr$  s   
z"TraverserVisitor.visit_reveal_exprr   c                 C  r–   r^   )r·   rg   rÁ   rx   r_   r_   rb   Úvisit_assignment_expr,  r™   z&TraverserVisitor.visit_assignment_exprrL   c                 C  r   r^   rŽ   rx   r_   r_   rb   Úvisit_unary_expr0  r‘   z!TraverserVisitor.visit_unary_exprr,   c                 C  re   r^   ©r{   rg   r}   r_   r_   rb   Úvisit_list_expr3  rj   z TraverserVisitor.visit_list_exprrD   c                 C  re   r^   rÜ   r}   r_   r_   rb   Úvisit_tuple_expr7  rj   z!TraverserVisitor.visit_tuple_exprr   c                 C  s0   |j D ]\}}|d ur| | ¡ | | ¡ qd S r^   rÜ   )ra   rd   Úkr‡   r_   r_   rb   Úvisit_dict_expr;  s
   
ýz TraverserVisitor.visit_dict_exprr>   c                 C  re   r^   rÜ   r}   r_   r_   rb   Úvisit_set_exprA  rj   zTraverserVisitor.visit_set_exprr(   c                 C  rš   r^   )r†   rg   rŸ   r…   rx   r_   r_   rb   Úvisit_index_exprE  rž   z!TraverserVisitor.visit_index_exprr"   c                 C  sV   t |j|j|jƒD ]\}}}| | ¡ | | ¡ |D ]}| | ¡ qq	|j | ¡ d S r^   )ÚzipÚindicesÚ	sequencesÚ	condlistsrg   Ú	left_expr©ra   rd   rŸ   ÚsequenceÚ
conditionsÚcondr_   r_   rb   Úvisit_generator_exprK  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æ   rg   ÚkeyrÁ   rè   r_   r_   rb   Úvisit_dictionary_comprehensionS  s   

ÿz/TraverserVisitor.visit_dictionary_comprehensionr+   c                 C  r   r^   ©Ú	generatorrg   rx   r_   r_   rb   Úvisit_list_comprehension\  r‘   z)TraverserVisitor.visit_list_comprehensionr=   c                 C  r   r^   rï   rx   r_   r_   rb   Úvisit_set_comprehension_  r‘   z(TraverserVisitor.visit_set_comprehensionr   c                 C  s(   |j  | ¡ |j | ¡ |j | ¡ d S r^   )rë   rg   Úif_exprÚ	else_exprrx   r_   r_   rb   Úvisit_conditional_exprb  s   z'TraverserVisitor.visit_conditional_exprrH   c                 C  r   r^   rŽ   rx   r_   r_   rb   Úvisit_type_applicationg  r‘   z'TraverserVisitor.visit_type_applicationr*   c                 C  rv   r^   rw   rx   r_   r_   rb   Úvisit_lambda_exprj  rz   z"TraverserVisitor.visit_lambda_exprr@   c                 C  r   r^   rŽ   rx   r_   r_   rb   Úvisit_star_exprm  r‘   z TraverserVisitor.visit_star_exprr
   c                 C  r   r^   rŽ   rx   r_   r_   rb   Úvisit_await_exprp  r‘   z!TraverserVisitor.visit_await_exprrB   c                 C  r   r^   )Úcallrg   rx   r_   r_   rb   Úvisit_super_exprs  r‘   z!TraverserVisitor.visit_super_exprrQ   c                 C  r¤   r^   )Úpatternrg   rÀ   rx   r_   r_   rb   Úvisit_as_patternv  r§   z!TraverserVisitor.visit_as_patternrT   c                 C  re   r^   ©r»   rg   ©ra   rd   Úpr_   r_   rb   Úvisit_or_pattern|  rj   z!TraverserVisitor.visit_or_patternrX   c                 C  r   r^   rŽ   rx   r_   r_   rb   Úvisit_value_pattern€  r‘   z$TraverserVisitor.visit_value_patternrU   c                 C  re   r^   rþ   rÿ   r_   r_   rb   Úvisit_sequence_patternƒ  rj   z'TraverserVisitor.visit_sequence_patternrW   c                 C  r¡   r^   )Úcapturerg   rx   r_   r_   rb   Úvisit_starred_pattern‡  r£   z&TraverserVisitor.visit_starred_patternrS   c                 C  sJ   |j D ]}| | ¡ q|jD ]}| | ¡ q|jd ur#|j | ¡ d S d S r^   )Úkeysrg   r„   Úrest)ra   rd   rí   rÁ   r_   r_   rb   Úvisit_mapping_pattern‹  rÕ   z&TraverserVisitor.visit_mapping_patternrR   c                 C  s<   |j  | ¡ |jD ]}| | ¡ q	|jD ]}| | ¡ qd S r^   )Ú	class_refrg   ÚpositionalsÚkeyword_values)ra   rd   r   r‡   r_   r_   rb   Úvisit_class_pattern“  s   

ÿz$TraverserVisitor.visit_class_patternr%   c                 C  re   r^   ©Úassignmentsrg   rÈ   r_   r_   rb   Úvisit_importš  rj   zTraverserVisitor.visit_importr'   c                 C  re   r^   r  rÈ   r_   r_   rb   Úvisit_import_fromž  rj   z"TraverserVisitor.visit_import_fromN©r\   r]   ©rd   r/   r\   r]   ©rk   r   r\   r]   )rd   r!   r\   r]   ©rd   r    r\   r]   ©rd   r7   r\   r]   ©rd   r   r\   r]   ©rd   r   r\   r]   ©rd   r   r\   r]   ©rd   r	   r\   r]   ©rd   r5   r\   r]   ©rd   rM   r\   r]   ©rd   r   r\   r]   ©rd   r;   r\   r]   ©rd   r   r\   r]   ©rd   r   r\   r]   ©rd   r$   r\   r]   ©rd   r:   r\   r]   ©rd   rC   r\   r]   ©rd   rN   r\   r]   ©rd   r-   r\   r]   )rd   rG   r\   r]   ©rd   r.   r\   r]   ©rd   rP   r\   r]   ©rd   rO   r\   r]   ©rd   r   r\   r]   ©rd   r6   r\   r]   ©rd   r   r\   r]   ©rd   r?   r\   r]   ©rd   r   r\   r]   ©rd   r   r\   r]   ©rd   r<   r\   r]   ©rd   r   r\   r]   ©rd   rL   r\   r]   ©rd   r,   r\   r]   ©rd   rD   r\   r]   ©rd   r   r\   r]   ©rd   r>   r\   r]   ©rd   r(   r\   r]   ©rd   r"   r\   r]   ©rd   r   r\   r]   ©rd   r+   r\   r]   ©rd   r=   r\   r]   ©rd   r   r\   r]   ©rd   rH   r\   r]   ©rd   r*   r\   r]   ©rd   r@   r\   r]   ©rd   r
   r\   r]   ©rd   rB   r\   r]   ©rd   rQ   r\   r]   ©rd   rT   r\   r]   ©rd   rX   r\   r]   ©rd   rU   r\   r]   ©rd   rW   r\   r]   ©rd   rS   r\   r]   ©rd   rR   r\   r]   ©rd   r%   r\   r]   ©rd   r'   r\   r]   )>Ú__name__Ú
__module__Ú__qualname__Ú__doc__rc   ri   rn   ru   ry   r   rˆ   rŒ   r   r•   r˜   r   r    r¢   r¦   r¨   r«   r­   r¶   r¹   r¿   rÂ   rÃ   rÄ   rÅ   rÊ   rÍ   rÐ   rÔ   rÖ   r×   rÙ   rÚ   rÛ   rÝ   rÞ   rà   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   r[   b   sx    





















	



















	














r[   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.
    rd   r3   r\   Úboolc                 C  s   dS ©NTr_   rx   r_   r_   rb   Úvisit¯  s   zExtendedTraverserVisitor.visitr/   r]   c                   ó   |   |¡sd S tƒ  |¡ d S r^   )rP  Úsuperri   rx   ©Ú	__class__r_   rb   ri   ³  ó   
z(ExtendedTraverserVisitor.visit_mypy_filer%   c                   rQ  r^   )rP  rR  r  rx   rS  r_   rb   r  º  rU  z%ExtendedTraverserVisitor.visit_importr'   c                   rQ  r^   )rP  rR  r  rx   rS  r_   rb   r  ¿  rU  z*ExtendedTraverserVisitor.visit_import_fromr&   c                   rQ  r^   )rP  rR  Úvisit_import_allrx   rS  r_   rb   rV  Ä  rU  z)ExtendedTraverserVisitor.visit_import_allr    c                   rQ  r^   )rP  rR  ry   rx   rS  r_   rb   ry   Ë  rU  z'ExtendedTraverserVisitor.visit_func_defr7   c                   rQ  r^   )rP  rR  r   rx   rS  r_   rb   r   Ð  rU  z2ExtendedTraverserVisitor.visit_overloaded_func_defr   c                   rQ  r^   )rP  rR  rˆ   rx   rS  r_   rb   rˆ   Õ  rU  z(ExtendedTraverserVisitor.visit_class_defr#   c                   rQ  r^   )rP  rR  Úvisit_global_declrx   rS  r_   rb   rW  Ú  rU  z*ExtendedTraverserVisitor.visit_global_declr4   c                   rQ  r^   )rP  rR  Úvisit_nonlocal_declrx   rS  r_   rb   rX  ß  rU  z,ExtendedTraverserVisitor.visit_nonlocal_declr   c                   rQ  r^   )rP  rR  rŒ   rx   rS  r_   rb   rŒ   ä  rU  z(ExtendedTraverserVisitor.visit_decoratorrE   c                   rQ  r^   )rP  rR  Úvisit_type_aliasrx   rS  r_   rb   rY  é  rU  z)ExtendedTraverserVisitor.visit_type_aliasrk   r   c                   rQ  r^   )rP  rR  rn   )ra   rk   rS  r_   rb   rn   ð  rU  z$ExtendedTraverserVisitor.visit_blockr   c                   rQ  r^   )rP  rR  r   rx   rS  r_   rb   r   õ  rU  z.ExtendedTraverserVisitor.visit_expression_stmtr	   c                   rQ  r^   )rP  rR  r•   rx   rS  r_   rb   r•   ú  rU  z.ExtendedTraverserVisitor.visit_assignment_stmtr5   c                   rQ  r^   )rP  rR  r˜   rx   rS  r_   rb   r˜   ÿ  rU  z7ExtendedTraverserVisitor.visit_operator_assignment_stmtrM   c                   rQ  r^   )rP  rR  r   rx   rS  r_   rb   r     rU  z)ExtendedTraverserVisitor.visit_while_stmtr   c                   rQ  r^   )rP  rR  r    rx   rS  r_   rb   r    	  rU  z'ExtendedTraverserVisitor.visit_for_stmtr;   c                   rQ  r^   )rP  rR  r¢   rx   rS  r_   rb   r¢     rU  z*ExtendedTraverserVisitor.visit_return_stmtr   c                   rQ  r^   )rP  rR  r¦   rx   rS  r_   rb   r¦     rU  z*ExtendedTraverserVisitor.visit_assert_stmtr   c                   rQ  r^   )rP  rR  r¨   rx   rS  r_   rb   r¨     rU  z'ExtendedTraverserVisitor.visit_del_stmtr$   c                   rQ  r^   )rP  rR  r«   rx   rS  r_   rb   r«     rU  z&ExtendedTraverserVisitor.visit_if_stmtr   c                   rQ  r^   )rP  rR  Úvisit_break_stmtrx   rS  r_   rb   rZ  "  rU  z)ExtendedTraverserVisitor.visit_break_stmtr   c                   rQ  r^   )rP  rR  Úvisit_continue_stmtrx   rS  r_   rb   r[  '  rU  z,ExtendedTraverserVisitor.visit_continue_stmtr9   c                   rQ  r^   )rP  rR  Úvisit_pass_stmtrx   rS  r_   rb   r\  ,  rU  z(ExtendedTraverserVisitor.visit_pass_stmtr:   c                   rQ  r^   )rP  rR  r­   rx   rS  r_   rb   r­   1  rU  z)ExtendedTraverserVisitor.visit_raise_stmtrC   c                   rQ  r^   )rP  rR  r¶   rx   rS  r_   rb   r¶   6  rU  z'ExtendedTraverserVisitor.visit_try_stmtrN   c                   rQ  r^   )rP  rR  r¹   rx   rS  r_   rb   r¹   ;  rU  z(ExtendedTraverserVisitor.visit_with_stmtr-   c                   rQ  r^   )rP  rR  r¿   rx   rS  r_   rb   r¿   @  rU  z)ExtendedTraverserVisitor.visit_match_stmtr)   c                   rQ  r^   )rP  rR  Úvisit_int_exprrx   rS  r_   rb   r]  G  rU  z'ExtendedTraverserVisitor.visit_int_exprrA   c                   rQ  r^   )rP  rR  Úvisit_str_exprrx   rS  r_   rb   r^  L  rU  z'ExtendedTraverserVisitor.visit_str_exprr   c                   rQ  r^   )rP  rR  Úvisit_bytes_exprrx   rS  r_   rb   r_  Q  rU  z)ExtendedTraverserVisitor.visit_bytes_exprr   c                   rQ  r^   )rP  rR  Úvisit_float_exprrx   rS  r_   rb   r`  V  rU  z)ExtendedTraverserVisitor.visit_float_exprr   c                   rQ  r^   )rP  rR  Úvisit_complex_exprrx   rS  r_   rb   ra  [  rU  z+ExtendedTraverserVisitor.visit_complex_exprr   c                   rQ  r^   )rP  rR  Úvisit_ellipsisrx   rS  r_   rb   rb  `  rU  z'ExtendedTraverserVisitor.visit_ellipsisr@   c                   rQ  r^   )rP  rR  rø   rx   rS  r_   rb   rø   e  rU  z(ExtendedTraverserVisitor.visit_star_exprr1   c                   rQ  r^   )rP  rR  Úvisit_name_exprrx   rS  r_   rb   rc  j  rU  z(ExtendedTraverserVisitor.visit_name_exprr.   c                   rQ  r^   )rP  rR  rÃ   rx   rS  r_   rb   rÃ   o  rU  z*ExtendedTraverserVisitor.visit_member_exprrP   c                   rQ  r^   )rP  rR  rÄ   rx   rS  r_   rb   rÄ   t  rU  z.ExtendedTraverserVisitor.visit_yield_from_exprrO   c                   rQ  r^   )rP  rR  rÅ   rx   rS  r_   rb   rÅ   y  rU  z)ExtendedTraverserVisitor.visit_yield_exprr   c                   rQ  r^   )rP  rR  rÊ   rx   rS  r_   rb   rÊ   ~  rU  z(ExtendedTraverserVisitor.visit_call_exprr6   c                   rQ  r^   )rP  rR  rÍ   rx   rS  r_   rb   rÍ   ƒ  rU  z&ExtendedTraverserVisitor.visit_op_exprr   c                   rQ  r^   )rP  rR  rÐ   rx   rS  r_   rb   rÐ   ˆ  rU  z.ExtendedTraverserVisitor.visit_comparison_exprr   c                   rQ  r^   )rP  rR  rÖ   rx   rS  r_   rb   rÖ     rU  z(ExtendedTraverserVisitor.visit_cast_exprr   c                   rQ  r^   )rP  rR  r×   rx   rS  r_   rb   r×   ’  rU  z/ExtendedTraverserVisitor.visit_assert_type_exprr<   c                   rQ  r^   )rP  rR  rÙ   rx   rS  r_   rb   rÙ   —  rU  z*ExtendedTraverserVisitor.visit_reveal_exprrB   c                   rQ  r^   )rP  rR  rû   rx   rS  r_   rb   rû   œ  rU  z)ExtendedTraverserVisitor.visit_super_exprr   c                   rQ  r^   )rP  rR  rÚ   rx   rS  r_   rb   rÚ   ¡  rU  z.ExtendedTraverserVisitor.visit_assignment_exprrL   c                   rQ  r^   )rP  rR  rÛ   rx   rS  r_   rb   rÛ   ¦  rU  z)ExtendedTraverserVisitor.visit_unary_exprr,   c                   rQ  r^   )rP  rR  rÝ   rx   rS  r_   rb   rÝ   «  rU  z(ExtendedTraverserVisitor.visit_list_exprr   c                   rQ  r^   )rP  rR  rà   rx   rS  r_   rb   rà   °  rU  z(ExtendedTraverserVisitor.visit_dict_exprrD   c                   rQ  r^   )rP  rR  rÞ   rx   rS  r_   rb   rÞ   µ  rU  z)ExtendedTraverserVisitor.visit_tuple_exprr>   c                   rQ  r^   )rP  rR  rá   rx   rS  r_   rb   rá   º  rU  z'ExtendedTraverserVisitor.visit_set_exprr(   c                   rQ  r^   )rP  rR  râ   rx   rS  r_   rb   râ   ¿  rU  z)ExtendedTraverserVisitor.visit_index_exprrH   c                   rQ  r^   )rP  rR  rö   rx   rS  r_   rb   rö   Ä  rU  z/ExtendedTraverserVisitor.visit_type_applicationr*   c                   rQ  r^   )rP  rR  r÷   rx   rS  r_   rb   r÷   É  rU  z*ExtendedTraverserVisitor.visit_lambda_exprr+   c                   rQ  r^   )rP  rR  rñ   rx   rS  r_   rb   rñ   Î  rU  z1ExtendedTraverserVisitor.visit_list_comprehensionr=   c                   rQ  r^   )rP  rR  rò   rx   rS  r_   rb   rò   Ó  rU  z0ExtendedTraverserVisitor.visit_set_comprehensionr   c                   rQ  r^   )rP  rR  rî   rx   rS  r_   rb   rî   Ø  rU  z7ExtendedTraverserVisitor.visit_dictionary_comprehensionr"   c                   rQ  r^   )rP  rR  rì   rx   rS  r_   rb   rì   Ý  rU  z-ExtendedTraverserVisitor.visit_generator_exprr?   c                   rQ  r^   )rP  rR  rÔ   rx   rS  r_   rb   rÔ   â  rU  z)ExtendedTraverserVisitor.visit_slice_exprr   c                   rQ  r^   )rP  rR  rõ   rx   rS  r_   rb   rõ   ç  rU  z/ExtendedTraverserVisitor.visit_conditional_exprrJ   c                   rQ  r^   )rP  rR  Úvisit_type_var_exprrx   rS  r_   rb   rd  ì  rU  z,ExtendedTraverserVisitor.visit_type_var_exprr8   c                   rQ  r^   )rP  rR  Úvisit_paramspec_exprrx   rS  r_   rb   re  ñ  rU  z-ExtendedTraverserVisitor.visit_paramspec_exprrK   c                   rQ  r^   )rP  rR  Úvisit_type_var_tuple_exprrx   rS  r_   rb   rf  ö  rU  z2ExtendedTraverserVisitor.visit_type_var_tuple_exprrF   c                   rQ  r^   )rP  rR  Úvisit_type_alias_exprrx   rS  r_   rb   rg  û  rU  z.ExtendedTraverserVisitor.visit_type_alias_exprr0   c                   rQ  r^   )rP  rR  Úvisit_namedtuple_exprrx   rS  r_   rb   rh     rU  z.ExtendedTraverserVisitor.visit_namedtuple_exprr   c                   rQ  r^   )rP  rR  Úvisit_enum_call_exprrx   rS  r_   rb   ri    rU  z-ExtendedTraverserVisitor.visit_enum_call_exprrI   c                   rQ  r^   )rP  rR  Úvisit_typeddict_exprrx   rS  r_   rb   rj  
  rU  z-ExtendedTraverserVisitor.visit_typeddict_exprr2   c                   rQ  r^   )rP  rR  Úvisit_newtype_exprrx   rS  r_   rb   rk    rU  z+ExtendedTraverserVisitor.visit_newtype_exprr
   c                   rQ  r^   )rP  rR  rù   rx   rS  r_   rb   rù     rU  z)ExtendedTraverserVisitor.visit_await_exprrQ   c                   rQ  r^   )rP  rR  rý   rx   rS  r_   rb   rý     rU  z)ExtendedTraverserVisitor.visit_as_patternrT   c                   rQ  r^   )rP  rR  r  rx   rS  r_   rb   r     rU  z)ExtendedTraverserVisitor.visit_or_patternrX   c                   rQ  r^   )rP  rR  r  rx   rS  r_   rb   r  %  rU  z,ExtendedTraverserVisitor.visit_value_patternrV   c                   rQ  r^   )rP  rR  Úvisit_singleton_patternrx   rS  r_   rb   rl  *  rU  z0ExtendedTraverserVisitor.visit_singleton_patternrU   c                   rQ  r^   )rP  rR  r  rx   rS  r_   rb   r  /  rU  z/ExtendedTraverserVisitor.visit_sequence_patternrW   c                   rQ  r^   )rP  rR  r  rx   rS  r_   rb   r  4  rU  z.ExtendedTraverserVisitor.visit_starred_patternrS   c                   rQ  r^   )rP  rR  r  rx   rS  r_   rb   r  9  rU  z.ExtendedTraverserVisitor.visit_mapping_patternrR   c                   rQ  r^   )rP  rR  r  rx   rS  r_   rb   r  >  rU  z,ExtendedTraverserVisitor.visit_class_pattern)rd   r3   r\   rN  r  rG  rH  )rd   r&   r\   r]   r  r  r  )rd   r#   r\   r]   )rd   r4   r\   r]   r  )rd   rE   r\   r]   r  r  r  r  r  r  r  r  r  r   )rd   r   r\   r]   )rd   r   r\   r]   )rd   r9   r\   r]   r!  r"  r#  r$  )rd   r)   r\   r]   )rd   rA   r\   r]   )rd   r   r\   r]   )rd   r   r\   r]   )rd   r   r\   r]   )rd   r   r\   r]   r=  )rd   r1   r\   r]   r%  r&  r'  r(  r)  r*  r,  r-  r.  r?  r/  r0  r1  r3  r2  r4  r5  r;  r<  r8  r9  r7  r6  r+  r:  )rd   rJ   r\   r]   )rd   r8   r\   r]   )rd   rK   r\   r]   )rd   rF   r\   r]   )rd   r0   r\   r]   )rd   r   r\   r]   )rd   rI   r\   r]   )rd   r2   r\   r]   r>  r@  rA  rB  )rd   rV   r\   r]   rC  rD  rE  rF  )TrI  rJ  rK  rL  rP  ri   r  r  rV  ry   r   rˆ   rW  rX  rŒ   rY  rn   r   r•   r˜   r   r    r¢   r¦   r¨   r«   rZ  r[  r\  r­   r¶   r¹   r¿   r]  r^  r_  r`  ra  rb  rø   rc  rÃ   rÄ   rÅ   rÊ   rÍ   rÐ   rÖ   r×   rÙ   rû   rÚ   rÛ   rÝ   rà   rÞ   rá   râ   rö   r÷   rñ   rò   rî   rì   rÔ   rõ   rd  re  rf  rg  rh  ri  rj  rk  rù   rý   r  r  rl  r  r  r  r  Ú__classcell__r_   r_   rS  rb   rM  £  s¢    
rM  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_   rb   rc   E  ó   
zReturnSeeker.__init__rd   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À   rr  rx   r_   r_   rb   r¢   H  s   "
zReturnSeeker.visit_return_stmtNr  r  )rI  rJ  rK  rc   r¢   r_   r_   r_   rb   rn  D  s    
rn  Úfdefr   r\   rN  c                 C  ó   t ƒ }|  |¡ |jS )znFind if a function has a non-trivial return statement.

    Plain 'return' and 'return None' don't count.
    )rn  rg   rr  ©ru  Úseekerr_   r_   rb   Úhas_return_statementN  s   
ry  c                      s(   e Zd Zd	dd„Zd
‡ fdd„Z‡  ZS )ÚFuncCollectorBaser\   r]   c                 C  ro  rp  )Úinside_funcr`   r_   r_   rb   rc   Y  rs  zFuncCollectorBase.__init__Údefnr    c                   s&   | j sd| _ tƒ  |¡ d| _ d S d S ©NTF)r{  rR  ry   )ra   r|  rS  r_   rb   ry   \  s
   
ýz FuncCollectorBase.visit_func_defr  )r|  r    r\   r]   )rI  rJ  rK  rc   ry   rm  r_   r_   rS  rb   rz  X  s    
rz  c                      ó(   e Zd Zd	‡ fdd„Zd
dd„Z‡  ZS )ÚYieldSeekerr\   r]   c                   ó   t ƒ  ¡  d| _d S rp  ©rR  rc   rr  r`   rS  r_   rb   rc   d  ó   

zYieldSeeker.__init__rd   rO   c                 C  ro  rO  rq  rx   r_   r_   rb   rÅ   h  rs  zYieldSeeker.visit_yield_exprr  r'  )rI  rJ  rK  rc   rÅ   rm  r_   r_   rS  rb   r  c  ó    r  c                 C  rv  r^   )r  rg   rr  rw  r_   r_   rb   Úhas_yield_expressionl  ó   
r„  c                      r~  )ÚYieldFromSeekerr\   r]   c                   r€  rp  r  r`   rS  r_   rb   rc   s  r‚  zYieldFromSeeker.__init__rd   rP   c                 C  ro  rO  rq  rx   r_   r_   rb   rÄ   w  rs  z%YieldFromSeeker.visit_yield_from_exprr  r&  )rI  rJ  rK  rc   rÄ   rm  r_   r_   rS  rb   r†  r  rƒ  r†  c                 C  rv  r^   )r†  rg   rr  rw  r_   r_   rb   Úhas_yield_from_expression{  r…  r‡  c                      r~  )ÚAwaitSeekerr\   r]   c                   r€  rp  r  r`   rS  r_   rb   rc   ‚  r‚  zAwaitSeeker.__init__rd   r
   c                 C  ro  rO  rq  rx   r_   r_   rb   rù   †  rs  zAwaitSeeker.visit_await_exprr  r>  )rI  rJ  rK  rc   rù   rm  r_   r_   rS  rb   rˆ    rƒ  rˆ  r   r   c                 C  rv  r^   )rˆ  rg   rr  )r   rx  r_   r_   rb   Úhas_await_expressionŠ  r…  r‰  c                      r~  )ÚReturnCollectorr\   r]   c                   s   t ƒ  ¡  g | _d S r^   )rR  rc   Úreturn_statementsr`   rS  r_   rb   rc   ‘  r‚  zReturnCollector.__init__Ústmtr;   c                 C  s   | j  |¡ d S r^   )r‹  Úappend©ra   rŒ  r_   r_   rb   r¢   •  r‘   z!ReturnCollector.visit_return_stmtr  )rŒ  r;   r\   r]   )rI  rJ  rK  rc   r¢   rm  r_   r_   rS  rb   rŠ    rƒ  rŠ  Únoder3   úlist[ReturnStmt]c                 C  rv  r^   )rŠ  rg   r‹  ©r  r‡   r_   r_   rb   Ú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 rp  )rR  rc   Úin_assignmentÚyield_expressionsr`   rS  r_   rb   rc      ó   

zYieldCollector.__init__rŒ  r	   c                   ó   d| _ tƒ  |¡ d| _ d S r}  ©r–  rR  r•   rŽ  rS  r_   rb   r•   ¥  ó   
z$YieldCollector.visit_assignment_stmtr   rO   c                 C  ó   | j  || jf¡ d S r^   )r—  r  r–  ©ra   r   r_   r_   rb   rÅ   ª  ó   zYieldCollector.visit_yield_exprr  ©rŒ  r	   r\   r]   )r   rO   r\   r]   )rI  rJ  rK  rc   r•   rÅ   rm  r_   r_   rS  rb   r”  Ÿ  ó    r”  úlist[tuple[YieldExpr, bool]]c                 C  rv  r^   )r”  rg   r—  r‘  r_   r_   rb   Úall_yield_expressions®  r…  r¢  c                      r“  )ÚYieldFromCollectorr\   r]   c                   r•  rp  )rR  rc   r–  Úyield_from_expressionsr`   rS  r_   rb   rc   µ  r˜  zYieldFromCollector.__init__rŒ  r	   c                   r™  r}  rš  rŽ  rS  r_   rb   r•   º  r›  z(YieldFromCollector.visit_assignment_stmtr   rP   c                 C  rœ  r^   )r¤  r  r–  r  r_   r_   rb   rÄ   ¿  rž  z(YieldFromCollector.visit_yield_from_exprr  rŸ  )r   rP   r\   r]   )rI  rJ  rK  rc   r•   rÄ   rm  r_   r_   rS  rb   r£  ´  r   r£  ú list[tuple[YieldFromExpr, bool]]c                 C  rv  r^   )r£  rg   r¤  r‘  r_   r_   rb   Úall_yield_from_expressionsÃ  r…  r¦  )ru  r   r\   rN  )r   r   r\   rN  )r  r3   r\   r  )r  r3   r\   r¡  )r  r3   r\   r¥  )orL  Ú
__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   rP   Úmypy.patternsrQ   rR   rS   rT   rU   rV   rW   rX   Úmypy.visitorrY   r[   rM  rn  ry  rz  r  r„  r†  r‡  rˆ  r‰  rŠ  r’  r”  r¢  r£  r¦  r_   r_   r_   rb   Ú<module>   s>    þ: (N
  A   $

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