o
    Eb"                     @   s   d dl mZ d dlm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 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%dS )    )PoolN)Fraction)assert_equalassert_)raisesdeprecated_call)_aligned_zeroscheck_random_state
MapWrappergetfullargspec_no_selfFullArgSpecrng_integers_validate_intc                  C   sr   d} dd }dD ].}dD ])}dD ]$}t jt jfD ]}|ddd	|ffD ]}t| D ]	}||||| q(q"qqqqd S )
N
   c                 S   s   t | |||f}t| |||d}|d u rt|j}t|jd d | d t| dr3t|j| | nt|j| f| t|j| |dkrNt	|j
j| d S |dkrb|jdkr`t	|j
j| d S d S |d u rot	|j
j| d S t )N)aligndatar   __len__CF)reprr   npdtypeZ	alignmentr   Z__array_interface__hasattrshaper   flagsc_contiguoussizef_contiguous
ValueError)r   r   orderr   err_msgx r"   =/usr/lib/python3/dist-packages/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   r3   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rKtj	tj
 }t |} tt| tjj	 d S d S )Nr%   a	Generator)r	   r   typer   randomRandomStateassert_raisesr   r   r5   ZPCG64)ZrsiZrgr"   r"   r#   test_check_random_state5   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g d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"   )selfr4   bcr   argskwargsr"   r"   r#   _rvsR   s   z5test_getfullargspec_no_self.<locals>._rv_generic._rvsr&   r'   )__name__
__module____qualname__rC   r"   r"   r"   r#   _rv_genericQ   s    rH   )r4   r?   r@   rA   rB   rD   r   )r
   r   __init__r   r   __call__rC   )pZargspecrH   Zrv_objr"   r"   r#   test_getfullargspec_no_selfH   s   



rL   c                  C   s   t d} t | }td}t|jtu  t|jd u  t|jdu  t	|t j| }t
|| tt td}W d    d S 1 sDw   Y  d S )N      $@r%   Fr   )r   arangesinr
   r   _mapfuncmapr;   	_own_poollistr   r9   RuntimeError)in_argout_argrK   outr"   r"   r#   test_mapwrapper_serial[   s   




"rX   c                  C   s@   t d} | tjg d W d    d S 1 sw   Y  d S )Nr&   )r%   r&   r'   r(   )r   rQ   mathrO   )rK   r"   r"   r#   	test_poolj   s   
"rZ   c                  C   s.  t d} t | }td+}|t j| }tt|| t|jdu  tt|j	t
 t|jd u W d    n1 s<w   Y  tt}|t j|  W d    n1 sVw   Y  t|jtu  td'}t|j}t|jdu  |  |t j| }tt|| W d    d S 1 sw   Y  d S )NrM   r&   TF)r   rN   rO   r
   r   rS   r   rR   
isinstancer;   PWLrP   r9   	Exceptionr6   r   r   rQ   close)rU   rV   rK   rW   excinfoqr"   r"   r#   test_mapwrapper_parallelo   s(   






"ra   key)ifftdiagarccosrandnrandarrayc           	      C   s   | dv r	ddg}n	| dkrt }nd}tt| }d|  }t|d}|| W d   n1 s/w   Y  d	d
 |jD }dd
 |D }d|v sIJ | dv rQtj}n
| dkrYtj}nt}t|| }|| ||usjJ t|t	rvt|t	sxJ dS dS )z9Test that 'from numpy import *' functions are deprecated.)rc   rd   re   g      ?g        finfor&   z scipy\.%s is deprecated.*2\.0\.0matchNc                 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"   )rl   rm   basename)rp   fnamer"   r"   r#   rr      s    Z
test__util)rg   rf   rc   )
floatgetattrscipyr   rS   r   r7   Zfftr[   r6   )	rb   argr<   rk   ZdepfnamesZ	basenamesrootZfunc_npr"   r"   r#   test_numpy_deprecation   s2   




r{   c                  C   s   t  F tjg dtjd} | jtjksJ | jtjksJ ttj} | jttjjks0J tjtjks8J t	tjtjsAJ W d    d S 1 sLw   Y  d S )N)r%   r&   r'   )r   )
r   rw   rh   r/   r   r   ri   Zfloat32Zeps
issubclass)r!   r"   r"   r#   $test_numpy_deprecation_functionality   s   "r}   c                  C   sR  t j } t| ddddd}t |dksJ t |dks J |jdks'J t| dddd}t |dks8J t |dksAJ |jdksHJ t| dddd	d}t |d
ksZJ t |dkscJ |jdksjJ t| ddd	d}t |d
ks{J t |dksJ |jdksJ zt j } W n
 ty   Y d S w t| ddddd}t |dksJ t |dksJ |jdksJ t| dddd}t |dksJ t |dksJ |jdksJ t| dddd	d}t |d
ksJ t |dksJ |jdksJ t| ddd	d}t |d
ksJ t |dksJ |jdks'J d S )Nr&      d   T)lowZhighr   endpoint)r   )r   r   r   r   Fr(   )	r   r7   r8   r   maxminr   Zdefault_rngAttributeError)rngZarrr"   r"   r#   test_rng_integers   sL   
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 )TestValidateIntr1   r(   c                 C   s   t |d}|dksJ d S )Nr1   r(   )r   r>   r1   r"   r"   r#   test_validate_int   s   
z!TestValidateInt.test_validate_intg      @r%   c                 C   s>   t jtdd t|d W d    d S 1 sw   Y  d S )Nzn must be an integerrj   r1   )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 d    d S 1 sw   Y  d S )Nz$n must be an integer not less than 0rj   r1   r   )r   r   r   r   )r>   r"   r"   r#   test_validate_int_below_min  s   "z+TestValidateInt.test_validate_int_below_minN)rE   rF   rG   r   markparametrizer   r.   Zint16rh   r   r   r   r   r"   r"   r"   r#   r      s    &
 
r   )&Zmultiprocessingr   Zmultiprocessing.poolr\   rl   rY   Z	fractionsr   Znumpyr   Znumpy.testingr   r   r   r   r9   r   rw   Zscipy._lib._utilr   r	   r
   r   r   r   r   r3   r:   rL   rX   rZ   ra   r   r   r{   r}   r   r   r"   r"   r"   r#   <module>   s0    $#!
: