U
    »mœ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ršt	|j
j|ƒ n@|dkr¼|jdkrÚt	|j
j|ƒ n|d krÔt	|j
j|ƒ ntƒ ‚d S )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$   úT/home/sam/Atlas/atlas_env/lib/python3.8/site-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    r5   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ƒr’tj 	tj 
¡ ¡}t |ƒ} tt| ƒtjj	ƒ d S )Nr'   ÚaÚ	Generator)r	   r   Útyper   ÚrandomÚRandomStateÚassert_raisesr    r   r7   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$   )Úselfr6   ÚbÚcr   ÚargsÚkwargsr$   r$   r%   Ú_rvsT   s    z5test_getfullargspec_no_self.<locals>._rv_generic._rvs)r(   r)   )Ú__name__Ú
__module__Ú__qualname__rF   r$   r$   r$   r%   Ú_rv_genericS   s   rJ   r6   rB   rC   rD   rE   )r(   r)   r   )r
   r   Ú__init__r   r   Ú__call__rF   )ÚpZargspecrJ   Zrv_objr$   r$   r%   Útest_getfullargspec_no_selfJ   s*    
 ÿ
  ÿ
   ÿrN   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_argrM   Úoutr$   r$   r%   Útest_mapwrapper_serial]   s    



rZ   c               	   C   s.   t dƒ�} |  tjddddg¡ W 5 Q R X d S )Nr(   r'   r)   r*   )r   rS   ÚmathrQ   )rM   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 )NrO   r(   TF)r   rP   rQ   r
   r   rU   r   rT   Ú
isinstancer=   ÚPWLrR   r;   Ú	Exceptionr8   r    r   rS   Úclose)rW   rX   rM   rY   ÚexcinfoÚqr$   r$   r%   Útest_mapwrapper_parallelq   s"    





rc   Ú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rŽtj}n| dkržtj}nt}t|| ƒ}||ƒ ||k	sÀt‚t	|t
ƒrØt	|t
ƒsØt‚dS )z9Test that 'from numpy import *' functions are deprecated.)re   rf   rg   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$   )rn   ro   Úbasename)rr   Úfnamer$   r$   r%   rt   ¢   s     Z
test__util)ri   rh   re   N)ÚfloatÚgetattrÚscipyr   rU   ÚAssertionErrorr   r9   Zfftr]   r8   )	rd   Úargr>   rm   Ú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ƒs„t‚W 5 Q R X d S )Nr'   r(   r)   ©r   )r   ry   rj   r1   r   rz   r   rk   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s‚t‚|jdks�t‚t| dddd	d�}t  |¡d
ks´t‚t  |¡dksÆt‚|jdksÔt‚t| ddd	d�}t  |¡d
ksöt‚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�sŒt‚t| dddd�}t  |¡dk�s°t‚t  |¡dk�sÄt‚|jdk�sÔt‚t| dddd	d�}t  |¡d
k�sút‚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   r9   r:   r   Úmaxrz   Ú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 )ÚTestValidateIntr3   r*   c                 C   s   t |dƒ}|dkst‚d S )Nr3   r*   )r   rz   ©rA   r3   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 integerrl   r3   )Ú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 0rl   éÿÿÿÿr3   r   )r‘   r   r    r   )rA   r$   r$   r%   Útest_validate_int_below_min  s    z+TestValidateInt.test_validate_int_below_minN)rG   rH   rI   r‘   ÚmarkÚparametrizer   r0   Zint16rj   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 r@   r$   ©rA   rš   r$   r$   r%   Úold_keyword_still_accepted  s    z.TestRenameParameter.old_keyword_still_acceptedz1.9.0)Údep_versionc                 C   s   |S r@   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 unexpectedrl   ©Z
unexpectedz)old_keyword_still_accepted() got multiple©rš   r™   )rœ   rz   ÚreÚescaper‘   r   r’   )rA   Ú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Ÿ   rl   r    z*old_keyword_deprecated() got an unexpectedr¡   z%old_keyword_deprecated() got multipler¢   )	rž   r‘   ZwarnsÚDeprecationWarningrz   r£   r¤   r   r’   )rA   Zdep_msgr¥   r¦   r§   r¨   r$   r$   r%   Útest_old_keyword_deprecated0  s(    
$

ÿ"ÿz/TestRenameParameter.test_old_keyword_deprecatedN)rG   rH   rI   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 valuesrl   Úraiseznan_policy must be one ofÚnan)r   rj   r°   r   rz   r‘   r   r    )rA   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 rŽt‚t jdddt jgdd�}t|ƒd s¶t‚d S )Nr'   r(   r)   r   Ú3Úobjectr�   ©r   rj   r   rz   r°   )rA   Ú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 s¢t‚d S )	Nr'   r(   r)   r*   r   Ú1r´   r�   rµ   )rA   r¶   r·   r¸   r¹   r$   r$   r%   Útest_contains_nan_2dq  s    z(TestContainsNaNTest.test_contains_nan_2dN)rG   rH   rI   r²   rº   r¼   r$   r$   r$   r%   r¬   L  s   r¬   )+Úmultiprocessingr   Zmultiprocessing.poolr^   rn   r£   r[   Ú	fractionsr   Únumpyr   Znumpy.testingr   r   r‘   r   r;   r   ry   Zscipy._lib._utilr   r	   r
   r   r   r   r   r   r   r5   r<   rN   rZ   r\   rc   r–   r—   r€   rƒ   r�   rŽ   r˜   r¬   r$   r$   r$   r%   Ú<module>   s6   ,#! ÿ
:?