
    tKgC?                        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c 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 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+ ejX                  jZ                  Z-ejX                  j\                  d
        Z/d Z0d Z1d Z2d Z3d Z4d Z5 G d d      Z6 G d d      Z7 G d d      Z8d Z9 G d d      Z:y)    )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copy)_aligned_zeroscheck_random_state
MapWrappergetfullargspec_no_selfFullArgSpecrng_integers_validate_int_rename_parameter_contains_nan_rng_html_rewrite
_lazywherec                      d} d }dD ]]  }dD ]V  }dD ]O  }t         j                  t         j                  fD ]*  }|ddd|ffD ]  }t        |       D ]  } |||||         , Q X _ y )	N
   c                 t   t        | |||f      }t        | |||      }|t        j                  |      j                  }t        |j                  d   d   |z  d       t        | d      rt        |j                  | |       nt        |j                  | f|       t        |j                  |       |dk(  r!t        |j                  j                  |       y |dk(  r1|j                  dkD  r!t        |j                  j                  |       y y |!t        |j                  j                  |       y 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xs         _/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/_lib/tests/test__util.pycheckz"test__aligned_zeros.<locals>.check   s    ueU345%e<=HHUO--EQ**6215=qA5)$%15(G4QWWe$C<AGG(('2c\vvz,,g6  ]AGG(('2,    )	                      @   N)r   r6   r8      )r"   r#   Nr6   r7   r8   )r%   uint8float64range)niterr4   r   nr0   r&   r*   js           r3   test__aligned_zerosrE      sv    E. 3A) hh

3E"#aAq\!2!&uA!%u= ". "3 4 *  3r5   c                  d   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                  j                  t        j                  j                               }t        |      } t        t        |       t        j                  j                         y )Nr6   a)
r   r   typer%   randomRandomStateassert_raisesr/   	GeneratorPCG64)rsirgs     r3   test_check_random_staterP   =   s    
 Q
CcBII112
S
!CcBII112
T
"CcBII112*0#6			RYY__.	/B
R
 CcBII//0r5   c                  l   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      } |       }t        |j                        }t        |t	        g dd	d
ddgdd ii              y )Nr6   pool)r6   funciterablec                       e Zd ZddddZy)0test_getfullargspec_no_self.<locals>._rv_genericNr-   c                     y N )selfrG   bcr-   argskwargss          r3   _rvsz5test_getfullargspec_no_self.<locals>._rv_generic._rvsX   s    r5   r7   r8   )__name__
__module____qualname__r`   rZ   r5   r3   _rv_genericrV   W   s    	 	r5   re   )rG   r\   r]   r^   r_   ra   r-   )r   r   __init__r   r   __call__r`   )pargspecre   rv_objs       r3   test_getfullargspec_no_selfrk   N   s    1A$QZZ0G+vhdD"&*B0 1$QZZ0G+vz&:D$&($4 5  ]F$V[[1G+ovx&,vhL Mr5   c                     t        j                  d      } t        j                  |       }t        d      }t	        |j
                  t        u        t	        |j                  d u        t	        |j                  du        t         |t         j                  |             }t        ||       t        t              5  t        d      }d d d        y # 1 sw Y   y xY w)N      $@r6   Fr   )r%   arangesinr   r   _mapfuncmaprR   	_own_poollistr   rK   RuntimeError)in_argout_argrh   outs       r3   test_mapwrapper_serialrx   a   s    YYs^FffVnG1AAJJ#AFFdNAKK5 !
q 
!Cg	|	$qM 
%	$	$s   :CCc                      t        d      5 } | j                  t        j                  g d       d d d        y # 1 sw Y   y xY w)Nr7   )r6   r7   r8   r9   )r   rq   mathro   )rh   s    r3   	test_poolr{   p   s'    	aA	dhh% 
s	   #8Ac                  `   t        j                  d      } t        j                  |       }t        d      5 } |t         j                  |       }t	        t        |      |       t        |j                  du        t        t        |j                  t                     t        |j                  d u       d d d        t        t              5 } t         j                  |        d d d        t        j                  t        u        t!        d      5 }t        |j"                        }t        |j                  du        |j%                          |j#                  t         j                  |       }t	        t        |      |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nrm   r7   TF)r%   rn   ro   r   r   rs   r   rr   
isinstancerR   PWLrp   rK   	ExceptionrH   r/   r   rq   close)ru   rv   rh   rw   excinfoqs         r3   test_mapwrapper_parallelr   u   s&   YYs^FffVnG	A!T#Y(t#$
1663'(

$&' 
 
y	!W	"&&& 
" GLLJ&' 
aAquuu$%		 eeBFFF#T#Y( 
! 
 
"	! 
s%   A>FFA2F$FF!$F-c                     t         j                  j                         } t        | dddd      }t        j                  |      dk(  sJ t        j
                  |      dk(  sJ |j                  dk(  sJ t        | ddd      }t        j                  |      dk(  sJ t        j
                  |      dk(  sJ |j                  dk(  sJ t        | dddd	      }t        j                  |      d
k(  sJ t        j
                  |      dk(  sJ |j                  dk(  sJ t        | ddd	      }t        j                  |      d
k(  sJ t        j
                  |      dk(  sJ |j                  dk(  sJ 	 t         j                  j                         } t        | dddd      }t        j                  |      dk(  sJ t        j
                  |      dk(  sJ |j                  dk(  sJ t        | ddd      }t        j                  |      dk(  sJ t        j
                  |      dk(  sJ |j                  dk(  sJ t        | dddd	      }t        j                  |      d
k(  sJ t        j
                  |      dk(  sJ |j                  dk(  sJ t        | ddd	      }t        j                  |      d
k(  sJ t        j
                  |      dk(  sJ |j                  dk(  sJ y # t        $ r Y y w xY w)Nr7      d   T)lowhighr-   endpoint)r   )r   r-   r   r   Fr9   )	r%   rI   rJ   r   maxminr*   default_rngAttributeError)rngarrs     r3   test_rng_integersr      s   
))


!C sd
CC66#;!66#;!99 sd
;C66#;!66#;!99 se
DC66#;!66#;!99 se
<C66#;!66#;!99ii##%
 sd
CC66#;!66#;!99 sd
;C66#;!66#;!99 se
DC66#;!66#;!99 se
<C66#;!66#;!993  s   2K# #	K/.K/c            	       8   e Zd Zej                  j                  dd ej                  d       ej                  d       ej                  d      g      d        Z
ej                  j                  dd ej                  dg       edd      g      d        Zd Zy)	TestValidateIntrC   r9   c                 *    t        |d      }|dk(  sJ y )NrC   r9   )r   r[   rC   s     r3   test_validate_intz!TestValidateInt.test_validate_int   s    !S!Avvr5   g      @r6   c                 |    t        j                  t        d      5  t        |d       d d d        y # 1 sw Y   y xY w)Nzn must be an integermatchrC   )pytestr   	TypeErrorr   r   s     r3   test_validate_int_badz%TestValidateInt.test_validate_int_bad   s(    ]]9,BC!S! DCCs   2;c                 ~    t        j                  t        d      5  t        ddd       d d d        y # 1 sw Y   y xY w)Nz$n must be an integer not less than 0r   rC   r   )r   r   r/   r   )r[   s    r3   test_validate_int_below_minz+TestValidateInt.test_validate_int_below_min   s1    ]]: .; <"c1%< < <s   3<N)rb   rc   rd   r   markparametrizer%   r?   int16arrayr   r   r   r   rZ   r5   r3   r   r      s    [[S1hbhhqk8288A;"LM N [[S3!x1~"FG" H"&r5   r   c                   X    e Zd Z edd      d        Z eddd      d        Zd Zd Zy	)
TestRenameParameteroldnewc                     |S rY   rZ   r[   r   s     r3   old_keyword_still_acceptedz.TestRenameParameter.old_keyword_still_accepted       
r5   z1.9.0)dep_versionc                     |S rY   rZ   r   s     r3   old_keyword_deprecatedz*TestRenameParameter.old_keyword_deprecated   r   r5   c                    | j                  d      }| j                  d      }| j                  d      }||cxk(  r|cxk(  rdk(  sJ  J t        j                  d      }t        j                  t
        |      5  | j                  d       d d d        t        j                  d      }t        j                  t
        |      5  | j                  dd       d d d        t        j                  t
        |      5  | j                  dd       d d d        t        j                  t
        |      5  | j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)	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   )r[   res1res2res3messages        r3   test_old_keyword_still_acceptedz3TestRenameParameter.test_old_keyword_still_accepted   s1   ..r2..2.6..2.6t)t)r))))) ))LM]]9G4++r+: 5 ))GH]]9G4++BB+7 5]]9G4++BB+7 5]]9G4+++; 54 54
 544444s0   <EE>E*5E6EE'*E36E?c                 ,   d}| j                  d      }| j                  d      }t        j                  t        |      5  | j                  d      }d d d        ||cxk(  rcxk(  rdk(  sJ  J t	        j
                  d      }t        j                  t        |      5  | j                  d       d d d        t	        j
                  d      }t        j                  t        |      5  | j                  dd       d d d        t        j                  t        |      5  t        j                  t        |      5  | j                  dd       d d d        d d d        t        j                  t        |      5  t        j                  t        |      5  | j                  dd	       d d d        d d d        y # 1 sw Y   nxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY w# 1 sw Y   y xY w)
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   )r[   dep_msgr   r   r   r   s         r3   test_old_keyword_deprecatedz/TestRenameParameter.test_old_keyword_deprecated  s    @**2.**r*2\\,G<..2.6D =t)t)r))))) ))HI]]9G4''2'6 5
 ))CD]]9G4'''3 5]]9G4/w?'''3 @ 5 ]]9G4/w?''BB'7 @ 54# =< 54 54 @? 54 @? 54sl   G "G-G$G2 G&G2?H
G>/H
 G
GG#&G/	+G22G;>H	H

HN)rb   rc   rd   r   r   r   r   r   rZ   r5   r3   r   r      sD    
 ue$ % ue9 :<*8r5   r   c                       e Zd Zd Zd Zed        Z eddg      ej                  j                  d      eej                  j                  dg d	      d
                             Zy)TestContainsNaNTestc                    t        j                  dddt         j                  g      }t        |d      \  }}|sJ |dk(  sJ t        |d      \  }}|sJ |dk(  sJ d}t	        j
                  t        |      5  t        |d	       d d d        d
}t	        j
                  t        |      5  t        |d       d d d        y # 1 sw Y   =xY w# 1 sw Y   y xY w)Nr6   r7   r8   	propagate
nan_policyomitzThe input contains nan valuesr   raiseznan_policy must be one ofnan)r%   r   r   r   r   r   r/   )r[   r    contains_nanr   msgs        r3   test_policyzTestContainsNaNTest.test_policy"  s    xxAq"&&)*#0+#N j|[(((#0&#I j|V###-]]:S1$73 2 *]]:S1$51 21	 21 21s   ;C.CCCc                    t        j                  g d      }t        |      d   rJ t        j                  dddt         j                  g      }t        |      d   sJ t        j                  t         j                  ddt         j                  g      }t        |      d   sJ t        j                  ddgddgg      }t        |      d   rJ t        j                  ddgdt         j                  gg      }t        |      d   sJ y )N)r6   r7   r8   r   r6   r7   r8   r9   )r%   r   r   r   )r[   data1data2data3data4data5s         r3   test_contains_nanz%TestContainsNaNTest.test_contains_nan5  s    # '***!Q266*+U#A&&&"&&!Q/0U#A&&&1a&1a&)* '***1a&1bff+./U#A&&&r5   c                    t        j                  dddt         j                  g      }t        |      d   rJ t        j                  dddt         j                  gd      }t        |      d   sJ t        j                  ddgdt         j                  gg      }t        |      d   rJ t        j                  ddgdt         j                  ggd      }t        |      d   sJ y )	Nr6   r7   3r   object)r&   1r8   )r%   r   r   r   )r[   r   r   r   r   s        r3   test_contains_nan_with_stringsz2TestContainsNaNTest.test_contains_nan_with_stringsE  s    !QRVV,- '***!QRVV,H=U#A&&&3(QK01 '***3(QK0AU#A&&&r5   	jax.numpy)JAX arrays do not support item assignmentreasonsskip_xp_backendsr   )r   r   r   c                 j   t         j                  j                  d      }|j                  d      }|j                  |      }t	        ||      }t         j
                  |d<   t        ||      \  }}|rJ ||k(  sJ |dk(  r4d}	t        j                  t        |		      5  t        ||       d d d        y |d
k(  r?t        |      s4d}	t        j                  t        |		      5  t        ||       d d d        y |dk(  rt        ||      \  }}|sJ ||k(  sJ y y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nl   }? )r7   r8   r9   rW   )xp)r6   r7   r6   r   r   zThe input contains...r   r   z%`nan_policy='omit' is incompatible...r   )r%   rI   r   asarrayxp_copyr   r   r   r   r/   r   )
r[   r   r   r   x0r2   x_nanr   nan_policy_outr   s
             r3   test_array_apiz"TestContainsNaNTest.test_array_apiS  s    ii##O4ZZYZ'JJrNb!g'4Q:'N$n+++ -Gz9e
; :96!(2,=Gz9e
; :9;&+8*,.(L.<!Z///	 ' :9 :9s    D$D)D&)D2N)rb   rc   rd   r   r   r   r   r   r   r   usefixturesr   r   r   rZ   r5   r3   r   r      s~    2&'  ' ' kJKM[[/0[[\+IJ0 K  1M
0r5   r   c                  @    d }  t        |              }g d}||k(  sJ y )Nc                      g d} | S )N)znp.random.default_rng(8989843)np.random.default_rng(seed)z8np.random.default_rng(0x9a71b21474694f919882289dc1559ca) bob rZ   )liness    r3   mock_strz(test__rng_html_rewrite.<locals>.mock_strs  s    
 r5   )np.random.default_rng()r   r   r   )r   )r   resrefs      r3   test__rng_html_rewriter   r  s.     &
H
%
'CC #::r5   c                      e Zd Z ej                  dd      Z ej                  dd      Z ej                  ej                  ej                  f      Z ej                  dd      Z ej                         Zej                   j#                  d      ej                   j%                  d       ed	d
g      ej                   j)                  d      e eeeeee      d                                           Zy)TestLazywherer6   r8   )	min_value	max_valuei ʚ;l   c(	 r   r   zignore::RuntimeWarningr   r   r   r   )n_arraysrng_seedr&   rh   r    c                 J   t        j                  |dz   d      }|j                  |      \  }}	|^}
}|j                  |j                  t        j                  |t                                 }|D cg c]7  }|j                  |j                  t        j                  ||                  9 }}d }d }t        j                  j                  |      }|j                  |j                  |
      |kD        }t        ||||      }t        ||||      }|t        k(  rt        j                  ||g| ^}}}|j                  | || |      }|j                  | ||  ||       }|t        k(  rJ|j                  |	      }|j                  |	      }|j                  |      d	   }|j                  |      d	   }t        |t        |j                  g                    t        ||d
       t!        |j"                  |j"                         t!        |j$                  |j$                         t        |t        |j                  g                    t'        ||       t!        |j"                  |j"                         t!        |j$                  |j$                         y c c}w )Nr6   r   )
num_shapesmin_side)r&   r*   c                  &    t        d | D              S )Nc              3       K   | ]  }|  y wrY   rZ   .0args     r3   	<genexpr>z6TestLazywhere.test_basic.<locals>.f.<locals>.<genexpr>       +dssd   sumr^   s    r3   fz#TestLazywhere.test_basic.<locals>.f  s    +d+++r5   c                  ,    t        d | D              dz  S )Nc              3       K   | ]  }|  y wrY   rZ   r   s     r3   r   z7TestLazywhere.test_basic.<locals>.f2.<locals>.<genexpr>  r   r   r7   r  r  s    r3   f2z$TestLazywhere.test_basic.<locals>.f2  s    +d++a//r5   rW   )r  rZ   gؗҬ<)rtol)npstmutually_broadcastable_shapesdrawr   arraystupler%   rI   r   r   
atleast_1dwherereshaper}   rH   r   r   r*   r&   r   )r[   r   r   r&   rh   r    r   mbsinput_shapesresult_shape
cond_shapeshapes	fillvaluer*   r  r  r  r   condr   r   ref1ref2s                          r3   
test_basiczTestLazywhere.test_basic  s(    00HQJ:;=%)YYs^"l*
VJJtyy5)PQR	%'%e **TYYt{{e'LMN% 	 '	,	0 ii##H-zz#****59:$95$b1 8')}}T9'Nv'N$D)fxxaj)4xxaj"f+68<<-D<<-D::d#B'D::d#B'D4bjjn-.d/TZZ,TZZ,4bjjn-.d#TZZ,TZZ,I's   4<J N)rb   rc   rd   r	   integersr   r   sampled_fromr%   float32r@   r&   floatsrh   r    r   r   	fail_slowfilterwarningsr   r   r   r   r  rZ   r5   r3   r   r     s    "z""Q!<H"z""Z:NH#J##RZZ$<=E
A3A:??D[[1[[ 89kJKM[[/0
HxuM*- N  1M : *-r5   r   );multiprocessingr   multiprocessing.poolr~   r   rz   	fractionsr   numpyr%   numpy.testingr   r   r   r   rK   hypothesis.extra.numpyextrar	  
hypothesisr   r	   r
   scipy.conftestr   r   scipy._lib._array_apir   r   r   r   r   scipy._lib._utilr   r   r   r   r   r   r   r   r   r   r   r   r   slowrE   rP   rk   rx   r{   r   r   r   r   r   r   r   rZ   r5   r3   <module>r-     s      , 	    /  * % % ; ; D4 4L L L L
 ;;//   >  >F1"M&&
)@7 t& &$<8 <8~O0 O0d*8- 8-r5   