
    S_f                        d dl mZmZmZ d dlZd dlZd dlZd dlZd dl	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZ d Zd	 Zg ej.                   e        e       d
dddfej4                  d e       ddddfej6                   e       ddiddddfej8                  dddidddd fej8                   e        e       dddd fej8                   e       ddidd
dd fej:                   e        e       dddd fej<                   e        e       dddd fej>                  d e       dddd fej@                   e        e       dddd fejB                   e        e       dddd fejD                   e        e       dddd fejF                   e        e       dddd  fejH                   e        e       dddd! fejJ                   e        e       dddd" fejL                   e        e       dddd# fejL                   e        eddg$      ddddfejN                   e        e       ddddfejP                   ejR                  d g      f e       dd%defejT                   e        e       dd%defejV                   e        e       dd%def eejP                        d& e       ddddf eejT                         e        e       ddddf eejV                         e        e       ddddfejX                   e        e       dddd' fejZ                   e        e       dddd( fej\                   e        e       dddd) fej^                   e        e       d
dddfej`                   e        e       ddddfejb                   e       i ddddfejd                   e       i ddddfejf                   e       jh                  f e       dd*dd+ fejj                   e        e       dd*dd, fejl                   e       jh                  f e       dd*dd- fejl                   e        e       dd*dd. fejn                   e       i ddddfejp                   e       d/d0d1ddddfejr                   e       i ddddfejt                   e        e       dddd2 fejt                   e        e       dddd3 fejv                   e        e       ddddfejx                   e        e       ddddfejz                   e        e       ddddfej|                  d e       dddd4 fej~                   e        e       dddd5 fej                   e        e       ddddfej                   e       i ddddfej                   e       i dddd6 fej                   e       i dddd7 fej                   e       i dddd8 fej                   e       i dddd9 fej                   e       i dddd: fej                   e       i dddd; fej                   e        e       dddd< fej                   e        e       dddd= fej                   e        e       dddd> fej                   e       i ddddfej                   e       i dddd? fej                   e       i ddddfZNh d@ZOdAdBhZPejX                  hZQejt                  hZR	 ddCZS	 ddDZTddEdddFdGZUej                  j                  dH      ej                  j                  dI      ej                  j                  dJeN      ej                  j                  dKdL      ej                  j                  dMdN      ej                  j                  dOdP      dQ                                           ZYej                  j                  ej                  j                  dH      ej                  j                  dI      ej                  j                  dJeN      ej                  j                  dKdL      ej                  j                  dM e[dRd
            ej                  j                  dOdS      dT                                                  Z\dU Z]ej                  j                  dH      ej                  j                  dJeN      ej                  j                  dKdL      ej                  j                  dOdV      dW                             Z^ej                  j                  dKdX      ej                  j                  dYej:                   e        e       ddZ fej6                   e       ddiddff      ej                  j                  d[d\      d]                      Z_ej                  j                  d^ejH                  dfejJ                  dfg      d_        Z`ej                  j                  dMd`      da        Zadb Zbdc Zcej                  j                  dJeN      dd        Zdde Zedf Zfej                  j                  ej                  j                  dJeN      dg               Zgdh Zhdi Zidj Zjej                  j                  dM e[dRd
            dk        Zkdl Zldm Zmdn Zndo Zoej                  j                  dM ep e e[dRd
      d            dpgz         dq        Zqej                  j                  drdsdt fdudv fdwdx fdydz fg      d{        Zrd| Zsej                  j                  d}ej                  ej                  ej                  g      d~        Zwy)    )productcombinations_with_replacementpermutationsN)assert_allcloseassert_equalsuppress_warnings)stats)norm) _masked_arrays_2_sentinel_arrays)	AxisErrorc                     | j                         \  }}| j                  | j                  | j                  | j                  | j
                  ||fS N)confidence_interval	statisticpvaluedf_standard_error	_estimate)reslowhighs      Flib/python3.12/site-packages/scipy/stats/tests/test_axis_nan_policy.pyunpack_ttest_resultr      sD    '')ICMM3::svvs/B/BMM3& &    c                       fd}|S )Nc                  4     | i |}|j                         S r   )r   )argskwargsr   ttests      r   ttest_ciz_get_ttest_ci.<locals>.ttest_ci   s!    T$V$&&((r    )r   r    s   ` r   _get_ttest_cir"      s    ) Or         F)lessmethod
asymptotic)prattmodeautoTc                 2    | j                   | j                  fS r   r   r   r   s    r   <lambda>r.   *       #--, r      c                 2    | j                   | j                  fS r   r,   r-   s    r   r.   r.   ,   r/   r   approxc                 H    | j                   | j                  | j                  fS r   )r   r   
zstatisticr-   s    r   r.   r.   .   s    #--S^^< r   c                     | fS r   r!   xs    r   r.   r.   /       1$ r   c                     | fS r   r!   r6   s    r   r.   r.   0   r8   r   )gQ?c                     | fS r   r!   r6   s    r   r.   r.   1   r8   r   c                     | fS r   r!   r6   s    r   r.   r.   2        r   c                     | fS r   r!   r6   s    r   r.   r.   3   r<   r   c                     | fS r   r!   r6   s    r   r.   r.   4       aT r   c                     | fS r   r!   r6   s    r   r.   r.   5   s    ! r   c                     | fS r   r!   r6   s    r   r.   r.   6   r8   r   c                     | fS r   r!   r6   s    r   r.   r.   7   r?   r   c                     | fS r   r!   r6   s    r   r.   r.   8       A4 r   )order   )r   c                 2    | j                   | j                  fS r   )r)   countr6   s    r   r.   r.   B   s    8I r   c                     | fS r   r!   r6   s    r   r.   r.   C   s    ! r   c                     | fS r   r!   r6   s    r   r.   r.   D   s    qd r      c                 <    g | | j                   | j                  S r   statistic_locationstatistic_signr-   s    r   r.   r.   J   "    C3C..C0B0BC r   c                 <    g | | j                   | j                  S r   rM   r-   s    r   r.   r.   L   rP   r   c                 <    g | | j                   | j                  S r   rM   r-   s    r   r.   r.   N   rP   r   c                 <    g | | j                   | j                  S r   rM   r-   s    r   r.   r.   P   rP   r   trimmedg{Gz?)centerproportiontocutc                     | fS r   r!   r6   s    r   r.   r.   U       QD r   c                     | fS r   r!   r6   s    r   r.   r.   V   rD   r   c                 2    | j                   | j                  fS r   r,   r-   s    r   r.   r.   [   r/   r   c                 2    | j                   | j                  fS r   r,   r-   s    r   r.   r.   ]   r/   r   c                     | fS r   r!   r6   s    r   r.   r.   `   s    qd r   c                     | fS r   r!   r6   s    r   r.   r.   a       aT r   c                     | fS r   r!   r6   s    r   r.   r.   b   r^   r   c                     | fS r   r!   r6   s    r   r.   r.   c   r^   r   c                     | fS r   r!   r6   s    r   r.   r.   d   r^   r   c                     | fS r   r!   r6   s    r   r.   r.   e   r^   r   c                     | fS r   r!   r6   s    r   r.   r.   f   r?   r   c                     | fS r   r!   r6   s    r   r.   r.   g   rX   r   c                     | fS r   r!   r6   s    r   r.   r.   h   rX   r   c                 2    | j                   | j                  fS r   r,   r-   s    r   r.   r.   k   r/   r   >   division by zeroMean of empty sliceThe input contains nanNot enough observations.Data input must not be emptyNot enough test observationsNot enough other observationsData must be at least length 3 kurtosistest requires at least 5!Degrees of freedom <= 0 for slice!x and y must contain at least two#No array values within given limits$At least one observation is required$The sample must contain at least two$`x` and `y` must be of nonzero size.$skewtest is not valid with less than'x and y should have at least 5 elements)Data passed to ks_2samp must not be empty*attempt to get argmax of an empty sequence+Input sample size must be greater than one.+The exact distribution of the Wilcoxon test+Window length (0) must be positive and less+Window length (1) must be positive and less+Window length (2) must be positive and less.zero-size array to reduction operation maximumz-Precision loss occurred in moment calculation/Sample size too small for normal approximation.c           
      $   g }t        |       D ]  }d}|rdnd|z   }t        j                  |||f      t        j                  z  }	t        |      D ]k  }
|	|
d d d d f   }t	        dddd|dz
  |g      D ]0  \  }}|j                  |      d | }|j                  |      |||f<   2 |j                  |d      |d d  m |gdg| z  z   |gz   }d|d|z   <   |	j                  |      }	t        j                  |	d	|      }	|j                  |	        |S )
N      r   r0   r$   r#   sizeaxis)
rangenponesnan	enumeratepermutationrandomreshapemoveaxisappend)	n_samplesn_repetitionsr   rngpaireddatai
n_patternsn_obsr7   jsampleskn_realsindices	new_shapes                   r   _mixed_data_generatorr      s<    D9 
"q&GG]J67"&&@}% 	:A1ajG (Aq!U1We(DE ?
7//%0':&)jjgj&>7
#? q9GAJ	:$ #Oqc)m3ug=		!a%IIi KK2t$A9: Kr   c                 *   g }t        |       D ]  }|rdnd|z   }|gdg| z  z   |gz   }	d|	d|z   <   |r&t        j                  |	      t        j                  z  n|j	                  |	      }
t        j
                  |
d|      }
|j                  |
        |S )Nr   r0   r$   r   )r   r   r   r   r   r   r   )r   r   r   r   r   all_nansr   r   r   shaper7   s              r   _homogeneous_data_generatorr      s    
 D9 "q&1#i-/5'9a!e'/BGGENRVV#SZZ5FKK2t$A Kr   raise	n_outputs
nan_policyr   _no_decoc                   |dk(  r;|D ]5  }	t        j                  t        j                  |	            s,t        d       n|dk(  r^| t        vrV|D ]P  }	t        j                  t        j                  |	            s,t        j
                  |t         j                        c S  n|dk(  r|s'|D 	cg c]  }	|	t        j                  |	           }}	n^t        j                  |d         }
|dd  D ]+  }	t        j                  |
t        j                  |	            }
- |D 	cg c]  }	|	|
    
 }}	 | | g ||d|i|      S c c}	w c c}	w )Nr   The input contains nan values	propagateomitr   r0   r   )r   anyisnan
ValueErroroverride_propagate_funcsfullr   
logical_or)hypotestdata1dunpackerr   r   r   r   r   kwdssamplenan_masks              r   nan_policy_1dr      sF    W 	BFvvbhhv&' !@AA	B 
#66
  	2Fvvbhhv&'wwy"&&11	2 
v	>DEFfbhhv../EFExxq	*H * E==288F3CDE6<=FfhY'=F=HGfGtGhG$GHH F
 >s   / E!E
zignore::RuntimeWarningzignore::UserWarning)r   r   r   r   r   r   r   r   )r   r   r   r   )r0   data_generator)mixedc
                 ,    t        | |||||||||	
       y r   _axis_nan_policy_test
r   r   r   r   r   r   r   r   r   r   s
             r   test_axis_nan_policy_fastr      s"     (D$	9f"JnFr   )r   
all_finiter   c
                 ,    t        | |||||||||	
       y r   r   r   s
             r   test_axis_nan_policy_fullr      s"     (D$	9f"JnFr   c
                 N
   |sd }t         j                  j                  d      }
d}||||
|d}|	dk(  rd}t        di |}n/|	dk(  rd}d	|d<   t	        di |}n|	d
k(  rd}d|d<   t	        di |}|gg|z  z   }D cg c]  }t        j
                  ||d       }}|D cg c])  }t        j                  |||j                  d   gz         + }}t        j                  |      }t        j                  |      }t        j                  |      D ]  \  }}|D cg c]  }||   	 }}t        j                  dd      5  	 t        | ||g||||d	d|} | | g ||d|i|      }t        |d   |d          t        |      dk(  rt        |d   |d          d d d        d   ||<   t        |      dk(  s|d   ||<    |dk(  r<|	d
k(  s7d}t%        j&                  t         |      5   | g ||||d| d d d        y t=               5 }t        j                  dd      5  |j?                  t        d       |j?                  t        d        | | g ||||d|      }d d d        d d d        tA        d   |d       t        |d   jB                  |jB                         t        |      dk(  r5tA        |d   |d       t        |d   jB                  |jB                         y y c c}w c c}w c c}w # t        t        t         t"        f$ r}t%        j&                  t)        |      t+        j,                  t/        |                  5  t        | ||g||||d	d| d d d        n# 1 sw Y   nxY wt%        j&                  t)        |      t+        j,                  t/        |                  5   | g ||d|i| d d d        n# 1 sw Y   nxY wt1        t2        D cg c]  }t/        |      j5                  |       nc c}w c}      r%t        j6                  |t         j8                        }nt1        t:        D cg c]  }t/        |      j5                  |       nc c}w c}      r`t=               5 }|j?                  t               |j?                  t               t        | ||g||||d	d|}d d d        n# 1 sw Y   nxY w|Y d }~Ld }~ww xY w# 1 sw Y   VxY w# 1 sw Y   y xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nc                     | S r   r!   r-   s    r   r   z'_axis_nan_policy_test.<locals>.unpacker      Jr   r   r#   )r   r   r   r   r   r   r   r   r$   Tr   Fr   ignoredivideinvalidr   r   r0   matchr   r   r   r   z!Precision loss occurred in momentr   gV瞯<rtolr!   )"r   r   default_rngr   r   r   broadcast_tor   zerosndenumerateerrstater   r   lenRuntimeWarningUserWarningr   ZeroDivisionErrorpytestraisestypereescapestrr   too_small_messages
startswithr   r   inaccuracy_messagesr   filterr   dtype)r   r   r   r   r   r   r   r   r   r   r   r   data_gen_kwdsinherent_sizer   output_shaper   data_b
statisticspvaluesr   _r   res1dres1dbemessagesupr   s                                r   r   r     sw    	 ))


"C M"+m!#AM $5}5	:	%$(j!*;];	<	'$)j!*;];!?m_Y%>>L
 ;??bkk&$+?F?"$ ooflfll26F5G&GH $F $,'Jhh|$Gz* 5"1*01&)11[[(; 0	/%h L4 L091;-3dL GKL "( #JF #JT #J6@#JDH#J KVAYa1v;!# E!H5!0	b a
1u:?qGAJk5"t W^|%C1]]:W5 	MLdLtL*LtL	M 	M   	4C[[(;	4JJ~'JKJJ{ %5 68 3T 3%)3 3-13 4C	4 	4 	A
7SV\\:#3#34s8q=CFG%8Qw}}5 a @$ 2. #K%' 
 ]]47"))CF2CD H!(FH Ht H,5*)/$HBFHH H H ]]47"))CF2CD LKfKtK
KdKL L L '9;# A))'2 ; ; <GGIrvv6E)<>% a&++G4 > > ?*, 6

>2

;/ -h !6/3!6?H9C5;d!6 15	!66 6 6 G5-0	 0	t	M 	M	4 	4 	4 	4s   ?K7#.K<LS4AL0TT,AT/TS1 <S,M<	3	S,<NAS,O		S,O&"S,6!P?S,!Q87S,AS		S,S!	S,&S4,S11S44S>	T
T	TT$)r   r   r   emptyc	           	         |sd }t         j                  j                  d      }	|dk(  r(t        |      D 
cg c]  }
|	j                  d       }}
n't        |      D 
cg c]  }
|	j                  d       }}
|dk(  rRt        |      D 
cg c]  }
|	j                  d      dkD   }}
t	        ||      D ]  \  }}t         j
                  ||<    n%|dk(  r |D cg c]  }|t         j
                  z   }}|D cg c]  }|j                          }}|d	k(  ro|d
vrkd}t        j                  t        |      5   | g ||d |d| d d d        t        j                  t        |      5   | g ||d |d| d d d        y d\  }}}t        j                  dd      5  	 t        | ||g||||dd|}	  | | g ||d|i|      }	  | | g ||d |d|      }|s|s|rGt        t         D cg c]  }t        |      j#                  |       c}      sJ ||cxk(  r|k(  suJ  J t%               t%        |       t'        |      t'        |      z   t'        |      z   D ]2  }t        j(                  |j*                  t         j,                        r2J  d d d        y c c}
w c c}
w c c}
w c c}w c c}w # 1 sw Y   xY w# 1 sw Y   y xY w# t        t        t        f$ r}t        |      }Y d }~Jd }~ww xY w# t        t        t        f$ r}t        |      }Y d }~ad }~ww xY w# t        t        t        f$ r}t        |      }Y d }~wd }~ww xY wc c}w # 1 sw Y   y xY w)Nc                     | S r   r!   r-   s    r   r   z3test_axis_nan_policy_axis_is_None.<locals>.unpacker  r   r   r   r   )r$   r   )r$   r   r   g?r   r   >   r   r   r   r   r   )NNNr   r   Tr   r   )r   r   r   r   zipr   ravelr   r   r   r   r   r   r   r   r   r   r   r   list
issubdtyper   number)r   r   r   r   r   r   r   r   r   r   r   r   masksr   maskdata_raveledr   ea_streb_strec_strres1daear   ebres1dcecitems                              r   !test_axis_nan_policy_axis_is_Noner    s    	 ))


"C ,1),<=q

6"==-29-=>

7#>> 49)4DEqG$s*EEe, 	"LFD66F4L	"	:	%.23F33156vFLLN6L6W7N!N1 ]]:W5 	$ $d $$* $"$	$ ]]:W5 	$ $l $$* $"$	$ 	$ "2[[(;  	@!&xx >$ >1:2<V04> 9=>!!( #JL #J4 #J6@#JDH#J K
!!( #JD #J4 #Jd6@#JDH#J K
 6+=? '  K227; ? @ @ @1611111VV,VV, L4<7$v,F @D ==RYY???	@9 	@  	@= >> F 46	$ 	$	$ 	$  #J0AB !R! #J0AB !R! #J0AB !R!?- 	@  	@s   J.J3J8J=9K8K,K#M,%K <LL:(M,;!M'
BM,"M,KK L
4L?M,L

M,L7!L2,M,2L77M,:M$MM,M$$M,,M5)r   r   )r   r   r   r   r   c                     | fS r   r!   r6   s    r   r.   r.     s    ! r   )sample_shape
axis_cases)))r$   r#   r#   rK   )Nr   r   )r   r$   )r0   r   )r#   r0   r$   r   ))
   )r   r   ))r   r   r   r0   c           
         |sd }t         j                  j                  d      }t        |      D 	cg c]  }	|j                  |       }
}	|
D cg c]  }|j	                          }}t        |      D 	cg c]  }	|j                  |      dk   }}	t        ||      D ]  \  }}t         j                  ||<    |D ]6  }t        |      }|t        j                  t        |            }n"t        |t              rd||<   n|D ]  }d||<   	 t        |      } | | g |
||dd|      } | | g |
||dd|      } | | g |||d|d|      } | | g |||d|d|      }t        ||||      D ]o  \  }}}}|j                  |k(  sJ t        j                  ||	      }t        ||       |j                  |k(  sJ t        j                  ||	      }t        ||       q 9 y c c}	w c c}w c c}	w )
Nc                     | S r   r!   r-   s    r   r   ztest_keepdims.<locals>.unpacker  r   r   r   皙?r0   T)r   keepdimsF)r   r  r   r   )r   r   r   r   copyr   r   r   r   r   
isinstanceinttupler   squeezer   )r   r   r   r   r   r	  r
  r   r   r   r   r   nan_datar   r   r   expected_shapeaxr   res_basenan_resnan_res_baserr_basernrn_bases                             r   test_keepdimsr     sj    	
))


"C.3I.>?CJJ|$?D?,01&1H18=i8HI1

<(3.IHIHh/ vvt &l+<WWS%67N$$'(t$ +B)*N2&+~.x ( ( (4$ ("&( )H -d -T -u -'+- .8 ,X , ,4-1j,&*, -   !H( !HT !H274>!HBF!H I '*#x*6'8 	&"Avr777n,,,

14(AF#88~---BT*BW%	&+& @1Is   G7G<6H)funnsampc                    d\  }}t         j                  j                  d      }|j                  |||f      } | | } | |ddi} | |D cg c]  }|j                          c}      }	t	        ||       t	        ||	       y c c}w )N)   	   r   r   T)r   r   r   r   r   )
r!  r"  mnr   r7   r   res2xires3s
             r   !test_hypotest_back_compat_no_axisr+    s     DAq
))


"C

E1a=!A
q'C!D!DQ'r
'(Ddd (s   Br   r0   r$   c           	         d}t         j                  j                  d      }|j                  |      }|j                  |      }t        j                  ||dd|       }t        j                  ||dd|       }t        ||       d}t        j                  t        t        j                  |            5  t        j                  ||dd| |        d d d        y # 1 sw Y   y xY w)N)r$  r%  r  r   Tz	two-sidedr   z6mannwhitneyu() got multiple values for argument 'axis'r   )r   r   r   r	   mannwhitneyur   r   r   	TypeErrorr   r   )r   r   r   r7   yres1r(  r   s           r   .test_axis_nan_policy_decorated_positional_axisr2  !  s     E
))


"C

5A

5AaD+t<DaD+DADtFG	y		'(:	; E1a{DtDE E Es   3CC!c                     d} t         j                  j                  d      }|j                  |       }t         j                  |d<   t	        j
                  |  d}t        j                  t        t        j                  |            5  t	        j
                  |       d d d        t        j                  t        t        j                  |            5  t	        j
                  |d|i d d d        y # 1 sw Y   VxY w# 1 sw Y   y xY w)Nr#   r$  r%  r  r   r   r   r   r   z6kruskal() got an unexpected keyword argument 'samples'r   )r   r   )r   r   r   r   r	   kruskalr   r   r/  r   r   )r   r   r7   r   s       r   .test_axis_nan_policy_decorated_positional_argsr7  4  s     E
))


"C

5AFFAjM	MM1FG	y		'(:	; !a ! 
y		'(:	; %q$!$% %! !% %s   C4D 4C= D	c                     d} t         j                  j                  d      }|j                  |       }t         j                  |d<   t	        j
                  | }t	        j
                  |d   |d         }t        ||       d}t        j                  t        t        j                  |            5  t	        j
                  ||d   |d   d d d d        y # 1 sw Y   y xY w)N)r$   r$  r%  r  r   r5  r0   )r7   r0  z/mannwhitneyu() got multiple values for argumentr   )r   r   r   r   r	   r.  r   r   r   r/  r   r   )r   r   r7   r1  r(  r   s         r   .test_axis_nan_policy_decorated_keyword_samplesr9  F  s    
 E
))


"C

5AFFAjMq!D!!-Dt?G	y		'(:	; /A11./ / /s   1CC c                    d| j                   v rt        j                  d       t        j                  j                  d      }|sd }|j                  |ddf      }t        j                  |       }	t        j                  |	      }
 | | g ||dd	i|      } | |
g ||dd	i|      }t        ||d
       y )Nr    z0Can't pickle functions defined within functions.r   c                     | S r   r!   r-   s    r   r   z8test_axis_nan_policy_decorated_pickled.<locals>.unpackerd  r   r   r$      r   r   r   g-q=r   )__name__r   skipr   r   r   uniformpickledumpsloadsr   )r   r   r   r   r   r   r   r   r   pickled_hypotestunpickled_hypotestr1  r(  s                r   &test_axis_nan_policy_decorated_pickledrE  X  s     X&&&FG
))


"C 	 ;;Y2.;/D||H-&67H;d;T;;d;<D&EEtE"EEFDD$U+r   c            	         t        d      D ]  } t        g d|       D ]  }t        t        |            D ]  }t        j                  |      f}t
        j                  j                  ||      }|<t        j                  j                         5 }|j                  t        d       |j                  t        d       |d   j                  |      }d d d        t        j                  j                  |          y # 1 sw Y   0xY w)N   r,  Mean of empty slice.invalid value encounteredr   r   )r   r   r   r   r   r	   _axis_nan_policy_check_empty_inputstestingr   r   r   meanr   )r   combor   r   outputr   	references          r   test_check_empty_inputsrQ  o  s     1X ?29a@ 
	?Ec%j) 	?88E?,//CCGDHJ%557 ?3

>3IJ

>3NO$+AJOOO$>	? JJ++FI>	?
	??? ?s   AC?	?Dc                 p   t        | D cg c]  }|j                   c}      }||dk\  r| |z   n|}t        d|dz         D ]m  }| |k(  r
t               }| D ]E  }||j                  k  s|j                  |    dk7  s'|j                  |j                  |           G t        |      dkD  sm y yc c}w )Nr   r0   FT)maxndimr   setr   addr   )arraysr   arrn_dimsdimdim_lengthss         r   _check_arrays_broadcastabler\    s     f-s#((-.F#'19$$Qq! 
44<e 	1Cchh399cT?a#7		3$0	1 {a
 ! .s   B3c           	      2   | t         v rd}t        j                  |       |d }d }ddg}	 |||	      D ]  }
t        d |
D              st	        d |
D              }t        | |      D ]W  }	 t        j                  j                  |
|      }t        j                  j                         5 }|j                  t        d	       |j                  t        d
       t        j                  ||      t        j                  z  }d d d        | t         v r4 | g g gt#        |
      z  |i |}t        j$                        }|||<   t        j                  j                         5 }|j                  t        j&                          | g |
|d|i|}d d d         |      }t        |      D ]  }t)        ||           Z  y # 1 sw Y   xY w# 1 sw Y   CxY w# t*        $ r t-        |
|rd n|      rJ d}t        j.                  t*        |      5  t        j                  j                  |
||       d d d        n# 1 sw Y   nxY wt        j.                  t*        |      5   | g |
|d|i| d d d        n# 1 sw Y   nxY wY )w xY w)Nz4Doesn't follow the usual pattern. Tested separately.)reasonc                     | d   | d   fS )Nr   r0   r!   r-   s    r   r.   ztest_empty.<locals>.<lambda>  s    AA/ r   c              3   |   K   d }t        |       D cg c]
  } ||       }}t        | E d {    y c c}w 7 
w)Nc              3   n   K   | D ],  }t        g d|      D ]  }t        j                  |        . y w)Nr,  )r   r   r   )rY  r   rN  s      r   small_sample_generatorzHtest_empty.<locals>.small_data_generator.<locals>.small_sample_generator  s9      *:9aH *E((5/)**s   35)r   r   )r   rY  rb  r   genss        r   small_data_generatorz(test_empty.<locals>.small_data_generator  sA     	* 9>i8HI1&v.IID>!! J!s   <5<:<r$   r#   c              3   :   K   | ]  }|j                   d k(    yw)r   Nr   .0r   s     r   	<genexpr>ztest_empty.<locals>.<genexpr>  s     :6;;!#:s   c              3   4   K   | ]  }|j                     y wr   )rT  rf  s     r   rh  ztest_empty.<locals>.<genexpr>  s     9vv{{9s   rH  rI  r   r   z/Array shapes are incompatible for broadcasting.r   )r   r   r>  r   rS  r   r	   	_stats_py_broadcast_concatenater   rL  r   r   r   rM  r   empty_special_case_funcsr   r   DegenerateDataWarningr   r   r\  r   )r   r   r   r   r   r   r   r^  rd  rY  r   max_axisr   concatr   expected	empty_valr   r   r   r   s                        r   
test_emptyrr    s    ++G6"/" VF'	6: .A :'::999 8)X. %	AD#A ??NZZ113 CsJJ~/EFJJ~/JK!wwvD9BFFBHC
 77 ( MB4G+< M M MI88H-D%.HTNZZ113 GsJJu::;"FGFdFFFCG smy) 3A Q23/%	A.A C CG G  A6w?Et4Q Q Q
 L]]:W= ROO::7D&QR R R]]:W= A@g@@4@4@A A AAst   1>G#/AGA"G#&/G/G#GG#G G##8J"I	=	JI"J-J	=	JJJJc                  x   t         j                  j                  d       t         j                  j                  ddd      } t         j                  j                  d      }| dk  }t         j                  j                  | |      } t        j                  t         j                        j                  }t        j                  |t         j                         }t        j                  |t         j                         }t         j                  | d<   t         j                  | d<   || d<   t         j                  |d	<   t         j                  |d
<   ||d<   t        | |g      \  }}|\  }}	||k7  r||k7  sJ ||k(  sJ | j                  }
||
| j                  <   t         j                  j!                  ||
       |	|u sJ y )Nr   r        g      ?)r#   rK   r0   )rK   rG  r$   )rG  r   r#   r$  rF   r   )r   r   seedrandmamasked_arrayfinfofloat64rS  	nextafterinfr   r   r   r   rL  assert_array_equal)ABr   	max_float
max_float2
max_float3
out_arrayssentinelA_outB_outA_references              r   "test_masked_array_2_sentinel_arrayr    sa   IINN1
		r2r"A
		rAs7D
1d#A $((Ii"&&1Jj266'2JAgJAgJAgJ66AaD66AaDAaD <QFCJLE5 	!J(>??z!!! &&K"KJJ!!%5A::r   c                     t        j                  t         j                        j                  } t        j                  t         j
                        j                  }t        j                  dd| gt         j                        }t         j                  j                  g dt         j                  g d      }t         j                  j                  g dt         j
                  g d      }t        ||g      \  }}|\  }}|| dz
  k(  sJ |j                  t         j                  k(  sJ t        ||d   ||d	   g       ||u sJ t        |t         j                  j                        rJ t        ||g      \  }}|\  }}	||k(  sJ |j                  t         j
                  k(  sJ t        ||d   ||d	   g       t        |t         j                  j                        rJ t        |	t         j                  j                        rJ t        j                  t         j                        j                  t        j                  t         j                        j                  }}
t        j                  |
|dz   t         j                        }t        j                   |t"              }t        j                   |t"              }d
|d<   t         j                  j                  ||      }t        |g      \  }}||
dz   k(  sJ d
|d<   t         j                  j                  ||      }d}t%        j&                  t(        |      5  t        |g       d d d        t         j                  j                  g dg dt         j*                        }t-        j.                  |      j                  t         j*                  k(  sJ y # 1 sw Y   pxY w)Nr0   r$   r   )r0   r$   r0   r   r0   r   )r   r   r   r   r   r   r   Tr   z7This function replaces masked elements with sentinel...r   r0   r$   r#   )r   r   )r   iinfoint16rS  rz  
complex128arrayrx  int8r   r   r   r  MaskedArrayminarange
zeros_likeboolr   r   r   float32r	   gmean)max16max128cabcr  r  a_outb_outc_outmin8max8mask1mask0a1a0r   s                    r   test_masked_dtyper    s    HHRXX""Ehhr}}%))G 	!Qbhh/A
IRWW9=A
IR]]CA <QFCJLE5uQw;;"(("""EAaD(AbE23A::%!2!2333 <QFCJLE5w;;"--'''EAaD(AbE23%!2!2333%!2!2333 "''"&&(9(=(=$D
		$Qbgg.AMM!4(EMM!4(E E!H	QU	#B;RDAJtAv E!H	QU	#BGG	z	1 /("./ 	IIRZZ@A;;q>2::---/ /s   N==Oc                     g d} g d}t        j                  | |      }dddt        j                  dg}t        j                  | |d      }t        j                  j                  ||       g d	}g d
}t        j                  j                  ||      }t        j                  | |      }t        j                  j                  ||       dddt        j                  ddg}g d}	t        j                  j                  ||	      }t        j                  | |d      }
t        j                  j                  |
|       dddt        j                  ddg}g d}t        j                  j                  ||      }t        j                  | |d      }t        j                  | |d      }t        j                  j                  ||       t        j                  j                  ||       y )N)               )r   rt     ru  r   rt  r  ru  r   )r   )r   rt  r    ru  )FFFTFr  r  )FFFFTF)FFFTTFr   r   )r	   r.  r   r   rL  r~  rx  ry  )malesfemalesr   females2r(  females3mask3r*  females4mask4res4females5mask5res5res6s                  r   test_masked_stat_1dr  N  s    EG


UG
,C BBFFB'HeX&ADJJ!!$, &H.Euu!!(!7HeX.DJJ!!$, BBFFD"-H5Euu!!(!7HeX&ADJJ!!$, BBFFD"-H4Euu!!(!7HeX+FDeX'BDJJ!!$,JJ!!$,r   c                    t         j                  j                  d       t         j                  j                  ddd      }t         j                  j                  dd      }t         j                  j                  dd      }|dk  }g d}t         j                  j                  ||      }t         j                  j                  ||      }|j                         }t         j                  ||<   |j                         }	t         j                  |	|<   t        j                  |||	d	| 
      }
t        j                  ||||       }t         j                  j                  |
|       y )Nr   r#   rK   rG  r0   皙?)FFFTr  r   r   r   r   )r   r   rv  rw  rx  ry  r  r   r	   r6  rL  r~  )r   r  r  r  mask_amask_ca_maskedc_maskeda_nansc_nansr   r(  s               r   test_masked_stat_3dr  q  s     IINN1
		q!QA
		q!A
		q!AWF(Fuu!!!&!1Huu!!!&!1HVVXFVVF6NVVXFVVF6N
--6f4
HC==1hT:DJJ!!#t,r   c                     d\  } }d}t         j                  j                  d       t         j                  j                  | |      }t         j                  j                  | |      }t         j                  j                  | |      dk  }t         j                  j                  | |      dk  }t         j                  j                  | |      dk  }t         j                  j                  | |      dk  }d|dd d f<   |j	                         }	|j	                         }
t         j
                  |	||z  <   t         j
                  |
||z  <   t         j                  j                  ||	      }t         j                  j                  ||	      }t         j
                  ||<   t         j
                  ||<   t         j                  j                  ||	      }t         j                  j                  ||	      }t         j
                  ||<   t         j
                  ||<   t         j                  j                  |||z  	      }t         j                  j                  |||z  	      }t        j                  |	|
d
|      }t        j                  ||d
|      }t        j                  ||d
|      }t        j                  ||d|      }t        j                  ||d|      }t         j                  j                  ||       t         j                  j                  ||       t         j                  j                  ||       t         j                  j                  ||       y )Nr#   r   r   r   r  r  333333?Tr$   r  r   r  r   r   )r   r   rv  rw  r  r   rx  ry  r	   wilcoxonrL  r~  )r&  r'  r   r  r  mask_a1mask_a2mask_b1mask_b2r  b_nans	a_masked1	b_masked1	a_masked2	b_masked2	a_masked3	b_masked3r   r1  r(  r*  r  s                         r   test_mixed_mask_nan_1r    s    DAqDIINN1
		q!A
		q!AiinnQ"S(GiinnQ"S(GiinnQ"T)GiinnQ"T)GGAqDMVVXFVVXF "F7W "F7W""17"3I""17"3IIgIg""17"3I""17"3IIgIg""1Gg,="?I""1Gg,="?I
..F
FC>>)Y6MD>>)Y6MD>>)Y7ND>>)Y%0t=D JJ!!$,JJ!!$,JJ!!$,JJ!!$,r   c                     dt         j                  dgt         j                  t         j                  t         j                  gg ddt         j                  dgdt         j                  dgg dg} g dg dg dg dg dg dg}t         j                  j                  | |	      }g d
g}t	        j
                  ddgg d
      }t	        j
                  g dg d
      }t	        j
                  ||dd      }t         j                  t         j                  t         j                  |j                  |j                  |j                  g}t         j                  t         j                  t         j                  |j                  |j                  |j                  g}t         j                  j                  |j                  |       t         j                  j                  |j                  |       t	        j
                  ||dd      }t         j                  t         j                  t         j                  t         j                  |j                  |j                  g}t         j                  t         j                  t         j                  t         j                  |j                  |j                  g}t         j                  j                  |j                  |       t         j                  j                  |j                  |       y )Nr0   r$   r  r#   )r0   r   r0   r  r0   r0   r0   r  r  rK   rG  r   r   r   r  r   )
r   r   rx  ry  r	   ranksumsr   r   rL  r~  )	r  r   r  r  ref1ref2r   stat_refp_refs	            r   test_mixed_mask_nan_2r    s    RVVQ"&&"&&"&&19
RVVQ!RVVQ	4Ay)y)-Duu!!!$!/H	A>>1a&),D>>)Y/D ..1b
AC@HVVRVVRVV[[$++t{{4EJJ!!#--:JJ!!#**e4 ..12
FC8HVVRVVRVVVVT[[$++/EJJ!!#--:JJ!!#**e4r   c                      d} t         j                  j                  d      }|j                  |       }t        j                  |dd i}t        j                  |ddi}t         j
                  j                  ||       y )Nr4  r   r   r,  )r   r   r   r	   r6  rL  r~  )r   r   r7   r   r(  s        r   test_axis_None_vs_tupler    sc    E
))


"C

5A
--
&
&C==!,),DJJ!!#t,r   c                  
   t         j                  j                  d      } | j                  d      }| j                  d      }t        j                  ||      \  }}t	        j
                  |j                         |j                               }t	        j
                  ||d       }t	        j
                  ||d      }t	        j
                  |j                         |j                               }||k(  sJ ||k(  sJ ||k7  sJ y )Nr   )rG  r0   )r0   rG  r   r  )r   r   r   broadcast_arraysr	   r.  r   )	r   r7   r0  x2y2res0r1  r(  r*  s	            r   )test_axis_None_vs_tuple_with_broadcastingr    s     ))


"C

6A

6A  A&FBaggi3Da.Da0Dbhhj"((*5D4<<4<<4<<r   )r0   c                    t         j                  j                  d      }d}d}|j                  |      }|j                  |      }| }t        | D cg c]  }|dk\  r|nd|z    c}      } t	        |       } t        t        |             t        |       k7  rRd}t        j                  t        t        j                  |            5  t        j                  |||       d d d        y | d   dk  s| d   d	kD  rRd
}t        j                  t        t        j                  |            5  t        j                  |||       d d d        y t        j                  |||      }	h dt        |       z
  }
t        t        |
            }
|}g d}||
   ||
<   t        j                   ||      }|j"                  |
   }t        j$                  || d      }t        j$                  || d      }t        j&                  ||df      }t        j&                  ||df      }t        j                  ||d      }t         j(                  j+                  |	|       y c c}w # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   r  )r0   r   r#   z*`axis` must contain only distinct elementsr   r   r   r$   z0`axis` is out of bounds for array of dimension 3>   r   r0   r$   )r0   r0   r   )r0   r$   r0   )r   r   r   r  sortedr   rU  r   r   r   r   r   r	   r.  nextiterr   r   r   r   rL  r~  )r   r   shape_xshape_yr7   r0  axis_originalr   r   r   not_axisr  shape_y_broadcastedr  r&  r(  s                   r   test_other_axis_tuplesr    s	    ))


"CGG

7A

7AM D9qQ1AE)9:D$<D
3t9~T">]]9BIIg,>? 	9q!-8	9Aw{d2hlD]]9BIIg,>? 	9q!-8	9


Q
6C 3t9$HDN#H	
B#$+H$5!	/	0B
A	Rv	&B	Rv	&B	BB	 B	BB	 Bb"1-DJJ!!#t,C :
	9	9s   II(I!I!I*zweighted_fun_name, unpackerr  c                     | S r   r!   r6   s    r   r.   r.   0      A r   hmeanc                     | S r   r!   r6   s    r   r.   r.   1  r  r   pmeanc                     | S r   r!   r6   s    r   r.   r.   2  r  r   combine_pvaluesc                 2    | j                   | j                  fS r   )r   r   r6   s    r   r.   r.   3  s    qxx&= r   c                   ! | dk(  rd !nt        t        |       !!fd}d\  }}d}t        j                  j	                  d      }|j                  ||f      }|j                  ||f      }|j                  ||f      dk  }	|j                  ||f      d	k  }
|j                  ||f      d
k  }|j                  ||f      d
k  }d|	dd d f<   |j                         }|j                         }t        j                  ||	|
z  <   t        j                  |||z  <   t        j                  j                  ||	      }t        j                  j                  ||      }t        j                  ||
<   t        j                  ||<   t        j                  j                  ||
      }t        j                  j                  ||      }t        j                  ||	<   t        j                  ||<   t        j                  j                  ||	|
z        }t        j                  j                  |||z        }|	|
z  |z  |z  }t        j                  j                  ||      }t        j                  j                  ||      }t        j                  j                         5 }d}|j                  t        |        |||d|      } |||d|      } |||d|      } |||d|      } |||d|      }| dv r&t        t        j                  |       } ||||d      } d d d        t        j                  j                         t        j                  j                  |       t        j                  j                  |       t        j                  j                  |       | dv rFt        j                  j!                   j#                         |t        j$                  |                 y y # 1 sw Y   xY w)Nr  c                 2    t        j                  | fddi|S )NpgzG?)r	   r  )r  r   s     r   weighted_funz6test_mean_mixed_mask_nan_weights.<locals>.weighted_fun<  s    ;;q3D3F33r   c                         | i |      S r   r!   )r   r   r   r  s     r   funcz.test_mean_mixed_mask_nan_weights.<locals>.funcA  s    d5f566r   r  r   l    r   r  r  r  Tr$   r  rI  r   )weightsr   r   r   r   >   r  )r  r   r   )getattrr	   r   r   r   r?  r  r   rx  ry  rL  r   r   r   mstatsr~  r   
compressedr   )"weighted_fun_namer   r  r&  r'  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  mask_all	a_masked4	b_masked4r   r   r   r1  r(  r*  r  weighted_fun_mar  r  s"    `                               @r    test_mean_mixed_mask_nan_weightsr  -  s~    G#	4 u&787 DAqD
))



+C!Q A!Q Akk1vk&,Gkk1vk&,Gkk1vk&-Gkk1vk&-GGAqDMVVXFVVXF "F7W "F7W""17"3I""17"3IIgIg""17"3I""17"3IIgIg""1Gg,="?I""1Gg,="?I'!G+g5H""18"4I""18"4I		%	%	' =3-

>7+66f4HIyV$OIyV$OIyW4PIy[tT 	)%ell4EFO"9i(,t=D=  JJ!!$,JJ!!$,JJ!!$,JJ!!$,I%


""4??#4c288C=.6IJ &)= =s   $A?O66O?c                  b   d} t        j                  t        |       5  t        j                  g dd       d d d        d} t        j                  t        |       5  t        j                  g dd       d d d        d} t        j                  t        |       5  t        j                          d d d        d	} t        j                  t        |       5  t        j                  g dd
t
        g dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   y xY w)Nz"got an unexpected keyword argumentr   r  T)invalid_argz! got multiple values for argument)r  z&missing 1 required positional argumentz7takes from 1 to 4 positional arguments but 5 were givenr   r  r  )r   r   r/  r	   r  float)r   s    r   test_raise_invalid_args_g17713r    s     3G	y	0 1I401 2G	y	0 'I&' 7G	y	0  HG	y	0 8Iq%B78 81 1' ' 8 8s/   DDD"D%D
DD"%D.r   c                      G fdd      }dgdz  g dz   t        j                   ||             }|j                  dk(  sJ |j                  dk(  sJ y )Nc                        e Zd Zd Zd fd	Zy)&test_array_like_input.<locals>.ArrLikec                      || _         || _        y r   )_x_dtype)selfr7   r   s      r   __init__z/test_array_like_input.<locals>.ArrLike.__init__  s    DGDKr   Nc                 F    t        j                  | j                        S )Nr  )r   asarrayr  )r  r   r  r7   s      r   	__array__z0test_array_like_input.<locals>.ArrLike.__array__  s    ::at{{33r   )NN)r=  
__module____qualname__r  r  r6   s   r   ArrLiker    s    	 	4r   r  r0   r$   )r#   rK   rG  r  )r	   r)   rH   )r   r  r   r7   s      @r   test_array_like_inputr     sT    
4 4 
A	A
**WQe,
-C88q==99>>r   )F)FT)x	itertoolsr   r   r   r   r@  r   numpyr   numpy.testingr   r   r   scipyr	   scipy.statsr
   scipy.stats._axis_nan_policyr   scipy._lib._utilr   r   r"   r6  r  dictr  r.  r  r  r  r  semiqrkurtosisskewkstatkstatvarmomentjarque_berattest_1sampr  	ttest_rel	ttest_indr)   differential_entropy	variationfriedmanchisquarebrunnermunzelmoodshapiroks_1sampcdfks_2sampkstestlevenefligneransarientropyskewtestkurtosistest
normaltestcramervonmisescramervonmises_2sampepps_singleton_2sampbartletttmeantvartmintmaxtstdtsemcircmeancircvarcircstdf_onewayalexandergovernr  axis_nan_policy_casesr   r   r   rl  r   r   r   markfilterwarningsparametrizer   slowr   r   r   r  r   r+  r2  r7  r9  rE  rQ  r\  rr  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r   r!   r   r   <module>rY     s   K J 	    J J   I &&K ]]EGTVQ5$7	K
 ^^Y1eT:K 8\":Aq%NK ^^Z&&!11a,.K ^^UWdfaD,.K ^^UWvx0!Q<>K [[%'461a?K [[%'461a?K [['461a?K  YYAun=!K" YYAun=#K$ ^^UWdfaE>B%K& ZZ$&!Q~>'K( [[%'461a?)K* ^^UWdfaE>B+K, \\57DFAq%@-K. \\57D1v.1eTB/K0 Aud;1K2 1#($&!Q3K6 __egtvq!T3FG7K8 __egtvq!U4GH9K: 5$$%tTVQ5$G;K< 5??#UWdfaD$G=K> 5??#UWdfaE4H?K@ ZZ$&!Q.IJAKB $&!Q~NCKD __egtvq!UNCEKF egtvq!T4@GKH %'461a=IKJ ZZ"aE40KKL ]]EGRAud3MKN ^^dfjj]DFAq%CEOKR ^^UWdfaECESKV \\DFJJ=$&!QCEWKZ \\57DFAq%CE[K^ \\57B1eT2_K` ]]EG	dK5$aKd \\57B1eT2eKf ]]EGTVQ5.AgKh ]]EGTVQ4@iKj ^^UWdfaE48kKl $&!Qt<mKn uw1eT:oKp 9dfaE,.qKt $&!Q,.uKx $&!QtDyKz ^^UWb!Qt4{K| [[%'2q!UN;}K~ ZZ"aE>:K@ ZZ"aE>:AKB ZZ"aE>:CKD ZZ"aE>:EKF ZZ"aE>:GKH ^^UWdfaE>BIKJ ]]EGTVQ5.AKKL ]]EGTVQ5.AMKN ^^UWb!Qt4OKP EGRAu,.QKT EGRAud;UK ^F 8 GHJ  "JJ<  "MM?  "'$P 8<  @A$UTI@ 4512 01FH,)GH&4(*Z8F 9 ) IH 3 6F 4512 01FH,)GH&5Q<0*<>F> 1 IH 3 6 Fu6p 45 01FH,)GH*EGJ@G IH 6J@d '<=9kk57DFA~6%'Hl#;QEG
 "(& >(&V ) ;;* >>1-/0	0	 &9-E .E$%$/$  01FH,H,*?,B  01FHFAH FAR F6.r -F &5Q<0- 1-,,-^'5T-$ &l5Q<;<yHJ+-J+-\ "	+	+	+	=>	FKFKR8* 288RZZ"GH Ir   