
    UgC?                        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j,        j-        Z-ej,        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:d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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 ]R}dD ]M}dD ]H}t           j        t           j        fD ]-}|ddd|ffD ]"}t          |           D ]} |||||           #.INSd S )	N
   c                 l   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        |           d S |dk    r)|j        dk    rt          |j
        j        |           d S d S |t          |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xs         Z/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/_lib/tests/test__util.pycheckz"test__aligned_zeros.<locals>.check   s<   ueU3445%e<<<=HUOO-EQ*6215=qAAA5)$$ 	5%11115(G444QWe$$$C<<AG('22222c\\vzz,g66666 z ]AG('22222,,    )	                      @   N)r   r6   r8      )r"   r#   Nr6   r7   r8   )r%   uint8float64range)niterr4   r   nr0   r&   r*   js           r3   test__aligned_zerosrE      s    E  . 3 > > 	> 	>A) > > h
3 > >E"#aAq\!2 > >!&u > >A!E%u====>>>>	>> >r5   c                     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 )Nr6   a)
r   r   typer%   randomRandomStateassert_raisesr/   	GeneratorPCG64)rsirgs     r3   test_check_random_staterP   =   s    
 Q

CcBI1222
S
!
!CcBI1222
T
"
"CcBI1222*0#666			RY__..	/	/B
R
 
 CcBI/00000r5   c                     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                      d S )Nr6   pool)r6   funciterablec                       e Zd ZddddZdS )0test_getfullargspec_no_self.<locals>._rv_genericr7   r8   Nr-   c                    d S N )selfrG   bcr-   argskwargss          r3   _rvsz5test_getfullargspec_no_self.<locals>._rv_generic._rvsX   s    4r5   r7   r8   )__name__
__module____qualname__r`   rZ   r5   r3   _rv_genericrV   W   s4        	 	 	 	 	 	 	 	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$QZ00G+vhdD"&*B0 0 1 1 1$QZ00G+vz&:D$&($4 4 5 5 5        []]F$V[11G+ooovx&,vhL L M M M M 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            d S # 1 swxY w Y   d S )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   Ys^^FfVnnG1AAJ#AFdNAK5 !!!
qq  
!
!Cg	|	$	$  qMM                 s   C##C'*C'c                      t          d          5 } |                     t          j        g d           d d d            d S # 1 swxY w Y   d S )Nr7   )r6   r7   r8   r9   )r   rq   mathro   )rh   s    r3   	test_poolr{   p   s    	a &A	dh%%%& & & & & & & & & & & & & & & & & &s   #A  A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            n# 1 swxY w Y   t          t                    5 } |t           j        |            d d d            n# 1 swxY w Y   t          |j        t          u            t!          d          5 }t          |j                  }t          |j        du            |                                 |                    t           j        |           }t	          t          |          |           d d d            d S # 1 swxY w Y   d S )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   sA   Ys^^FfVnnG	A (!aT#YY(((t#$$$
163''(((
$&'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
y	!	! W	"&&               GLJ&''' 
a 	)Aquu$%%%				 eeBFF##T#YY(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s7   BCCC*DDDA<GGGc                     t           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                                        } n# t          $ r Y d S w xY w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 d S )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      sG   
)


!
!C sd
C
C
CC6#;;!6#;;!9 sd
;
;
;C6#;;!6#;;!9 se
D
D
DC6#;;!6#;;!9 se
<
<
<C6#;;!6#;;!9i##%%    sd
C
C
CC6#;;!6#;;!9 sd
;
;
;C6#;;!6#;;!9 se
D
D
DC6#;;!6#;;!9 se
<
<
<C6#;;!6#;;!9s   2F 
FFc            	       8   e Zd Zej                            dd ej        d           ej        d           ej	        d          g          d             Z
ej                            dd ej	        dg           edd          g          d             Zd ZdS )	TestValidateIntrC   r9   c                 6    t          |d          }|dk    sJ d S )NrC   r9   )r   r[   rC   s     r3   test_validate_intz!TestValidateInt.test_validate_int   s"    !S!!Avvvvvvr5   g      @r6   c                     t          j        t          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )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CC 	" 	"!S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   :>>c                     t          j        t          d          5  t          ddd           d d d            d S # 1 swxY w Y   d S )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   s    ]: .; < < < 	& 	&"c1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   ;??N)rb   rc   rd   r   markparametrizer%   r?   int16arrayr   r   r   r   rZ   r5   r3   r   r      s        [S1hbhqkk828A;;"LMM  NM [S3!xx1~~"FGG" " HG"& & & & &r5   r   c                   r    e Zd Z edd          d             Z eddd          d             Zd Zd Zd	S )
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                 X   |                      d          }|                      d          }|                      d          }||cxk    r|cxk    rdk    sn J t          j        d          }t          j        t
          |          5  |                      d           d d d            n# 1 swxY w Y   t          j        d          }t          j        t
          |          5  |                      dd           d d d            n# 1 swxY w Y   t          j        t
          |          5  |                      dd           d d d            n# 1 swxY w Y   t          j        t
          |          5  |                      dd           d d d            d S # 1 swxY w 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   )r[   res1res2res3messages        r3   test_old_keyword_still_acceptedz3TestRenameParameter.test_old_keyword_still_accepted   s   ..r22..2.66..2.66t))))t))))r)))))) )LMM]9G444 	; 	;++r+:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; )GHH]9G444 	8 	8++BB+777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]9G444 	8 	8++BB+777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]9G444 	< 	<+++;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<sH   	B,,B03B0&D

DD0EEE:FF#&F#c                    d}|                      d          }|                      d          }t          j        t          |          5  |                      d          }d d d            n# 1 swxY w Y   ||cxk    r|cxk    rdk    sn J t	          j        d          }t          j        t          |          5  |                      d           d d d            n# 1 swxY w Y   t	          j        d          }t          j        t          |          5  |                      dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        t          |          5  |                      dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        t          |          5  |                      dd	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY 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   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2\,G<<< 	7 	7..2.66D	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7t))))t))))r)))))) )HII]9G444 	7 	7''2'666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
 )CDD]9G444 	4 	4'''333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]9G444 	4 	4/w???	4 	4'''333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 ]9G444 	8 	8/w???	8 	8''BB'777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   	A,,A03A0>C!!C%(C%D??EE%F<F%F<%F)	)F<,F)	-F<<G G "H:>H"H:"H&	&H:)H&	*H::H>H>N)rb   rc   rd   r   r   r   r   r   rZ   r5   r3   r   r      s        
 ue$$  %$ ue999  :9< < <*8 8 8 8 8r5   r   c                       e Zd Zd Zd Zed             Z eddg          ej	        
                    d          eej	                            dg d	          d
                                                 ZdS )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            n# 1 swxY w Y   d
}t	          j        t          |          5  t          |d           d d d            d S # 1 swxY w Y   d S )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   xAq"&)**#0+#N#N#N j[((((#0&#I#I#I jV####-]:S111 	4 	4$73333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 *]:S111 	2 	2$51111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s$    BB"%B"C%%C),C)c                 0   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 d S )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26*++U##A&&&&"&!Q/00U##A&&&&1a&1a&)** ''****1a&1bf+.//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 d S )	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RV,-- ''****!QRV,H===U##A&&&&3(QK011 ''****3(QK0AAAU##A&&&&&&r5   	jax.numpy)JAX arrays do not support item assignmentreasonsskip_xp_backendsr   )r   r   r   c                    t           j                            d          }|                    d          }|                    |          }t	          ||          }t           j        |d<   t          ||          \  }}|rJ ||k    sJ |dk    rId}	t          j        t          |		          5  t          ||           d d d            d S # 1 swxY w Y   d S |d
k    rXt          |          sId}	t          j        t          |		          5  t          ||           d d d            d S # 1 swxY w Y   d S |dk    r t          ||          \  }}|sJ ||k    sJ d S d S )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%    i##O44ZZYZ''JJrNNb!!!g'4Q:'N'N'N$n++++  -Gz999 < <e
;;;;< < < < < < < < < < < < < < < < < <6!!(2,,!=Gz999 < <e
;;;;< < < < < < < < < < < < < < < < < <;&&+8*,. ,. ,.(L.!Z////	 '& 0/s$   .CCCD++D/2D/N)rb   rc   rd   r   r   r   r   r   r   r   usefixturesr   r   r   rZ   r5   r3   r   r      s        2 2 2&' ' '  ' ' ' kJKM M M[/00[\+I+I+IJJ0 0 KJ  10M M
0 0 0r5   r   c                  R    d }  t          |                       }g d}||k    sJ d S )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  sM       &
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                            d          ej                            d           ed	d
g          ej                            d          e eeeeee          d                                                                         ZdS )TestLazywherer6   r8   )	min_value	max_valuei ʚ;l   c(	 r   r   zignore::RuntimeWarningr   r   r   r   )n_arraysrng_seedr&   rh   r    c           	      n   t          j        |dz   d          }                    |          \  }}	|^}
}                                        t          j        t                                                    }fd|D             }d }d }t          j                            |          }                    |                    |
          |k              }t          ||||          }t          ||||	          }t          k    rt          j
        ||g|R  ^}}}                    | || |          }                    | ||  ||           }t          k    r`|                    |	          }|                    |	          }                    |          d
         }                    |          d
         }t          |t                              g                                t          ||d           t!          |j        |j                   t!          |j        |j                   t          |t                              g                                t'          ||           t!          |j        |j                   t!          |j        |j                   d S )Nr6   r   )
num_shapesmin_sider&   r*   c           
          g | ]>}                                         t          j        |                               ?S )r   )r   drawnpstarrays).0r*   r    r&   r   s     r3   
<listcomp>z,TestLazywhere.test_basic.<locals>.<listcomp>  sP     ' ' ' **TYYt{e'L'L'LMMNN ' ' 'r5   c                  4    t          d | D                       S )Nc              3      K   | ]}|V  d S rY   rZ   r   args     r3   	<genexpr>z6TestLazywhere.test_basic.<locals>.f.<locals>.<genexpr>  "      ++ss++++++r5   sumr^   s    r3   fz#TestLazywhere.test_basic.<locals>.f  s    ++d++++++r5   c                  :    t          d | D                       dz  S )Nc              3      K   | ]}|V  d S rY   rZ   r  s     r3   r  z7TestLazywhere.test_basic.<locals>.f2.<locals>.<genexpr>  r  r5   r7   r  r  s    r3   f2z$TestLazywhere.test_basic.<locals>.f2  s$    ++d+++++a//r5   rW   )r  rZ   gؗҬ<)rtol)r   mutually_broadcastable_shapesr   r   r   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   condr   r   ref1ref2s      ` ``               r3   
test_basiczTestLazywhere.test_basic  s    0HQJ:;= = =%)YYs^^"l*
VJJtyy5)P)P)PQQRR	' ' ' ' ' '%' ' '	, 	, 	,	0 	0 	0 i##H--zz#****559::$955$b111 88')}T9'Nv'N'N'N$D)fxxaaj)44xxaaj""f+6688<<--D<<--D::d##B'D::d##B'D4bjjnn--...d////TZ,,,TZ,,,4bjjnn--...d###TZ,,,TZ,,,,,r5   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:NNNH#J#RZ$<==E
A333A:?D[1[ 899kJKM M M[/00
UHxuMMM*- *- NM  10M M :9 *- *- *-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 D D D D D D D4 4 4 4 4 4 4 4 4 4 4 4L L L L L L L L L L L L L L L L L L L L L L L L L L
 ;/   >  >  >F1 1 1"M M M&  & & &
) ) )@7  7  7 t& & & & & & & &$<8 <8 <8 <8 <8 <8 <8 <8~O0 O0 O0 O0 O0 O0 O0 O0d  *8- 8- 8- 8- 8- 8- 8- 8- 8- 8-r5   