
    %^g                        d dl 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 d dlmZ d dlmZ d dlmZ  G d dee      Zy)	    )annotations)AssertTypeExprAssignmentStmtCastExprClassDefForStmtFuncItemNamedTupleExprNewTypeExprPromoteExprTypeAliasExprTypeApplicationTypedDictExprTypeVarExprVarWithStmt)TraverserVisitor)Type)TypeTraverserVisitorc                       e Zd ZdZddZd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#dZ xZS )$MixedTraverserVisitorz2Recursive traversal of both Node and Type objects.c                    d| _         y )NF)in_type_alias_expr)selfs    3lib/python3.12/site-packages/mypy/mixedtraverser.py__init__zMixedTraverserVisitor.__init__   s
    "'    c                :    | j                  |j                         y N)visit_optional_typetype)r   vars     r   	visit_varzMixedTraverserVisitor.visit_var!   s      *r   c                Z    t         |   |       | j                  |j                         y r   )super
visit_funcr    r!   r   o	__class__s     r   r&   z MixedTraverserVisitor.visit_func$   s"    1  (r   c                    t         |   |       |j                  }|r#|j                  D ]  }|j	                  |         y y r   )r%   visit_class_definfobasesaccept)r   r(   r,   baser)   s       r   r+   z%MixedTraverserVisitor.visit_class_def(   s=     	"vv

D! # r   c                    t         |   |       d| _        |j                  j                  j                  |        d| _        y )NTF)r%   visit_type_alias_exprr   nodetargetr.   r'   s     r   r1   z+MixedTraverserVisitor.visit_type_alias_expr1   s6    %a("&	T""'r   c                    t         |   |       |j                  j                  |        |j                  D ]  }|j                  |         y r   )r%   visit_type_var_exprupper_boundr.   values)r   r(   valuer)   s      r   r5   z)MixedTraverserVisitor.visit_type_var_expr7   s<    #A&	T"XXELL r   c                n    t         |   |       | j                  |j                  j                         y r   )r%   visit_typeddict_exprr    r,   typeddict_typer'   s     r   r:   z*MixedTraverserVisitor.visit_typeddict_expr=   s(    $Q'  !6!67r   c                    t         |   |       |j                  j                  sJ |j                  j                  j	                  |        y r   )r%   visit_namedtuple_exprr,   
tuple_typer.   r'   s     r   r=   z+MixedTraverserVisitor.visit_namedtuple_exprA   s;    %a(vv    	  &r   c                Z    t         |   |       |j                  j                  |        y r   )r%   visit__promote_exprr!   r.   r'   s     r   r@   z)MixedTraverserVisitor.visit__promote_exprF   s     #A&	dr   c                Z    t         |   |       | j                  |j                         y r   )r%   visit_newtype_exprr    old_typer'   s     r   rB   z(MixedTraverserVisitor.visit_newtype_exprJ   s"    "1%  ,r   c                Z    t         |   |       | j                  |j                         y r   )r%   visit_assignment_stmtr    r!   r'   s     r   rE   z+MixedTraverserVisitor.visit_assignment_stmtP   s"    %a(  (r   c                Z    t         |   |       | j                  |j                         y r   )r%   visit_for_stmtr    
index_typer'   s     r   rG   z$MixedTraverserVisitor.visit_for_stmtT   s"    q!  .r   c                h    t         |   |       |j                  D ]  }|j                  |         y r   )r%   visit_with_stmtanalyzed_typesr.   )r   r(   typr)   s      r   rJ   z%MixedTraverserVisitor.visit_with_stmtX   s,    "##CJJt $r   c                Z    t         |   |       |j                  j                  |        y r   )r%   visit_cast_exprr!   r.   r'   s     r   rN   z%MixedTraverserVisitor.visit_cast_expr_   s     "	dr   c                Z    t         |   |       |j                  j                  |        y r   )r%   visit_assert_type_exprr!   r.   r'   s     r   rP   z,MixedTraverserVisitor.visit_assert_type_exprc   s     &q)	dr   c                h    t         |   |       |j                  D ]  }|j                  |         y r   )r%   visit_type_applicationtypesr.   )r   r(   tr)   s      r   rR   z,MixedTraverserVisitor.visit_type_applicationg   s)    &q)AHHTN r   c                ,    |r|j                  |        y y r   )r.   )r   rT   s     r   r    z)MixedTraverserVisitor.visit_optional_typen   s    HHTN r   )returnNone)r"   r   rV   rW   )r(   r	   rV   rW   )r(   r   rV   rW   )r(   r   rV   rW   )r(   r   rV   rW   )r(   r   rV   rW   )r(   r
   rV   rW   )r(   r   rV   rW   )r(   r   rV   rW   )r(   r   rV   rW   )r(   r   rV   rW   )r(   r   rV   rW   )r(   r   rV   rW   )r(   r   rV   rW   )r(   r   rV   rW   )rT   zType | NonerV   rW   )__name__
__module____qualname____doc__r   r#   r&   r+   r1   r5   r:   r=   r@   rB   rE   rG   rJ   rN   rP   rR   r    __classcell__)r)   s   @r   r   r      s[    <(
+)"(8'
-)/r   r   N)
__future__r   
mypy.nodesr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   mypy.traverserr   
mypy.typesr   mypy.typetraverserr   r    r   r   <module>rc      s>    "    " ,  3W,.B Wr   