U
    f/e                     @   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m  m	Z
 d dlmZ d dlZd dlmZmZ d dlmZ d dlmZ d dlm  m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&'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&'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-unpacked-wheel-tiezk1ph/pandas/tests/test_nanops.pyskipna   s    r   c                   @   sd  e Zd Zdd Zdd ZdUddZdVd	d
ZdWddZdXddZdYddZ	e
jjdde
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dejejejejejeeddgdd Zd d! Ze
jd"e d#d$d% Z!e
jd"e d#d&d' Z"e#j$e
jd"e d#d(d) Z%e
jdej&ej'fej(ej)fgd*d+ Z*dZd,d-Z+d.d/ Z,d0d1 Z-d[d2d3Z.e#j$d4d5 Z/e#j$d6d7 Z0d8d9 Z1d:d; Z2d<d= Z3d>d? Z4d@dA Z5e#j$dBdC Z6e#j$dDdE Z7e#j$dFdG Z8dHdI Z9dJdK Z:e
jdLe;j<ej=fe;j>ej?fe;j@ejAfe;jBejCfe;jDejEfe;jFejGfgdMdN ZHdOdP ZIdQdR ZJdSdT ZKdS )\TestnanopsDataFramec                 C   s  t jd dt_d}t jj| | _t jj| | _| j| jd  | _t j	dd|| _
t j	dd|dk| _t | jd	| _t | jd
| _t j	dd|d| _t j	dd|d| _t t j|| _t | j| jg| _t | j| jg| _t | j| jg| _t | j| jg| _| jt j | _t | j| jg| _t | j| jg| _t | j| j| jg| _t | j| j| jg| _t | jd| j
d| jd| jd| jd| jd| jd| jdg| _ t j!ddL | j| jd  | _"t | j| j"g| _#| jd | _$t | j| j$g| _%W 5 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              ?i
   r      SUi N  M8[ns]m8[ns]Oignoreinvalid)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"   sd    







z TestnanopsDataFrame.setup_methodc                 C   s
   t t_d S N)use_bnr   r   rJ   rK   r
   r
   r   teardown_methodb   s    z#TestnanopsDataFrame.teardown_methodTc                 C   s8  t |d|}|dkrLt|drL|jrL|j|jkrLtj||jd gddd }ztj|||d W n tk
r2   t|dr|j	dkr t|dr|j	j
dkr |j	j
d	kr|j	j
d	kr||j	}qtrd
nd}||}||}n|j	j
d	kr tjt|t||d tjt|t||d Y nX d S )NZasm8r   shapeaxischeck_dtypedtyper   )cr   r   c16f8)getattrhasattrndimrQ   r   splittmassert_almost_equalAssertionErrorrV   kindr&   has_c16realimag)rJ   targresrS   rU   Z
cast_dtyper
   r
   r   check_resultse   s6    

z!TestnanopsDataFrame.check_resultsNc                 K   sb  t t|jd g D ]}	|r |n|}
|rN|rNt|
 rN||
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 |r|	d kr||f|}| j|||	|d q|jdkrd S tj|ddd}tj|ddd}| j||||f|||d	| d S )
NrS   rS   r   rT   r      r   rR   )r   rU   empty_targfunc)	listranger\   r   allrg   r   takecheck_fun_data)rJ   testfunctargfunc	testarval	targarvalr   rU   rk   kwargsrS   Ztargartempvalre   rf   Z
testarval2Z
targarval2r
   r
   r   rp      s@    z"TestnanopsDataFrame.check_fun_datac           
      K   sb   |}| dr,t| |d d r,|d d }t| |}t| |}	| j||||	f||d| d S )NZ_nan)r   rk   )endswithr[   rZ   rp   )
rJ   rq   rr   Ztestarr   rk   ru   Ztargarrs   rt   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d| jd| jdg}
|r| j ||d|f|	 |r| j ||d|f|	 | j ||d|f|	 |r| j ||d	|f|	 |
| jdg7 }
|r|| j | j ||d
|f|	 |
| jdg7 }
|rhz|| j W n tk
r@   Y n(X | j ||d|f|	 |
| jdg7 }
|rt	
|
| _|dkrt| j||d}| j ||d|f|	 d S )Nr   r.   r#   r$   r   r,   r!   r;   r:   r)   r*   convert)funcallow_complexr8   )rx   r   r&   r#   r$   r!   r)   r*   	TypeErrorr   r-   r8   r   _badobj_wrap)rJ   rq   rr   r   r{   allow_all_nan
allow_dateallow_tdelta	allow_objru   objsr
   r
   r   
check_funs   sH    




  zTestnanopsDataFrame.check_funsc                 K   s2   |j jdkr&|r|d}n
|d}||f|S )Nr   rX   rY   )rV   ra   r&   )rJ   valuerz   r{   ru   r
   r
   r   r}   	  s
    
z TestnanopsDataFrame._badobj_wrapz1GH12863: numpy result won't match for object type)reasonznan_op,np_opc                 C   s   | j |||ddd d S )NF)r~   r   )r   rJ   Znan_opZ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)r   rU   rk   )r   r   nansumr   sumrJ   r   r
   r
   r   test_nansum  s    zTestnanopsDataFrame.test_nansumc                 C   s   | j tjtj|ddd d S )NF)r   r   )r   r   nanmeanr   meanr   r
   r
   r   test_nanmean"  s        z TestnanopsDataFrame.test_nanmeanc                 C   s\   dD ]R}t |tdtjd}| }|j }||ks:t||ksFt|jtjkstqd S )N)l          l       l   |H%[<i  )indexrV   )	r   rm   r   int64r   valuesr`   rV   float64)rJ   asresultZ	np_resultr
   r
   r   test_nanmean_overflow'  s    
z)TestnanopsDataFrame.test_nanmean_overflowrV   Zfloat128c                 C   s   |d krd S t td|d}dddddg}dd	g}|| D ]@}t|| }t|rl||krl|jtjksztq:|j|ks:tq:d S )
Nr   rV   r   stdvarskewkurtminmax)r   rm   rZ   r   rV   r   r   r`   )rJ   rV   r   Zgroup_aZgroup_brK   r   r
   r
   r   test_returned_dtype4  s    z'TestnanopsDataFrame.test_returned_dtypec              	   C   sB   t jdd, t dt | jtjtj|dddd W 5 Q R X d S )NTrecordr   Fry   )r{   r   r   )	warningscatch_warningssimplefilterRuntimeWarningr   r   	nanmedianr   medianr   r
   r
   r   test_nanmedianN  s    z"TestnanopsDataFrame.test_nanmedianddof   c              	   C   s    | j tjtj|ddd|d d S NFry   )r{   r   r   r   )r   r   nanvarr   r   rJ   r   r   r
   r
   r   test_nanvarZ  s    zTestnanopsDataFrame.test_nanvarc              	   C   s    | j tjtj|ddd|d d S r   )r   r   nanstdr   r   r   r
   r
   r   test_nanstdf  s    zTestnanopsDataFrame.test_nanstdc                 C   sD   ddl m} tjdd" | jtj||dddd|d W 5 Q R X d S )Nr   )semr   r   Fry   )r{   r   r   r   r   )scipy.statsr   r   r9   r   r   nansem)rJ   r   r   r   r
   r
   r   test_nansemr  s    zTestnanopsDataFrame.test_nansemc              	   C   s:   t jdd$ t dt | j|||dd W 5 Q R X d S )NTr   r   Fr   )r   r   r   r   r   r   r
   r
   r   test_nanops_with_warnings  s    z-TestnanopsDataFrame.test_nanops_with_warningsc                 C   sV   |||}t ||}t|}|jr.d||< n$t|dr@| sNt|dsR|rRd}|S )Nrj   rn   )r   r   r   r\   r[   rn   )rJ   r   rS   rz   rf   ZnansZnullnanr
   r
   r   _argminmax_wrap  s    

z#TestnanopsDataFrame._argminmax_wrapc              	   C   sL   t jdd6 t dt t| jtjd}| jt	j
||dd W 5 Q R X d S NTr   r   rz   Fr   )r   r   r   r   r   r   r   Zargmaxr   r   	nanargmaxrJ   r   rz   r
   r
   r   test_nanargmax  s    z"TestnanopsDataFrame.test_nanargmaxc              	   C   sL   t jdd6 t dt t| jtjd}| jt	j
||dd W 5 Q R X d S r   )r   r   r   r   r   r   r   Zargminr   r   	nanargminr   r
   r
   r   test_nanargmin  s    z"TestnanopsDataFrame.test_nanargminc                 C   st   t |jjtjs|d}|||dd}t |tjrXd|tj||dtj||dk< |S t|t|krpdS |S )NrY   F)rS   Zbiasr   rR           )	
isinstancerV   typer   Zfloatingr&   Zndarrayr   r   )rJ   r   rS   rz   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 5 Q R X d S )Nr   )r   r   r   r   Fr{   r   r   )	r   r   r   r   r   r9   r   r   nanskew)rJ   r   r   rz   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 5 Q R X d S )
Nr   )kurtosisT)Zfisherr   r   r   Fr   )	r   r   r   r   r   r9   r   r   nankurt)rJ   r   r   Zfunc1rz   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)r   r   rk   )r   r   nanprodr   prodr   r
   r
   r   test_nanprod  s    z TestnanopsDataFrame.test_nanprodc                 K   s~  || j | jf|}|| j | jfdt| j d i|}t|| t|| || j| jf|}|| j| jfdt| j d i|}t|| t|| 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|	|
 t|	| t|	| t|	| t|	| t|	| d S NZmin_periodsri   )r>   r?   lenr^   r_   rA   rB   r   r+   r@   rC   rJ   checkfuntarg0targ1ru   Zres00Zres01Zres10Zres11targ2Zres20Zres21Zres22Zres23Zres24Zres25r
   r
   r   check_nancorr_nancov_2d  sb    z+TestnanopsDataFrame.check_nancorr_nancov_2dc                 K   s~  || j | jf|}|| j | jfdt| j d i|}t|| t|| || j| jf|}|| j| jfdt| j d i|}t|| t|| 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|	|
 t|	| t|	| t|	| t|	| t|	| d S r   )rD   rE   r   r^   r_   rG   rH   r   r+   rF   rI   r   r
   r
   r   check_nancorr_nancov_1d  sb    z+TestnanopsDataFrame.check_nancorr_nancov_1dc                 C   s   t | j| jd }t | jj| jjd }| tj|| t | j| j	d }t | jj| j	jd }| j
tj||dd d S Nr   ri   ZpearsonrK   r   corrcoefr>   r?   flatr   r   nancorrrD   rE   r   rJ   r   r   r
   r
   r   test_nancorr5  s    z TestnanopsDataFrame.test_nancorrc                 C   s   t | j| jd }t | jj| jjd }| jtj||dd t | j| j	d }t | jj| j	jd }| j
tj||dd d S r   r   r   r
   r
   r   test_nancorr_pearson=  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kendallr   )r   r   r>   r?   r   r   r   r   rD   rE   r   )rJ   r   r   r   r
   r
   r   test_nancorr_kendallE  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spearmanr   )r   r   r>   r?   r   r   r   r   rD   rE   r   )rJ   r   r   r   r
   r
   r   test_nancorr_spearmanP  s    z)TestnanopsDataFrame.test_nancorr_spearmanc              	   C   sb   t | j| jd }t | jj| jjd }d}tjt|d | jt	j
||dd W 5 Q R X d S )Nr   z;Unknown method 'foo', expected one of 'kendall', 'spearman'matchfoor   )r   r   r>   r?   r   pytestraises
ValueErrorr   r   r   )rJ   r   r   msgr
   r
   r   test_invalid_method[  s
    z'TestnanopsDataFrame.test_invalid_methodc                 C   s|   t | j| jd }t | jj| jjd }| tj|| t | j| j	d }t | jj| j	jd }| 
tj|| d S )Nr   )r   Zcovr>   r?   r   r   r   ZnancovrD   rE   r   r   r
   r
   r   test_nancovc  s    zTestnanopsDataFrame.test_nancovc                 C   s.  | j }| j}| j}| j}| j}| j}| j}	|jr*|||}
t	||
 |jdkrbt
||g}nt
||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*d S )Nri   FrT   r   rj   rR   )r   r    r,   r1   r.   r/   r0   r\   r^   r_   r   r-   hstackassert_numpy_array_equalro   )rJ   r   r   r   r    r,   r1   r.   r/   r0   res0r   Zres1r   Zres2r
   r
   r   check_nancompk  s4    



z!TestnanopsDataFrame.check_nancompzop,nanopc                 C   s   || j | j}| || d S rM   )r   r    r   )rJ   opZnanopr   r
   r
   r   test_nan_comparison  s    z'TestnanopsDataFrame.test_nan_comparisonc                 C   sL   t |ddrH||}|r"|s*tn|r*tt|ds6qHtj|ddd}q d S )Nr\   Tr   rj   rR   )rZ   r`   r[   r   ro   )rJ   rz   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	}|D ]"\}}t | |}| tj|| q2|D ]N\}}t | |}| tj|| | tj|d| | tj|d| qZd S )N)r!   F)r#   F)r$   F)r'   F)r(   F)r;   F)r:   F)r<   T)r=   T)r   F)r,   F)r.   F)r1   F)r4   T)r3   T)r5   T)r6   T)r7   TZf4f2)rZ   r   r   Z	_has_infsr&   )rJ   pairsZpairs_floatarrr   valr
   r
   r   test__has_infs  s:    

z"TestnanopsDataFrame.test__has_infsc                 C   s   t | jjdstt | jjds(tt | jjds<tt | jjdsPtt | jjdsdtt | j	jdsxtt | j
jdrtt | jjdrtt | jjdrtd S )Ntest)r   Z_bn_ok_dtyper   rV   r`   r!   r#   r$   r'   r(   r)   r*   r8   rJ   r
   r
   r   test__bn_ok_dtype  s    z%TestnanopsDataFrame.test__bn_ok_dtype)T)TN)N)TTTTT)T)NN)NN)L__name__
__module____qualname__rL   rP   rg   rp   rx   r   r}   r   markZxfailparametrizer   nananyr   anynanallrn   r   r   r   r   Zint16Zint32r   Zfloat32r   rZ   r   r   rm   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   !   s   @
/  
0 
     
9
 




 





--




"






#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 ddkstt ddks$tt ddks6td S )Nri   皙?y      ?       @)r   _ensure_numericr`   r   r
   r
   r   test_numeric_values  s    z%TestEnsureNumeric.test_numeric_valuesc              	   C   s   t dddg}t t||s&t|t}t t||sFtt jdddgtd}t t||sptt jdd	d
gtd}d}tj	t
|d t| W 5 Q R X d S )Nri   r   r   123r   r   barZbazzCould not convert .* to numericr   )r   arrayallcloser   r  r`   r&   objectr   r   r|   )rJ   r   Zo_valuesZs_valuesr   r
   r
   r   test_ndarray  s    
zTestEnsureNumeric.test_ndarrayc                 C   sF   t tddstt tdds,tt tddsBtd S )Nr        ?z1.1r  z1+1jy      ?      ?)r   r  r   r  r`   r   r
   r
   r   test_convertable_values  s    z)TestEnsureNumeric.test_convertable_valuesc              	   C   sx   d}t jt|d td W 5 Q R X d}t jt|d ti  W 5 Q R X t jt|d tg  W 5 Q R X d S )Nz Could not convert foo to numericr   r   z%argument must be a string or a number)r   r   r|   r   r  )rJ   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      @      ?i )Zscalesize)varianceprngnormalsamples)rJ   rK   r  r
   r
   r   rL     s    
z"TestNanvarFixedValues.setup_methodc                 C   s&   | j }t|}tj|| jdd d S )N{Gz?Zrtol)r"  r   r   r^   r_   r  rJ   r"  actual_variancer
   r
   r   test_nanvar_all_finite  s    
z,TestNanvarFixedValues.test_nanvar_all_finitec                 C   sp   t jt 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   r#  r$  F)
r   r+   onesr"  rQ   r   r   r^   r_   r  r%  r
   r
   r   test_nanvar_nans  s    z&TestNanvarFixedValues.test_nanvar_nansc                 C   st   t jt 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   Tr(  r  r#  r$  F)r   r+   r)  r"  rQ   r   r   r^   r_   r  r   )rJ   r"  Z
actual_stdr
   r
   r   test_nanstd_nans!  s    z&TestNanvarFixedValues.test_nanstd_nansc                 C   sV   | j }| jj|jd d}t||g}tj|dd}tj	|t
| jdgdd d S )Nr   r  ri   rR   UUUUUU?r#  r$  )r"  r   uniformrQ   r   r-   r   r   r^   r_   r  r  )rJ   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 }tj|dddd }tj|ddd	d }d
}tj||dd tj||d | | dd tj||d |d  | dd d S )N   i'  ri   r,  rj   Tr   )rS   r   r   r   r-  r#  r$  r  g       @)	r   r.  r   r+   r   r   r   r^   r_   )rJ   nr"  Z
variance_0Z
variance_1Z
variance_2r   r
   r
   r   test_nanvar_ddof6  s    z&TestNanvarFixedValues.test_nanvar_ddofc                 C   sX  t d}t 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 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}tdD ]R}tdD ]D}tj|d||d }t|d d |||f  t 	|d st
qqtdD ]Z}tdD ]L}tj|d||d }t|d d |||f d!  t 	|d st
qqd S )"N)   r3  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   rS   r   r  )r   emptyr  r+   rm   r   r   r^   r_   isnanr`   r   )rJ   r"  r  rS   r   r   r   r
   r
   r   test_ground_truthI  s:    
 z'TestNanvarFixedValues.test_ground_truthc                 C   s<   t dtd }tdD ]}|j|d}|dkstqd S )Ni-r   r   )r   r   )r   r   r)  rm   r   r`   )rJ   datar   r   r
   r
   r   test_nanstd_roundoffs  s    z*TestNanvarFixedValues.test_nanstd_roundoffc                 C   s   t jdS Ni  r   r   ZRandomStater   r
   r
   r   r   {  s    zTestNanvarFixedValues.prngN)r   r   r   rL   r'  r*  r+  r/  r2  r6  r8  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 t ddd| _d| _d S )Nr   ri      g5ȿ)r   sinlinspacer"  actual_skewrO   r
   r
   r   rL     s    z#TestNanskewFixedValues.setup_methodc                 C   s2   dD ](}|t d }t|}|dkstqd S N)gfffff@g@g     @i,  r   )r   r)  r   r   r`   )rJ   r   r7  r   r
   r
   r   test_constant_series  s    
z+TestNanskewFixedValues.test_constant_seriesc                 C   s\   d\}}| j j||dd}t|dk s,td\}}| j j||dd}t|dksXtd S N)333333?皙?d   r,  r   )rE  rD  )r   betar   r   r`   rJ   alpharG  Zleft_tailedZright_tailedr
   r
   r   test_all_finite  s    z&TestNanskewFixedValues.test_all_finitec                 C   s   t | j}t|| j d S rM   )r   r   r"  r^   r_   r@  )rJ   r   r
   r
   r   r6    s    z(TestNanskewFixedValues.test_ground_truthc                 C   sN   t | jt jt t| j g}tj|dd}t	|t 
| jt jg d S Nri   rR   )r   r-   r"  r+   r)  r   r   r   r^   r_   r  r@  rJ   r"  r   r
   r
   r   	test_axis  s    "z TestNanskewFixedValues.test_axisc                 C   s2   t | jt jg}tj|dd}t |s.td S NFr(  )r   r   r"  r+   r   r   r5  r`   rL  r
   r
   r   	test_nans  s    z TestNanskewFixedValues.test_nansc                 C   s2   t | jt jg}tj|dd}t|| j d S NTr(  )	r   r   r"  r+   r   r   r^   r_   r@  rL  r
   r
   r   test_nans_skipna  s    z'TestNanskewFixedValues.test_nans_skipnac                 C   s   t jdS r9  r:  r   r
   r
   r   r     s    zTestNanskewFixedValues.prngNr   r   r   rL   rB  rJ  r6  rM  rO  rQ  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 t ddd| _d| _d S )Nr   ri   r=  g|vK)r   r>  r?  r"  actual_kurtrO   r
   r
   r   rL     s    z#TestNankurtFixedValues.setup_methodc                 C   s2   dD ](}|t d }t|}|dkstqd S rA  )r   r)  r   r   r`   )rJ   r   r7  r   r
   r
   r   rB    s    
z+TestNankurtFixedValues.test_constant_seriesc                 C   s\   d\}}| j j||dd}t|dk s,td\}}| j j||dd}t|dksXtd S rC  )r   rG  r   r   r`   rH  r
   r
   r   rJ    s    z&TestNankurtFixedValues.test_all_finitec                 C   s   t | j}t|| j d S rM   )r   r   r"  r^   r_   rT  )rJ   r   r
   r
   r   r6    s    z(TestNankurtFixedValues.test_ground_truthc                 C   sN   t | jt jt t| j g}tj|dd}t	|t 
| jt jg d S rK  )r   r-   r"  r+   r)  r   r   r   r^   r_   r  rT  rJ   r"  r   r
   r
   r   rM    s    "z TestNankurtFixedValues.test_axisc                 C   s2   t | jt jg}tj|dd}t |s.td S rN  )r   r   r"  r+   r   r   r5  r`   rU  r
   r
   r   rO    s    z TestNankurtFixedValues.test_nansc                 C   s2   t | jt jg}tj|dd}t|| j d S rP  )	r   r   r"  r+   r   r   r^   r_   rT  rU  r
   r
   r   rQ    s    z'TestNankurtFixedValues.test_nans_skipnac                 C   s   t jdS r9  r:  r   r
   r
   r   r     s    zTestNankurtFixedValues.prngNrR  r
   r
   r
   r   rS    s   	rS  c                   @   s.   e Zd Zdd Zejdddgdd ZdS )	TestDatetime64NaNOpsc                 C   s   t jddd}|d }|t|t|fD ]}t|}||ks(tq(|dt j}|t|t|fD ]}t|}||ksdtqdd S )Nz
2016-01-01r   )Zperiodsri   )	pdZ
date_ranger   r   r   r   r`   insertNaT)rJ   Zdtiexpectedobjr   Zdti2r
   r
   r   r     s    

z!TestDatetime64NaNOps.test_nanmeanrV   r   r   c                 C   s   t dt j|dd}d|d< tj|dd}|tj	ksDt
tj|ddd	}t jdd
dg|jd}t|| tj|ddd	}t |d |d |d |d g}t|| d S )N   r3  r   rY  )rj   rj   Fr(  r   rh   r0  r   ri   r   )ri   ri   )r   ri   )r   Zaranger&   r   viewZreshaper   r   rW  rY  r`   r  rV   r^   r   )rJ   rV   r   r   rZ  r
   r
   r   test_nanmean_skipna_false  s     "z.TestDatetime64NaNOps.test_nanmean_skipna_falseN)r   r   r   r   r   r   r   r^  r
   r
   r
   r   rV    s   rV  c                   C   sJ   t jrFtdd tds ttdd tdr:ttdt d S )NZuse_bottleneckTF)r   Z_BOTTLENECK_INSTALLEDrW  Z
set_option
get_optionr`   rN   r
   r
   r
   r   test_use_bottleneck  s    r`  znumpy_op, expectedr   g      @ri   r3  c                 C   s$   | t ddddg}||ks td S )Nri   r   r   r3  )r   r`   )Znumpy_oprZ  r   r
   r
   r   test_numpy_ops  s    ra  	operationc                 C   sD   t ddtjdtjdg}| }| |}| ||d}||ks@td S )Nri   r   r   r3  )mask)r   r   r+   r   r`   )rb  r   rc  Zmedian_expectedZmedian_resultr
   r
   r   %test_nanops_independent_of_mask_param'  s
    rd  )>	functoolsr   r  r   Znumpyr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandas.core.dtypes.commonr   ZpandasrW  r   r   Zpandas._testingZ_testingr^   Zpandas.core.arraysr   Zpandas.core.nanopscorer   r   rN   r[   rb   Zfixturer   r   r  r  r<  rS  rV  r`  r   r   r   r   r   r   r   r   r   r   r  r  ra  r   r  r   r   r   r   r   r   r   r   rd  r
   r
   r
   r   <module>   s|   

     =0w11#
