U
    /d4                     @   s$  d dl mZ d dlmZ d dlZd dlZd dlZd dlmZ d dl	Z
d dlmZmZ d dlZd dlmZmZ d dlZd dlmZmZmZmZmZmZmZmZmZ dd Zd	d
 Zdd Zdd Z dd Z!dd Z"ej#$dddd Z%dd Z&dd Z'G dd dZ(G dd dZ)G dd  d Z*dS )!    )PoolN)Fraction)assert_equalassert_)raisesdeprecated_call)	_aligned_zeroscheck_random_state
MapWrappergetfullargspec_no_selfFullArgSpecrng_integers_validate_int_rename_parameter_contains_nanc                  C   sr   d} dd }dD ]\}dD ]R}dD ]H}t jt jfD ]6}|ddd	|ffD ] }t| D ]}||||| qPqDq0q qqd S )
N
   c                 S   s   t | |||f}t| |||d}|d kr4t|j}t|jd d | d t| drft|j| | nt|j| f| t|j| |dkrt	|j
j| n@|dkr|jdkrt	|j
j| n|d krt	|j
j| nt d S )N)aligndatar   __len__CF)reprr   npdtype	alignmentr   Z__array_interface__hasattrshaper   flagsc_contiguoussizef_contiguous
ValueError)r   r   orderr   err_msgx r%   ?/tmp/pip-unpacked-wheel-9gxwnfpp/scipy/_lib/tests/test__util.pycheck   s"    

z"test__aligned_zeros.<locals>.check)	                      @   N)r   r(   r*      )r   r   Nr(   r)   r*   )r   uint8float64range)Zniterr'   r   nr"   r   r   jr%   r%   r&   test__aligned_zeros   s    r6   c                  C   s   t d} tt| tjj t | } tt| tjj t d } tt| tjj ttt d ttjdrtj	tj
 }t |} tt| tjj	 d S )Nr(   a	Generator)r	   r   typer   randomRandomStateassert_raisesr!   r   r8   ZPCG64)ZrsiZrgr%   r%   r&   test_check_random_state7   s    r=   c               
   C   s   t d} t| j}t|tdgd d dg d i  t| j}t|tddgd d d g d i  G dd d}| }t|j}t|tdd	d
gddddgdd ii  d S )Nr(   pool)r(   funciterablec                   @   s   e Zd ZdddddZdS )z0test_getfullargspec_no_self.<locals>._rv_genericr)   r*   N)r   c                _   s   d S Nr%   )selfr7   bcr   argskwargsr%   r%   r&   _rvsT   s    z5test_getfullargspec_no_self.<locals>._rv_generic._rvs)r)   r*   )__name__
__module____qualname__rG   r%   r%   r%   r&   _rv_genericS   s   rK   r7   rC   rD   rE   rF   )r)   r*   r   )r
   r   __init__r   r   __call__rG   )pZargspecrK   Zrv_objr%   r%   r&   test_getfullargspec_no_selfJ   s*    
 
  
   rO   c               	   C   s   t d} t | }td}t|jtk t|jd k t|jdk t	|t j| }t
|| tt td}W 5 Q R X d S )N      $@r(   Fr   )r   arangesinr
   r   _mapfuncmapr>   	_own_poollistr   r<   RuntimeError)in_argout_argrN   outr%   r%   r&   test_mapwrapper_serial]   s    



r[   c               	   C   s.   t d} | tjddddg W 5 Q R X d S )Nr)   r(   r*   r+   )r   rT   mathrR   )rN   r%   r%   r&   	test_pooll   s    
r]   c               	   C   s   t d} t | }tdL}|t j| }tt|| t|jdk tt|j	t
 t|jd k	 W 5 Q R X tt}|t j|  W 5 Q R X t|jtk tdB}t|j}t|jdk |  |t j| }tt|| W 5 Q R X d S )NrP   r)   TF)r   rQ   rR   r
   r   rV   r   rU   
isinstancer>   PWLrS   r<   	Exceptionr9   r!   r   rT   close)rX   rY   rN   rZ   excinfoqr%   r%   r&   test_mapwrapper_parallelq   s"    





rd   key)ifftdiagarccosrandnrandarrayc           	   	   C   s   | dkrddg}n| dkr t }nd}tt| }d|  }t|d}|| W 5 Q R X dd	 |jD }d
d	 |D }d|ks~t| dkrtj}n| dkrtj}nt}t|| }|| ||k	stt	|t
rt	|t
stdS )z9Test that 'from numpy import *' functions are deprecated.)rf   rg   rh   g      ?g        finfor)   z scipy\.%s is deprecated.*2\.0\.0matchc                 S   s   g | ]}t j|jd  qS )r   )ospathsplitextfilename).0dr%   r%   r&   
<listcomp>   s     z*test_numpy_deprecation.<locals>.<listcomp>c                 S   s   g | ]}t j|qS r%   )ro   rp   basename)rs   fnamer%   r%   r&   ru      s     Z
test__util)rj   ri   rf   N)floatgetattrscipyr   rV   AssertionErrorr   r:   Zfftr^   r9   )	re   argr?   rn   depfnames	basenamesrootZfunc_npr%   r%   r&   test_numpy_deprecation   s,    



r   c               	   C   s   t   tjdddgtjd} | jtjks.t| jtjks>tttj} | j	ttjj	ksbttjtjksrtt
tjtjstW 5 Q R X d S )Nr(   r)   r*   r   )r   rz   rk   r2   r   r{   r   rl   Zfloat32Zeps
issubclass)r$   r%   r%   r&   $test_numpy_deprecation_functionality   s    r   c                  C   sj  t j } t| ddddd}t |dks.tt |dks@t|jdksNtt| dddd}t |dksptt |dkst|jdkstt| dddd	d}t |d
kstt |dkst|jdkstt| ddd	d}t |d
kstt |dks
t|jdkstzt j } W n t	k
r@   Y d S X t| ddddd}t |dkshtt |dks|t|jdkstt| dddd}t |dkstt |dkst|jdkstt| dddd	d}t |d
kstt |dkst|jdkstt| ddd	d}t |d
ksBtt |dksVt|jdksftd S )Nr)      d   T)lowhighr   endpoint)r   )r   r   r   r   Fr+   )
r   r:   r;   r   maxr{   minr   Zdefault_rngAttributeError)rngZarrr%   r%   r&   test_rng_integers   sJ    
r   c                	   @   sn   e Zd Zejddedede	dgdd Z
ejdde	dgeddgdd Zd	d
 ZdS )TestValidateIntr4   r+   c                 C   s   t |d}|dkstd S )Nr4   r+   )r   r{   rB   r4   r%   r%   r&   test_validate_int   s    
z!TestValidateInt.test_validate_intg      @r(   c              	   C   s(   t jtdd t|d W 5 Q R X d S )Nzn must be an integerrm   r4   )pytestr   	TypeErrorr   r   r%   r%   r&   test_validate_int_bad  s    z%TestValidateInt.test_validate_int_badc              	   C   s*   t jtdd tddd W 5 Q R X d S )Nz$n must be an integer not less than 0rm   r4   r   )r   r   r!   r   )rB   r%   r%   r&   test_validate_int_below_min  s    z+TestValidateInt.test_validate_int_below_minN)rH   rI   rJ   r   markparametrizer   r1   Zint16rk   r   r   r   r   r%   r%   r%   r&   r      s
   &
 
r   c                   @   sD   e Zd Zedddd Zedddddd Zd	d
 Zdd ZdS )TestRenameParameteroldnewc                 C   s   |S rA   r%   rB   r   r%   r%   r&   old_keyword_still_accepted  s    z.TestRenameParameter.old_keyword_still_acceptedz1.9.0)dep_versionc                 C   s   |S rA   r%   r   r%   r%   r&   old_keyword_deprecated  s    z*TestRenameParameter.old_keyword_deprecatedc              	   C   s   |  d}| j dd}| j dd}||  kr@|  kr@dksFn ttd}tjt|d | j dd W 5 Q R X td}tjt|d | j ddd W 5 Q R X tjt|d | j ddd W 5 Q R X tjt|d | j ddd W 5 Q R X d S )	Nr   r   r   z.old_keyword_still_accepted() got an unexpectedrm   Z
unexpectedz)old_keyword_still_accepted() got multipler   r   )r   r{   reescaper   r   r   )rB   res1res2res3messager%   r%   r&   test_old_keyword_still_accepted  s    
$

z3TestRenameParameter.test_old_keyword_still_acceptedc              
   C   sN  d}|  d}| j dd}tjt|d | j dd}W 5 Q R X ||  kr^|  kr^dksdn ttd}tjt|d | j dd W 5 Q R X td}tjt|d | j ddd W 5 Q R X tjt|d. tjt|d | j ddd W 5 Q R X W 5 Q R X tjt|d. tjt|d | j ddd	 W 5 Q R X W 5 Q R X d S )
Nz+Use of keyword argument `old` is deprecatedr   r   rm   r   z*old_keyword_deprecated() got an unexpectedr   z%old_keyword_deprecated() got multipler   )	r   r   ZwarnsDeprecationWarningr{   r   r   r   r   )rB   Zdep_msgr   r   r   r   r%   r%   r&   test_old_keyword_deprecated0  s(    
$

"z/TestRenameParameter.test_old_keyword_deprecatedN)rH   rI   rJ   r   r   r   r   r   r%   r%   r%   r&   r     s   

r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestContainsNaNTestc              	   C   s   t dddt jg}t|dd\}}|s,t|dks8tt|dd\}}|sPt|dks\td}tjt|d t|d	d W 5 Q R X d
}tjt|d t|dd W 5 Q R X d S )Nr(   r)   r*   	propagate)
nan_policyZomitzThe input contains nan valuesrm   raiseznan_policy must be one ofnan)r   rk   r   r   r{   r   r   r!   )rB   r   Zcontains_nanr   msgr%   r%   r&   test_policyN  s    zTestContainsNaNTest.test_policyc                 C   s   t dddg}t|d r tt dddt jg}t|d sDtt t jddt jg}t|d sjtt dddt jg}t|d rtt jdddt jgdd}t|d std S )Nr(   r)   r*   r   3objectr   r   rk   r   r{   r   )rB   data1data2data3data4Zdata5r%   r%   r&   test_contains_nan_1da  s    z(TestContainsNaNTest.test_contains_nan_1dc                 C   s   t ddgddgg}t|d r&tt ddgdt jgg}t|d sNtt ddgdt jgg}t|d rvtt jddgdt jggdd}t|d std S )	Nr(   r)   r*   r+   r   1r   r   r   )rB   r   r   r   r   r%   r%   r&   test_contains_nan_2dq  s    z(TestContainsNaNTest.test_contains_nan_2dN)rH   rI   rJ   r   r   r   r%   r%   r%   r&   r   L  s   r   )+multiprocessingr   Zmultiprocessing.poolr_   ro   r   r\   Z	fractionsr   Znumpyr   Znumpy.testingr   r   r   r   r<   r   rz   Zscipy._lib._utilr   r	   r
   r   r   r   r   r   r   r6   r=   rO   r[   r]   rd   r   r   r   r   r   r   r   r   r%   r%   r%   r&   <module>   s6   ,#! 
:?