B
    '(äbë  ã               @   sŒ   d Z ddlmZ ddl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„ deƒZeed	œd
d„ZG dd„ deƒZdS )zÕVisitor classes pulled out from different tests

These are here because we don't currently support having interpreted
classes subtype compiled ones but pytest grabs the python file
even if the test was compiled.

é    )ÚSet)ÚNameExprÚTypeVarExprÚCallExprÚ
ExpressionÚMypyFileÚAssignmentStmtÚIntExpr)ÚTraverserVisitor)ÚTransformVisitor)ÚTypec                   sv   e Zd Zddœdd„Zeddœ‡ fdd„Zeddœ‡ fd	d
„Zeddœdd„Z	e
ddœdd„Zeddœdd„Z‡  ZS )ÚSkippedNodeSearcherN)Úreturnc             C   s   t ƒ | _d| _d S )NF)ÚsetÚnodesÚ	is_typing)Úself© r   úA/home/dcms/DCMS/lib/python3.7/site-packages/mypy/test/visitors.pyÚ__init__   s    zSkippedNodeSearcher.__init__)Úfr   c                s&   |j dkp|j dk| _tƒ  |¡ d S )NÚtypingÚbuiltins)Úfullnamer   ÚsuperÚvisit_mypy_file)r   r   )Ú	__class__r   r   r      s    z#SkippedNodeSearcher.visit_mypy_file)Úsr   c                sF   |j st|jƒr6x$|jD ]}t|tƒr| j |¡ qW tƒ  	|¡ d S )N)
ÚtypeÚignore_nodeZrvalueZlvaluesÚ
isinstancer   r   Úaddr   Úvisit_assignment_stmt)r   r   Zlvalue)r   r   r   r"      s
    
z)SkippedNodeSearcher.visit_assignment_stmt)Únr   c             C   s   |   |¡ d S )N)Úskip_if_typing)r   r#   r   r   r   Úvisit_name_expr%   s    z#SkippedNodeSearcher.visit_name_exprc             C   s   |   |¡ d S )N)r$   )r   r#   r   r   r   Úvisit_int_expr(   s    z"SkippedNodeSearcher.visit_int_exprc             C   s   | j r| j |¡ d S )N)r   r   r!   )r   r#   r   r   r   r$   +   s    z"SkippedNodeSearcher.skip_if_typing)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r"   r   r%   r	   r&   r   r$   Ú__classcell__r   r   )r   r   r      s   r   )Únoder   c             C   s`   t | tƒrdS t | tƒr&| jdkr&dS t | tƒr>| jdkr>dS t | tƒr\t| jƒsX| jr\dS dS )z;Return True if node is to be omitted from test case output.Tzbuiltins.objectzbuiltins.NoneF)r    r   r   r   r   r   ZcalleeZanalyzed)r+   r   r   r   r   0   s    
r   c               @   s   e Zd Zeedœdd„ZdS )ÚTypeAssertTransformVisitor)r   r   c             C   s   |d k	st ‚|S )N)ÚAssertionError)r   r   r   r   r   r   E   s    zTypeAssertTransformVisitor.typeN)r'   r(   r)   r   r   r   r   r   r   r,   D   s   r,   N)Ú__doc__r   r   Z
mypy.nodesr   r   r   r   r   r   r	   Zmypy.traverserr
   Zmypy.treetransformr   Z
mypy.typesr   r   Úboolr   r,   r   r   r   r   Ú<module>   s   $