o
    jE`                     @   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 d dlm  mZ d dlmZmZmZ d dlmZmZ d dlmZmZmZmZ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
l,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ej4j5Z5ej4j6dd Z7dd Z8dd Z9d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Z@dd  ZAG d!d" d"ZBG d#d$ d$ZCdS )%    )PoolN)Fraction)assert_equalassert_)raises)given
strategiesreproduce_failure)array_api_compatibleskip_xp_invalid_arg)xp_assert_equalxp_assert_closeis_numpyxp_copyis_array_api_strict)_aligned_zeroscheck_random_state
MapWrappergetfullargspec_no_selfFullArgSpecrng_integers_validate_int_rename_parameter_contains_nan_rng_html_rewrite
_lazywhere)clusterinterpolatelinalgoptimizesparsespatialstatsc                  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   Z__array_interface__hasattrshaper   flagsc_contiguoussizef_contiguous
ValueError)r.   r+   orderr$   err_msgx r7   \/var/www/html/Deteccion_Ine/venv/lib/python3.10/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niterr9   r$   nr4   r+   r.   jr7   r7   r8   test__aligned_zeros   s   rH   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_raisesr3   	GeneratorZPCG64)ZrsiZrgr7   r7   r8   test_check_random_state>   s   rO   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r1   c                _   s   d S Nr7   )selfrI   bcr1   argskwargsr7   r7   r8   _rvsY   s   z5test_getfullargspec_no_self.<locals>._rv_generic._rvsr;   r<   )__name__
__module____qualname__rZ   r7   r7   r7   r8   _rv_genericX   s    r_   )rI   rV   rW   rX   rY   r[   r1   )r   r   __init__r   r   __call__rZ   )pZargspecr_   Zrv_objr7   r7   r8   test_getfullargspec_no_selfO   s   



rc   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maprP   	_own_poollistr   rM   RuntimeError)in_argout_argrb   outr7   r7   r8   test_mapwrapper_serialb   s   




"ro   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   rh   mathrf   )rb   r7   r7   r8   	test_poolq   s   
"rq   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 )Nrd   r;   TF)r*   re   rf   r   r   rj   r   ri   
isinstancerP   PWLrg   rM   	ExceptionrJ   r3   r   rh   close)rl   rm   rb   rn   excinfoqr7   r7   r8   test_mapwrapper_parallelv   s(   






"rx   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)lowhighr1   endpoint)rz   )r{   r1   r}   r   Fr=   )	r*   rK   rL   r   maxminr.   default_rngAttributeError)rngZarrr7   r7   r8   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 )TestValidateIntrF   r=   c                 C   s   t |d}|dksJ d S )NrF   r=   )r   rU   rF   r7   r7   r8   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matchrF   )pytestr   	TypeErrorr   r   r7   r7   r8   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   rF   r   )r   r   r3   r   )rU   r7   r7   r8   test_validate_int_below_min   s   "z+TestValidateInt.test_validate_int_below_minN)r\   r]   r^   r   markparametrizer*   rC   Zint16arrayr   r   r   r   r7   r7   r7   r8   r      s    &
 
r   c                   @   sR   e Zd Zedddd Zedddddd Zd	d
 Zejdd Z	dd Z
dS )TestRenameParameteroldnewc                 C      |S rT   r7   rU   r   r7   r7   r8   old_keyword_still_accepted      z.TestRenameParameter.old_keyword_still_acceptedz1.9.0)dep_versionc                 C   r   rT   r7   r   r7   r7   r8   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   Z
unexpectedz)old_keyword_still_accepted() got multipler   r   )r   reescaper   r   r   )rU   res1res2res3messager7   r7   r8   test_old_keyword_still_accepted   s$   
&

"z3TestRenameParameter.test_old_keyword_still_acceptedc                 C   s   ddl m} | S )Nr   )Lock)	threadingr   )rU   r   r7   r7   r8   
kwarg_lock  s   zTestRenameParameter.kwarg_lockc              
   C   s^  d}|  d}| j dd}|% tjt|d | j dd}W d    n1 s(w   Y  W d    n1 s7w   Y  ||  krL|  krLdksOJ  J td}tjt|d | j dd W d    n1 slw   Y  td}tjt|d | j ddd 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    n1 sw   Y  W d    n1 sw   Y  |G tjt|d& tjt|d | j ddd	 W d    n1 sw   Y  W d    n1 sw   Y  W d    d S W d    d S 1 s(w   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   ZwarnsDeprecationWarningr   r   r   r   )rU   r   Zdep_msgr   r   r   r   r7   r7   r8   test_old_keyword_deprecated
  sN   
&

   $z/TestRenameParameter.test_old_keyword_deprecatedN)r\   r]   r^   r   r   r   r   r   Zfixturer   r   r7   r7   r7   r8   r      s    


r   c                   @   s^   e Zd Zdd Zdd Zedd Zeddd	ej	
d
eej	dg d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:   r;   r<   	propagate
nan_policyomitzThe input contains nan valuesr   raiseznan_policy must be one ofnan)r*   r   r   r   r   r   r3   )rU   r%   contains_nanr   msgr7   r7   r8   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gddgg}t|d rGJ t ddgdt jgg}t|d s[J d S )N)r:   r;   r<   r   r:   r;   r<   r=   )r*   r   r   r   )rU   data1data2data3data4Zdata5r7   r7   r8   test_contains_nan@  s   z%TestContainsNaNTest.test_contains_nanc                 C   s   t dddt jg}t|d rJ t jdddt jgdd}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 sPJ d S )	Nr:   r;   3r   object)r+   1r<   )r*   r   r   r   )rU   r   r   r   r   r7   r7   r8   test_contains_nan_with_stringsP  s   z2TestContainsNaNTest.test_contains_nan_with_strings	jax.numpy)JAX arrays do not support item assignmentreasonskip_xp_backendsr   )r   r   r   c           
      C   s0  t jd}|jdd}||}t||d}t j|d< t||d\}}|r(J ||ks.J |dkrTd}	tjt	|	d	 t||d W d    d S 1 sMw   Y  d S |d
kr~t
|s~d}	tjt	|	d	 t||d W d    d S 1 sww   Y  d S |dkrt||d\}}|sJ ||ksJ d S d S )Nl   }? )r;   r<   r=   rS   )xp)r:   r;   r:   r   r   zThe input contains...r   r   z%`nan_policy='omit' is incompatible...r   )r*   rK   r   asarrayr   r   r   r   r   r3   r   )
rU   r   r   r   Zx0r6   Zx_nanr   Znan_policy_outr   r7   r7   r8   test_array_api^  s4   

""
z"TestContainsNaNTest.test_array_apiN)r\   r]   r^   r   r   r   r   r   r   r   usefixturesr
   r   r   r7   r7   r7   r8   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 r7   )linesr7   r7   r8   mock_str~  s   z(test__rng_html_rewrite.<locals>.mock_str)np.random.default_rng()r   r   r   )r   )r   resrefr7   r7   r8   test__rng_html_rewrite}  s   
	r   c                    @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zej !d9ej j"ej #d:ed;fed;fed<fed;fed;fe	d;fe
d;fed;fed<fed<fed<fed<fed<fed<fed<fed<fed<fed<fed<fed<fed;fed;fed;fed;fed;fed;fgd=d> Z$d?S )@TestTransitionToRNGc                 K   *   t jd}tjj|jdddfi |S N   2Faj  )   r<   rS   r<   r*   rK   r   r   Zvqkmeans2rU   rY   r   r7   r7   r8   kmeans     zTestTransitionToRNG.kmeansc                 K   r   r   r   r   r7   r7   r8   r     r   zTestTransitionToRNG.kmeans2c                 K   s8   t jd}|d\}}}tj||fi |}||S )Nr   )r<   r#   )r*   rK   r   r   ZBarycentricInterpolator)rU   rY   r   x1Zx2y1fr7   r7   r8   barycentric  s   zTestTransitionToRNG.barycentricc                 K   s&   t jd}tj|ddfi |S )Nr   r#   r#   r<   )r*   rK   r   r   clarkson_woodruff_transformr   r7   r7   r8   r     s   z/TestTransitionToRNG.clarkson_woodruff_transformc                 K   s*   t jd}tjtj|dfi |jS )Nr   r<   )r*   rK   r   r   basinhoppingrosenr6   r   r7   r7   r8   r     r   z TestTransitionToRNG.basinhoppingc                 K   sD   t jd}t|d d |dd }|tj|fi |jS )Nr   r<   r#   )r*   rK   r   r   ZBoundsr   r6   )rU   ZfunrY   r   Zboundsr7   r7   r8   opt  s   "zTestTransitionToRNG.optc                 K      | j tjfi |S rT   )r   r   differential_evolutionrU   rY   r7   r7   r8   r        z*TestTransitionToRNG.differential_evolutionc                 K   r   rT   )r   r   dual_annealingr   r7   r7   r8   r     r   z"TestTransitionToRNG.dual_annealingc                 K   s4   t jd}|d}tjtjtj|fddi|S )Nr   r<   	directionrK   )r*   rK   r   r   
check_gradr   Z	rosen_der)rU   rY   r   r6   r7   r7   r8   r     s   
zTestTransitionToRNG.check_gradc                 K      t jdddi| S )Nr   density      ?)r   )r    random_arraytoarrayr   r7   r7   r8   r        z TestTransitionToRNG.random_arrayc                 K   r   Nr#   r   r   r   )r    rK   r   r   r7   r7   r8   rK     r   zTestTransitionToRNG.randomc                 K   r   r   )r    randr   r   r7   r7   r8   r     r   zTestTransitionToRNG.randc                 K   s*   t jd}|d}tjj|fi |S )Nr   r   )r*   rK   r   r    r   svds)rU   rY   r   Ar7   r7   r8   r     s   
zTestTransitionToRNG.svdsc                 K   s   t jjjdi | S )Nr<   )r<   )r!   	transformZRotationrK   Z	as_matrixr   r7   r7   r8   random_rotation  r   z#TestTransitionToRNG.random_rotationc                 K   s.   t jd}|d}tjtj|fi |jS Nr   rz   )r*   rK   r   r"   goodness_of_fitZlaplacepvaluerU   rY   r   r%   r7   r7   r8   r     s   
z#TestTransitionToRNG.goodness_of_fitc                 K   s8   t jd}t|d}dd }tj||fi |jS )Nr   r;   rz   c                 S   s   t j| |dt j||d S )N)axis)r*   mean)r6   yr   r7   r7   r8   	statistic  s    z7TestTransitionToRNG.permutation_test.<locals>.statistic)r*   rK   r   tupler"   permutation_testr   )rU   rY   r   r%   r   r7   r7   r8   r     s   z$TestTransitionToRNG.permutation_testc                 K   s0   t jd}|df}tj|t jfi |jS r   )r*   rK   r   r"   	bootstrapr   confidence_intervalr   r7   r7   r8   r     s   zTestTransitionToRNG.bootstrapc                 K   s6   t jd}|d\}}}tj||fd|i|jS )Nr   )r<   rz   control)r*   rK   r   r"   dunnettr   )rU   rY   r   r6   r   r  r7   r7   r8   r    s   zTestTransitionToRNG.dunnettc                 K   sl   dd }t jtj dtj dt jtj dtj dt jtj dtj dg}t jd|d|d|}|jS )Nc                 S   sB   t | d dt | d d   d| d d  t | d   S )Nr      r:   r;   g?r=   )r*   rf   )r6   r7   r7   r8   
f_ishigami  s   " z5TestTransitionToRNG.sobol_indices.<locals>.f_ishigamir;   )locscalei   )rQ   rF   distsr7   )r"   uniformr*   pisobol_indicesZfirst_order)rU   rY   r  r  r   r7   r7   r8   r
    s   z!TestTransitionToRNG.sobol_indicesc                 K   s   |dddi|}| dS )Ndr:   r=   r7   )rK   )rU   ZenginerY   Zqrngr7   r7   r8   
qmc_engine  s   
zTestTransitionToRNG.qmc_enginec                 K      | j tjjfi |S rT   )r  r"   qmcZHaltonr   r7   r7   r8   halton     zTestTransitionToRNG.haltonc                 K   r  rT   )r  r"   r  ZSobolr   r7   r7   r8   sobol  r  zTestTransitionToRNG.sobolc                 K   r  rT   )r  r"   r  ZLatinHypercuber   r7   r7   r8   latin_hypercube  r  z#TestTransitionToRNG.latin_hypercubec                 K   r  rT   )r  r"   r  ZPoissonDiskr   r7   r7   r8   poisson_disk  r  z TestTransitionToRNG.poisson_diskc                 K   s    t jjdgfi |}|dS )Nr   r=   )r"   r  ZMultivariateNormalQMCrK   rU   rY   Xr7   r7   r8   multivariate_normal_qmc  s   
z+TestTransitionToRNG.multivariate_normal_qmcc                 K   s$   t jjddgdfi |}|dS )Ng      ?r=   )r"   r  ZMultinomialQMCrK   r  r7   r7   r8   multinomial_qmc  s   
z#TestTransitionToRNG.multinomial_qmcc                 K   s<   t jd}t|d}tjdi |}tj|d|ijS )Nr   r   methodr7   )r*   rK   r   r   r"   ZPermutationMethodpearsonrr   )rU   rY   r   r%   r  r7   r7   r8   permutation_method  s   z&TestTransitionToRNG.permutation_methodc                 K   s@   t jd}t|d}tj| }tjdi |}|j|dS )Nr   r   )r  r7   )r*   rK   r   r   r"   r  ZBootstrapMethodr   )rU   rY   r   r%   r   r  r7   r7   r8   bootstrap_method  s
   
z$TestTransitionToRNG.bootstrap_methodr#   zmethod, arg_nameseedZrandom_statec                 C   s~  t jd  d}t j|}d}tjt|d || fi d|||i W d    n1 s.w   Y  t j|}|| |d}|| |d}t|| |jdv r`|| fi ||i}t|| d S t j	|}|| fi ||i}|| fi ||i}|jdv r|| fi |t j	|i}	t|	| || fi ||i}
t|
| d S t j| || fi |d i}t|| t|| d S )Nl   p_ z3got multiple values for argument now known as `rng`r   r   )r   >   r
  r  >   r  r  r  r  r  r  )
r*   rK   r  r   r   r   r   r   r\   rL   )rU   r  Zarg_namer  r   r   r   r   r   Zres1bZres2br7   r7   r8   test_rng_deterministic  s8   






z*TestTransitionToRNG.test_rng_deterministicN)%r\   r]   r^   r   r   r   r   r   r   r   r   r   r   rK   r   r   r   r   r   r   r  r
  r  r  r  r  r  r  r  r  r  r   r   	fail_slowslowr   r  r7   r7   r7   r8   r     sx    	
r   c                   @   s   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jded	d
dejdeeeeeeedejjdd ZdS )TestLazywherer:   r<   )Z	min_valueZ	max_valuei ʚ;l   c(	 r   r#   zignore::RuntimeWarningr   r   r   r   )n_arraysrng_seedr+   rb   r%   c              	      s  t j|d dd} |\}}	|^}
}ddi} t jt |d}t|} fdd|D }d	d
 }dd }tj	|}|j|
d|k}t
||||}t
||||d}tsit
||||}tkrztj||g|R  ^}}}||| |}||| || }ts||| |}tkr||	}||	}||	}t||dd t|| tst|| d S d S )Nr:   r   )Z
num_shapesZmin_sideZallow_subnormalF)r+   r.   elementsc              
      s&   g | ]}  tj|d qS ))r+   r.   )r   drawnpstarrays).0r.   r%   r+   r   r7   r8   
<listcomp>l  s    z,TestLazywhere.test_basic.<locals>.<listcomp>c                  W   s   t dd | D S )Nc                 s       | ]}|V  qd S rT   r7   r'  argr7   r7   r8   	<genexpr>p      z6TestLazywhere.test_basic.<locals>.f.<locals>.<genexpr>sumrX   r7   r7   r8   r   o  s   z#TestLazywhere.test_basic.<locals>.fc                  W   s   t dd | D d S )Nc                 s   r*  rT   r7   r+  r7   r7   r8   r-  s  r.  z7TestLazywhere.test_basic.<locals>.f2.<locals>.<genexpr>r;   r/  r1  r7   r7   r8   f2r  r  z$TestLazywhere.test_basic.<locals>.f2rS   )r2  gؗҬ<)Zrtol)r%  Zmutually_broadcastable_shapesr$  r   r&  r   floatr*   rK   r   r   r   Z
atleast_1dwhereZreshaper   r   )rU   r!  r"  r+   rb   r%   r   ZmbsZinput_shapesZresult_shapeZ
cond_shapeZshapesr#  	fillvalueZfloat_fillvaluer&  r   r2  r   Zcondr   r   r   Zref1Zref2Zref3r7   r(  r8   
test_basic[  sH   
	




zTestLazywhere.test_basicN)r\   r]   r^   r   Zintegersr!  r"  Zsampled_fromr*   Zfloat32rD   r+   Zfloatsrb   r%   r   r   r  filterwarningsr   r   r
   r   Zthread_unsafer6  r7   r7   r7   r8   r   T  s     


r   )Dmultiprocessingr   Zmultiprocessing.poolrs   r   rp   	fractionsr   numpyr*   Znumpy.testingr   r   r   r   rM   Zhypothesis.extra.numpyextrar%  Z
hypothesisr   r   r	   Zscipy.conftestr
   r   Zscipy._lib._array_apir   r   r   r   r   Zscipy._lib._utilr   r   r   r   r   r   r   r   r   r   r   Zscipyr   r   r   r   r    r!   r"   r   r   r  rH   rO   rc   ro   rq   rx   r   r   r   r   r   r   r   r7   r7   r7   r8   <module>   s>    4$
# :IR C