a
    h8                     @   sN  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 d dlm  mZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZmZ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,dd Z-G dd dZ.G dd dZ/G dd dZ0dd Z1G d d! d!Z2dS )"    )PoolN)Fraction)assert_equalassert_)raises)given
strategiesreproduce_failure)array_api_compatible)xp_assert_equal)_aligned_zeroscheck_random_state
MapWrappergetfullargspec_no_selfFullArgSpecrng_integers_validate_int_rename_parameter_contains_nan_rng_html_rewrite
_lazywherec                  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 u 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 u rt	|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*   W/var/www/html/assistant/venv/lib/python3.9/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    r;   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jtj	 }t |} tt| tjj d S )Nr-   a)
r   r   typer   randomRandomStateassert_raisesr&   	GeneratorZPCG64)ZrsiZrgr*   r*   r+   test_check_random_state9   s    rB   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*   )selfr<   bcr$   argskwargsr*   r*   r+   _rvsT   s    z5test_getfullargspec_no_self.<locals>._rv_generic._rvs)r.   r/   )__name__
__module____qualname__rM   r*   r*   r*   r+   _rv_genericS   s   rQ   )r<   rI   rJ   rK   rL   )r.   r/   r$   )r   r   __init__r   r   __call__rM   )pZargspecrQ   Zrv_objr*   r*   r+   test_getfullargspec_no_selfJ   s    


rU   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    n1 s0    Y  d S )N      $@r-   Fr   )r   arangesinr   r   _mapfuncmaprC   	_own_poollistr   r@   RuntimeError)in_argout_argrT   outr*   r*   r+   test_mapwrapper_serial]   s    



ra   c                  C   s>   t d"} | tjg d W d    n1 s00    Y  d S )Nr.   )r-   r.   r/   r0   )r   rZ   mathrX   )rT   r*   r*   r+   	test_pooll   s    
rc   c                  C   s.  t d} t | }tdV}|t j| }tt|| t|jdu  tt|j	t
 t|jd u W d    n1 sx0    Y  tt}|t j|  W d    n1 s0    Y  t|jtu  tdL}t|j}t|jdu  |  |t j| }tt|| W d    n1 s 0    Y  d S )NrV   r.   TF)r   rW   rX   r   r   r\   r   r[   
isinstancerC   PWLrY   r@   	Exceptionr=   r&   r   rZ   close)r^   r_   rT   r`   excinfoqr*   r*   r+   test_mapwrapper_parallelq   s"    


,
*

rj   c                  C   sh  t j } t| ddddd}t |dks.J t |dks@J |jdksNJ t| dddd}t |dkspJ 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sJ t| ddd	d}t |d
ksJ t |dks
J |jdksJ zt j } W n ty>   Y d S 0 t| ddddd}t |dksfJ t |dkszJ |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sJ |jdksJ t| ddd	d}t |d
ks@J t |dksTJ |jdksdJ d S )Nr.      d   T)lowhighr$   endpoint)rl   )rm   r$   ro   r   Fr0   )	r   r>   r?   r   maxminr!   default_rngAttributeError)rngZarrr*   r*   r+   test_rng_integers   sJ    
ru   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 )TestValidateIntr9   r0   c                 C   s   t |d}|dksJ d S )Nr9   r0   )r   rH   r9   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    n1 s.0    Y  d S )Nzn must be an integermatchr9   )pytestr   	TypeErrorr   rw   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    n1 s00    Y  d S )Nz$n must be an integer not less than 0ry   r9   r   )r{   r   r&   r   )rH   r*   r*   r+   test_validate_int_below_min   s    z+TestValidateInt.test_validate_int_below_minN)rN   rO   rP   r{   markZparametrizer   r6   Zint16arrayrx   r   r}   r   r*   r*   r*   r+   rv      s
   &
 
rv   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 rG   r*   rH   r   r*   r*   r+   old_keyword_still_accepted   s    z.TestRenameParameter.old_keyword_still_acceptedz1.9.0)dep_versionc                 C   s   |S rG   r*   r   r*   r*   r+   old_keyword_deprecated   s    z*TestRenameParameter.old_keyword_deprecatedc                 C   sP  |  d}| j dd}| j dd}||  kr@|  kr@dksFn J td}tjt|d | j dd W d    n1 s0    Y  td}tjt|d | j ddd W d    n1 s0    Y  tjt|d | j ddd W d    n1 s0    Y  tjt|d | j ddd W d    n1 sB0    Y  d S )	Nr   r   r   z.old_keyword_still_accepted() got an unexpectedry   Z
unexpectedz)old_keyword_still_accepted() got multipler   r   )r   reescaper{   r   r|   )rH   res1res2res3messager*   r*   r+   test_old_keyword_still_accepted   s    
$
*
,.z3TestRenameParameter.test_old_keyword_still_acceptedc              	   C   s  d}|  d}| j dd}tjt|d | j dd}W d    n1 sJ0    Y  ||  krr|  krrdksxn J td}tjt|d | j dd W d    n1 s0    Y  td}tjt|d | j ddd W d    n1 s0    Y  tjt|dN tjt|d | j ddd W d    n1 sF0    Y  W d    n1 sf0    Y  tjt|dN tjt|d | j ddd	 W d    n1 s0    Y  W d    n1 s0    Y  d S )
Nz+Use of keyword argument `old` is deprecatedr   r   ry   r   z*old_keyword_deprecated() got an unexpectedr   z%old_keyword_deprecated() got multipler   )r   r{   ZwarnsDeprecationWarningr   r   r   r|   )rH   Zdep_msgr   r   r   r   r*   r*   r+   test_old_keyword_deprecated   s(    
*$
*
,Nz/TestRenameParameter.test_old_keyword_deprecatedN)rN   rO   rP   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,J |dks8J t|dd\}}|sPJ |dks\J d}tjt|d t|d	d W d    n1 s0    Y  d
}tjt|d t|dd W d    n1 s0    Y  d S )Nr-   r.   r/   	propagate)
nan_policyZomitzThe input contains nan valuesry   raiseznan_policy must be one ofnan)r   r   r   r   r{   r   r&   )rH   r   Zcontains_nanr   msgr*   r*   r+   test_policy  s    *zTestContainsNaNTest.test_policyc                 C   s   t g d}t|d rJ t dddt jg}t|d sBJ t t jddt jg}t|d shJ t dddt jg}t|d rJ t jdddt jgdd}t|d sJ d S )	N)r-   r.   r/   r   r-   r.   r/   3objectr   r   r   r   r   )rH   data1data2data3data4Zdata5r*   r*   r+   test_contains_nan_1d1  s    z(TestContainsNaNTest.test_contains_nan_1dc                 C   s   t ddgddgg}t|d r&J t ddgdt jgg}t|d sNJ t ddgdt jgg}t|d rvJ t jddgdt jggdd}t|d sJ d S )	Nr-   r.   r/   r0   r   1r   r   r   )rH   r   r   r   r   r*   r*   r+   test_contains_nan_2dA  s    z(TestContainsNaNTest.test_contains_nan_2dN)rN   rO   rP   r   r   r   r*   r*   r*   r+   r     s   r   c                  C   s*   dd } t |  }g d}||ks&J d S )Nc                  S   s   g d} | S )N)znp.random.default_rng(8989843)np.random.default_rng(seed)z8np.random.default_rng(0x9a71b21474694f919882289dc1559ca) bob r*   )linesr*   r*   r+   mock_strP  s    z(test__rng_html_rewrite.<locals>.mock_str)np.random.default_rng()r   r   r   )r   )r   resrefr*   r*   r+   test__rng_html_rewriteO  s    	
r   c                	   @   sz   e Zd ZejdddZejdddZeej	ej
fZejdddZe Zejdeeeeeeedd	d
 ZdS )TestLazywherer-   r/   )Z	min_valueZ	max_valuei ʚ;l   c(	 r   zignore::RuntimeWarning)n_arraysrng_seedr   rT   r   c                    s  t j|d dd} |\}}	|^}
} t jt d} fdd|D }dd }d	d
 }tj|}|j|
d|k}t	||||}t	||||d}tkrtj
||g|R  ^}}}||| |}||| || }tkr.||	}||	}|d }|d }t|tg  t|| t|j|j t|j|j t|tg  t|| t|j|j t|j|j d S )Nr-   r   )Z
num_shapesZmin_sider   r!   c              
      s&   g | ]}  tj|d qS )r   )asarraydrawnpstarrays).0r!   r   r   xpr*   r+   
<listcomp>t  s   z,TestLazywhere.test_basic.<locals>.<listcomp>c                  W   s   t dd | D S )Nc                 s   s   | ]
}|V  qd S rG   r*   r   argr*   r*   r+   	<genexpr>x      z6TestLazywhere.test_basic.<locals>.f.<locals>.<genexpr>sumrK   r*   r*   r+   fw  s    z#TestLazywhere.test_basic.<locals>.fc                  W   s   t dd | D d S )Nc                 s   s   | ]
}|V  qd S rG   r*   r   r*   r*   r+   r   {  r   z7TestLazywhere.test_basic.<locals>.f2.<locals>.<genexpr>r.   r   r   r*   r*   r+   f2z  s    z$TestLazywhere.test_basic.<locals>.f2rF   )r   r*   )r   Zmutually_broadcastable_shapesr   r   r   tupler   r>   rr   r   Z
atleast_1dwhereZreshaperd   r=   r   r   r!   r   )rH   r   r   r   rT   r   r   ZmbsZinput_shapesZresult_shapeZ
cond_shapeZshapes	fillvaluer   r   r   rt   Zcondr   r   Zref1Zref2r*   r   r+   
test_basick  s@    





zTestLazywhere.test_basicN)rN   rO   rP   r   Zintegersr   r   Zsampled_fromr   Zfloat32r7   r   ZfloatsrT   r   r{   r   filterwarningsr
   r   r   r*   r*   r*   r+   r   d  s   
r   )3multiprocessingr   Zmultiprocessing.poolre   r   rb   	fractionsr   numpyr   Znumpy.testingr   r   r{   r   r@   Zhypothesis.extra.numpyextrar   Z
hypothesisr   r   r	   Zscipy.conftestr
   Zscipy._lib._array_apir   Zscipy._lib._utilr   r   r   r   r   r   r   r   r   r   r   r;   rB   rU   ra   rc   rj   ru   rv   r   r   r   r   r*   r*   r*   r+   <module>   s2   4# :?3