U
    /eM                     @   s
  d dl Z d dlZd dlmZ edZd dlZd dl	m
Z d dlZd dlmZmZ d dlmZ ejddi fdi fdd	d
ifgejddd
gdd Zdd Zejddddddgdd Zejddi fddd
ifejdi ejjeeejjedkdddd i fdi fdi fdd!d ifdd!d"ifdd!d#ifg	d$d% Zejd&ed'd(d) Zd*d+ Zejd,ej
j j!d-fej
j j"d-fej
j j#d.fej
j j$d.fej
j j%d.fej
j j&d.fej
j j'd.fgejd/d0d1gd2d3 Z(d4d5 Z)d6d7 Z*d8d9 Z+d:d; Z,dS )<    N)parsescipy)allclose	assert_eq)Delayedzkind, kwargsskewkurtosisfisherF
single_dimTc           	      C   s   t jjdd |r"t jjdd}nt jjdd}t|d}ttjj| }tt	j| }||f|}||f|}t 
|rt |}t|| t|tjstd S )Ni9  )seed   sizer         )nprandomr   da
from_arraygetattrdaskarraystatsr   Zisscalarr   
isinstanceArrayAssertionError)	kindkwargsr
   xyZdfuncZsfuncexpectedresult r$   ?/tmp/pip-unpacked-wheel-dbjnr7gq/dask/array/tests/test_stats.pytest_measures   s    


r&   c               	   C   sn   t jjdd} t| d}tt tjj	j
|dd W 5 Q R X tt tjj	j|dd W 5 Q R X d S )Nr   r   r   F)Zbias)r   r   r   r   pytestraisesNotImplementedErrorr   r   r   r   r   )r    r!   r$   r$   r%   test_bias_raises&   s    r*   r   Z	chisquarepower_divergence
normaltestskewtestkurtosistestc                 C   sh   t jjdd}t|d}ttjj| }ttj| }||}||}t	|t
sRtt| |sdtd S )Nr   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   compute)r   aa_	dask_test
scipy_testr#   r"   r$   r$   r%   test_one1   s    r4   Z	ttest_indZ	equal_varttest_1sampz1.10.0z(https://github.com/dask/dask/issues/9499)reason)Zmarks	ttest_rellambda_Zneymanc           
   	   C   s   t jjdd}|d d d }t|d}t|d}ttjj| }ttj| }t	
 0 t	jdtd |||f|}|||f|}	W 5 Q R X t|tstt| |	std S )Nr   r   r9   r   ignore)category)r   r   r   r   r   r   r   r   r   warningscatch_warningssimplefilterRuntimeWarningr   r   r   r   r/   )
r   r   r0   br1   Zb_r2   r3   r#   r"   r$   r$   r%   test_twoB   s    
rA   k   c                 C   sF   t jjdd}t|d}tj|| }tjj|| }t	|| d S )Nr   r   r   )
r   r   r   r   r   r   momentr   r   r   )rB   r    r!   r"   r#   r$   r$   r%   test_momentso   s
    rE   c                  C   sP   dd t dD } dd | D }tjjj| }tjj|  }t| |sLtd S )Nc                 S   s   g | ]}|t jjd d qS )r   r   )r   r   ).0ir$   r$   r%   
<listcomp>z   s     ztest_anova.<locals>.<listcomp>   c                 S   s   g | ]}t j|d dqS )
   chunks)r   r   )rF   r    r$   r$   r%   rH   {   s     )	ranger   r   r   Zf_onewayr   r   r/   r   )Znp_argsZda_argsr#   r"   r$   r$   r%   
test_anovay   s
    rN   zfunc, nargsr      
nan_policyZomitraisec              	   C   s,   t t | d| d|i W 5 Q R X d S )N)NrP   )r'   r(   r)   )funcnargsrP   r$   r$   r%   test_nan_raises   s    rT   c               	   C   sF   t jjdd} t| d}tt tjj	j
|dd W 5 Q R X d S )Nr   r   r   Zwrong)r8   )r   r   r   r   r'   r(   
ValueErrorr   r   r   r+   )r0   r1   r$   r$   r%   test_power_divergence_invalid   s    rV   c               	   C   s:   t jddd} tjtdd tjj|  W 5 Q R X d S )N)   rK   z	7 samples)match)	r   Zonesr'   r(   rU   r   r   r   r-   )r0   r$   r$   r%   test_skew_raises   s    rY   c                  C   s@   t jjdd} t| d}tjj| }t	|t j
s<tdS )zGThis function tests the return type for the skew method for a 1d array.r   r   r   N)r   r   r   r   r   r   r   r   r/   r   float64r   )numpy_array
dask_arrayr#   r$   r$   r%   test_skew_single_return_type   s    r]   c                  C   sf   t jjdd} t| d}tjj| }tjjj|dd }t	|t j
sRtt	|t j
sbtdS )zKThis function tests the return type for the kurtosis method for a 1d array.r   r   r   F)r	   N)r   r   r   r   r   r   r   r   r/   r   rZ   r   )r[   r\   r#   Zresult_non_fisherr$   r$   r%    test_kurtosis_single_return_type   s    r^   )-r<   r'   Zpackaging.versionr   parse_versionZimportorskipr   Znumpyr   Z
dask.arrayr   r   Zdask.array.statsr   Zdask.array.utilsr   r   Zdask.delayedr   markZparametrizer&   r*   r4   paramZxfail__version__base_versionrA   rM   rE   rN   r   r5   r7   r-   r   r.   r,   rD   rT   rV   rY   r]   r^   r$   r$   r$   r%   <module>   s~   
  







	
