a
    Qe                      @   s  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 Zd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jdddiddddd feje e ddddd feje ddidd
ddd feje e ddddd feje e ddddd fejde ddddd feje e ddddd feje e ddddd feje e dddd d feje e dddd!d fej e e dddd"d fej!e e dddd#d fej"e e dddd$d fej"e eddgd%ddddfej#e e ddddfej$e%d gfe dd&defej&e e dd&defej'e e dd&defeej$d'e ddddfeej&e e ddddfeej'e e ddddfej(e e dddd(d fgZ)h d)Z*d*d+hZ+ej(hZ,dd,d-Z-dd.d/Z.dd0ddd1d2d3Z/ej01d4ej01d5ej02d6e)ej02d7d8ej02d9d:ej02d;d<d=d> Z3ej0j4ej01d4ej01d5ej02d6e)ej02d7d8ej02d9e5d?d
ej02d;d@dAdB Z6dCdD Z7ej01d4ej02d6e)ej02d7d8ej02d;dEdFdG Z8ej02d7dHej02dIeje e ddJd feje ddiddffej02dKdLdMdN Z9ej02dOej dfej!dfgdPdQ Z:ej02d9dRdSdT Z;dUdV Z<dWdX Z=ej02d6e)dYdZ Z>d[d\ Z?d]d^ Z@ej0j4ej02d6e)d_d` ZAdadb ZBdcdd ZCdedf ZDej02d9e5d?d
dgdh ZEdidj ZFdkdl ZGdmdn ZHdodp ZIej02d9eJee5d?d
ddqg drds ZKej02dtg dudvdw ZLdxdy ZMej02dzeJejNd{ ejNd|  ejNd}  d~d ZOdS )    )productcombinations_with_replacementpermutationsN)assert_allcloseassert_equalsuppress_warnings)stats) _masked_arrays_2_sentinel_arraysc                 C   s(   |   \}}| j| j| j| j| j||fS N)confidence_interval	statisticpvalueZdfZ_standard_errorZ	_estimate)reslowhigh r   Z/var/www/sunrise/env/lib/python3.9/site-packages/scipy/stats/tests/test_axis_nan_policy.pyunpack_ttest_result   s    r   c                    s    fdd}|S )Nc                     s    | i |}|  S r
   )r   )argskwargsr   ttestr   r   ttest_ci   s    z_get_ttest_ci.<locals>.ttest_cir   )r   r   r   r   r   _get_ttest_ci   s    r         F)ZlessmethodZ
asymptotic)ZprattmodeautoTc                 C   s   | j | jfS r
   r   r   r   r   r   r   <lambda>(       r!      c                 C   s   | j | jfS r
   r   r    r   r   r   r!   *   r"   Zapproxc                 C   s   | j | j| jfS r
   )r   r   Z
zstatisticr    r   r   r   r!   ,   r"   c                 C   s   | fS r
   r   xr   r   r   r!   -   r"   c                 C   s   | fS r
   r   r$   r   r   r   r!   .   r"   )gQ?c                 C   s   | fS r
   r   r$   r   r   r   r!   /   r"   c                 C   s   | fS r
   r   r$   r   r   r   r!   0   r"   c                 C   s   | fS r
   r   r$   r   r   r   r!   1   r"   c                 C   s   | fS r
   r   r$   r   r   r   r!   2   r"   c                 C   s   | fS r
   r   r$   r   r   r   r!   3   r"   c                 C   s   | fS r
   r   r$   r   r   r   r!   4   r"   c                 C   s   | fS r
   r   r$   r   r   r   r!   5   r"   c                 C   s   | fS r
   r   r$   r   r   r   r!   6   r"   )moment   )r   c                 C   s   | j | jfS r
   )r   countr$   r   r   r   r!   @   r"   >   zdivision by zeroz!Degrees of freedom <= 0 for slicez$The sample must contain at least twozData must be at least length 3z.zero-size array to reduction operation maximumzNot enough test observationszData input must not be emptyz'x and y should have at least 5 elementsz+The exact distribution of the Wilcoxon testzNot enough other observationszMean of empty slicez$At least one observation is requiredzThe input contains nanz!x and y must contain at least twoz)Data passed to ks_2samp must not be emptyz$`x` and `y` must be of nonzero size.z-Precision loss occurred in moment calculation/Sample size too small for normal approximation.c              	   C   s  g }t | D ]}d}|rdnd| }t|||ftj }	t |D ]x}
|	|
d d d d f }tdddd|d |gD ].\}}||d | }|j|d|||f< qt|j|dd|d d < qB|gdg|   |g }d|d| < |	|}	t|	d	|}	|	|	 q|S )
N      r   r#   r   r   sizeaxis)
rangenponesnan	enumerateZpermutationrandomreshapemoveaxisappend)	n_samplesn_repetitionsr/   rngpaireddataiZ
n_patternsn_obsr%   jsampleskZn_realsindicesZ	new_shaper   r   r   _mixed_data_generator_   s"     
rE   c                 C   s~   g }t | D ]l}|rdnd| }|gdg|   |g }	d|	d| < |rVt|	tj n||	}
t|
d|}
||
 q|S )Nr+   r#   r   r0   )r1   r2   r3   r4   r6   r8   r9   )r:   r;   r/   r<   r=   all_nansr>   r?   r@   shaper%   r   r   r   _homogeneous_data_generator   s    rH   raise	n_outputs
nan_policyr=   _no_decoc          
         s   |dkr,|D ]}	t t |	rtdqn|dkrj| tvrj|D ]&}	t t |	r@t |t j  S q@n`|dkr|sdd |D }nDt |d  |dd  D ]}	t  t |	 q fd	d|D }|| g ||R d
|i|S )NrI   The input contains nan values	propagateomitc                 S   s   g | ]}|t |  qS r   )r2   isnan.0sampler   r   r   
<listcomp>   r"   z!nan_policy_1d.<locals>.<listcomp>r   r#   c                    s   g | ]}|   qS r   r   rR   nan_maskr   r   rU      r"   rM   )r2   anyrQ   
ValueErroroverride_propagate_funcsfullr4   
logical_or)
hypotestdata1dunpackerrK   rL   r=   rM   r   kwdsrT   r   rV   r   nan_policy_1d   s$    ra   zignore::RuntimeWarningzignore::UserWarning)r]   r   r`   r:   rK   r=   r_   rL   )rO   rP   rI   r/   )r#   data_generator)mixedc
           
      C   s   t | |||||||||	
 d S r
   _axis_nan_policy_test
r]   r   r`   r:   rK   r=   r_   rL   r/   rb   r   r   r   test_axis_nan_policy_fast   s    
rg   )rF   
all_finiterc   c
           
      C   s   t | |||||||||	
 d S r
   rd   rf   r   r   r   test_axis_nan_policy_full   s    rj   c
                    s  |sdd }t jd}
d}|| |
|d}|	dkrHd}tf i |}nF|	dkrld	}d
|d< tf i |}n"|	dkrd	}d|d< tf i |}|g|g|   fdd|D }fdd|D }t }t }t |D ]\}fdd|D }t jddd  z|t| ||g|R |||d
d|}|| g ||R d|i|}t	|d |d  t
|d	krt	|d |d  W n ttttfy  zntjtttd4 t| ||g|R |||d
d| W d    n1 s0    Y  tjtttd, | g ||R d|i| W d    n1 sX0    Y  tfddtD rt |t j}n~tfddtD rt H}|t |t t| ||g|R |||d
d|}W d    n1 s0    Y  nW Y d n
d 0 0 W d    n1 s40    Y  |d |< t
|d	kr|d |< q|dkr|	dksd}tjt|d. | g ||R  |d| W d    n1 s0    Y  nt z}t jdddJ |td |td || g ||R  |d|}W d    n1 s40    Y  W d    n1 sT0    Y  t|d |dd t	|d j|j t
|d	krt|d |dd t	|d j|j d S ) Nc                 S   s   | S r
   r   r    r   r   r   r_      s    z'_axis_nan_policy_test.<locals>.unpackerr   r   )r:   r;   r/   r<   r=   rc   r*   rF   r   Tri   Fc                    s   g | ]}t | d qS r0   )r2   r8   rR   r.   r   r   rU      r"   z)_axis_nan_policy_test.<locals>.<listcomp>c                    s$   g | ]}t | |jd  g qS rk   )r2   broadcast_torG   rR   )output_shaper   r   rU      s   c                    s   g | ]}|  qS r   r   rR   )r?   r   r   rU      r"   ignoredivideinvalidrJ   rL   r#   matchc                    s   g | ]}t  |qS r   str
startswithrS   messageer   r   rU   !  s   c                    s   g | ]}t  |qS r   rt   rw   ry   r   r   rU   $  s   rI   rN   r/   rL   z!Precision loss occurred in momentr)   gV瞯<Zrtol)r2   r6   default_rngrE   rH   zerosZndenumerateerrstatera   r   lenRuntimeWarningUserWarningrY   ZeroDivisionErrorpytestraisestypereescaperu   rX   too_small_messagesr[   r4   inaccuracy_messagesr   filterr   dtype)r]   r   r`   r:   rK   r=   r_   rL   r/   rb   r<   r;   Zdata_gen_kwdsZinherent_sizer>   Zdata_b
statisticsZpvalues_r^   Zres1dres1dbsuprx   r   r   )r/   rz   r?   rm   r   re      s    



&<




(:@
Hre   )rF   ri   rc   emptyc	                    sT  |sdd }t jd|dkr8fddt|D }	nfddt|D }	|dkrfd	dt|D }
t|	|
D ]\}}t j||< qvn|d
krdd |	D }	dd |	D }|dkrh|dvrhd}tjt|d. | g |	|R d |d| W d    n1 s0    Y  tjt|d. | g ||R d |d| W d    n1 sZ0    Y  nd\ }}t j	ddd z(t
| ||g|R |||dd|}W n4 tttfy } zt| W Y d }~n
d }~0 0 z$|| g ||R d|i|}W n4 tttfy: } zt|}W Y d }~n
d }~0 0 z&|| g |	|R d |d|}W n4 tttfy } zt|}W Y d }~n
d }~0 0  s|s|rt fddtD sJ  |  kr|ks0n J nJt|| t|| t|t| t| D ]}t |jt jsJ qW d    n1 sF0    Y  d S )Nc                 S   s   | S r
   r   r    r   r   r   r_   X  s    z3test_axis_nan_policy_axis_is_None.<locals>.unpackerr   r   c                    s   g | ]}  d qS ))r   r   r6   rS   r?   r<   r   r   rU   ^  r"   z5test_axis_nan_policy_axis_is_None.<locals>.<listcomp>c                    s   g | ]}  d qS )r   r+   r   r   r   r   r   rU   `  r"   rc   c                    s   g | ]}  d dkqS )r   g?r   r   r   r   r   rU   c  r"   rF   c                 S   s   g | ]}|t j qS r   )r2   r4   rR   r   r   r   rU   g  r"   c                 S   s   g | ]}|  qS r   ravelrR   r   r   r   rU   i  r"   rI   >   r   ri   rN   rr   r{   )NNNrn   ro   TrJ   rL   c                    s   g | ]}t  |qS r   rt   rw   )ea_strr   r   rU     s   )r2   r6   r}   r1   zipr4   r   r   rY   r   ra   r   r   ru   rX   r   r   listZ
issubdtyper   number)r]   r   r`   r:   rK   r=   r_   rL   rb   r>   masksrT   maskZdata_raveledrx   Zeb_strZec_strZres1daZear   ZebZres1dcZecitemr   )r   r<   r   !test_axis_nan_policy_axis_is_NoneL  s    &*

 

r   )rP   rO   )r]   r   r`   r:   r_   c                 C   s   | fS r
   r   r$   r   r   r   r!     r"   )sample_shape
axis_cases)))r   r   r      )Nr   r0   )r   r   )r#   r0   )r   r#   r   r   ))
   )r   r0   ))r+   r   r   r#   c                    s  |sdd }t jd  fddt|D }dd |D }	 fddt|D }
t|	|
D ]\}}t j||< q`|D ]L}t}|d u rt t}n&t	|t
rd||< n|D ]}d||< qt|}|| g ||R |d	d
|}|| g ||R |dd
|}|| g |	|R |d	|d|}|| g |	|R |d|d|}t||||D ]^\}}}}|j|ksJ t j||d}t|| |j|ksJ t j||d}t|| qfqxd S )Nc                 S   s   | S r
   r   r    r   r   r   r_     s    ztest_keepdims.<locals>.unpackerr   c                    s   g | ]}  qS r   r   rS   r   r<   r   r   r   rU     r"   z!test_keepdims.<locals>.<listcomp>c                 S   s   g | ]}|  qS r   )copyrR   r   r   r   rU     r"   c                    s   g | ]}  d k qS )皙?r   r   r   r   r   rU     r"   r#   T)r/   keepdimsF)r/   r   rL   r.   )r2   r6   r}   r1   r   r4   r   r3   r   
isinstanceinttuplerG   Zsqueezer   )r]   r   r`   r:   r_   r   r   rL   r>   Znan_datarW   rT   r   r/   Zexpected_shapeaxr   Zres_baseZnan_resZnan_res_baserZr_baseZrnZrn_baser   r   r   test_keepdims  sV    




r   )funnsampc           	      C   sd   d\}}t jd}||||f}| | }| |ddi}| dd |D }t|| t|| d S )N)   	   r   rM   Tc                 S   s   g | ]}|  qS r   r   )rS   xir   r   r   rU     r"   z5test_hypotest_back_compat_no_axis.<locals>.<listcomp>)r2   r6   r}   r   )	r   r   mnr<   r%   r   res2res3r   r   r   !test_hypotest_back_compat_no_axis  s    
r   r   r#   r   c              	   C   s   d}t jd}||}||}t||dd| }tj||dd| d}t|| d}tjtt	
|d& tj||dd| | d W d    n1 s0    Y  d S )N)r   r   r   r   Tz	two-sidedr.   z6mannwhitneyu() got multiple values for argument 'axis'rr   )r2   r6   r}   r   mannwhitneyur   r   r   	TypeErrorr   r   )r/   rG   r<   r%   yres1r   rx   r   r   r   .test_axis_nan_policy_decorated_positional_axis  s    


r   c                  C   s   d} t jd}|| }t j|d< tj|  d}tjtt	
|d tj|d W d    n1 sh0    Y  tjtt	
|d  tj|d|i W d    n1 s0    Y  d S )Nr   r   r   r   r   r   r   r   r   z6kruskal() got an unexpected keyword argument 'samples'rr   )rB   rB   )r2   r6   r}   r4   r   kruskalr   r   r   r   r   )rG   r<   r%   rx   r   r   r   .test_axis_nan_policy_decorated_positional_args  s    


*r   c                  C   s   d} t jd}|| }t j|d< tj| }tj|d |d d}t|| d}tjt	t
|d* tj||d |d d W d    n1 s0    Y  d S )N)r   r   r   r   r   r   r#   )r%   r   z/mannwhitneyu() got multiple values for argumentrr   )r2   r6   r}   r4   r   r   r   r   r   r   r   r   )rG   r<   r%   r   r   rx   r   r   r   .test_axis_nan_policy_decorated_keyword_samples  s    



r   c                 C   s   d| j v rtd tjd}|s,dd }|j|ddfd}t| }	t	|	}
|| g ||R d	d
i|}||
g ||R d	d
i|}t
||dd d S )Nr   z0Can't pickle functions defined within functions.r   c                 S   s   | S r
   r   r    r   r   r   r_   -  s    z8test_axis_nan_policy_decorated_pickled.<locals>.unpackerr      r,   r/   r0   g-q=r|   )__name__r   skipr2   r6   r}   uniformpickledumpsloadsr   )r]   r   r`   r:   rK   r=   r_   r<   r>   Zpickled_hypotestZunpickled_hypotestr   r   r   r   r   &test_axis_nan_policy_decorated_pickled!  s    



  r   c                  C   s   t dD ]} tg d| D ]}t t|D ]}t|f}tj||}|d ur*tj	 8}|
td |
td |d j|d}W d    n1 s0    Y  tj|| q*qqd S )N   r   Mean of empty slice.invalid value encounteredr   r.   )r1   r   r   r2   r~   r   Z_axis_nan_policyZ_check_empty_inputstestingr   r   r   meanr   )r?   combor/   rB   outputr   	referencer   r   r   test_check_empty_inputs8  s    .r   c                 C   s   t dd | D }|d ur0|dkr,| | n|}td|d D ]^}| |krNq>t }| D ]0}||jkrX|j|  dkrX||j|   qXt|dkr> dS q>dS )Nc                 S   s   g | ]
}|j qS r   ndim)rS   arrr   r   r   rU   \  r"   z/_check_arrays_broadcastable.<locals>.<listcomp>r   r#   FT)maxr1   setr   rG   addr   )Zarraysr/   n_dimsZdimZdim_lengthsr   r   r   r   _check_arrays_broadcastableN  s    
r   c                 C   s  | t v rd}tj|d |d u r(dd }dd }ddg}	|||	D ]}
td	d
 |
D s\qBtdd
 |
D }t| |D ]b}ztj|
|}t	j
 <}|td |td t	j||dt	j }W d    n1 s0    Y  | g |
|R d|i|}||}t|D ]}t|| | qW qz ty   t|
|rJJ d}tjt|d tj|
| W d    n1 s0    Y  tjt|d, | g |
|R d|i| W d    n1 s0    Y  Y qz0 qzqBd S )Nz4Doesn't follow the usual pattern. Tested separately.)reasonc                 S   s   | d | d fS )Nr   r#   r   r    r   r   r   r!   z  r"   ztest_empty.<locals>.<lambda>c                 3   s2   dd  fddt | D }t| E d H  d S )Nc                 s   s.   | D ]$}t g d|D ]}t|V  qqd S )Nr   )r   r2   r~   )r   r?   r   r   r   r   small_sample_generator~  s    zHtest_empty.<locals>.small_data_generator.<locals>.small_sample_generatorc                    s   g | ]} qS r   r   r   r   r   r   r   rU     r"   z<test_empty.<locals>.small_data_generator.<locals>.<listcomp>)r1   r   )r:   r   Zgensr   r   r   small_data_generator|  s    z(test_empty.<locals>.small_data_generatorr   r   c                 s   s   | ]}|j d kV  qdS )r   Nr,   rR   r   r   r   	<genexpr>  r"   ztest_empty.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S r
   r   rR   r   r   r   r     r"   r   r   r.   r/   z/Array shapes are incompatible for broadcasting.rr   )rZ   r   r   rX   r   r1   r   Z	_stats_pyZ_broadcast_concatenater2   r   r   r   r   r   r4   r   rY   r   r   )r]   r   r`   r:   rK   r=   r_   r   r   r   rB   Zmax_axisr/   concatr   expectedr   r?   rx   r   r   r   
test_emptyo  s:    2.r   c                  C   s  t jd t jddd} t jd}| dk }t j| |} t t jj}t 	|t j
 }t 	|t j
 }t j| d< t j
| d< || d< t j|d	< t j
|d
< ||d< t| |g\}}|\}}	||kr||ksJ ||ksJ | j}
||
| j< t j||
 |	|u sJ d S )Nr   r         g      ?)r   r   r#   )r   r   r   )r   r*   r   r   r'   r*   )r2   r6   seedrandmamasked_arrayfinfofloat64r   	nextafterinfr4   r	   r>   r   r   assert_array_equal)ABr   Z	max_floatZ
max_float2Z
max_float3
out_arrayssentinelZA_outZB_outZA_referencer   r   r   "test_masked_array_2_sentinel_array  s,    




r   c                  C   sd  t t jj} t t jj}t jdd| gt jd}t jjg dt jg dd}t jjg dt jg dd}t	||g\}}|\}}|| d ksJ |j
t jksJ t||d ||d	 g ||u sJ t|t jjrJ t	||g\}}|\}}	||ksJ |j
t jksJ t||d ||d	 g t|t jjr:J t|	t jjrNJ t t jjt t jj }
}t j|
|d t jd}t j|td}t j|td}d
|d< t jj||d}t	|g\}}||
d ksJ d
|d< t jj||d}d}tjt|d t	|g W d    n1 s"0    Y  t jjg dg dt jd}t|j
t jks`J d S )Nr#   r   r   )r#   r   r#   r   r#   r   )r   r   r   r   r   r   r0   Tr   z7This function replaces masked elements with sentinel...rr   r#   r   r   )r   r   )r2   Ziinfoint16r   r   Z
complex128arrayr   Zint8r	   r   r   r   ZMaskedArrayminZarangeZ
zeros_likeboolr   r   rY   float32r   gmean)Zmax16Zmax128cabcr   r   Za_outZb_outZc_outZmin8Zmax8Zmask1Zmask0Za1Za0rx   r   r   r   test_masked_dtype  sD    *r  c                  C   s6  g d} g d}t | |}dddtjdg}t j| |dd}tj|| g d	}g d
}tjj||d}t | |}tj|| dddtjddg}g d}	tjj||	d}t j| |dd}
tj|
| dddtjddg}g d}tjj||d}t j| |dd}t j| |dd}tj|| tj|| d S )N)               )r+   r      r   r+   r   r
  r   rP   )rL   )r+   r   r
    r   )FFFTFr   r  )FFFFTF)FFFTTFrO   rI   )r   r   r2   r4   r   r   r   r   )ZmalesZfemalesr   Zfemales2r   Zfemales3Zmask3r   Zfemales4Zmask4res4Zfemales5Zmask5res5Zres6r   r   r   test_masked_stat_1d  s.    r  c                 C   s   t jd t jddd}t jdd}t jdd}|dk }g d}t jj||d}t jj||d}| }t j||< | }	t j|	|< tj	|||	d	| d
}
tj	|||| d}t j
|
| d S )Nr   r   r   r   r#   皙?)FFFTr   rP   rL   r/   r.   )r2   r6   r   r   r   r   r   r4   r   r   r   r   )r/   r  r  r  Zmask_aZmask_ca_maskedZc_maskeda_nansZc_nansr   r   r   r   r   test_masked_stat_3d1  s    

r  c                  C   s  d\} }d}t jd t j| |}t j| |}t j| |dk }t j| |dk }t j| |dk }t j| |dk }d|dd d f< | }	| }
t j|	||B < t j|
||B < t jj||d	}t jj||d	}t j||< t j||< t jj||d	}t jj||d	}t j||< t j||< t jj|||B d	}t jj|||B d	}tj	|	|
d
|d}tj	||d
|d}tj	||d
|d}tj	||d|d}tj	||d|d}t j
|| t j
|| t j
|| t j
|| d S )Nr   r+   r0   r   r   r  333333?Tr   r   rP   r  rI   rO   )r2   r6   r   r   r   r4   r   r   r   wilcoxonr   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   r   r   r   r  r   r   r   test_mixed_mask_nan_1H  sF    



r"  c            	      C   s~  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| |d	}g d
g}tddgg d
}tg dg d
}tj||d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| t j	|j| tj||d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| t j	|j| d S )Nr#   r   r   r   )r#   r   r#   r   r#   r#   r#   r   r   r   r   r*   rP   r0   r  rO   )
r2   r4   r   r   r   ranksumsr   r   r   r   )	r  r   r  r  Zref1Zref2r   Zstat_refZp_refr   r   r   test_mixed_mask_nan_2w  s8    
r&  c                  C   sL   d} t jd}|| }tj|dd i}tj|ddi}t j|| d S )Nr   r   r/   r   )r2   r6   r}   r   r   r   r   )rG   r<   r%   r   r   r   r   r   test_axis_None_vs_tuple  s    
r'  c            	      C   s   t jd} | d}| d}t ||\}}t| | }tj||d d}tj||dd}t| | }||ksJ ||ksJ ||ksJ d S )Nr   )r   r#   )r#   r   r.   r   )r2   r6   r}   Zbroadcast_arraysr   r   r   )	r<   r%   r   x2y2Zres0r   r   r   r   r   r   )test_axis_None_vs_tuple_with_broadcasting  s    

r*  )r#   c                 C   s  t jd}d}d}||}||}| }tdd | D } t| } tt| t| krd}tjt j	t
|d  tj|||d W d    n1 s0    Y  d S | d dk s| d	 d
krd}tjt j	t
|d  tj|||d W d    n1 s0    Y  d S tj|||d}h dt|  }	tt|	}	|}
g d}||	 ||	< t ||}|
j|	 }t |
| d}
t || d}t |
|d	f}
t ||d	f}tj|
|dd}t j|| d S )Nr   r$  )r#   r*   c                 S   s    g | ]}|d kr|nd| qS )r   r   r   r   r   r   r   rU     r"   z*test_other_axis_tuples.<locals>.<listcomp>z*`axis` must contain only distinct elementsrr   r.   r0   r   z0`axis` is out of bounds for array of dimension 3>   r   r#   r   )r#   r#   r*   )r#   r   r#   )r2   r6   r}   r   sortedr   r   r   r   Z	AxisErrorr   r   r   r   nextiterrl   rG   r8   r7   r   r   )r/   r<   Zshape_xZshape_yr%   r   Zaxis_originalrx   r   Znot_axisr(  Zshape_y_broadcastedr)  r   r   r   r   r   test_other_axis_tuples  s@    

.0
r/  weighted_fun_name)r   hmeanpmeanc                  C   s  | dkrdd }n
t t| }d\}}d}tjd}|j||fd}|j||fd}|j||fddk }|j||fdd	k }	|j||fdd
k }
|j||fdd
k }d|dd d f< | }| }tj|||	B < tj||
|B < tjj	||d}tjj	||
d}tj||	< tj||< tjj	||	d}tjj	||d}tj||< tj||
< tjj	|||	B d}tjj	||
|B d}||	B |
B |B }tjj	||d}tjj	||d}tj
 }d}|t| |||d|d}|||d|d}|||d|d}|||d|d}|||d|d}| dvr2t tj| }||||dd}W d    n1 sH0    Y  tj
|| tj
|| tj
|| tj
|| | dvrtj
| |t|   d S )Nr2  c                 [   s   t j| fddi|S )NpgzG?)r   r2  )r  r   r   r   r   weighted_fun  s    z6test_mean_mixed_mask_nan_weights.<locals>.weighted_funr  r0   l    r,   r   r  r  Tr   r   r   rP   )weightsrL   r/   rI   rO   >   r   r2  )r5  r/   rM   )getattrr   r2   r6   r}   r   r   r4   r   r   r   r   r   r   Zmstatsr   r   
compressedrQ   ) r0  r4  r   r   r/   r<   r  r  r  r  r  r  r  r  r  r  r  r  r   r!  Zmask_allZ	a_masked4Z	b_masked4r   rx   r   r   r   r   r  Zweighted_fun_mar  r   r   r    test_mean_mixed_mask_nan_weights  sv    






&
r8  c                  C   s  d} t jt| d" tjg ddd W d    n1 s:0    Y  d} t jt| d" tjg ddd W d    n1 s~0    Y  d} t jt| d t  W d    n1 s0    Y  d	} t jt| d* tg dd
tg dd W d    n1 s0    Y  d S )Nz"got an unexpected keyword argumentrr   r   T)Z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)rx   r   r   r   test_raise_invalid_args_g177139  s    00&r:  r   ZFloatZIntegerComplexc                    sT   G  fddd}dgd g d t |}|jdksBJ |jdksPJ d S )Nc                       s"   e Zd Zdd Z fddZdS )z&test_array_like_input.<locals>.ArrLikec                 S   s
   || _ d S r
   )_x)selfr%   r   r   r   __init__W  s    z/test_array_like_input.<locals>.ArrLike.__init__c                    s   t j dS )Nr   )r2   Zasarray)r=  r   r%   r   r   	__array__Z  s    z0test_array_like_input.<locals>.ArrLike.__array__N)r   
__module____qualname__r>  r@  r   r?  r   r   ArrLikeV  s   rC  r#   r   )r   r   r   )r   r   r(   )r   rC  r   r   r?  r   test_array_like_inputM  s
    	rD  )F)FT)P	itertoolsr   r   r   r   r   r   numpyr2   Znumpy.testingr   r   r   Zscipyr   Zscipy.stats._axis_nan_policyr	   r   r   r   r   dictr%  r   r  r   r1  r2  ZsemZiqrZkurtosisZskewZkstatZkstatvarr&   Zjarque_beraZttest_1sampr   Z	ttest_relZ	ttest_indr   Zaxis_nan_policy_casesr   r   rZ   rE   rH   ra   markfilterwarningsZparametrizerg   Zslowr1   rj   re   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r"  r&  r'  r*  r   r/  r8  r:  	typecodesrD  r   r   r   r   <module>   s   % 
( 
 



x
R+


!@#9#
/*

.
K
