U
    ¾mœdÊ©  ã                   @   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 id€d€d�g¡e id�gd‚d€g  ¡g¡ej9 :dƒd„d…g¡d†d‡„ ƒƒZje
jke
jlej9 :dƒd„dˆg¡d‰dŠ„ ƒƒƒZmej9 :d‹dŒd�g¡dŽd�„ ƒZnej9 :d�d‘d’d“g¡d”d•„ ƒZoej9 :d–ejpejqejrejsejteued—dƒg¡ej9 :d˜d™dšd›dœd�dždŸg¡d d¡„ ƒƒ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   úQ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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	¡}qüttd
ƒrÔd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r¢t	|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 }
|�r¨t	 
|
¡| _|dk�r”t| 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Ž   Z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rˆt ||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 † )ÚscaleÚsize)ÚprngÚnormal)r`   r*  r   r   r   Úsamples¦  s    zTestNanvarFixedValues.samplesc                 C   s   t  |¡}tj||dd� d S )Nç{®Gáz„?©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 ¡sÔt	‚tj
|d||d�}t |d d… |||f d  ¡ t  |d ¡�st	‚d S )!N)é   rA  g*ßùf#ï?g›§| 9þË?gôÖ†«Çá?gävý¼ˆZç?g†§Û×Ÿ?g¤Å×¦Êºï?gžã«6bÚ·?gEƒó-œ9ã?g$mx´PÄ?r°   gÓžõ��Á?g/�-²:Å¬?g¥¼?½�½?g-u±ållÊ?g(I•0ì“µ?güÍïM6Æ?g-u±ållÚ?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 )NgÌ5ôîÈ¿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ÂKó¿r   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¨   Ú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)	öþ
ñþ
	
 &ÿ


úþ