o
    im                     @   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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j.dfej/dfg
dd Z0ej$%d ej1ej2ej'ej)ej+ej3ej4ej5ej6ej7ej/ej.ej8ej9ej:gd!d" Z;ej$%d#d$d gd%d& Z<ej$%d'de=g d(e=dgd)dg  gej$%d*d+d,gd-d. Z>e
j?e
j@ej$%d*d+d/gd0d1 ZAej$%d2d3d4gej$%d5ejBejCejDejEejFejGejHejIejJejKejLgd6d7 ZMdS )8    )partialN)is_integer_dtype)Seriesisna)DatetimeArrayTF)paramsc                 C   s   | j S )z5
    Fixture to pass skipna to nanops functions.
    )param)request r
   S/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/test_nanops.pyskipna   s   r   c                   @   sf  e Zd Zdd Zdd ZdSddZ		dTd	d
Z	dUddZ					dVddZdSd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)dWd*d+Z*d,d- Z+d.d/ Z,dWd0d1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 )X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+ | j| jd  | _"t | j| j"g| _#| jd | _$t | j| j$g| _%W d    n	1 s(w   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invalid)2nprandomseednanops_USE_BOTTLENECKrandn	arr_float
arr_float1arr_complexrandintarr_intarr_boolabsastypearr_strarr_utfarr_date
arr_tdelta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	arr_shaper
   r
   r   setup_method!   sf   







z TestnanopsDataFrame.setup_methodc                 C   s
   t t_d S N)use_bnr   r   rL   r
   r
   r   teardown_methoda   s   
z#TestnanopsDataFrame.teardown_methodTc                 C   s:  t |d|}|dkr&t|dr&|jr&|j|jkr&tj||jd gddd }ztj|||d W d S  ty   t|drC|j	dkrC t|drN|j	j
dvrO |j	j
d	krv|j	j
d	krb||j	}nttd
ridnd}||}||}n|j	j
d	kr} tjt|t||d tjt|t||d Y d S w )Nasm8r   shapeaxischeck_dtypedtyper   )cr   r   
complex128c16f8)getattrhasattrndimrT   r   splittmassert_almost_equalAssertionErrorrY   kindr'   realimag)rL   targresrV   rX   
cast_dtyper
   r
   r   check_resultsd   s4   
"z!TestnanopsDataFrame.check_resultsNc                 K   s  t t|jd g D ]}	|r|n|}
|r'|r't|
 r'||
fd|	i|}n
||
fd|	i|}|
jtkrP|tju s@|tju rPt	|tj
rL|t}nt|}||f|	|d|}| j|||	|d |ry||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rd S tj|ddd}tj|ddd}| j||||f|||d	| d S )
NrV   rV   r   rW   r      r   rU   )r   rX   empty_targfunc)listranger`   r   allrY   objectr   any
isinstancendarrayr'   boolrk   takecheck_fun_data)rL   testfunctargfunc	testarval	targarvalr   rX   ro   kwargsrV   targartempvalrh   ri   
testarval2
targarval2r
   r
   r   ry      sL   


z"TestnanopsDataFrame.check_fun_datac           
      K   sb   |}| drt| |d d r|d d }t| |}t| |}	| j||||	f||d| d S )N_nan)r   ro   )endswithr_   r^   ry   )
rL   rz   r{   testarr   ro   r~   targarr|   r}   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}
|rO| j ||d|fi |	 |r| j ||d|fi |	 | j ||d|fi |	 |rw| j ||d	|fi |	 |
| jdg7 }
|r|| j | j ||d
|fi |	 |
| jdg7 }
|rz|| j W n	 ty   Y nw | j ||d|fi |	 |
| jdg7 }
|rt	
|
| _|dkrt| j||d}| j ||d|fi |	 d S d S )Nr    r0   r$   r%   r   r.   r"   r=   r<   r*   r+   convert)funcallow_complexr:   )r   r    r'   r$   r%   r"   r*   r+   	TypeErrorr   r/   r:   r   _badobj_wrap)rL   rz   r{   r   r   allow_all_nan
allow_dateallow_tdelta	allow_objr~   objsr
   r
   r   
check_funs   sH   



zTestnanopsDataFrame.check_funsc                 K   s6   |j jdkr|r|d}n|d}||fi |S )Nr   r\   r]   )rY   re   r'   )rL   valuer   r   r~   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   rL   nan_opnp_opr   r
   r
   r   test_nan_funcs  s   z"TestnanopsDataFrame.test_nan_funcsc                 C       | j tjtj|ddtjd d S )NF)r   rX   ro   )r   r   nansumr   sumrL   r   r
   r
   r   test_nansum     
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 ])}t |tdtjd}| }|j }||ksJ ||ks#J |jtjks+J qd S )N)l          l       l   |H%[<i  )indexrY   )r   rq   r   int64r   valuesrY   float64)rL   asresult	np_resultr
   r
   r   test_nanmean_overflow.  s   
z)TestnanopsDataFrame.test_nanmean_overflowrY   float128c                 C   sz   |d u rd S t td|d}g d}ddg}|| D ] }t|| }t|r3||v r3|jtjks2J q|j|ks:J qd S )Nr   rY   )r   stdvarskewkurtminmax)r   rq   r^   r   rY   r   r   )rL   rY   r   group_agroup_bmethodr   r
   r
   r   test_returned_dtype;  s   z'TestnanopsDataFrame.test_returned_dtypec              	   C   sX   t jdd t dt | jtjtj|dddd W d    d S 1 s%w   Y  d S )NTrecordr   Fr   )r   r   r   )	warningscatch_warningssimplefilterRuntimeWarningr   r   	nanmedianr   medianr   r
   r
   r   test_nanmedianU  s   "z"TestnanopsDataFrame.test_nanmedianddof   c              	   C       | j tjtj|ddd|d d S NFr   )r   r   r   r   )r   r   nanvarr   r   rL   r   r   r
   r
   r   test_nanvara     
zTestnanopsDataFrame.test_nanvarc              	   C   r   r   )r   r   nanstdr   r   r   r
   r
   r   test_nanstdm  r   zTestnanopsDataFrame.test_nanstdc                 C   sZ   ddl m} tjdd | jtj||dddd|d W d    d S 1 s&w   Y  d S )Nr   )semr   r   Fr   )r   r   r   r   r   )scipy.statsr   r   r;   r   r   nansem)rL   r   r   r   r
   r
   r   test_nansemy  s   "zTestnanopsDataFrame.test_nansemc                 C   sP   t jdd t dt | j|||dd W d    d S 1 s!w   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   sX   |||}t ||}t|}|jrd||< |S t|dr!| s(t|ds*|r*d}|S )Nrn   rr   )r   r   r   r`   r_   rr   )rL   r   rV   r   ri   nansnullnanr
   r
   r   _argminmax_wrap  s    
z#TestnanopsDataFrame._argminmax_wrapc                 C   b   t jdd! t dt t| jtjd}| jt	j
||dd W d    d S 1 s*w   Y  d S NTr   r   r   Fr   )r   r   r   r   r   r   r   argmaxr   r   	nanargmaxrL   r   r   r
   r
   r   test_nanargmax  
   "z"TestnanopsDataFrame.test_nanargmaxc                 C   r   r   )r   r   r   r   r   r   r   argminr   r   	nanargminr   r
   r
   r   test_nanargmin  r   z"TestnanopsDataFrame.test_nanargminc                 C   st   t |jjtjs|d}|||dd}t |tjr,d|tj||dtj||dk< |S t|t|kr8dS |S )Nr]   F)rV   biasr   rU           )	ru   rY   typer   floatingr'   rv   r   r   )rL   r   rV   r   r   r
   r
   r   _skew_kurt_wrap  s   
 z#TestnanopsDataFrame._skew_kurt_wrapc              	   C   sd   ddl m} t| j|d}tjdd | jtj||dddd W d    d S 1 s+w   Y  d S )Nr   )r   r   r   r   Fr   r   r   )	r   r   r   r   r   r;   r   r   nanskew)rL   r   r   r   r
   r
   r   test_nanskew  s   "z TestnanopsDataFrame.test_nanskewc              	   C   sp   ddl m} t|dd}t| j|d}tjdd | jtj||dddd	 W d    d S 1 s1w   Y  d S )
Nr   )kurtosisT)fisherr   r   r   Fr   )	r   r   r   r   r   r;   r   r   nankurt)rL   r   r   func1r   r
   r
   r   test_nankurt  s   "z TestnanopsDataFrame.test_nankurtc                 C   r   )NF)r   r   ro   )r   r   nanprodr   prodr   r
   r
   r   test_nanprod  r   z TestnanopsDataFrame.test_nanprodc                 K     || 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 Nmin_periodsrm   )r@   rA   lenrb   rc   rC   rD   r   r-   rB   rE   rL   checkfuntarg0targ1r~   res00res01res10res11targ2res20res21res22res23res24res25r
   r
   r   check_nancorr_nancov_2d  b   z+TestnanopsDataFrame.check_nancorr_nancov_2dc                 K   r   r   )rF   rG   r   rb   rc   rI   rJ   r   r-   rH   rK   r   r
   r
   r   check_nancorr_nancov_1d  r  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   rm   pearsonr   r   corrcoefr@   rA   flatr   r   nancorrrF   rG   r  rL   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_pearsonD  s   z(TestnanopsDataFrame.test_nancorr_pearsonc                 C      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   )
kendalltaukendallr  )r   r  r@   rA   r	  r   r   r
  rF   rG   r  )rL   r  r   r   r
   r
   r   test_nancorr_kendallL     z(TestnanopsDataFrame.test_nancorr_kendallc                 C   r  )Nr   )	spearmanrspearmanr  )r   r  r@   rA   r	  r   r   r
  rF   rG   r  )rL   r  r   r   r
   r
   r   test_nancorr_spearmanW  r  z)TestnanopsDataFrame.test_nancorr_spearmanc                 C   sx   t | j| jd }t | jj| jjd }d}tjt|d | jt	j
||dd W d    d S 1 s5w   Y  d S )Nr  z;Unknown method 'foo', expected one of 'kendall', 'spearman'matchfoor  )r   r  r@   rA   r	  pytestraises
ValueErrorr  r   r
  )rL   r   r   msgr
   r
   r   test_invalid_methodb  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   covr@   rA   r	  r   r   nancovrF   rG   r  r  r
   r
   r   test_nancovj  s   zTestnanopsDataFrame.test_nancovc                 C   s4  | j }| j}| j}| j}| j}| j}| j}	|jr|||}
t	||
 |jdkr0t
||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}|jsd S d S )Nrm   FrW   r   rn   rU   )r    r!   r.   r3   r0   r1   r2   r`   rb   rc   r   r/   hstackassert_numpy_array_equalrx   )rL   r   r   r    r!   r.   r3   r0   r1   r2   res0r   res1r   res2r
   r
   r   check_nancompr  s6   



z!TestnanopsDataFrame.check_nancompzop,nanopc                 C   s   || j | j}| || d S rO   )r    r!   r&  )rL   opnanopr   r
   r
   r   test_nan_comparison  s   z'TestnanopsDataFrame.test_nan_comparisonc                 C   s\   t |ddr,||}|r|sJ n|rJ t|dsd S tj|ddd}t |ddsd S d S )Nr`   Tr   rn   rU   )r^   r_   r   rx   )rL   r   r   correctr#  r
   r
   r   
check_bool  s   

zTestnanopsDataFrame.check_boolc                 C   s   g d}g d}|D ]\}}t | |}| tj|| q
|D ]'\}}t | |}| tj|| | tj|d| | tj|d| qd S )N)
r"   F)r$   F)r%   F)r(   F)r)   Fr,  )r=   F)r<   F)r>   T)r?   T)	)r    F)r.   F)r0   F)r3   F)r6   T)r5   T)r7   T)r8   T)r9   Tf4f2)r^   r+  r   	_has_infsr'   )rL   pairs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s(J t | jjds2J t | jjds<J t | j	jdrFJ t | j
jdrPJ t | jjdrZJ d S )Ntest)r   _bn_ok_dtyper    rY   r"   r$   r%   r(   r)   r*   r+   r:   rQ   r
   r
   r   test__bn_ok_dtype  s   z%TestnanopsDataFrame.test__bn_ok_dtype)T)TNrO   )TTTTT)NN)K__name__
__module____qualname__rN   rR   rk   ry   r   r   r   r  markparametrizer   nananyr   rt   nanallrr   r   r   r   r   int16int32r   float32r   r^   r   r   rq   r   r   tdskip_if_no_scipyr   nanminr   nanmaxr   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r   r&  operatoreqnaneqnenannegtnangtgenangeltnanltlenanler)  r+  r4  r7  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sJ d S )Nrm   皙?y      ?       @)r   _ensure_numericrQ   r
   r
   r   test_numeric_values  s   z%TestEnsureNumeric.test_numeric_valuesc                 C   s   t g d}t t||sJ |t}t t||s"J t jg dtd}t t||s6J t jg dtd}d}tjt	|d t| W d    d S 1 sYw   Y  d S )N)rm   r   r   )123r   )r  barbazzCould not convert .* to numericr  )
r   arrayallcloser   rU  r'   rs   r  r  r   )rL   r   o_values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s!J d S )NrW        ?z1.1rT  z1+1jy      ?      ?)r   r]  r   rU  rQ   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 sw   Y  d}t jt|d ti  W d    n1 s7w   Y  t jt|d tg  W d    d S 1 sTw   Y  d S )Nz Could not convert foo to numericr  r  z%argument must be a string or a number)r  r  r   r   rU  )rL   r  r
   r
   r   test_non_convertable_values  s   "z-TestEnsureNumeric.test_non_convertable_valuesN)r8  r9  r:  rV  r`  rb  rc  r
   r
   r
   r   rS    s
    
rS  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 )scalesize)varianceprngnormalsamples)rL   rh  r
   r
   r   rN     s   
z"TestNanvarFixedValues.setup_methodc                 C   s&   | j }t|}tj|| jdd d S )N{Gz?rtol)rk  r   r   rb   rc   rh  rL   rk  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   rl  rm  F)
r   r-   onesrk  rT   r   r   rb   rc   rh  ro  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   Trr  re  rl  rm  F)r   r-   rs  rk  rT   r   r   rb   rc   rh  r   )rL   rk  
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   rg  rm   rU   UUUUUU?rl  rm  )rk  ri  uniformrT   r   r/   r   r   rb   rc   r\  rh  )rL   samples_normsamples_unifrk  rp  r
   r
   r   test_nanvar_axis2  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'  rm   rw  rn   Tr   )rV   r   r   r   rx  rl  rm  ra  g       @)	ri  ry  r   r-   r   r   r   rb   rc   )rL   nrk  
variance_0
variance_1
variance_2r   r
   r
   r   test_nanvar_ddof=  s   $z&TestNanvarFixedValues.test_nanvar_ddofrV   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 saJ tj	|d||d}t|d d |||f d  t |d sJ 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   rV   r   re  )
r   emptyr\  r-   r   r   rb   rc   isnanr   )rL   rV   r   rk  rh  r   r   r
   r
   r   test_ground_truthP  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   rs  r   )rL   r   datar   r
   r
   r   test_nanstd_roundoffx  s   z*TestNanvarFixedValues.test_nanstd_roundoffc                 C      t jdS Ni  r   r   RandomStaterQ   r
   r
   r   ri       zTestNanvarFixedValues.prngN)r8  r9  r:  rN   rq  rt  rv  r|  r  r  r;  r<  rq   r  r  propertyri  r
   r
   r
   r   rd    s    

&
rd  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       t t ddd| _d| _d S )Nr   rm      g5ȿ)r   sinlinspacerk  actual_skewrQ   r
   r
   r   rN        
z#TestNanskewFixedValues.setup_methodc                 C   s2   dD ]}|t d }t|}|dksJ qd S )Ngfffff@g@g     @,  r   )r   rs  r   r   )rL   r3  r  r   r
   r
   r   test_constant_series  s
   
z+TestNanskewFixedValues.test_constant_seriesc                 C   \   d\}}| j j||dd}t|dk sJ d\}}| j j||dd}t|dks,J d S N)333333?皙?d   rw  r   )r  r  )ri  betar   r   rL   alphar  left_tailedright_tailedr
   r
   r   test_all_finite     z&TestNanskewFixedValues.test_all_finitec                 C      t | j}t|| j d S rO   )r   r   rk  rb   rc   r  )rL   r   r
   r
   r   r       z(TestNanskewFixedValues.test_ground_truthc                 C   N   t | jt jt t| j g}tj|dd}t	|t 
| jt jg d S Nrm   rU   )r   r/   rk  r-   rs  r   r   r   rb   rc   r\  r  rL   rk  r   r
   r
   r   	test_axis     "z TestNanskewFixedValues.test_axisc                 C   2   t | jt jg}tj|dd}t |sJ d S NFrr  )r   r!  rk  r-   r   r   r  r  r
   r
   r   	test_nans     z TestNanskewFixedValues.test_nansc                 C   2   t | jt jg}tj|dd}t|| j d S NTrr  )	r   r!  rk  r-   r   r   rb   rc   r  r  r
   r
   r   test_nans_skipna  r  z'TestNanskewFixedValues.test_nans_skipnac                 C   r  r  r  rQ   r
   r
   r   ri    r  zTestNanskewFixedValues.prngN)r8  r9  r:  rN   r  r  r  r  r  r  r  ri  r
   r
   r
   r   r    s    	r  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   r  )Nr   rm   r  g|vK)r   r  r  rk  actual_kurtrQ   r
   r
   r   rN     r  z#TestNankurtFixedValues.setup_methodr3  r  c                 C   s(   |t d }t|}|dksJ d S )Nr  r   )r   rs  r   r   )rL   r3  r  r   r
   r
   r   r    s   
z+TestNankurtFixedValues.test_constant_seriesc                 C   r  r  )ri  r  r   r   r  r
   r
   r   r    r  z&TestNankurtFixedValues.test_all_finitec                 C   r  rO   )r   r   rk  rb   rc   r  )rL   r   r
   r
   r   r    r  z(TestNankurtFixedValues.test_ground_truthc                 C   r  r  )r   r/   rk  r-   rs  r   r   r   rb   rc   r\  r  rL   rk  r   r
   r
   r   r    r  z TestNankurtFixedValues.test_axisc                 C   r  r  )r   r!  rk  r-   r   r   r  r  r
   r
   r   r    r  z TestNankurtFixedValues.test_nansc                 C   r  r  )	r   r!  rk  r-   r   r   rb   rc   r  r  r
   r
   r   r    r  z'TestNankurtFixedValues.test_nans_skipnac                 C   r  r  r  rQ   r
   r
   r   ri    r  zTestNankurtFixedValues.prngN)r8  r9  r:  rN   r  r;  r<  r  r  r  r  r  r  r  ri  r
   r
   r
   r   r    s    
	r  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s?J q2d S )Nz
2016-01-01r   )periodsrm   )pd
date_ranger   r   r   r   insertNaT)rL   dtiexpectedobjr   dti2r
   r
   r   r     s   

z!TestDatetime64NaNOps.test_nanmeanrY   r   r   c                 C   s   t dt j|dd}d|d< tj|dd}t |s"J |j	|ks)J 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   r  )rn   rn   Frr  r   rl   )r  r}  r  r   rm   r  )rm   rm   )r   rm   )r   aranger'   r   viewreshaper   r   isnatrY   r\  rb   r"  )rL   rY   r2  r   r  r
   r
   r   test_nanmean_skipna_false  s    "z.TestDatetime64NaNOps.test_nanmean_skipna_falseN)r8  r9  r:  r   r  r;  r<  r  r
   r
   r
   r   r    s    r  c                   C   s   t jr@tdd tdsJ W d    n1 sw   Y  tdd tdr.J W d    d S 1 s9w   Y  d S d S )Nuse_bottleneckTF)r   _BOTTLENECK_INSTALLEDr  option_context
get_optionr
   r
   r
   r   test_use_bottleneck  s   "r  znumpy_op, expectedr   g      @rm   r  c                 C   s    | t g d}||ksJ d S )N)rm   r   r   r  )r   )numpy_opr  r   r
   r
   r   test_numpy_ops  s   r  	operationc                 C   sD   t ddtjdtjdg}| }| |}| ||d}||ks J d S )Nrm   r   r   r  )mask)r   r   r-   r   )r  r   r  median_expectedmedian_resultr
   r
   r   %test_nanops_independent_of_mask_param+  s
   r  	min_countrn   c                 C   s"   t dd | }d}||ksJ d S )N)   %   Fr   check_below_min_count)r  r   expected_resultr
   r
   r   6test_check_below_min_count__negative_or_zero_min_countH  s   r  r  )FFT	   zmin_count, expected_result)rm   F)e   Tc                 C   s"   d}t || |}||ksJ d S )N)r   r   r  )r  r  r  rT   r   r
   r
   r   .test_check_below_min_count__positive_min_countP  s   r  )l   l$=O Tc                 C   s$   d}t j|d | d}||ksJ d S )N)i?" i  )r  r  r  )r  r  rT   r   r
   r
   r   'test_check_below_min_count__large_shape[  s   r  r   r   r   rY   c                 C   s   t | |rJ d S rO   )r   r6  )rY   r   r
   r
   r   test_check_bottleneck_disallowe  s   r  )N	functoolsr   rF  r   numpyr   r  pandas.util._test_decoratorsutil_test_decoratorsrB  pandas.core.dtypes.commonr   pandasr  r   r   pandas._testing_testingrb   pandas.core.arraysr   pandas.core.nanopscorer   r   rP   fixturer   r   rS  rd  r  r  r  r  r;  r<  r   r   r   r   r   r   r   r   rD  rE  r  r=  r>  r   r   r   r   r   r   r   r   r  r  r\  r  skip_if_windowsskip_if_32bitr  uint8uint16uint32uint64int8r?  r@  r   float16rA  r   r  r
   r
   r
   r   <module>   s    
     E0u11$

	
&