U
    >vfʩ                     @   sB  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Z ejZejdd Zejd	d
 Zejdd Zejdd Zejdd Zejdd Z ejdd Z!ejdd Z"ejdd Z#ejdd Z$ejdd Z%ejdd Z&ejdd  Z'ejd!d" Z(ejd#d$ Z)ejd%d& Z*ejd'd( Z+ejd)d* Z,ejd+d, Z-ejd-d. Z.ejd/d0 Z/ejd1d2 Z0ejd3d4 Z1ejd5d6 Z2ejd7d8 Z3ejd9d: Z4ejd;d< Z5ejd=d> Z6ejd?d@ Z7G dAdB dBZ8ej9:dCej;ej<fej=ej>fej?ej@fejAejBfejCejDfejEejFfgdDdE ZGej9:dFdGdHdIdJdKdGdLdMdNdOg
dPdQ ZHej9:dFdRdSdTdUdVdWdXdYdZg	ej9:d[dd\d]gd^d_ ZIej9:d`ddddddgdadb ZJej9:d`ddd.gdcdd ZKG dedf dfZLG dgdh dhZMG didj djZNG dkdl dlZOG dmdn dnZPdodp ZQej9:dqejRdrfejSdrfejTdsfejUdsfejVdsfejWdsfejXdtfejYdufejZdtfej[dufg
dvdw Z\ej9:dxej]ej^ejSejUejWej_ej`ejaejbejcej[ejZejdejeejfgdydz Zgej9:d{d|d gd}d~ Zhej9:ddeidddgeidgddg  gej9:dddgdd Zje
jke
jlej9:dddgdd Zmej9:dddgdd Znej9:ddddgdd Zoej9:dejpejqejrejsejteueddgej9:ddddddddgdd ZvdS )    )partialN)is_integer_dtype)Seriesisna)nanops)DatetimeArrayc              	   c   s,   |   }|tdd d V  W 5 Q R X d S )N_USE_BOTTLENECKF)contextsetattrr   )Zmonkeypatchm r   </tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/test_nanops.pydisable_bottleneck   s    
r   c                   C   s   dS )N      r   r   r   r   r   	arr_shape   s    r   c                 C   s   t jd t jj|  S )N+  )nprandomseedrandnr   r   r   r   	arr_float$   s    r   c                 C   s   | | d  S )N              ?r   r   r   r   r   arr_complex*   s    r   c                 C   s   t jd t jdd| S )Nr   
   r   r   r   randintr   r   r   r   arr_int/   s    r!   c                 C   s    t jd t jdd| dkS )Nr   r      r   r   r   r   r   arr_bool5   s    r#   c                 C   s   t | dS )NSr   absastyper   r   r   r   arr_str;   s    r(   c                 C   s   t | dS )NUr%   r   r   r   r   arr_utf@   s    r*   c                 C   s"   t jd t jdd| dS )Nr   r    N  M8[ns]r   r   r   r    r'   r   r   r   r   arr_dateE   s    r.   c                 C   s"   t jd t jdd| dS )Nr   r   r+   m8[ns]r-   r   r   r   r   
arr_tdeltaK   s    r0   c                 C   s   t t j| S N)r   tilenanr   r   r   r   arr_nanQ   s    r4   c                 C   s   t | |gS r1   r   vstack)r   r4   r   r   r   arr_float_nanV   s    r7   c                 C   s   t | |gS r1   r5   )r4   r   r   r   r   arr_nan_float1[   s    r8   c                 C   s   t | | gS r1   r5   r4   r   r   r   arr_nan_nan`   s    r:   c                 C   s
   | t j S r1   )r   infr   r   r   r   arr_infe   s    r<   c                 C   s   t | |gS r1   r5   )r   r<   r   r   r   arr_float_infj   s    r=   c                 C   s   t | |gS r1   r5   r4   r<   r   r   r   arr_nan_info   s    r?   c                 C   s   t | ||gS r1   r5   )r   r4   r<   r   r   r   arr_float_nan_inft   s    r@   c                 C   s   t | | |gS r1   r5   r>   r   r   r   arr_nan_nan_infy   s    rA   c                 C   sJ   t | d|d|d|d|d|d|d|dgS )NO)r   r6   r'   )r   r!   r#   r   r(   r*   r.   r0   r   r   r   arr_obj~   s    rC   c              
   C   s0   t jdd | | d  W  5 Q R  S Q R X d S Nignoreinvalidr   r   errstater9   r   r   r   arr_nan_nanj   s    rJ   c              
   C   s2   t jdd t | |gW  5 Q R  S Q R X d S NrE   rF   r   rI   r6   )r   rJ   r   r   r   arr_complex_nan   s    rM   c              
   C   s,   t jdd | d W  5 Q R  S Q R X d S rD   rH   )r<   r   r   r   arr_nan_infj   s    rN   c              
   C   s2   t jdd t | |gW  5 Q R  S Q R X d S rK   rL   )r   rN   r   r   r   arr_complex_nan_infj   s    rO   c                 C   s   | d d df S Nr   r   r   r   r   r   arr_float_1d   s    rQ   c                 C   s   | d d df S rP   r   r9   r   r   r   
arr_nan_1d   s    rR   c                 C   s   | d d df S rP   r   )r7   r   r   r   arr_float_nan_1d   s    rS   c                 C   s   | d d df S rP   r   )arr_float1_nanr   r   r   arr_float1_nan_1d   s    rU   c                 C   s   | d d df S rP   r   )r8   r   r   r   arr_nan_float1_1d   s    rV   c                   @   s  e Zd Zdd Zdd ZdBddZdCd	d
ZdDddZdEddZdFd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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!dGd$d%Z"d&d' Z#d(d) Z$dHd*d+Z%ejd,d- Z&ejd.d/ Z'd0d1 Z(d2d3 Z)d4d5 Z*d6d7 Z+d8d9 Z,ejd:d; Z-ejd<d= Z.ejd>d? Z/d@dA Z0dS )I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 )Nr   Fr   r   r   r   r   r"   r$   r)   r+   r,   r/   rB   rE   rF   )2r   r   r   r   r   r   r   
arr_float1r   r    r!   r#   r&   r'   r(   r*   r.   r0   r2   r3   r4   r6   r7   rT   r8   r:   r;   r<   r=   r?   r@   rA   rC   rI   rJ   rM   rN   rO   arr_float_2darr_float1_2d
arr_nan_2darr_float_nan_2darr_float1_nan_2darr_nan_float1_2drQ   arr_float1_1drR   rS   rU   rV   )selfr   r   r   r   setup_method   sd    







z TestnanopsDataFrame.setup_methodc                 C   s
   t t_d S r1   )use_bnr   r   r`   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 }ztj|||d W n tk
r8   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td
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/   )crB   rB   Z
complex128c16f8)getattrhasattrndimre   r   splittmassert_almost_equalAssertionErrorrj   kindr'   realimag)r`   targresrg   ri   Z
cast_dtyper   r   r   check_results  s6    

z!TestnanopsDataFrame.check_resultsNc                 K   s  t t|jd g D ]8}	|r"|n|}
|rP|rPt|
 rP||
fd|	i|}n||
fd|	i|}|
jtkr|tjks|tjkrt	|tj
r|t}nt|}||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 )
Nrg   rg   skipnarh   r|      r   rf   )r|   ri   empty_targfunc)listrangerp   r   allrj   objectr   any
isinstancendarrayr'   boolrz   takecheck_fun_data)r`   testfunctargfunc	testarval	targarvalr|   ri   r   kwargsrg   Ztargartempvalrx   ry   Z
testarval2Z
targarval2r   r   r   r   ,  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|   r   )endswithro   rn   r   )
r`   r   r   Ztestarr|   r   r   Ztargarr   r   r   r   r   	check_fund  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   r7   r!   r#   rB   r4   r   rM   rJ   r.   r0   convert)funcallow_complexrC   )r   r   r'   r!   r#   r   r.   r0   	TypeErrorr   r6   rC   r   _badobj_wrap)r`   r   r   r|   r   allow_all_nan
allow_dateallow_tdelta	allow_objr   objsr   r   r   
check_funsw  sH    




  zTestnanopsDataFrame.check_funsc                 K   s2   |j jdkr&|r|d}n
|d}||f|S )NrB   rl   rm   )rj   ru   r'   )r`   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   r`   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   ri   r   )r   r   nansumr   sumr`   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   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recordrE   Fr   )r   r   r   )	warningscatch_warningssimplefilterRuntimeWarningr   r   	nanmedianr   medianr   r   r   r   test_nanmedian  s    z"TestnanopsDataFrame.test_nanmedianddof   c              	   C   s    | j tjtj|ddd|d d S NFr   )r   r   r   r   )r   r   nanvarr   varr`   r   r|   r   r   r   test_nanvar  s    zTestnanopsDataFrame.test_nanvarc              	   C   s    | j tjtj|ddd|d d S r   )r   r   nanstdr   stdr   r   r   r   test_nanstd  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   )semrE   rF   Fr   )r   r   r   r   r   )scipy.statsr   r   rI   r   r   nansem)r`   r   r|   r   r   r   r   test_nansem  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   rE   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 )Nr~   r   )r   minr   rp   ro   r   )r`   r   rg   r   ry   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   rE   r   Fr   )r   r   r   r   r   r   r   Zargmaxr   r   	nanargmaxr`   r|   r   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 )Nrm   F)rg   Zbiasr   rf           )	r   rj   typer   Zfloatingr'   r   maxr   )r`   valuesrg   r   resultr   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   )skewr   rE   rF   Fr   r   r   )	r   r   r   r   r   rI   r   r   nanskew)r`   r|   r   r   r   r   r   test_nanskew1  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   rE   rF   Fr   )	r   r   r   r   r   rI   r   r   nankurt)r`   r|   r   Zfunc1r   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   r   )r   r   nanprodr   prodr   r   r   r   test_nanprodP  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_periodsr}   )rY   rZ   lenrr   rs   r\   r]   r   r3   r[   r^   r`   Zcheckfuntarg0targ1r   Zres00Zres01Zres10Zres11targ2Zres20Zres21Zres22Zres23Zres24Zres25r   r   r   check_nancorr_nancov_2dZ  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   )rQ   r_   r   rr   rs   rS   rU   r   r3   rR   rV   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   r}   Zpearsonmethodr   corrcoefrY   rZ   flatr   r   nancorrrQ   r_   r   r`   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_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   rY   rZ   r   r   r   r   rQ   r_   r   )r`   r   r   r   r   r   r   test_nancorr_kendall  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   rY   rZ   r   r   r   r   rQ   r_   r   )r`   r   r   r   r   r   r   test_nancorr_spearman  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   rY   rZ   r   pytestraises
ValueErrorr   r   r   )r`   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covrY   rZ   r   r   r   ZnancovrQ   r_   r   r   r   r   r   test_nancov  s    zTestnanopsDataFrame.test_nancov)T)TN)N)TTTTT)T)NN)NN)1__name__
__module____qualname__ra   rd   rz   r   r   r   r   r   markparametrizer   nananyr   r   nanallr   r   r   r   r   r   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   r   r   r   rW      sn   @
.  
9 
     
9
 



 





--




rW   zop,nanopc                 C   sT  |  d}|  d}|||}|  d}|  d}|  d}	|  d}
|  d}|jrP|||}t|| |jdkrt||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}qPd S )Nr   r4   r:   r7   r8   r}   Frh   r   r~   rf   )	getfixturevaluerp   rr   rs   r   r6   hstackassert_numpy_array_equalr   )requestopZnanopr   r   rX   r   r4   r:   r7   rT   r8   res0r   Zres1r   Zres2r   r   r   test_nan_comparison  s6    











r	  zarr, correct)r   F)r!   F)r#   F)r(   F)r*   F)rM   F)rJ   F)rN   T)rO   Tc                 C   sX   |  |}t|ddrTt|}|r.|s6tn|r6tt|dsBqTtj|ddd}q
d S Nrp   Tr   r~   rf   )r  rn   r   	_has_infsrt   ro   r   r   )r  arrcorrectr   valr  r   r   r   test_has_infs_non_float  s    



r  )r   F)r4   F)r7   F)r:   F)r=   T)r<   T)r?   T)r@   T)rA   Tr'   Zf4f2c                 C   sj   |  |}|d k	r||}t|ddrft|}|r@|sHtn|rHtt|dsTqftj|ddd}qd S r
  )	r  r'   rn   r   r  rt   ro   r   r   )r  r  r  r'   r   r  r  r   r   r   test_has_infs_floats9  s    




r  fixturec                 C   s    | | }t|jdstd S Ntestr  r   _bn_ok_dtyperj   rt   r  r  r   objr   r   r   test_bn_ok_dtypeZ  s    
r  c                 C   s    | | }t|jdrtd S r  r  r  r   r   r   test_bn_not_ok_dtypeb  s    	
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 )Nr}   皙?y      ?       @)r   _ensure_numericrt   rc   r   r   r   test_numeric_valuesp  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 )Nr}   r"   r   123rj   r   barZbazzCould not convert .* to numericr   )r   arrayallcloser   r  rt   r'   r   r   r   r   )r`   r   Zo_valuesZs_valuesr   r   r   r   test_ndarrayz  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  rt   rc   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  )r`   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  o  s   
r  c                   @   s   e Zd Zejdd Zej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S )Ng      @r   rc   r   r   r   variance  s    zTestNanvarFixedValues.variancec                 C   s   | j j|d ddS )N      ?i )Zscalesize)prngnormal)r`   r+  r   r   r   samples  s    zTestNanvarFixedValues.samplesc                 C   s   t |}tj||dd d S )N{Gz?Zrtol)r   r   rr   rs   )r`   r0  r+  actual_variancer   r   r   test_nanvar_all_finite  s    
z,TestNanvarFixedValues.test_nanvar_all_finitec                 C   sj   t jt d|jd   }||d d d< tj|dd}tj||dd tj|dd}tj|t jdd d S )Nr"   r   Tr|   r1  r2  F)r   r3   onesre   r   r   rr   rs   )r`   r0  r+  samples_testr3  r   r   r   test_nanvar_nans  s    z&TestNanvarFixedValues.test_nanvar_nansc                 C   sn   t jt d|jd   }||d d d< tj|dd}tj||d dd tj|dd}tj|t jdd d S )	Nr"   r   Tr5  r,  r1  r2  F)	r   r3   r6  re   r   r   rr   rs   r   )r`   r0  r+  r7  Z
actual_stdr   r   r   test_nanstd_nans  s    z&TestNanvarFixedValues.test_nanstd_nansc                 C   sN   | j j|jd d}t||g}tj|dd}tj|t	|dgdd d S )Nr   r-  r}   rf   UUUUUU?r1  r2  )
r.  uniformre   r   r6   r   r   rr   rs   r$  )r`   r0  r+  Zsamples_unifr3  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'  r}   r:  r~   Tr   )rg   r|   r   r"   r;  r1  r2  r'  g       @)	r.  r<  r   r3   r   r   r   rr   rs   )r`   nr0  Z
variance_0Z
variance_1Z
variance_2r   r   r   r   test_nanvar_ddof  s    z&TestNanvarFixedValues.test_nanvar_ddofrg   r"   r   r   c                 C   s  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j|d||d}t|d d |||f  t |d st	tj
|d||d}t|d d |||f d   t |d st	d S )!N)   rA  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|   rg   r   r,  )r   emptyr$  r3   r   r   rr   rs   isnanrt   r   )r`   rg   r   r0  r+  r   r   r   r   r   test_ground_truth  s2    
 z'TestNanvarFixedValues.test_ground_truthc                 C   s.   t dtd }|j|d}|dks*td S )Ni-r   )r   r   )r   r   r6  r   rt   )r`   r   datar   r   r   r   test_nanstd_roundoff  s    z*TestNanvarFixedValues.test_nanstd_roundoffc                 C   s   t jdS Ni  r   r   ZRandomStaterc   r   r   r   r.    s    zTestNanvarFixedValues.prngN)r   r   r   r   r  r+  r0  r4  r8  r9  r=  r@  r   r   r   rD  rF  propertyr.  r   r   r   r   r*    s    




&
r*  c                   @   sx   e Zd Zejdd Zejdd Zejddddg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S Nr   r}      r   sinZlinspacerc   r   r   r   r0    s    zTestNanskewFixedValues.samplesc                 C   s   dS )Ng5ȿr   rc   r   r   r   actual_skew  s    z"TestNanskewFixedValues.actual_skewr  fffff@皙@     @c                 C   s(   |t d }t|}|dks$td S Ni,  r   )r   r6  r   r   rt   )r`   r  rE  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   )rW  rV  )r.  betar   r   rt   r`   alpharY  Zleft_tailedZright_tailedr   r   r   test_all_finite&  s    z&TestNanskewFixedValues.test_all_finitec                 C   s   t |}t|| d S r1   )r   r   rr   rs   r`   r0  rO  r   r   r   r   rD  /  s    
z(TestNanskewFixedValues.test_ground_truthc                 C   sH   t |t jt t| g}tj|dd}t|t 	|t jg d S Nr}   rf   )
r   r6   r3   r6  r   r   r   rr   rs   r$  r]  r   r   r   	test_axis3  s    z TestNanskewFixedValues.test_axisc                 C   s0   t |t jg}tj|dd}t |s,td S NFr5  )r   r  r3   r   r   rC  rt   )r`   r0  r   r   r   r   	test_nans8  s    z TestNanskewFixedValues.test_nansc                 C   s.   t |t jg}tj|dd}t|| d S NTr5  )r   r  r3   r   r   rr   rs   r]  r   r   r   test_nans_skipna=  s    z'TestNanskewFixedValues.test_nans_skipnac                 C   s   t jdS rG  rH  rc   r   r   r   r.  B  s    zTestNanskewFixedValues.prngN)r   r   r   r   r  r0  rO  r   r   rT  r\  rD  r_  ra  rc  rI  r.  r   r   r   r   rJ    s   


	rJ  c                   @   sx   e Zd Zejdd Zejdd Zejddddg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S rK  rM  rc   r   r   r   r0  J  s    zTestNankurtFixedValues.samplesc                 C   s   dS )Ng|vKr   rc   r   r   r   actual_kurtN  s    z"TestNankurtFixedValues.actual_kurtr  rP  rQ  rR  c                 C   s(   |t d }t|}|dks$td S rS  )r   r6  r   r   rt   )r`   r  rE  kurtr   r   r   rT  R  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 rU  )r.  rY  r   r   rt   rZ  r   r   r   r\  Y  s    z&TestNankurtFixedValues.test_all_finitec                 C   s   t |}t|| d S r1   )r   r   rr   rs   r`   r0  re  rf  r   r   r   rD  b  s    
z(TestNankurtFixedValues.test_ground_truthc                 C   sH   t |t jt t| g}tj|dd}t|t 	|t jg d S r^  )
r   r6   r3   r6  r   r   r   rr   rs   r$  rg  r   r   r   r_  f  s    z TestNankurtFixedValues.test_axisc                 C   s0   t |t jg}tj|dd}t |s,td S r`  )r   r  r3   r   r   rC  rt   )r`   r0  rf  r   r   r   ra  k  s    z TestNankurtFixedValues.test_nansc                 C   s.   t |t jg}tj|dd}t|| d S rb  )r   r  r3   r   r   rr   rs   rg  r   r   r   rc  p  s    z'TestNankurtFixedValues.test_nans_skipnac                 C   s   t jdS rG  rH  rc   r   r   r   r.  u  s    zTestNankurtFixedValues.prngN)r   r   r   r   r  r0  re  r   r   rT  r\  rD  r_  ra  rc  rI  r.  r   r   r   r   rd  G  s   


	rd  c                   @   sJ   e Zd Zejddddgddd Zdd	 Zejd
ddgdd Z	dS )TestDatetime64NaNOpssmsusns)paramsc                 C   s   |j S r1   )param)r`   r  r   r   r   unit{  s    zTestDatetime64NaNOps.unitc                 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sjtqjd S )Nz
2016-01-01r   )Zperiodsr}   )
pdZ
date_rangeZas_unitr   r   r   r   rt   insertNaT)r`   ro  Zdtiexpectedr  r   Zdti2r   r   r   r     s    

z!TestDatetime64NaNOps.test_nanmeanconstructorZM8Zm8c                 C   s   | d| d}t dt j|dd}d|d< tj|dd	}t |sTt	|j
|ksbt	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[]   rA  r   rr  )r~   r~   Fr5  r   r{   r>  r"  r}   r   )r}   r}   )r"   r}   )r   Zaranger'   int64viewZreshaper   r   Zisnatrt   rj   r$  rr   r  )r`   rt  ro  rj   r  r   rs  r   r   r   test_nanmean_skipna_false  s     "z.TestDatetime64NaNOps.test_nanmean_skipna_falseN)
r   r   r   r   r  ro  r   r   r   rz  r   r   r   r   rh  z  s
   
rh  c                	   C   sV   t jrRtdd tds"tW 5 Q R X tdd tdrHtW 5 Q R X d S )NZuse_bottleneckTF)r   Z_BOTTLENECK_INSTALLEDrp  Zoption_context
get_optionrt   r   r   r   r   test_use_bottleneck  s
    r|  znumpy_op, expectedr   g      @r}   rA  c                 C   s$   | t ddddg}||ks td S )Nr}   r"   r   rA  )r   rt   )Znumpy_oprs  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@td S )Nr}   r"   r   rA  )mask)r   r   r3   r   rt   )r~  serr  Zmedian_expectedZmedian_resultr   r   r   %test_nanops_independent_of_mask_param  s
    r  	min_countr~   c                 C   s"   t dd | }d}||kstd S )N)   %   Fr   Zcheck_below_min_countrt   )r  r   expected_resultr   r   r   5test_check_below_min_count_negative_or_zero_min_count  s    r  r  FT	   zmin_count, expected_result)r}   F)e   Tc                 C   s"   d}t || |}||kstd S )N)r   r   r  )r  r  r  re   r   r   r   r   -test_check_below_min_count_positive_min_count  s    r  )l   l$=O Tc                 C   s$   d}t j|d | d}||ks td S )N)i?" i  )r  r  r  )r  r  re   r   r   r   r   &test_check_below_min_count_large_shape  s    r  r   r   r   c                 C   s   t t| j|rtd S r1   )r   r  r   rj   r   rt   )Zany_real_numpy_dtyper   r   r   r   test_check_bottleneck_disallow  s    r  r  l          l       l   |H%[<c                 C   sR   t |tdtjd}| }|j }||ks2t||ks>t|jtjksNtd S )Ni  )indexrj   )	r   r   r   rx  r   r   rt   rj   float64)r   r  r  r   Z	np_resultr   r   r   test_nanmean_overflow  s    
r  rj   Zfloat128r   r   r   r   r   rf  r   r   c                 C   sb   |d krt d ttd|d}t|| }t|rP|dkrP|jtjks^t	n|j|ks^t	d S )Nznp.float128 not availabler   r"  )r   r   )
r   skipr   r   rn   r   rj   r   r  rt   )r   rj   r   r  r   r   r   r   test_returned_dtype  s    
r  )w	functoolsr   operatorr   Znumpyr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandas.core.dtypes.commonr   Zpandasrp  r   r   Zpandas._testingZ_testingrr   Zpandas.corer   Zpandas.core.arraysr   r   rb   r  r   r   r   r   r!   r#   r(   r*   r.   r0   r4   r7   r8   r:   r<   r=   r?   r@   rA   rC   rJ   rM   rN   rO   rQ   rR   rS   rU   rV   rW   r   r   eqZnaneqneZnannegtZnangtgeZnangeltZnanltleZnanler	  r  r  r  r  r  r*  rJ  rd  rh  r|  r   r   r   r   r   r   r   r   r  r  r}  r   r   r   r   r   r   r   r   r   r   r  r  r$  r  Zskip_if_windowsZskip_if_32bitr  r  r  Zint16Zint32rx  Zfloat32r  rn   r  r   r   r   r   <module>   s  




























    .






$
 

0u33)	

	
 &


