
    x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 Zd Zej&                   e        e       dd	d
dfej,                  d e       d	d	d
dfej.                   e       ddid	d	d
dfej0                  dddid	d	dd fej0                   e        e       dd	dd fej0                   e       ddidddd fej2                   e        e       ddd
d fej4                   e        e       ddd
d fej6                  d e       ddd
d fej8                   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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jD                   e        edd	g"      dd	d
dfejF                   e        e       dd	d
dfejH                   ejJ                  d g      f e       dd#d
efejL                   e        e       d	d#defejN                   e        e       d	d#d
ef eejH                        d$ e       dd	d
df eejL                         e        e       d	d	ddf eejN                         e        e       d	d	d
dfejP                   e        e       dd	dd% fgZ)h d&Z*d'd(hZ+ejP                  hZ,	 dad)Z-	 dbd*Z.d	d+d
dd,d-Z/ej`                  jc                  d.      ej`                  jc                  d/      ej`                  je                  d0e)      ej`                  je                  d1d2      ej`                  je                  d3d4      ej`                  je                  d5d6      d7                                           Z3ej`                  jh                  ej`                  jc                  d.      ej`                  jc                  d/      ej`                  je                  d0e)      ej`                  je                  d1d2      ej`                  je                  d3 e5d8d            ej`                  je                  d5d9      d:                                                  Z6d; Z7ej`                  jc                  d.      ej`                  je                  d0e)      ej`                  je                  d1d2      ej`                  je                  d5d<      d=                             Z8ej`                  je                  d1d>      ej`                  je                  d?ej2                   e        e       dd@ fej.                   e       ddid	dff      ej`                  je                  dAdB      dC                      Z9ej`                  je                  dDej@                  dfejB                  dfg      dE        Z:ej`                  je                  d3dF      dG        Z;dH Z<dI Z=ej`                  je                  d0e)      dJ        Z>dK Z?dL Z@ej`                  jh                  ej`                  je                  d0e)      dM               ZAdN ZBdO ZCdP ZDej`                  je                  d3 e5d8d            dQ        ZEdR ZFdS ZGdT ZHdU ZIej`                  je                  d3 eJ e e5d8d      d	            dVgz         dW        ZKej`                  je                  dXg dY      dZ        ZLd[ ZMej`                  je                  d\ eJej                  d]   ej                  d^   z   ej                  d_   z               d`        ZOy)c    )productcombinations_with_replacementpermutationsN)assert_allcloseassert_equalsuppress_warnings)stats) _masked_arrays_2_sentinel_arraysc                     | j                         \  }}| j                  | j                  | j                  | j                  | j
                  ||fS N)confidence_interval	statisticpvaluedf_standard_error	_estimate)reslowhighs      H/usr/lib/python3/dist-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   r4   s    r   r,   r,   .   r6   r   )gQ?c                     | fS r   r   r4   s    r   r,   r,   /   r6   r   c                     | fS r   r   r4   s    r   r,   r,   0        r   c                     | fS r   r   r4   s    r   r,   r,   1   r:   r   c                     | fS r   r   r4   s    r   r,   r,   2       aT r   c                     | fS r   r   r4   s    r   r,   r,   3   s    ! r   c                     | fS r   r   r4   s    r   r,   r,   4   r6   r   c                     | fS r   r   r4   s    r   r,   r,   5   r=   r   c                     | fS r   r   r4   s    r   r,   r,   6   s    A4 r   )moment   )r   c                 2    | j                   | j                  fS r   )r'   countr4   s    r   r,   r,   @   s    8I r   >   division by zeroMean of empty sliceThe input contains nanData input must not be emptyNot enough test observationsNot enough other observationsData must be at least length 3!Degrees of freedom <= 0 for slice!x and y must contain at least two$At least one observation is required$The sample must contain at least two$`x` and `y` must be of nonzero size.'x and y should have at least 5 elements)Data passed to ks_2samp must not be empty+The exact distribution of the Wilcoxon test.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   r.   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_obsr5   jsampleskn_realsindices	new_shapes                   r   _mixed_data_generatorrw   _   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 )NrY   r.   r"   r^   )r_   r`   ra   rb   re   rg   rh   )ri   rj   r]   rk   rl   all_nansrm   rn   rp   shaper5   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_policyrl   _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   r.   r   )r`   anyisnan
ValueErroroverride_propagate_funcsfullrb   
logical_or)hypotestdata1dunpackerr~   r   rl   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   ri   r~   rl   r   r   )r   r   r|   r]   )r.   data_generator)mixedc
                 ,    t        | |||||||||	
       y r   _axis_nan_policy_test
r   r   r   ri   r~   rl   r   r   r]   r   s
             r   test_axis_nan_policy_fastr      s"     (D$	9f"JnFr   )ry   
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!   )ri   rj   r]   rk   rl   r   rX   ry   r"   Tr   Fr^   ignoredivideinvalidr}   r   r.   matchr|   r   r]   r   z!Precision loss occurred in momentrV   gV瞯<rtolr   )"r`   re   default_rngrw   r{   rg   broadcast_torz   zerosndenumerateerrstater   r   lenRuntimeWarningUserWarningr   ZeroDivisionErrorpytestraisestypereescapestrr   too_small_messages
startswithr   rb   inaccuracy_messagesr   filterr   dtype)r   r   r   ri   r~   rl   r   r   r]   r   rk   rj   data_gen_kwdsinherent_sizerm   output_shaper   data_b
statisticspvaluesrn   _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$)ry   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>.unpackerX  r   r   r   r   )r"   r   )r"   rY   r   g?ry   r|   >   r   r   r   r   r   )NNNr   r   Tr}   r   )r`   re   r   r_   ziprb   ravelr   r   r   r   r   r   r   r   r   r   r   r   list
issubdtyper   number)r   r   r   ri   r~   rl   r   r   r   rk   rn   rm   masksr   maskdata_raveledr   ea_streb_strec_strres1daear   ebres1dcecitems                              r   !test_axis_nan_policy_axis_is_Noner   L  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   ri   r   c                     | fS r   r   r4   s    r   r,   r,     s    ! r   )sample_shape
axis_cases)))r"   r!   r!      )Nr   r^   )r   r"   )r.   r^   )r!   r.   r"   r   ))
   )r   r^   ))rY   r   r   r.   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   皙?r.   T)r]   keepdimsF)r]   r   r   r\   )r`   re   r   r_   copyr   rb   r   ra   r   
isinstanceinttuplerz   squeezer   )r   r   r   ri   r   r   r   r   rk   r   rm   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`   re   r   r   r   )
r   r   mnrk   r5   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   r.   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`   re   r   r	   mannwhitneyur   r   r   	TypeErrorr   r   )r]   rz   rk   r5   yres1r   r   s           r   .test_axis_nan_policy_decorated_positional_axisr	    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   )rr   rr   )r`   re   r   rb   r	   kruskalr   r   r  r   r   )rz   rk   r5   r   s       r   .test_axis_nan_policy_decorated_positional_argsr    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   r  r.   )r5   r  z/mannwhitneyu() got multiple values for argumentr   )r`   re   r   rb   r	   r  r   r   r   r  r   r   )rz   rk   r5   r  r   r   s         r   .test_axis_nan_policy_decorated_keyword_samplesr    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>.unpacker-  r   r   r"      rZ   r]   r^   g-q=r   )__name__r   skipr`   re   r   uniformpickledumpsloadsr   )r   r   r   ri   r~   rl   r   rk   rm   pickled_hypotestunpickled_hypotestr  r   s                r   &test_axis_nan_policy_decorated_pickledr  !  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   )rn   combor]   rr   outputr   	references          r   test_check_empty_inputsr(  8  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   r.   FT)maxndimr_   setrz   addr   )arraysr]   arrn_dimsdimdim_lengthss         r   _check_arrays_broadcastabler3  N  s     f-s#((-.F#'19$$Qq! 
44<e 	1Cchh399cT?a#7		3$0	1 {a
 ! .s   B3c           	         | t         v rd}t        j                  |       |d }d }ddg}	 |||	      D ]  }
t        d |
D              st	        d |
D              }t        | |      D ]  }	 t        j                  j                  |
|      }t        j                  j                         5 }|j                  t        d	       |j                  t        d
       t        j                  ||      t        j                  z  }d d d         | g |
|d|i|} ||      }t        |      D ]  }t!        ||             y # 1 sw Y   ExY w# t"        $ r t%        |
|      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   r.   r   r+   s    r   r,   ztest_empty.<locals>.<lambda>z  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   )r0  rn   r%  s      r   small_sample_generatorzHtest_empty.<locals>.small_data_generator.<locals>.small_sample_generator~  s9      *:9aH *E((5/)**s   35)r_   r   )ri   r0  r9  rn   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   NrZ   .0r   s     r   	<genexpr>ztest_empty.<locals>.<genexpr>  s     :6;;!#:s   c              3   4   K   | ]  }|j                     y wr   )r+  r=  s     r   r?  ztest_empty.<locals>.<genexpr>  s     9vv{{9s   r  r   r\   r]   z/Array shapes are incompatible for broadcasting.r   )r   r   r  r   r*  r_   r	   	_stats_py_broadcast_concatenater`   r#  r   r   r   r$  rb   r   r   r3  r   )r   r   r   ri   r~   rl   r   r5  r;  r0  rr   max_axisr]   concatr   expectedr   rn   r   s                      r   
test_emptyrF  o  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
 BB$BTBTBsmy) 3A Q23	A%A C C  
A6wEEE L]]:W= JOO::7DIJ J J]]:W= A@g@@4@4@A A A
As[   0>E.AE>EEE4H!F1	(	H1F:6"HG1	(	H1G:6H H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!   r   r.   )r   r  r"   )r  rX   r!   r   rC   rX   )r`   re   seedrandmamasked_arrayfinfofloat64r*  	nextafterinfrb   r
   rm   r   r#  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)Nr.   r"   r   )r.   r"   r.   r   r.   r   )r   r   r   r   r   r   r^   Tr   z7This function replaces masked elements with sentinel...r   r.   r"   r!   )r   r   )r`   iinfoint16r*  rN  
complex128arrayrL  int8r
   r   r   r   MaskedArrayminarange
zeros_likeboolr   r   r   float32r	   gmean)max16max128cabcrX  rY  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)               )rY   rH     rI  rY   rH  r  rI  r   )r   )rY   rH  r    rI  )FFFTFrb  r  )FFFFTF)FFFTTFr   r|   )r	   r  r`   rb   r#  rR  rL  rM  )malesfemalesr   females2r   females3mask3r  females4mask4res4females5mask5res5res6s                  r   test_masked_stat_1dr    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!   r   r  r.   皙?)FFFTrb  r   r   r]   r\   )r`   re   rJ  rK  rL  rM  r   rb   r	   r  r#  rR  )r]   rr  rs  rt  mask_amask_ca_maskedc_maskeda_nansc_nansr   r   s               r   test_masked_stat_3dr  1  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!   rY   r^   r   r   r  333333?Tr"   rb  r   r  r|   r   )r`   re   rJ  rK  r   rb   rL  rM  r	   wilcoxonr#  rR  )r   r   r]   rr  rs  mask_a1mask_a2mask_b1mask_b2r  b_nans	a_masked1	b_masked1	a_masked2	b_masked2	a_masked3	b_masked3r   r  r   r  r  s                         r   test_mixed_mask_nan_1r  H  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 )Nr.   r"   rc  r!   )r.   r   r.   ra  r.   r.   r.   r`  rb  r   r  rX   r   r^   r  r   )
r`   rb   rL  rM  r	   ranksumsr   r   r#  rR  )	rr  r   r  rs  ref1ref2r   stat_refp_refs	            r   test_mixed_mask_nan_2r  w  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 )Nr  r   r]   r  )r`   re   r   r	   r  r#  rR  )rz   rk   r5   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   )r  r.   )r.   r  r\   r   )r`   re   r   broadcast_arraysr	   r  r   )	rk   r5   r  x2y2res0r  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   )r.   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  r\d}t        j                  t         j                  t        j                  |            5  t        j                  |||       d d d        y | d   dk  s| d   d	kD  r\d
}t        j                  t         j                  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  )r.   rX   r!   z*`axis` must contain only distinct elementsr   r\   r^   r"   z0`axis` is out of bounds for array of dimension 3>   r   r.   r"   )r.   r.   rX   )r.   r"   r.   )r`   re   r   r   sortedr   r,  r   r   	AxisErrorr   r   r	   r  nextiterr   rz   rg   rf   r#  rR  )r]   rk   shape_xshape_yr5   r  axis_originalrn   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">]]2<<ryy/AB 	9q!-8	9Aw{d2hlD]]2<<ryy/AB 	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)<I5)I25I>weighted_fun_name)ro  hmeanpmeanc                    | dk(  rd }nt        t        |       }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  )rr  r   s     r   weighted_funz6test_mean_mixed_mask_nan_weights.<locals>.weighted_fun  s    ;;q3D3F33r   r  r^   l    rZ   r   r  r  Tr"   rb  r   r   )weightsr   r]   r|   r   >   ro  r  )r  r]   r   )getattrr	   r`   re   r   r  r   rb   rL  rM  r#  r   r   r   mstatsrR  r   
compressedr   ) r  r  r   r   r]   rk   rr  rs  r  r  r  r  r  r  r  r  r  r  r  r  mask_all	a_masked4	b_masked4r   r   r   r  r   r  r  weighted_fun_mar  s                                    r    test_mean_mixed_mask_nan_weightsr    s    G#	4 u&78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+66&,49Iy'-D:Iy'-D:Iy'.T;Iy'2?
 $66%ell4EFO"9i(,t=D%=* JJ!!$,JJ!!$,JJ!!$,JJ!!$, 22


""4??#4c288C=.6IJ 33= =s   A?O..O7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   rc  T)invalid_argz! got multiple values for argument)rr  z&missing 1 required positional argumentz7takes from 1 to 4 positional arguments but 5 were givenr   r  r   )r   r   r  r	   ro  float)r   s    r   test_raise_invalid_args_g17713r  9  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   FloatIntegerComplexc                       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 fdZy)&test_array_like_input.<locals>.ArrLikec                     || _         y r   )_x)selfr5   s     r   __init__z/test_array_like_input.<locals>.ArrLike.__init__W  s	    DGr   c                 2    t        j                        S )Nr_  )r`   asarray)r  r   r5   s    r   	__array__z0test_array_like_input.<locals>.ArrLike.__array__Z  s    ::au--r   N)r  
__module____qualname__r  r  )r   r5   s   r   ArrLiker  V  s    		.r   r  r.   r"   )r!   r   r  )r	   r'   rE   )r   r  r   r5   s   `  @r   test_array_like_inputr  M  sQ    . . 
A	A
**WQZ
 C88q==99>>r   )F)FT)P	itertoolsr   r   r   r   r  r   numpyr`   numpy.testingr   r   r   scipyr	   scipy.stats._axis_nan_policyr
   r   r    r  r   dictr  r  r  ro  r  r  semiqrkurtosisskewkstatkstatvarrB   jarque_berattest_1samprg  	ttest_rel	ttest_indr'   axis_nan_policy_casesr   r   r   rw   r{   r   markfilterwarningsparametrizer   slowr_   r   r   r   r   r  r	  r  r  r  r(  r3  rF  r]  r~  r  r  r  r  r  r  r   r  r  r  	typecodesr  r   r   r   <module>r     s   K J 	    J J  I& ]]EGTVQ5$7
^^Y1eT:
8\":Aq%N
^^Z&&!11a,.
^^UWdfaD,.
^^UWvx0!Q<>
[[%'461a?
[[%'461a?
[['461a?
YYAun=
YYAun=
^^UWdfaE>B
ZZ$&!Q~>
[[%'461a?
^^UWdfaE>B
\\57DFAq%@
\\57DA/AudC
Aud;
1#($&!Q
__egtvq!T3FG
__egtvq!U4GH5$$%tTVQ5$G5??#UWdfaD$G5??#UWdfaE4H
ZZ$&!Q.IJA! J6 & GHJ  "JJ<  "'$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=AH =A@ F6.r -F &5Q<0- 1-,,-^'5T-$ &l5Q<;<yHJ+-J+-\ -0KLHK MHKV8( 	",,w
LL#$LL#$ %'
'
r   