3
pdד                 @   s  d dl mZ d dlZd dlZd dlZd dlZd dljj	Z
d dlmZ d dlZd dlmZmZ d dljZd dlmZ d dljjZejZeedZejddgd	d
d ZG dd dZG dd dZ G dd dZ!G dd dZ"G dd dZ#G dd dZ$dd Z%ej&j'dej(dfej)dfej*dfej+dfej,dfej-dfej.dfej/dfej0dfej1dfg
dd  Z2ej&j'd!ej3ej4ej)ej+ej-ej5ej6ej7ej8ej9ej1ej0ej:ej;ej<gd"d# Z=dS )$    )partialN)is_integer_dtype)Seriesisna)DatetimeArrayZ
complex128TF)paramsc             C   s   | j S )z5
    Fixture to pass skipna to nanops functions.
    )param)request r
   :/tmp/pip-build-7vycvbft/pandas/pandas/tests/test_nanops.pyskipna   s    r   c               @   sV  e Zd Zdd Zdd ZdSddZdTd	d
ZdUddZdVddZdWddZ	e
jjdejejfejejfgdd Zdd Zdd Zdd Ze
jjdejejejejejeeddgdd Zdd Ze
jjd ed!d"d# Z e
jjd ed!d$d% Z!e"j#e
jjd ed!d&d' Z$e
jjdej%ej&fej'ej(fgd(d) Z)dXd*d+Z*d,d- Z+d.d/ Z,dYd0d1Z-e"j#d2d3 Z.e"j#d4d5 Z/d6d7 Z0d8d9 Z1d:d; Z2d<d= Z3d>d? Z4e"j#d@dA Z5e"j#dBdC Z6e"j#dDdE Z7dFdG Z8dHdI Z9e
jjdJe:j;ej<fe:j=ej>fe:j?ej@fe:jAejBfe:jCejDfe:jEejFfgdKdL ZGdMdN ZHdOdP ZIdQdR ZJdS )ZTestnanopsDataFramec          
   C   s  t jjd dt_d}t jj| | _t jj| | _| j| jd  | _t jj	dd|| _
t jj	dd|dk| _t j| jjd	| _t j| jjd
| _t jj	dd|jd| _t jj	dd|jd| _t jt j|| _t j| j| jg| _t j| j| jg| _t j| j| jg| _t j| j| jg| _| jt j | _t j| j| jg| _t j| j| jg| _t j| j| j| jg| _t j| j| j| jg| _t j| jjd| j
jd| jjd| jjd| jjd| jjd| jjd| jjdg| _ t j!ddL | j| jd  | _"t j| j| j"g| _#| jd | _$t j| j| j$g| _%W d Q R X | j| _&| j| _'| j| _(| j| _)| j| _*| j| _+| jd d df | _,| jd d df | _-| jd d df | _.| jd d df | _/| jd d df | _0| jd d df | _1d S )Ni+  F      y              ?
   r      SUi N  zM8[ns]zm8[ns]Oignore)invalid)r   r   i)2nprandomseednanops_USE_BOTTLENECKZrandn	arr_float
arr_float1arr_complexrandintarr_intarr_boolabsastypearr_strarr_utfarr_date
arr_tdeltaZtilenanarr_nanvstackarr_float_nanarr_float1_nanarr_nan_float1arr_nan_naninfarr_infarr_float_infarr_nan_infarr_float_nan_infarr_nan_nan_infarr_objerrstatearr_nan_nanjarr_complex_nanarr_nan_infjarr_complex_nan_infjarr_float_2darr_float1_2d
arr_nan_2darr_float_nan_2darr_float1_nan_2darr_nan_float1_2darr_float_1darr_float1_1d
arr_nan_1darr_float_nan_1darr_float1_nan_1darr_nan_float1_1d)selfmethodZ	arr_shaper
   r
   r   setup_method   s`    






z TestnanopsDataFrame.setup_methodc             C   s
   t t_d S )N)use_bnr   r   )rG   rH   r
   r
   r   teardown_method_   s    z#TestnanopsDataFrame.teardown_methodTc             C   s:  t |d|}|dkrLt|drL|jrL|j|jkrLtj||jd gddd }ytj|||d W n tk
r4   t|dr|j	dkr t|d s|j	j
dkr |j	j
d	kr|j	j
d	kr|j|j	}qtrd
nd}|j|}|j|}n|j	j
d	kr tjtj|tj||d tjtj|tj||d Y nX d S )NZasm8r   shape)axis)check_dtypedtypezm8[ns]cr   c16f8)rP   r   )getattrhasattrndimrL   r   splittmassert_almost_equalAssertionErrorrO   kindr#   has_c16realimag)rG   targresrM   rN   Z
cast_dtyper
   r
   r   check_resultsb   s.    

z!TestnanopsDataFrame.check_resultsNc             K   sh  xt t|jd g D ]}	|r$|n|}
|rR|rRt|
j rR||
fd|	i|}n||
fd|	i|}||f|	|d|}| j|||	|d |r||fd|	i|}| j|||	|d |	d kr||fd|i|}| j|||	|d |o|	d kr||f|}| j|||	|d qW |jdkr$d S tj|dd	d}tj|dd
d}| j||||f|||d| d S )NrM   )rM   r   )rN   r      r   )rM   )r   rN   empty_targfuncrc   )	listrangerU   r   allr`   r   takecheck_fun_data)rG   testfunctargfunc	testarval	targarvalr   rN   rb   kwargsrM   Ztargartempvalr^   r_   Z
testarval2Z
targarval2r
   r
   r   rh      s:    z"TestnanopsDataFrame.check_fun_datac       
      K   sb   |}|j dr,t| |d d r,|d d }t| |}t| |}	| j||||	f||d| d S )NZ_nan   )r   rb   ro   )endswithrT   rS   rh   )
rG   ri   rj   Ztestarr   rb   rm   Ztargarrk   rl   r
   r
   r   	check_fun   s    

zTestnanopsDataFrame.check_func	             K   s  | j ||d|f|	 | j ||d|f|	 | j ||d|f|	 | j ||d|f|	 | jjd| jjd| jjdg}
|r| j ||d|f|	 |r| j ||d|f|	 | j ||d|f|	 |r| j ||d	|f|	 |
| jjdg7 }
|r|| j | j ||d
|f|	 |
| jjdg7 }
|rhy|| j W n tk
r@   Y n(X | j ||d|f|	 |
| jjdg7 }
|rt	j
|
| _|dkrt| j||d}| j ||d|f|	 d S )Nr   r+   r    r!   r   r)   r   r8   r7   r&   r'   convert)funcallow_complexr5   )rq   r   r#   r    r!   r   r&   r'   	TypeErrorr   r*   r5   r   _badobj_wrap)rG   ri   rj   r   rt   allow_all_nan
allow_dateallow_tdelta	allow_objrm   objsr
   r
   r   
check_funs   s@    



zTestnanopsDataFrame.check_funsc             K   s2   |j jdkr&|r|jd}n
|jd}||f|S )Nr   rQ   rR   )rO   rZ   r#   )rG   valuers   rt   rm   r
   r
   r   rv     s
    
z TestnanopsDataFrame._badobj_wrapznan_op,np_opc             C   s   | j |||ddd d S )NF)rw   rx   )r|   )rG   nan_opnp_opr   r
   r
   r   test_nan_funcs  s    z"TestnanopsDataFrame.test_nan_funcsc             C   s    | j tjtj|ddtjd d S )NF)rx   rN   rb   )r|   r   nansumr   sum)rG   r   r
   r
   r   test_nansum  s    zTestnanopsDataFrame.test_nansumc             C   s   | j tjtj|ddd d S )NF)rz   rx   )r|   r   nanmeanr   mean)rG   r   r
   r
   r   test_nanmean  s    z TestnanopsDataFrame.test_nanmeanc             C   s`   xZd	D ]R}t |tdtjd}|j }|jj }||ks<t||ksHt|jtjkstqW d S )
Nr   7      |H%[<i  )indexrO             l                 )r   r   r   )	r   re   r   int64r   valuesrY   rO   float64)rG   asresultZ	np_resultr
   r
   r   test_nanmean_overflow#  s    

z)TestnanopsDataFrame.test_nanmean_overflowrO   Zfloat128c             C   s   |d krd S t td|d}dddddg}dd	g}xL|| D ]@}t|| }t|rn||krn|jtjks|tq<|j|ks<tq<W d S )
Nr   )rO   r   stdvarskewkurtminmax)r   re   rS   r   rO   r   r   rY   )rG   rO   r   Zgroup_aZgroup_brH   r   r
   r
   r   test_returned_dtype0  s    z'TestnanopsDataFrame.test_returned_dtypec             C   sB   t jdd, t jdt | jtjtj|dddd W d Q R X d S )NT)recordr   Frr   )rt   rx   rz   )	warningscatch_warningssimplefilterRuntimeWarningr|   r   	nanmedianr   median)rG   r   r
   r
   r   test_nanmedianJ  s    z"TestnanopsDataFrame.test_nanmedianddof   c          	   C   s    | j tjtj|ddd|d d S )NFrr   )rt   rx   rz   r   )r|   r   nanvarr   r   )rG   r   r   r
   r
   r   test_nanvarV  s    zTestnanopsDataFrame.test_nanvarc          	   C   s    | j tjtj|ddd|d d S )NFrr   )rt   rx   rz   r   )r|   r   nanstdr   r   )rG   r   r   r
   r
   r   test_nanstdb  s    zTestnanopsDataFrame.test_nanstdc             C   sD   ddl m} tjdd" | jtj||dddd|d W d Q R X d S )Nr   )semr   )r   Frr   )rt   rx   ry   rz   r   )scipy.statsr   r   r6   r|   r   nansem)rG   r   r   r   r
   r
   r   test_nansemn  s    zTestnanopsDataFrame.test_nansemc             C   s:   t jdd$ t jdt | j|||dd W d Q R X d S )NT)r   r   F)rz   )r   r   r   r   r|   )rG   r~   r   r   r
   r
   r   test_nanops_with_warnings  s    z-TestnanopsDataFrame.test_nanops_with_warningsc             C   sX   |||}t j||}t|}|jr.d||< n&t|dr@|j sPt|d rT|rTd}|S )Nra   rf   rc   rc   )r   r   r   rU   rT   rf   )rG   r}   rM   rs   r_   ZnansZnullnanr
   r
   r   _argminmax_wrap  s    


z#TestnanopsDataFrame._argminmax_wrapc             C   sL   t jdd6 t jdt t| jtjd}| jt	j
||dd W d Q R X d S )NT)r   r   )rs   F)rz   )r   r   r   r   r   r   r   Zargmaxr|   r   	nanargmax)rG   r   rs   r
   r
   r   test_nanargmax  s    z"TestnanopsDataFrame.test_nanargmaxc             C   sL   t jdd6 t jdt t| jtjd}| jt	j
||dd W d Q R X d S )NT)r   r   )rs   F)rz   )r   r   r   r   r   r   r   Zargminr|   r   	nanargmin)rG   r   rs   r
   r
   r   test_nanargmin  s    z"TestnanopsDataFrame.test_nanargminc             C   st   t |jjtjs|jd}|||dd}t |tjrXd|tj||dtj||dk< |S tj|tj|krpdS |S )NrR   F)rM   Zbiasr   )rM   g        )	
isinstancerO   typer   Zfloatingr#   Zndarrayr   r   )rG   r   rM   rs   r   r
   r
   r   _skew_kurt_wrap  s    
 z#TestnanopsDataFrame._skew_kurt_wrapc             C   sN   ddl m} t| j|d}tjdd | jtj||dddd W d Q R X d S )Nr   )r   )rs   r   )r   F)rt   rx   ry   )	r   r   r   r   r   r6   r|   r   nanskew)rG   r   r   rs   r
   r
   r   test_nanskew  s    z TestnanopsDataFrame.test_nanskewc             C   sZ   ddl m} t|dd}t| j|d}tjdd | jtj||dddd	 W d Q R X d S )
Nr   )kurtosisT)Zfisher)rs   r   )r   F)rt   rx   ry   )	r   r   r   r   r   r6   r|   r   nankurt)rG   r   r   Zfunc1rs   r
   r
   r   test_nankurt  s    z TestnanopsDataFrame.test_nankurtc             C   s    | j tjtj|ddtjd d S )NF)rx   ry   rb   )r|   r   nanprodr   prod)rG   r   r
   r
   r   test_nanprod  s    z TestnanopsDataFrame.test_nanprodc             K   s~  || j | jf|}|| j | jfdt| j d i|}tj|| tj|| || j| jf|}|| j| jfdt| j d i|}tj|| tj|| tj}	|| j	| jf|}
|| j | j	f|}|| j	| j	f|}|| j| j
f|}|| j| j
fdt| j d i|}|| j | jfdt| j d i|}tj|	|
 tj|	| tj|	| tj|	| tj|	| tj|	| d S )Nmin_periodsra   )r;   r<   lenrW   rX   r>   r?   r   r(   r=   r@   )rG   checkfuntarg0targ1rm   res00res01res10res11targ2res20res21res22res23res24res25r
   r
   r   check_nancorr_nancov_2d  sJ    z+TestnanopsDataFrame.check_nancorr_nancov_2dc             K   s~  || j | jf|}|| j | jfdt| j d i|}tj|| tj|| || j| jf|}|| j| jfdt| j d i|}tj|| tj|| tj}	|| j	| jf|}
|| j | j	f|}|| j	| j	f|}|| j| j
f|}|| j| j
fdt| j d i|}|| j | jfdt| j d i|}tj|	|
 tj|	| tj|	| tj|	| tj|	| tj|	| d S )Nr   ra   )rA   rB   r   rW   rX   rD   rE   r   r(   rC   rF   )rG   r   r   r   rm   r   r   r   r   r   r   r   r   r   r   r   r
   r
   r   check_nancorr_nancov_1d  sJ    z+TestnanopsDataFrame.check_nancorr_nancov_1dc             C   s   t j| j| jd }t j| jj| jjd }| jtj|| t j| j| j	d }t j| jj| j	jd }| j
tj||dd d S )	Nr   ra   pearson)rH   )r   ra   )r   ra   )r   ra   )r   ra   )r   corrcoefr;   r<   flatr   r   nancorrrA   rB   r   )rG   r   r   r
   r
   r   test_nancorr1  s    z TestnanopsDataFrame.test_nancorrc             C   s   t j| j| jd }t j| jj| jjd }| jtj||dd t j| j| j	d }t j| jj| j	jd }| j
tj||dd d S )	Nr   ra   r   )rH   )r   ra   )r   ra   )r   ra   )r   ra   )r   r   r;   r<   r   r   r   r   rA   rB   r   )rG   r   r   r
   r
   r   test_nancorr_pearson9  s    z(TestnanopsDataFrame.test_nancorr_pearsonc             C   s   ddl m} || j| jd }|| jj| jjd }| jtj||dd || j| j	d }|| jj| j	jd }| j
tj||dd d S )Nr   )
kendalltauZkendall)rH   )r   r   r;   r<   r   r   r   r   rA   rB   r   )rG   r   r   r   r
   r
   r   test_nancorr_kendallA  s    z(TestnanopsDataFrame.test_nancorr_kendallc             C   s   ddl m} || j| jd }|| jj| jjd }| jtj||dd || j| j	d }|| jj| j	jd }| j
tj||dd d S )Nr   )	spearmanrZspearman)rH   )r   r   r;   r<   r   r   r   r   rA   rB   r   )rG   r   r   r   r
   r
   r   test_nancorr_spearmanL  s    z)TestnanopsDataFrame.test_nancorr_spearmanc             C   sb   t j| j| jd }t j| jj| jjd }d}tjt|d | jt	j
||dd W d Q R X d S )	Nr   ra   z;Unknown method 'foo', expected one of 'kendall', 'spearman')matchfoo)rH   )r   ra   )r   ra   )r   r   r;   r<   r   pytestraises
ValueErrorr   r   r   )rG   r   r   msgr
   r
   r   test_invalid_methodW  s
    z'TestnanopsDataFrame.test_invalid_methodc             C   s|   t j| j| jd }t j| jj| jjd }| jtj|| t j| j| j	d }t j| jj| j	jd }| j
tj|| d S )Nr   ra   )r   ra   )r   ra   )r   ra   )r   ra   )r   Zcovr;   r<   r   r   r   ZnancovrA   rB   r   )rG   r   r   r
   r
   r   test_nancov_  s    zTestnanopsDataFrame.test_nancovc             C   s4  | j }| j}| j}| j}| j}| j}| j}	x|jr.|||}
tj	||
 |jdkrft
j||g}nt
j||g}|||}tj||dd |}|||	}tj||dd t
j|ddd}t
j|ddd}t
j|ddd}t
j|dd	d}t
j|dd
d}t
j|ddd}t
j|	ddd}	t
j|ddd}q.W d S )Nra   F)rN   r   )rM   rc   rc   rc   rc   rc   rc   rc   rc   )r   r   r)   r.   r+   r,   r-   rU   rW   rX   r   r*   hstackZassert_numpy_array_equalrg   )rG   r   r   r   r   r)   r.   r+   r,   r-   res0r   Zres1r   Zres2r
   r
   r   check_nancompg  s4    



z!TestnanopsDataFrame.check_nancompzop,nanopc             C   s   || j | j}| j|| d S )N)r   r   r   )rG   opZnanopr   r
   r
   r   test_nan_comparison  s    z'TestnanopsDataFrame.test_nan_comparisonc             C   sR   xLt |ddrL||}|r$|s.tn
| s.tt|ds:P tj|ddd}qW d S )NrU   Tr   ra   )rM   rc   )rS   rY   rT   r   rg   )rG   rs   r}   correctr   r
   r
   r   
check_bool  s    


zTestnanopsDataFrame.check_boolc             C   s   dddddddddd g
}d!d"d#d$d%d&d'd(d)g	}x*|D ]"\}}t | |}| jtj|| q4W xV|D ]N\}}t | |}| jtj|| | jtj|jd| | jtj|jd| q`W d S )*Nr   Fr    r!   r$   r%   r8   r7   r9   Tr:   r   r)   r+   r.   r1   r0   r2   r3   r4   Zf4f2)r   F)r    F)r!   F)r$   F)r%   F)r   F)r8   F)r7   F)r9   T)r:   T)r   F)r)   F)r+   F)r.   F)r1   T)r0   T)r2   T)r3   T)r4   T)rS   r   r   Z	_has_infsr#   )rG   pairsZpairs_floatZarrr   valr
   r
   r   test__has_infs  s6    

z"TestnanopsDataFrame.test__has_infsc             C   s   t j| jjdstt j| jjds(tt j| jjds<tt j| jjdsPtt j| jjdsdtt j| j	jdsxtt j| j
jd stt j| jjd stt j| jjd std S )Ntest)r   Z_bn_ok_dtyper   rO   rY   r   r    r!   r$   r%   r&   r'   r5   )rG   r
   r
   r   test__bn_ok_dtype  s    z%TestnanopsDataFrame.test__bn_ok_dtype)T)TN)N)TTTTT)T)NN)NN)K__name__
__module____qualname__rI   rK   r`   rh   rq   r|   rv   r   markparametrizer   nananyr   anynanallrf   r   r   r   r   Zint16Zint32r   Zfloat32r   rS   r   r   re   r   r   tdZskip_if_no_scipyr   nanminr   nanmaxr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   operatoreqZnaneqneZnannegtZnangtgeZnangeltZnanltleZnanler   r   r   r   r
   r
   r
   r   r      sv   @
/ 
(
    
0
$
$


--"




#r   c               @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestEnsureNumericc             C   s:   t jddkstt jddks$tt jddks6td S )Nra   g?y               @y      ?       @y      ?       @)r   _ensure_numericrY   )rG   r
   r
   r   test_numeric_values  s    z%TestEnsureNumeric.test_numeric_valuesc          	   C   s   t jdddg}t jtj||s&t|jt}t jtj||sFtt jdddgtd}t jtj||sptt jdd	d
gtd}d}tj	t
|d tj| W d Q R X d S )Nra   r   r   123)rO   r   barZbazzCould not convert .* to numeric)r   )r   arrayallcloser   r  rY   r#   objectr   r   ru   )rG   r   Zo_valuesZs_valuesr   r
   r
   r   test_ndarray  s    
zTestEnsureNumeric.test_ndarrayc             C   sF   t jtjddstt jtjdds,tt jtjddsBtd S )	Nr  g      ?z1.1g?z1+1jra   y              ?y      ?      ?)r   r  r   r  rY   )rG   r
   r
   r   test_convertable_values  s    z)TestEnsureNumeric.test_convertable_valuesc             C   sx   d}t jt|d tjd W d Q R X d}t jt|d tji  W d Q R X t jt|d tjg  W d Q R X d S )Nz Could not convert foo to numeric)r   r   z%argument must be a string or a number)r   r   ru   r   r  )rG   r   r
   r
   r   test_non_convertable_values  s    z-TestEnsureNumeric.test_non_convertable_valuesN)r   r   r   r  r
  r  r  r
   r
   r
   r   r     s   
r   c               @   sX   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
edd ZdS )TestNanvarFixedValuesc             C   s$   d | _ }| jj|d dd| _d S )Ng      @g      ?i )Zscalesize)varianceprngZnormalsamples)rG   rH   r  r
   r
   r   rI   	  s    
z"TestNanvarFixedValues.setup_methodc             C   s&   | j }tj|}tj|| jdd d S )Ng{Gz?)rtol)r  r   r   rW   rX   r  )rG   r  actual_variancer
   r
   r   test_nanvar_all_finite  s    
z,TestNanvarFixedValues.test_nanvar_all_finitec             C   sp   t jt jd| jjd   }| j|d d d< tj|dd}tj|| j	dd tj|dd}tj|t jdd d S )Nr   r   T)r   g{Gz?)r  F)
r   r(   onesr  rL   r   r   rW   rX   r  )rG   r  r  r
   r
   r   test_nanvar_nans  s    z&TestNanvarFixedValues.test_nanvar_nansc             C   st   t jt jd| jjd   }| j|d d d< tj|dd}tj|| j	d dd tj
|dd}tj|t jdd d S )	Nr   r   T)r   g      ?g{Gz?)r  F)r   r(   r  r  rL   r   r   rW   rX   r  r   )rG   r  Z
actual_stdr
   r
   r   test_nanstd_nans  s    z&TestNanvarFixedValues.test_nanstd_nansc             C   sV   | j }| jj|jd d}tj||g}tj|dd}tj	|tj
| jd	gdd d S )
Nr   )r  ra   )rM   g      ?   g{Gz?)r  gUUUUUU?)r  r  uniformrL   r   r*   r   r   rW   rX   r  r  )rG   Zsamples_normZsamples_unifr  r  r
   r
   r   test_nanvar_axis'  s    z&TestNanvarFixedValues.test_nanvar_axisc             C   s   d}| j jd|d fd}tj|d d df< tj|ddddj }tj|ddddj }tj|ddddj }d}tj||dd tj||d	 | | dd tj||d	 |d  | dd d S )N   i'  ra   )r  Tr   )rM   r   r   r   g      ?r  g{Gz?)r  g       @rc   gUUUUUU?)	r  r  r   r(   r   r   r   rW   rX   )rG   nr  Z
variance_0Z
variance_1Z
variance_2r   r
   r
   r   test_nanvar_ddof2  s    z&TestNanvarFixedValues.test_nanvar_ddofc             C   sj  t jd"}t jdddgdddgdd	d
gg|d dd df< t j |d< |d d df< t jdddgdddgdddggdddgdddgdddggg}xbtdD ]V}xPtdD ]D}tj|d||d }tj|d d |||f  t j	|d st
qW qW xltdD ]`}xXtdD ]L}tj|d||d }tj|d d |||f d!  t j	|d st
qW qW d S )#Nrn   g*f#?g| 9?gֆ?gvZ?gן?gצʺ?g6bڷ?gE-9?g$mxP?r   gӞ?g/-:Ŭ?g??g-ull?g(I0쓵?gM6?g-ull?gF?gmɉM6?g
^?g)܌	?g쵇Z&?g@#)G?g/TS?g6܃?g@#)G?g/TS?gSW_܃?r   T)r   rM   r   g      ?)rn   rn   )r   emptyr  r(   re   r   r   rW   rX   isnanrY   r   )rG   r  r  rM   r   r   r   r
   r
   r   test_ground_truthE  s.    

 z'TestNanvarFixedValues.test_ground_truthc             C   s@   t dtjd }x(tdD ]}|j|d}|dkstqW d S )Ni-r   r   )r   g        )r   r   r  re   r   rY   )rG   datar   r   r
   r
   r   test_nanstd_roundoffo  s    z*TestNanvarFixedValues.test_nanstd_roundoffc             C   s   t jjdS )Ni  )r   r   RandomState)rG   r
   r
   r   r  w  s    zTestNanvarFixedValues.prngN)r   r   r   rI   r  r  r  r  r  r   r"  propertyr  r
   r
   r
   r   r    s   

*r  c               @   sP   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
dd ZdS )TestNanskewFixedValuesc             C   s    t jt jddd| _d| _d S )Nr   ra      g5?g5ȿ)r   sinlinspacer  actual_skew)rG   rH   r
   r
   r   rI     s    z#TestNanskewFixedValues.setup_methodc             C   s6   x0dD ](}|t jd }tj|}|dkstqW d S )Nfffff@皙@     @i,  g        )r*  r+  r,  )r   r  r   r   rY   )rG   r   r!  r   r
   r
   r   test_constant_series  s    

z+TestNanskewFixedValues.test_constant_seriesc             C   s\   d\}}| j j||dd}tj|dk s,td\}}| j j||dd}tj|dksXtd S )N333333?皙?d   )r  r   )r.  r/  )r/  r.  )r  betar   r   rY   )rG   alphar1  left_tailedright_tailedr
   r
   r   test_all_finite  s    z&TestNanskewFixedValues.test_all_finitec             C   s   t j| j}tj|| j d S )N)r   r   r  rW   rX   r)  )rG   r   r
   r
   r   r     s    z(TestNanskewFixedValues.test_ground_truthc             C   sN   t j| jt jt jt| j g}tj|dd}tj	|t j
| jt jg d S )Nra   )rM   )r   r*   r  r(   r  r   r   r   rW   rX   r  r)  )rG   r  r   r
   r
   r   	test_axis  s    "z TestNanskewFixedValues.test_axisc             C   s2   t j| jt jg}tj|dd}t j|s.td S )NF)r   )r   r   r  r(   r   r   r  rY   )rG   r  r   r
   r
   r   	test_nans  s    z TestNanskewFixedValues.test_nansc             C   s2   t j| jt jg}tj|dd}tj|| j d S )NT)r   )	r   r   r  r(   r   r   rW   rX   r)  )rG   r  r   r
   r
   r   test_nans_skipna  s    z'TestNanskewFixedValues.test_nans_skipnac             C   s   t jjdS )Ni  )r   r   r#  )rG   r
   r
   r   r    s    zTestNanskewFixedValues.prngN)r   r   r   rI   r-  r5  r   r6  r7  r8  r$  r  r
   r
   r
   r   r%  |  s   	r%  c               @   sP   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
dd ZdS )TestNankurtFixedValuesc             C   s    t jt jddd| _d| _d S )Nr   ra   r&  g|vK?g|vK)r   r'  r(  r  actual_kurt)rG   rH   r
   r
   r   rI     s    z#TestNankurtFixedValues.setup_methodc             C   s6   x0dD ](}|t jd }tj|}|dkstqW d S )Nfffff@皙@     @i,  g        )r;  r<  r=  )r   r  r   r   rY   )rG   r   r!  r   r
   r
   r   r-    s    

z+TestNankurtFixedValues.test_constant_seriesc             C   s\   d\}}| j j||dd}tj|dk s,td\}}| j j||dd}tj|dksXtd S )N333333?皙?r0  )r  r   )r>  r?  )r?  r>  )r  r1  r   r   rY   )rG   r2  r1  r3  r4  r
   r
   r   r5    s    z&TestNankurtFixedValues.test_all_finitec             C   s   t j| j}tj|| j d S )N)r   r   r  rW   rX   r:  )rG   r   r
   r
   r   r     s    z(TestNankurtFixedValues.test_ground_truthc             C   sN   t j| jt jt jt| j g}tj|dd}tj	|t j
| jt jg d S )Nra   )rM   )r   r*   r  r(   r  r   r   r   rW   rX   r  r:  )rG   r  r   r
   r
   r   r6    s    "z TestNankurtFixedValues.test_axisc             C   s2   t j| jt jg}tj|dd}t j|s.td S )NF)r   )r   r   r  r(   r   r   r  rY   )rG   r  r   r
   r
   r   r7    s    z TestNankurtFixedValues.test_nansc             C   s2   t j| jt jg}tj|dd}tj|| j d S )NT)r   )	r   r   r  r(   r   r   rW   rX   r:  )rG   r  r   r
   r
   r   r8    s    z'TestNankurtFixedValues.test_nans_skipnac             C   s   t jjdS )Ni  )r   r   r#  )rG   r
   r
   r   r    s    zTestNankurtFixedValues.prngN)r   r   r   rI   r-  r5  r   r6  r7  r8  r$  r  r
   r
   r
   r   r9    s   	r9  c               @   s&   e Zd Zejjdddgdd ZdS )TestDatetime64NaNOpstzNUTCc             C   s   t jdd|d}|d }x0|t|t|gD ]}tj|}||ks,tq,W |jdt j}x0|t|t|gD ]}tj|}||ksltqlW d S )Nz
2016-01-01r   )ZperiodsrA  ra   )	pdZ
date_ranger   r   r   r   rY   insertZNaT)rG   rA  Zdtiexpectedobjr   Zdti2r
   r
   r   r     s    

z!TestDatetime64NaNOps.test_nanmean)r   r   r   r   r   r   r   r
   r
   r
   r   r@    s   r@  c               C   sL   t jrHtjdd tjds ttjdd tjd s<ttjdt d S )NZuse_bottleneckTF)r   Z_BOTTLENECK_INSTALLEDrC  Z
set_option
get_optionrY   rJ   r
   r
   r
   r   test_use_bottleneck  s    rH  znumpy_op, expectedr   g      @ra   rn   c             C   s&   | t jddddg}||ks"td S )Nra   r   r   rn   )rC  r   rY   )Znumpy_oprE  r   r
   r
   r   test_numpy_ops  s    rI  	operationc             C   sF   t jddtjdtjdg}|j }| |}| ||d}||ksBtd S )Nra   r   r   rn   )mask)rC  r   r   r(   r   rY   )rJ  r   rK  Zmedian_expectedZmedian_resultr
   r
   r   %test_nanops_independent_of_mask_param  s
    rL  )>	functoolsr   r   r   numpyr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandas.core.dtypes.commonr   ZpandasrC  r   r   Zpandas._testingZ_testingrW   Zpandas.core.arraysr   Zpandas.core.nanopscorer   r   rJ   rT   r[   Zfixturer   r   r   r  r%  r9  r@  rH  r   r   r   r   r   r   r   r   r   r   r   r   rI  r   r   r   r   r   r   r   r   r   r   rL  r
   r
   r
   r   <module>   sn   

     <0w11	