
    Tir]                        d dl mZ d dlmZ d dl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Z d dl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#c m$Z% d d	l&m'Z' d d
l(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/  e'e           ej0        j1        d             Z2d Z3d Z4d Z5d Z6d Z7e!dd            Z8d Z9d Z: G d d          Z; G d d          Z< G d d          Z=d Z> G d d          Z?dS )    )PoolN)Fraction)assert_equalassert_)raises)skip_xp_invalid_arg)xp_assert_equalis_numpy)_aligned_zeroscheck_random_state
MapWrappergetfullargspec_no_selfFullArgSpecrng_integers_validate_int_rename_parameter_contains_nan_rng_html_rewrite_workers_wrapper)lazy_xp_function)clusterinterpolatelinalgoptimizesparsespatialstatsc                      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         s/var/www/development/aibuddy-work/election-extract/venv/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   r8   r:      )r$   r%   Nr8   r9   r:   )r'   uint8float64range)niterr6   r!   nr2   r(   r,   js           r5   test__aligned_zerosrG      s    E  . 3 > > 	> 	>A) > > h
3 > >E"#aAq\!2 > >!&u > >A!E%u====>>>>	>> >r7   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 )Nr8   a)
r   r   typer'   randomRandomStateassert_raisesr1   	GeneratorPCG64)rsirgs     r5   test_check_random_staterR   ?   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0r7   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 )Nr8   pool)r8   funciterablec                       e Zd ZddddZdS )0test_getfullargspec_no_self.<locals>._rv_genericr9   r:   Nr/   c                    d S N )selfrI   bcr/   argskwargss          r5   _rvsz5test_getfullargspec_no_self.<locals>._rv_generic._rvsZ   s    4r7   r9   r:   )__name__
__module____qualname__rb   r\   r7   r5   _rv_genericrX   Y   s4        	 	 	 	 	 	 	 	r7   rg   )rI   r^   r_   r`   ra   rc   r/   )r   r   __init__r   r   __call__rb   )pargspecrg   rv_objs       r5   test_getfullargspec_no_selfrm   P   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r7   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      $@r8   Fr   )r'   arangesinr   r   _mapfuncmaprT   	_own_poollistr   rM   RuntimeError)in_argout_argrj   outs       r5   test_mapwrapper_serialrz   c   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 )Nr9   )r8   r9   r:   r;   )r   rs   mathrq   )rj   s    r5   	test_poolr}   r   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 )Nro   r9   TF)r'   rp   rq   r   r   ru   r   rt   
isinstancerT   PWLrr   rM   	ExceptionrJ   r1   r   rs   close)rw   rx   rj   ry   excinfoqs         r5   test_mapwrapper_parallelr   w   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r8   c           	          |J t          |t                    sJ t          j        t	           |t          j        | |z                                S r[   )r   r   r'   arrayru   rq   )r4   r^   workerss      r5   user_of_workersr      sN    gz*****8DQ//00111r7   c                     t          j        dt           j                  } t          j        | dz            }t	          d          5 }t          | |j        d          }t          ||           d d d            n# 1 swxY w Y   t          | d d          }t          ||           t          | dd          }t          ||           t          j	        t
          d          }t           ||           |           t	          d          5 }t          j	        t
          d|j                  }t           ||           |           d d d            d S # 1 swxY w Y   d S )Nr          @r9   )r   r^   )r^   )r^   r   )
r'   linspacepirq   r   r   rs   r   	functoolspartial)arrreqrj   vpart_fs        r5   test__workers_wrapperr      s   
+a

C
&s

C	a AC!444Q               	TQ///ACQ!,,,AC !444Fc"""	a 'A"?aGGGVVC[[#&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's$   (A::A>A>;EEE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 )Nr9      d   T)lowhighr/   endpoint)r   )r   r/   r   r   Fr;   )	r'   rK   rL   r   maxminr,   default_rngAttributeError)rngr   s     r5   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 )	TestValidateIntrE   r;   c                 6    t          |d          }|dk    sJ d S )NrE   r;   )r   r]   rE   s     r5   test_validate_intz!TestValidateInt.test_validate_int   s"    !S!!Avvvvvvr7         @r8   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matchrE   )pytestr   	TypeErrorr   r   s     r5   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   rE   r   )r   r   r1   r   r]   s    r5   test_validate_int_below_minz+TestValidateInt.test_validate_int_below_min   s    ]: .; < < < 	& 	&"c1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   ;??N)rd   re   rf   r   markparametrizer'   rA   int16r   r   r   r   r   r\   r7   r5   r   r      s        [S1hbhqkk828A;;"LMM  NM [S3!xx1~~"FGG" " HG"& & & & &r7   r   c                       e Zd Z edd          d             Z eddd          d             Zd Zej        d             Z	d	 Z
d
S )TestRenameParameteroldnewc                     |S r[   r\   r]   r   s     r5   old_keyword_still_acceptedz.TestRenameParameter.old_keyword_still_accepted      
r7   z1.9.0)dep_versionc                     |S r[   r\   r   s     r5   old_keyword_deprecatedz*TestRenameParameter.old_keyword_deprecated  r   r7   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        r5   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l m}  |            S )Nr   )Lock)	threadingr   )r]   r   s     r5   
kwarg_lockzTestRenameParameter.kwarg_lock$  s    """"""tvvr7   c                 *   d}|                      d          }|                      d          }|5  t          j        t          |          5  |                      d          }d d d            n# 1 swxY w Y   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   |5  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   d d d            n# 1 swxY w Y   |5  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   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]   r   dep_msgr   r   r   r   s          r5   test_old_keyword_deprecatedz/TestRenameParameter.test_old_keyword_deprecated)  sG    @**2..**r*22 	? 	?0@@@ ? ?6626>>D? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 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 	< 	<y888 < <L!37CCC< < ///;;;< < < < < < < < < < < < < < < < < < < < < < < < < < < < < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<
  	@ 	@y888 @ @L!37CCC@ @//BB/???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s  BA/#B/A3	3B6A3	7BB
B
C;;C?C?5EE E&G0GG6GGG	G
GG0G	G0 G	!G00G47G4=JI05II0II0 I!I0$J0I4	4J7I4	8JJJN)rd   re   rf   r   r   r   r   r   fixturer   r   r\   r7   r5   r   r     s        
 ue$$  %$ ue999  :9< < <* ^  ^@ @ @ @ @r7   r   c                      e Zd Zd Zd Zed             Zej        	                    dd          ej        
                    dg d          d	                         Zej        	                    d
d          ej        	                    dd          ej        	                    dd          ej        	                    dd          d                                                 ZdS )TestContainsNaNc                    t          j        dddt           j        g          }t          |          sJ t          |d          sJ t          |d          sJ t          |d d                   rJ t          |d d         d          rJ t          |d d         d          rJ t	          j        t          d          5  t          |d	           d d d            n# 1 swxY w Y   t          |d d         d	          rJ t	          j        t          d
          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr8   r9   r:   	propagate)
nan_policyomitThe input contains nan valuesr   raiseznan_policy must be one ofnan)r'   r   r   r   r   r   r1   )r]   r"   s     r5   test_policyzTestContainsNaN.test_policyK  s   xAq"&)**T"""""Tk::::::Tf555555 bqb***** bqbkBBBBBB bqbf======]:-LMMM 	4 	4$73333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 bqbg>>>>>>]:-HIII 	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$   C""C&)C&#EE	Ec                 v   t          t          j        g t                              rJ t          t          j        g d                    rJ t          t          j        ddgddgg                    rJ t          t          j        g d                    rJ t          t          j        g d                    rJ t          t          j        d	d
t          j        g                    sJ t          t          j        d	dt          j        g                    sJ t          t          j        t          j        dt          j        g                    sJ t          t          j        d	dgddgg                    rJ t          t          j        d	dgdt          j        gg                    sJ d S )Nr(   )r8   r9   r:   r8   r9   r:   r;   )      ?r         @)r                  @r   r   r   r   r   r   )r   r'   r   floatr   r   s    r5   test_contains_nanz!TestContainsNaN.test_contains_nan\  s    "E!:!:!:;;;;; !)))!4!455555 Aq6Aq6*:!;!;<<<<< ,,,!7!788888 ---!8!899999RXr3&78899999RXr2rv&67788888RXrvr26&:;;<<<<< B8b"X*>!?!?@@@@@RXBx"bf&>??@@@@@@@r7   c                    t          j        dddt           j        g          }t          |          rJ t          j        dddt           j        gd          }t          |          sJ t          j        ddgdt           j        gg          }t          |          rJ t          j        ddgdt           j        ggd          }t          |          sJ d S )Nr8   r9   3objectr   1r:   )r'   r   r   r   )r]   data1data2data3data4s        r5   test_contains_nan_with_stringsz.TestContainsNaN.test_contains_nan_with_stringsl  s    !QRV,-- '''''!QRV,H===U#####3(QK011 '''''3(QK0AAAU#######r7   Tzlazy backends tested separately)
eager_onlyreasonr   )r   r   r   c                    t           j                            d          }|                    d          }|                    |          }t	          ||          rJ t          j        |          d                             t           j                  }|dk    rFt          j
        t          d          5  t	          ||           d d d            d S # 1 swxY w Y   d S |dk    rht          |          sYt          j
        t          d	          5  t	          ||           d d d            n# 1 swxY w Y   t	          ||d
          sJ d S |dk    rt	          ||          sJ d S d S )N   }? r9   r:   r;   rY   r8   r9   r8   r   r   r   r   z!nan_policy='omit' is incompatibleTxp_omit_okayr   )r'   rK   r   asarrayr   xpxatsetr   r   r   r1   r
   )r]   xpr   r   x0r4   s         r5   test_array_apizTestContainsNaN.test_array_apiz  s    i##O44ZZYZ''JJrNN J/////F1IIg""26**  z1PQQQ - -a,,,- - - - - - - - - - - - - - - - - -6!!(2,,!z1TUUU - -a,,,- - - - - - - - - - - - - - - JTBBBBBBBB;&& J///// '&//s$   5CCCD--D14D1numpyzlazy backends only)r   cupyarray_api_stricttorchc                 v   t           j                            d          }|                    d          }|                    |          }t	          t          |          |                    d                     t	          t          |d          |                    d                     t	          t          |dd          |                    d                     d	}t          j        t          |
          5  t          |d           d d d            n# 1 swxY w Y   t          j        t          |
          5  t          |d           d d d            n# 1 swxY w Y   t          j
        |          d                             t           j                  }t	          t          |          |                    d                     t	          t          |d          |                    d                     t	          t          |dd          |                    d                     t          j        t          |
          5  t          |d           d d d            n# 1 swxY w Y   t          j        t          |
          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr   r   rY   Fr   r   Tr   znot supported for lazy arraysr   r   r   )r'   rK   r   r   r	   r   r   r   r   r   r   r   r   )r]   r   r   r   r4   r   s         r5   test_array_api_lazyz#TestContainsNaN.test_array_api_lazy  sG   
 i##O44ZZYZ''JJrNNa(("**U*;*;<<<a55rzz%7H7HIIIadCCCRZZPUEVEVWWW/]9E222 	% 	%!V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]9E222 	& 	&!W%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& F1IIg""26**a(("**T*:*:;;;a55rzz$7G7GHHHadCCCRZZPTEUEUVVV]9E222 	% 	%!V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]9E222 	& 	&!W%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&sH   <DD D?EE #E I**I.1I.J..J25J2N)rd   re   rf   r   r   r   r   r   r   skip_xp_backendsr   r   r  r\   r7   r5   r   r   J  sN       2 2 2"A A A  $ $ $ [!!T)J " L L[\+I+I+IJJ0 0 KJL L0$ [!!'2F!GG[!!&1E!FF[!!"4=Q!RR[!!'2F!GG& & HG SR GF HG& & &r7   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 r\   )liness    r5   mock_strz(test__rng_html_rewrite.<locals>.mock_str  s    
 
 
 r7   )np.random.default_rng()r  r  r	  )r   )r  resrefs      r5   test__rng_html_rewriter    sM       &
H
%
%
'
'C  C #::::::r7   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej         !                    d          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!                                     Z$d"S )#TestTransitionToRNGc                     t           j                            d          }t          j        j        |                    d          dfi |S N   2Faj  )   r:   rY   r:   r'   rK   r   r   vqkmeans2r]   ra   r   s      r5   kmeanszTestTransitionToRNG.kmeans  C    i##$788z!#**'*":":AHHHHHr7   c                     t           j                            d          }t          j        j        |                    d          dfi |S r  r  r  s      r5   r  zTestTransitionToRNG.kmeans2  r  r7   c                     t           j                            d          }|                    d          \  }}}t          j        ||fi |} ||          S )Nr  )r:   r   )r'   rK   r   r   BarycentricInterpolator)r]   ra   r   x1x2y1fs          r5   barycentriczTestTransitionToRNG.barycentric  sV    i##$788ZZ((
B/BAA&AAquur7   c                     t           j                            d          }t          j        |                    d          dfi |S )Nr  r   r   r:   )r'   rK   r   r   clarkson_woodruff_transformr  s      r5   r&  z/TestTransitionToRNG.clarkson_woodruff_transform  s?    i##$7881#**X2F2FTTVTTTr7   c                     t           j                            d          }t          j        t          j        |                    d          fi |j        S )Nr  r:   )r'   rK   r   r   basinhoppingrosenr4   r  s      r5   r(  z TestTransitionToRNG.basinhopping  sB    i##$788$X^SZZ]]MMfMMOOr7   c                     t           j                            d          }t          j        |                    d           dz  |                    d          dz            } |t          j        |fi |j        S )Nr  r:   r   )r'   rK   r   r   Boundsr)  r4   )r]   funra   r   boundss        r5   optzTestTransitionToRNG.opt  sh    i##$788#**Q--"!4cjjmmb6HIIs8>644V4466r7   c                 2     | j         t          j        fi |S r[   )r.  r   differential_evolutionr]   ra   s     r5   r0  z*TestTransitionToRNG.differential_evolution  s    tx7BB6BBBr7   c                 2     | j         t          j        fi |S r[   )r.  r   dual_annealingr1  s     r5   r3  z"TestTransitionToRNG.dual_annealing  s    tx/::6:::r7   c                     t           j                            d          }|                    d          }t          j        t          j        t          j        |fddi|S )Nr  r:   	directionrK   )r'   rK   r   r   
check_gradr)  	rosen_der)r]   ra   r   r4   s       r5   r6  zTestTransitionToRNG.check_grad  sb    i##$788JJqMM"8>83Eq A A-5A9?A A 	Ar7   c                 L    t          j        dddi|                                S )Nr%  densityr   )r%  )r   random_arraytoarrayr1  s     r5   r:  z TestTransitionToRNG.random_array  s*    "CCSCFCCKKMMMr7   c                 L    t          j        dddi|                                S Nr   r9  r   r%  )r   rK   r;  r1  s     r5   rK   zTestTransitionToRNG.random  s)    };;S;F;;CCEEEr7   c                 L    t          j        dddi|                                S r=  )r   randr;  r1  s     r5   r?  zTestTransitionToRNG.rand  s)    {9939&99AACCCr7   c                     t           j                            d          }|                    d          }t          j        j        |fi |S )Nr  r%  )r'   rK   r   r   r   svds)r]   ra   r   As       r5   rA  zTestTransitionToRNG.svds  sD    i##$788JJx  }!!..v...r7   c                 \    t          j        j        j        di |                                S )Nr:   )r:   )r   	transformRotationrK   	as_matrixr1  s     r5   random_rotationz#TestTransitionToRNG.random_rotation  s+     )0==f==GGIIIr7   c                     t           j                            d          }|                    d          }t          j        t          j        |fi |j        S Nr  r   )r'   rK   r   r   goodness_of_fitlaplacepvaluer]   ra   r   r"   s       r5   rJ  z#TestTransitionToRNG.goodness_of_fit  sG    i##$788zz#$U]DCCFCCJJr7   c                     t           j                            d          }t          |                    d                    }d }t	          j        ||fi |j        S )Nr  r9   r   c                 \    t          j        | |          t          j        ||          z
  S )N)axis)r'   mean)r4   yrQ  s      r5   	statisticz7TestTransitionToRNG.permutation_test.<locals>.statistic  s+    "'!$*?*?*?"'!RVBWBWBW*W#Wr7   )r'   rK   r   tupler   permutation_testrL  )r]   ra   r   r"   rT  s        r5   rV  z$TestTransitionToRNG.permutation_test   sX    i##$788SZZ))**WWW%dI@@@@GGr7   c                     t           j                            d          }|                    d          f}t          j        |t           j        fi |j        S rI  )r'   rK   r   r   	bootstraprR  confidence_intervalrM  s       r5   rX  zTestTransitionToRNG.bootstrap  sI    i##$788

3!tRW7777KKr7   c                     t           j                            d          }|                    d          \  }}}t          j        ||fd|i|j        S )Nr  )r:   r   control)r'   rK   r   r   dunnettrL  )r]   ra   r   r4   rS  r[  s         r5   r\  zTestTransitionToRNG.dunnett  sQ    i##$788

8,,1g}Q==7=f==DDr7   c                 R   d }t          j        t          j         dt          j        z            t          j        t          j         dt          j        z            t          j        t          j         dt          j        z            g}t          j        d|d|d|}|j        S )Nc                     t          j        | d                   dt          j        | d                   dz  z  z   d| d         dz  z  t          j        | d                   z  z   S )Nr      r8   r9   g?r;   )r'   rq   )r4   s    r5   
f_ishigamiz5TestTransitionToRNG.sobol_indices.<locals>.f_ishigami  sX    26!A$<<!bfQqTlla6G2G#G%(AaDAI%6!%E$F Gr7   r9   )locscalei   )rU   rE   distsr\   )r   uniformr'   r   sobol_indicesfirst_order)r]   ra   r`  rc  r  s        r5   re  z!TestTransitionToRNG.sobol_indices  s    	G 	G 	GBE6RU;;;BE6RU;;;BE6RU;;;= !QzTQQ&QQr7   c                 @     |dddi|}|                     d          S )Ndr8   r;   r\   )rK   )r]   enginera   qrngs       r5   
qmc_enginezTestTransitionToRNG.qmc_engine  s,    v$$$V$${{1~~r7   c                 <     | j         t          j        j        fi |S r[   )rk  r   qmcHaltonr1  s     r5   haltonzTestTransitionToRNG.halton  s!    tuy/::6:::r7   c                 <     | j         t          j        j        fi |S r[   )rk  r   rm  Sobolr1  s     r5   sobolzTestTransitionToRNG.sobol   s     tuy99&999r7   c                 <     | j         t          j        j        fi |S r[   )rk  r   rm  LatinHypercuber1  s     r5   latin_hypercubez#TestTransitionToRNG.latin_hypercube#  s!    tuy7BB6BBBr7   c                 <     | j         t          j        j        fi |S r[   )rk  r   rm  PoissonDiskr1  s     r5   poisson_diskz TestTransitionToRNG.poisson_disk&  s!    tuy4?????r7   c                 \    t          j        j        dgfi |}|                    d          S )Nr   r;   )r   rm  MultivariateNormalQMCrK   r]   ra   Xs      r5   multivariate_normal_qmcz+TestTransitionToRNG.multivariate_normal_qmc)  s.    I+QC::6::xx{{r7   c                 `    t          j        j        ddgdfi |}|                    d          S )Ng      ?r;   )r   rm  MultinomialQMCrK   r{  s      r5   multinomial_qmcz#TestTransitionToRNG.multinomial_qmc-  s2    I$c3Z==f==xx{{r7   c                     t           j                            d          }t          |                    d                    }t	          j        di |}t	          j        |d|ij        S )Nr  rO  methodr\   )r'   rK   r   rU  r   PermutationMethodpearsonrrL  )r]   ra   r   r"   r  s        r5   permutation_methodz&TestTransitionToRNG.permutation_method1  s_    i##$788SZZ))**(22622~t3F33::r7   c                     t           j                            d          }t          |                    d                    }t	          j        | }t	          j        di |}|                    |          S )Nr  rO  )r  r\   )r'   rK   r   rU  r   r  BootstrapMethodrY  )r]   ra   r   r"   r  r  s         r5   bootstrap_methodz$TestTransitionToRNG.bootstrap_method7  sj    i##$788SZZ))**nd#&0000&&f&555r7   r   zmethod, arg_nameseedrandom_statec           	         t           j                            d            d}t           j                            |          }d}t	          j        t          |          5   || fi d|||i d d d            n# 1 swxY w Y   t           j                            |          } || |          } || |          }t          ||           |j        dv r || fi ||i}t          ||           d S t           j        	                    |          } || fi ||i} || fi ||i}|j        dv rU || 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\  re  >   rr  ro  rx  ru  r  r}  )
r'   rK   r  r   r   r   r   r   rd   rL   )r]   r  arg_namer  r   r   r   r   r   res1bres2bs              r5   test_rng_deterministicz*TestTransitionToRNG.test_rng_deterministic>  sx   > 		ti##D))G]9G444 	9 	9F488E3$7888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 i##D))vd$$$vd%%%T4   ?:::6$338T"233Dt$$$Fi##D))vd..xo..vd//x.//? M M M F4KKHbi.C.CD.I.I#JKKE%%%F444Hd#344E%%%F
	tvd//x.//T4   T4     s   A88A<?A<N)%rd   re   rf   r  r  r#  r&  r(  r.  r0  r3  r6  r:  rK   r?  rA  rG  rJ  rV  rX  r\  re  rk  ro  rr  ru  rx  r}  r  r  r  r   r   	fail_slowslowr   r  r\   r7   r5   r  r    s       I I II I I  U U UP P P7 7 7
C C C; ; ;A A AN N NF F FD D D/ / /
J J JK K K
H H HL L L
E E E
    ; ; ;: : :C C C@ @ @    ; ; ;6 6 6 [2[[/		&	n%	$f-	v	(	 	V	~&	 	~	~	.)	.)	>*	N#	^,	>*	.!	'			&!	v	 &)	&!52  8%! %!9   <%! %! %!r7   r  )r8   N)@multiprocessingr   multiprocessing.poolr   r   r|   r   	fractionsr   r   r'   numpy.testingr   r   r   r   rM   scipy.conftestr   scipy._lib._array_apir	   r
   scipy._lib._utilr   r   r   r   r   r   r   r   r   r   r   scipy._lib.array_api_extra_libarray_api_extrar   "scipy._lib.array_api_extra.testingr   scipyr   r   r   r   r   r   r   r   r  rG   rR   rm   rz   r}   r   r   r   r   r   r   r   r  r  r\   r7   r5   <module>r     sd               , , , , , , 				                / / / / / / / /  * * * * * * . . . . . . ; ; ; ; ; ; ; ;R R R R R R R R R R R R R R R R R R R R R R R R R R ) ( ( ( ( ( ( ( ( ? ? ? ? ? ? P P P P P P P P P P P P P P P P P P       >  >  >F1 1 1"M M M&  & & &
) ) )@ 2 2 2 2' ' '.7  7  7 t& & & & & & & &$F@ F@ F@ F@ F@ F@ F@ F@R`& `& `& `& `& `& `& `&F  *! ! ! ! ! ! ! ! ! !r7   