B
    y\y
                 @   s   d Z ddlmZmZmZ ddlZddlZejdkrddlm	Z	 ddl
Z
ddlZddlZG dd de
jZG dd	 d	e
jZejjd
d ZdS )z
Tests which scan for certain occurrences in the code, they may not find
all of these occurrences but should catch almost all.
    )divisionabsolute_importprint_functionN)      )Pathc               @   s$   e Zd Zdd Zdd Zdd ZdS )	ParseCallc             C   s
   g | _ d S )N)ls)self r   8lib/python3.7/site-packages/numpy/tests/test_warnings.py__init__   s    zParseCall.__init__c             C   s    t j| | | j|j d S )N)astNodeVisitorgeneric_visitr	   appendattr)r
   noder   r   r   visit_Attribute   s    zParseCall.visit_Attributec             C   s   | j |j d S )N)r	   r   id)r
   r   r   r   r   
visit_Name   s    zParseCall.visit_NameN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s   r   c                   s$   e Zd Z fddZdd Z  ZS )	FindFuncsc                s   t    || _d S )N)superr   _FindFuncs__filename)r
   filename)	__class__r   r   r      s    
zFindFuncs.__init__c             C   s   t  }||j tj| | |jd dks<|jd dkr`|jd jdkr`t	d
| j|j|jd dkrt|jdks|jd	 d
krd| jkrd S t|jdkrd S dd |jD }d|krd S t	d
| j|jd S )Nsimplefilterfilterwarningsr   ignorez8ignore filter should not be used; found in {} on line {}warn   warningsztesting/tests/test_warnings.pyr   c             S   s   h | ]
}|j qS r   )arg).0kwr   r   r   	<setcomp>6   s    z'FindFuncs.visit_Call.<locals>.<setcomp>
stacklevelzFwarnings should have an appropriate stacklevel; found in {} on line {})r   visitfuncr   r   r   r	   argssAssertionErrorformatr   linenolenkeywords)r
   r   pr.   r   r   r   
visit_Call!   s(    
zFindFuncs.visit_Call)r   r   r   r   r6   __classcell__r   r   )r   r   r      s   r   c           
   C   s   t tjj} x| dD ]|}| d |jkr,q|| d kr:q|| d d krLq|| d d kr^qtt|"}t	
| }t|| W d Q R X qW d S )Nz*.pyZtestingz__init__.pyZrandomZrandom_intel)r   numpy__file__parentZrglobparentstokenizeopenstrr   parsereadr   r,   )basepathfileZtreer   r   r   test_warning_calls>   s    rD   )__doc__Z
__future__r   r   r   sysZpytestversion_infoZpathlibr   r   r<   r8   r   r   r   ZmarkZslowrD   r   r   r   r   <module>   s   
"