o
    5Bi8                     @   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 ])}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dtype	alignmentr   __array_interface__hasattrshaper   flagsc_contiguoussizef_contiguous
ValueError)r#   r   orderr   err_msgx r,   [/var/www/html/Trade-python/venv/lib/python3.10/site-packages/scipy/_lib/tests/test__util.pycheck   s$   

z"test__aligned_zeros.<locals>.check)	                      @   N)r   r/   r1      )r   r   Nr/   r0   r1   )r   uint8float64range)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(   	GeneratorPCG64)rsirgr,   r,   r-   test_check_random_state9   s   rH   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_genericr0   r1   Nr&   c                _   s   d S Nr,   )selfr?   bcr&   argskwargsr,   r,   r-   _rvsT   s   z5test_getfullargspec_no_self.<locals>._rv_generic._rvsr0   r1   )__name__
__module____qualname__rS   r,   r,   r,   r-   _rv_genericS   s    rX   )r?   rO   rP   rQ   rR   rT   r&   )r   r   __init__r   r   __call__rS   )pargspecrX   rv_objr,   r,   r-   test_getfullargspec_no_selfJ   s   



r^   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maprI   	_own_poollistr   rC   RuntimeError)in_argout_argr[   outr,   r,   r-   test_mapwrapper_serial]   s   




"rj   c                  C   s@   t d} | tjg d W d    d S 1 sw   Y  d S )Nr0   )r/   r0   r1   r2   )r   rc   mathra   )r[   r,   r,   r-   	test_pooll   s   
"rl   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 )Nr_   r0   TF)r   r`   ra   r   r   re   r   rd   
isinstancerI   PWLrb   rC   	Exceptionr@   r(   r   rc   close)rg   rh   r[   ri   excinfoqr,   r,   r-   test_mapwrapper_parallelq   s(   






"rs   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 )Nr0      d   T)lowhighr&   endpoint)ru   )rv   r&   rx   r   Fr2   )	r   rA   rB   r   maxminr#   default_rngAttributeError)rng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 )TestValidateIntr<   r2   c                 C   s   t |d}|dksJ d S )Nr<   r2   )r   rN   r<   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 integermatchr<   )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 0r   r<   r   )r   r   r(   r   )rN   r,   r,   r-   test_validate_int_below_min   s   "z+TestValidateInt.test_validate_int_below_minN)rU   rV   rW   r   markparametrizer   r8   int16arrayr   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 rM   r,   rN   r   r,   r,   r-   old_keyword_still_accepted      z.TestRenameParameter.old_keyword_still_acceptedz1.9.0)dep_versionc                 C   r   rM   r,   r   r,   r,   r-   old_keyword_deprecated   r   z*TestRenameParameter.old_keyword_deprecatedc                 C   sP  |  d}| j dd}| j dd}||  kr!|  kr!dks$J  J td}tjt|d | j dd W d    n1 sAw   Y  td}tjt|d | j ddd W d    n1 sdw   Y  tjt|d | j ddd W d    n1 sw   Y  tjt|d | j ddd W d    d S 1 sw   Y  d S )	Nr   r   r   z.old_keyword_still_accepted() got an unexpectedr   
unexpectedz)old_keyword_still_accepted() got multipler   r   )r   reescaper   r   r   )rN   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 s%w   Y  ||  kr:|  kr:dks=J  J td}tjt|d | j dd W d    n1 sZw   Y  td}tjt|d | j ddd W d    n1 s}w   Y  tjt|d& tjt|d | j ddd W d    n1 sw   Y  W d    n1 sw   Y  tjt|d/ tjt|d | j ddd	 W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )
Nz+Use of keyword argument `old` is deprecatedr   r   r   r   z*old_keyword_deprecated() got an unexpectedr   z%old_keyword_deprecated() got multipler   )r   r   warnsDeprecationWarningr   r   r   r   )rN   dep_msgr   r   r   r   r,   r,   r-   test_old_keyword_deprecated   s6   
&

 Pz/TestRenameParameter.test_old_keyword_deprecatedN)rU   rV   rW   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sJ t|dd\}}|s(J |dks.J d}tjt|d t|d	d W d    n1 sHw   Y  d
}tjt|d t|dd W d    d S 1 shw   Y  d S )Nr/   r0   r1   	propagate)
nan_policyomitzThe input contains nan valuesr   raiseznan_policy must be one ofnan)r   r   r   r   r   r   r(   )rN   r   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 s!J t t jddt jg}t|d s4J t dddt jg}t|d rFJ t jdddt jgdd}t|d sZJ d S )	N)r/   r0   r1   r   r/   r0   r1   3objectr   r   r   r   r   )rN   data1data2data3data4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 s'J t ddgdt jgg}t|d r;J t jddgdt jggdd}t|d sQJ d S )	Nr/   r0   r1   r2   r   1r   r   r   )rN   r   r   r   r   r,   r,   r-   test_contains_nan_2dA  s   z(TestContainsNaNTest.test_contains_nan_2dN)rU   rV   rW   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/   r1   )	min_value	max_valuei ʚ;l   c(	 r   zignore::RuntimeWarning)n_arraysrng_seedr   r[   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rft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   )
num_shapes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       | ]}|V  qd S rM   r,   r   argr,   r,   r-   	<genexpr>x      z6TestLazywhere.test_basic.<locals>.f.<locals>.<genexpr>sumrQ   r,   r,   r-   fw  s   z#TestLazywhere.test_basic.<locals>.fc                  W   s   t dd | D d S )Nc                 s   r   rM   r,   r   r,   r,   r-   r   {  r   z7TestLazywhere.test_basic.<locals>.f2.<locals>.<genexpr>r0   r   r   r,   r,   r-   f2z  s   z$TestLazywhere.test_basic.<locals>.f2rL   )r   r,   )r   mutually_broadcastable_shapesr   r   r   tupler   rA   r{   r   
atleast_1dwherereshaperm   r@   r   r   r#   r   )rN   r   r   r   r[   r   r   mbsinput_shapesresult_shape
cond_shapeshapes	fillvaluer   r   r   r}   condr   r   ref1ref2r,   r   r-   
test_basick  s@   




zTestLazywhere.test_basicN)rU   rV   rW   r   integersr   r   sampled_fromr   float32r9   r   floatsr[   r   r   r   filterwarningsr
   r   r   r,   r,   r,   r-   r   d  s    
r   )3multiprocessingr   multiprocessing.poolrn   r   rk   	fractionsr   numpyr   numpy.testingr   r   r   r   rC   hypothesis.extra.numpyextrar   
hypothesisr   r   r	   scipy.conftestr
   scipy._lib._array_apir   scipy._lib._utilr   r   r   r   r   r   r   r   r   r   r   r>   rH   r^   rj   rl   rs   r   r   r   r   r   r   r,   r,   r,   r-   <module>   s4    4# :?3