a
    GGb]                     @   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.
    )Zparam)Zrequest r   7lib/python3.9/site-packages/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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)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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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V | j| jd  | _"t | j| j"g| _#| jd | _$t | j| j$g| _%W d    n1 sP0    Y  | 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Zinvalid)2nprandomZseednanops_USE_BOTTLENECKZrandn	arr_float
arr_float1arr_complexZ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    







4z TestnanopsDataFrame.setup_methodc                 C   s
   t t_d S N)use_bnr   r   rE   rF   r   r   r	   teardown_methodb   s    z#TestnanopsDataFrame.teardown_methodTc                 C   s6  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y0   t|dr|j	dkr t|dr|j	j
dv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0 d S )NZasm8r   shapeaxischeck_dtypedtyper   )cr   r   c16f8)getattrhasattrndimrL   r   splittmassert_almost_equalAssertionErrorrQ   kindr!   has_c16realimag)rE   targresrN   rP   Z
cast_dtyper   r   r	   check_resultse   s6    

z!TestnanopsDataFrame.check_resultsNc                 K   s  t t|jd g D ]<}	|r"|n|}
|rP|rPt|
 rP||
fd|	i|}n||
fd|	i|}|
jtkr|tju s|tju rt	|tj
r|t}nt|}||f|	|d|}| j|||	|d |r||fd|	i|}| j|||	|d |	d u r$||fd|i|}| j|||	|d |r|	d u r||fi |}| j|||	|d q|jdkrdd S tj|ddd}tj|ddd}| j||||f|||d	| d S )
NrN   rN   r
   rO   r
      r   rM   )r
   rP   empty_targfunc)listrangerW   r   allrQ   objectr   any
isinstancendarrayr!   boolrb   takecheck_fun_data)rE   testfunctargfunc	testarval	targarvalr
   rP   rf   kwargsrN   Ztargartempvalr`   ra   Z
testarval2Z
targarval2r   r   r	   rp      sP    

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
   rf   )endswithrV   rU   rp   )
rE   rq   rr   Ztestarr
   rf   ru   Ztargarrs   rt   r   r   r	   	check_fun   s     

zTestnanopsDataFrame.check_func	                 K   s  | j ||d|fi |	 | j ||d|fi |	 | j ||d|fi |	 | j ||d|fi |	 | jd| jd| jdg}
|r| j ||d|fi |	 |r| j ||d|fi |	 | j ||d|fi |	 |r| j ||d	|fi |	 |
| jdg7 }
|r<|| j | j ||d
|fi |	 |
| jdg7 }
|rz|| j W n tyd   Y n,0 | j ||d|fi |	 |
| jdg7 }
|rt	
|
| _|dkrt| j||d}| j ||d|fi |	 d S )Nr   r)   r   r   r   r'   r   r6   r5   r$   r%   convert)funcallow_complexr3   )rx   r   r!   r   r   r   r$   r%   	TypeErrorr   r(   r3   r   _badobj_wrap)rE   rq   rr   r
   r{   allow_all_nan
allow_dateallow_tdelta	allow_objru   Zobjsr   r   r	   
check_funs   sD    




zTestnanopsDataFrame.check_funsc                 K   s6   |j jdkr&|r|d}n
|d}||fi |S )Nr   rS   rT   )rQ   r\   r!   )rE   valuerz   r{   ru   r   r   r	   r}     s
    
z TestnanopsDataFrame._badobj_wrapznan_op,np_opc                 C   s   | j |||ddd d S )NF)r~   r   )r   rE   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   rP   rf   )r   r   nansumr   sumrE   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:J ||ksFJ |jtjksJ qd S )N)l          l       l   |H%[<i  )indexrQ   )r   rh   r   int64r   valuesrQ   float64)rE   asresultZ	np_resultr   r   r	   test_nanmean_overflow/  s    
z)TestnanopsDataFrame.test_nanmean_overflowrQ   Zfloat128c                 C   sz   |d u rd S t td|d}g d}ddg}|| D ]@}t|| }t|rf||v rf|jtjkstJ q4|j|ks4J q4d S )Nr   rQ   )r   stdvarskewkurtminmax)r   rh   rU   r   rQ   r   r   )rE   rQ   r   Zgroup_aZgroup_brF   r   r   r   r	   test_returned_dtype<  s    z'TestnanopsDataFrame.test_returned_dtypec              	   C   sV   t jdd6 t dt | jtjtj|dddd W d    n1 sH0    Y  d S )NTrecordr   Fry   )r{   r   r   )	warningscatch_warningssimplefilterRuntimeWarningr   r   	nanmedianr   medianr   r   r   r	   test_nanmedianV  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   rE   r   r
   r   r   r	   test_nanvarb  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_nanstdn  s    zTestnanopsDataFrame.test_nanstdc                 C   sX   ddl m} tjdd, | jtj||dddd|d W d    n1 sJ0    Y  d S )Nr   )semr   r   Fry   )r{   r   r   r   r   )scipy.statsr   r   r4   r   r   nansem)rE   r   r
   r   r   r   r	   test_nansemz  s    zTestnanopsDataFrame.test_nansemc                 C   sN   t jdd. t dt | j|||dd W d    n1 s@0    Y  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 )Nre   ri   )r   r   r   rW   rV   ri   )rE   r   rN   rz   ra   ZnansZnullnanr   r   r	   _argminmax_wrap  s    

z#TestnanopsDataFrame._argminmax_wrapc                 C   s`   t jdd@ t dt t| jtjd}| jt	j
||dd W d    n1 sR0    Y  d S NTr   r   rz   Fr   )r   r   r   r   r   r   r   Zargmaxr   r   	nanargmaxrE   r
   rz   r   r   r	   test_nanargmax  s    z"TestnanopsDataFrame.test_nanargmaxc                 C   s`   t jdd@ t dt t| jtjd}| jt	j
||dd W d    n1 sR0    Y  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 )NrT   F)rN   Zbiasr   rM           )	rl   rQ   typer   Zfloatingr!   rm   r   r   )rE   r   rN   rz   r   r   r   r	   _skew_kurt_wrap  s    
 z#TestnanopsDataFrame._skew_kurt_wrapc              	   C   sb   ddl m} t| j|d}tjdd( | jtj||dddd W d    n1 sT0    Y  d S )Nr   )r   r   r   r   Fr{   r   r   )	r   r   r   r   r   r4   r   r   nanskew)rE   r
   r   rz   r   r   r	   test_nanskew  s    z TestnanopsDataFrame.test_nanskewc              	   C   sn   ddl m} t|dd}t| j|d}tjdd( | jtj||dddd	 W d    n1 s`0    Y  d S )
Nr   )kurtosisT)Zfisherr   r   r   Fr   )	r   r   r   r   r   r4   r   r   nankurt)rE   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   rf   )r   r   nanprodr   Zprodr   r   r   r	   test_nanprod  s    z TestnanopsDataFrame.test_nanprodc                 K   s  || j | jfi |}|| j | jfdt| j d i|}t|| t|| || j| jfi |}|| j| jfdt| j d i|}t|| t|| tj}	|| j	| jfi |}
|| j | j	fi |}|| j	| j	fi |}|| j| j
fi |}|| 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_periodsrd   )r9   r:   lenrY   rZ   r<   r=   r   r&   r;   r>   rE   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i |}|| j | jfdt| j d i|}t|| t|| || j| jfi |}|| j| jfdt| j d i|}t|| t|| tj}	|| j	| jfi |}
|| j | j	fi |}|| j	| j	fi |}|| j| j
fi |}|| 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   )r?   r@   r   rY   rZ   rB   rC   r   r&   rA   rD   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   rd   ZpearsonrF   r   corrcoefr9   r:   flatr   r   nancorrr?   r@   r   rE   r   r   r   r   r	   test_nancorr=  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_pearsonE  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   r9   r:   r   r   r   r   r?   r@   r   )rE   r   r   r   r   r   r	   test_nancorr_kendallM  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   r9   r:   r   r   r   r   r?   r@   r   )rE   r   r   r   r   r   r	   test_nancorr_spearmanX  s    z)TestnanopsDataFrame.test_nancorr_spearmanc                 C   sv   t | j| jd }t | jj| jjd }d}tjt|d$ | jt	j
||dd W d    n1 sh0    Y  d S )Nr   z;Unknown method 'foo', expected one of 'kendall', 'spearman'matchfoor   )r   r   r9   r:   r   pytestraises
ValueErrorr   r   r   )rE   r   r   msgr   r   r	   test_invalid_methodc  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covr9   r:   r   r   r   Znancovr?   r@   r   r   r   r   r	   test_nancovk  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 )Nrd   FrO   r   re   rM   )r   r   r'   r,   r)   r*   r+   rW   rY   rZ   r   r(   hstackassert_numpy_array_equalro   )rE   r   r   r   r   r'   r,   r)   r*   r+   res0r   Zres1r   Zres2r   r   r	   check_nancomps  s4    



z!TestnanopsDataFrame.check_nancompzop,nanopc                 C   s   || j | j}| || d S rH   )r   r   r   )rE   opZnanopr   r   r   r	   test_nan_comparison  s    z'TestnanopsDataFrame.test_nan_comparisonc                 C   sL   t |ddrH||}|r"|s*J n|r*J t|ds6qHtj|ddd}q d S )NrW   Tr   re   rM   )rU   rV   r   ro   )rE   rz   r   correctr   r   r   r	   
check_bool  s    

zTestnanopsDataFrame.check_boolc                 C   s   g d}g d}|D ]"\}}t | |}| tj|| q|D ]N\}}t | |}| tj|| | tj|d| | tj|d| q<d S )N)
r   F)r   F)r   F)r"   F)r#   Fr   )r6   F)r5   F)r7   T)r8   T)	)r   F)r'   F)r)   F)r,   F)r/   T)r.   T)r0   T)r1   T)r2   TZf4f2)rU   r   r   Z	_has_infsr!   )rE   ZpairsZpairs_floatarrr   valr   r   r	   test__has_infs  s    

z"TestnanopsDataFrame.test__has_infsc                 C   s   t | jjdsJ t | jjds(J t | jjds<J t | jjdsPJ t | jjdsdJ t | jjdsxJ t | j	jdrJ t | j
jdrJ t | jjdrJ d S )Ntest)r   Z_bn_ok_dtyper   rQ   r   r   r   r"   r#   r$   r%   r3   rE   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__rG   rK   rb   rp   rx   r   r}   r   markparametrizer   nananyr   rk   nanallri   r   r   r   r   Zint16Zint32r   Zfloat32r   rU   r   r   rh   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   @
/  
9 
     
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J t ddks$J t ddks6J d S )Nrd   皙?y      ?       @)r   _ensure_numericr   r   r   r	   test_numeric_values  s    z%TestEnsureNumeric.test_numeric_valuesc                 C   s   t g d}t t||s$J |t}t t||sDJ t jg dtd}t t||slJ t jg dtd}d}tjt	|d t| W d    n1 s0    Y  d S )N)rd   r   r   )123r   )r   ZbarZbazzCould not convert .* to numericr   )
r   arrayallcloser   r
  r!   rj   r   r   r|   )rE   r   Zo_valuesZs_valuesr   r   r   r	   test_ndarray  s    
zTestEnsureNumeric.test_ndarrayc                 C   sF   t tddsJ t tdds,J t tddsBJ d S )Nr        ?z1.1r	  z1+1jy      ?      ?)r   r  r   r
  r   r   r   r	   test_convertable_values  s    z)TestEnsureNumeric.test_convertable_valuesc                 C   s   d}t jt|d td W d    n1 s20    Y  d}t jt|d ti  W d    n1 sn0    Y  t jt|d tg  W d    n1 s0    Y  d S )Nz Could not convert foo to numericr   r   z%argument must be a string or a number)r   r   r|   r   r
  )rE   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                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dede	j
deddd Ze	j
ded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prngZnormalsamples)rE   rF   r  r   r   r	   rG     s    
z"TestNanvarFixedValues.setup_methodc                 C   s&   | j }t|}tj|| jdd d S )N{Gz?Zrtol)r  r   r   rY   rZ   r  rE   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  rL   r   r   rY   rZ   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  rL   r   r   rY   rZ   r  r   )rE   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  rd   rM   UUUUUU?r  r  )r  r  uniformrL   r   r(   r   r   rY   rZ   r  r  )rE   Zsamples_normZsamples_unifr  r  r   r   r	   test_nanvar_axis3  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'  rd   r$  re   Tr   )rN   r
   r   r   r%  r  r  r  g       @)	r  r&  r   r&   r   r   r   rY   rZ   )rE   nr  Z
variance_0Z
variance_1Z
variance_2r   r   r   r	   test_nanvar_ddof>  s    z&TestNanvarFixedValues.test_nanvar_ddofrN   r   r   r   c                 C   s  t d}t g dg dg dg|d dd df< t j |d< |d d df< t g dg dg dgg d	g d
g dgg}tj|d||d}t|d d |||f  t |d sJ tj	|d||d}t|d d |||f d  t |d sJ d S )N)   r+  )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_܃?T)r
   rN   r   r  )
r   emptyr  r&   r   r   rY   rZ   isnanr   )rE   rN   r   r  r  r   r   r   r   r	   test_ground_truthQ  s2    
 z'TestNanvarFixedValues.test_ground_truthc                 C   s.   t dtd }|j|d}|dks*J d S )Ni-r   )r   r   )r   r   r!  r   )rE   r   datar   r   r   r	   test_nanstd_roundoffy  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   rG   r  r"  r#  r'  r*  r   r   r   rh   r.  r0  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   rd      g5ȿ)r   sinlinspacer  actual_skewrJ   r   r   r	   rG     s    z#TestNanskewFixedValues.setup_methodc                 C   s2   dD ](}|t d }t|}|dksJ qd S )Ngfffff@g@g     @,  r   )r   r!  r   r   )rE   r   r/  r   r   r   r	   test_constant_series  s    
z+TestNanskewFixedValues.test_constant_seriesc                 C   s\   d\}}| j j||dd}t|dk s,J d\}}| j j||dd}t|dksXJ d S N)333333?皙?d   r$  r   )r>  r=  )r  betar   r   rE   Zalphar@  Zleft_tailedZright_tailedr   r   r	   test_all_finite  s    z&TestNanskewFixedValues.test_all_finitec                 C   s   t | j}t|| j d S rH   )r   r   r  rY   rZ   r8  )rE   r   r   r   r	   r.    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 Nrd   rM   )r   r(   r  r&   r!  r   r   r   rY   rZ   r  r8  rE   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.J d S NFr   )r   r   r  r&   r   r   r-  rD  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   rY   rZ   r8  rD  r   r   r	   test_nans_skipna  s    z'TestNanskewFixedValues.test_nans_skipnac                 C   s   t jdS r1  r2  r   r   r   r	   r    s    zTestNanskewFixedValues.prngN)r   r   r   rG   r;  rB  r.  rE  rG  rI  r3  r  r   r   r   r	   r4    s   	r4  c                   @   sb   e Zd Zdd Zejdg d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   rd   r5  g|vK)r   r6  r7  r  actual_kurtrJ   r   r   r	   rG     s    z#TestNankurtFixedValues.setup_methodr   r9  c                 C   s(   |t d }t|}|dks$J d S )Nr:  r   )r   r!  r   r   )rE   r   r/  r   r   r   r	   r;    s    
z+TestNankurtFixedValues.test_constant_seriesc                 C   s\   d\}}| j j||dd}t|dk s,J d\}}| j j||dd}t|dksXJ d S r<  )r  r@  r   r   rA  r   r   r	   rB    s    z&TestNankurtFixedValues.test_all_finitec                 C   s   t | j}t|| j d S rH   )r   r   r  rY   rZ   rK  )rE   r   r   r   r	   r.    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 rC  )r   r(   r  r&   r!  r   r   r   rY   rZ   r  rK  rE   r  r   r   r   r	   rE    s    "z TestNankurtFixedValues.test_axisc                 C   s2   t | jt jg}tj|dd}t |s.J d S rF  )r   r   r  r&   r   r   r-  rL  r   r   r	   rG    s    z TestNankurtFixedValues.test_nansc                 C   s2   t | jt jg}tj|dd}t|| j d S rH  )	r   r   r  r&   r   r   rY   rZ   rK  rL  r   r   r	   rI    s    z'TestNankurtFixedValues.test_nans_skipnac                 C   s   t jdS r1  r2  r   r   r   r	   r    s    zTestNankurtFixedValues.prngN)r   r   r   rG   r   r   r   r;  rB  r.  rE  rG  rI  r3  r  r   r   r   r	   rJ    s   
	rJ  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(J q(|dt j}|t|t|fD ]}t|}||ksdJ qdd S )Nz
2016-01-01r   )Zperiodsrd   )pdZ
date_ranger   r   r   r   insertNaT)rE   Zdtiexpectedobjr   Zdti2r   r   r	   r     s    

z!TestDatetime64NaNOps.test_nanmeanrQ   r   r   c                 C   s   t dt j|dd}d|d< tj|dd}|tj	u sDJ tj|ddd	}t j
g d
|jd}t|| tj|ddd	}t 
|d |d |d |d g}t|| d S )N   r+  r   rP  )re   re   Fr   r   rc   )r+  r(  rP  r   rd   r   )rd   rd   )r   rd   )r   Zaranger!   r   ZviewZreshaper   r   rN  rP  r  rQ   rY   r   )rE   rQ   r   r   rQ  r   r   r	   test_nanmean_skipna_false  s     "z.TestDatetime64NaNOps.test_nanmean_skipna_falseN)r   r   r   r   r   r   r   rT  r   r   r   r	   rM    s   rM  c                   C   sJ   t jrFtdd tds J tdd tdr:J tdt d S )NZuse_bottleneckTF)r   Z_BOTTLENECK_INSTALLEDrN  Z
set_optionZ
get_optionrI   r   r   r   r	   test_use_bottleneck  s    rU  znumpy_op, expectedr   g      @rd   r+  c                 C   s    | t g d}||ksJ d S )N)rd   r   r   r+  )r   )Znumpy_oprQ  r   r   r   r	   test_numpy_ops  s    rV  	operationc                 C   sD   t ddtjdtjdg}| }| |}| ||d}||ks@J d S )Nrd   r   r   r+  )mask)r   r   r&   r   )rW  r   rX  Zmedian_expectedZmedian_resultr   r   r	   %test_nanops_independent_of_mask_param-  s
    rY  )>	functoolsr   r  r   Znumpyr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandas.core.dtypes.commonr   ZpandasrN  r   r   Zpandas._testingZ_testingrY   Zpandas.core.arraysr   Zpandas.core.nanopscorer   r   rI   rV   r]   Zfixturer
   r   r  r  r4  rJ  rM  rU  r   r   r   r   r   r   r   r   r   r   r   r   rV  r   r   r   r   r   r   r   r   r   r   rY  r   r   r   r	   <module>   s|   

     E0u11#
