U
    ¾mœdB  ã                   @   s@  d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dl	m
Z d dlmZmZ ejdd„ ƒZejdd„ ƒZejd	d
„ ƒZG dd„ dƒZG dd„ dƒZdd„ Zdd„ Zej ddddgdd fd ddgddfd ddgddfd ddddgddfddddgddfg ddfddd d ddgdd fddd d ddgddfddd d ddgddfddd d ddgddfdd d dddgd dfdd d dddgddfg¡dd„ ƒZej dddejejgdejdejgddejgejdd d ejdgejd d dddgg¡ej dejd dg¡dd„ ƒƒZdd„ Zd d!„ Zd"d#„ Zej dejdg¡d$d%„ ƒZd&d'„ Z dS )(é    N)ÚIntIndex)Úisna)ÚSparseArrayÚSparseDtypec                   C   s&   t  t jt jdddt jddt jdg
¡S )z<Fixture returning numpy array with valid and missing entriesé   é   é   é   é   é   )ÚnpÚarrayÚnan© r   r   ú^/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/arrays/sparse/test_array.pyÚarr_data   s    r   c                 C   s   t | ƒS )z-Fixture returning SparseArray from 'arr_data'©r   )r   r   r   r   Úarr   s    r   c                   C   s    t ddddddddddg
dd�S )	zEFixture returning SparseArray with integer entries and 'fill_value=0'r   r   r   r   r	   r
   r   ©Ú
fill_valuer   r   r   r   r   Úzarr   s    r   c                
   @   sZ  e Zd Zej dddejg¡dd„ ƒZdd„ Z	ej dd	d
dge 
d	d
g¡dg¡dd„ ƒZdd„ Zdd„ Zej ddddddgddfg ddfdgddfddejdgdefg¡dd„ ƒZej dejejejejejgd	ejejdejgd	ejdddgg¡ej dddg¡dd„ ƒƒZej dd d!g¡d"d#„ ƒZd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ ZdS ).ÚTestSparseArrayr   r   Nc                 C   sf   t t dddddg¡dd�}|jd|d�}t|ƒr:|jj}t t |ddddg¡dd�}t ||¡ d S )Nr   r   r   g       @r   )	r   r   r   Úshiftr   ÚdtypeZna_valueÚtmÚassert_sp_array_equal)Úselfr   ÚsparseÚresÚexpr   r   r   Útest_shift_fill_value$   s    z%TestSparseArray.test_shift_fill_valuec                 C   sÂ   t dtjdgtjd�}d|_|jdks*t‚t dddgdtjd�}d|_|jdksTt‚d|_|jdksht‚tj|_t |j¡s€t‚t d	d
d	gd
tjd�}d	|_|js¦t‚tj|_t |j¡s¾t‚d S )Nç      ð?g       @r   r   r   r   ©r   r   gÍÌÌÌÌÌ@TF)r   r   r   r   ÚAssertionErrorÚint64ÚisnanÚbool_©r   r   r   r   r   Útest_set_fill_value.   s    
z#TestSparseArray.test_set_fill_valueÚvalr   r   r   )r   r   r   c              	   C   s>   t dddgdtjd�}d}tjt|d�� ||_W 5 Q R X d S )NTFr"   zfill_value must be a scalar©Úmatch)r   r   r&   ÚpytestÚraisesÚ
ValueErrorr   )r   r)   r   Úmsgr   r   r   Ú test_set_fill_invalid_non_scalarU   s    z0TestSparseArray.test_set_fill_invalid_non_scalarc                 C   s,   |  ¡ }|j|jk	st‚|j|jks(t‚d S ©N)ÚcopyZ	sp_valuesr#   Úsp_index)r   r   Zarr2r   r   r   Ú	test_copy]   s    zTestSparseArray.test_copyc                 C   s   t  | ¡ |¡ d S r1   )r   Zassert_almost_equalÚto_dense)r   r   r   r   r   r   Útest_values_asarrayb   s    z#TestSparseArray.test_values_asarrayzdata,shape,dtype)r
   )r   )r   ÚAÚB)r	   c                 C   s   t ||d�}|j|kst‚d S )N©r   )r   Úshaper#   )r   Údatar:   r   Úoutr   r   r   Ú
test_shapee   s    zTestSparseArray.test_shapeÚvalsc                 C   s.   t  |¡}t||d�}| ¡ }t ||¡ d S ©Nr   )r   r   r   r5   r   Úassert_numpy_array_equal)r   r>   r   r   r   r   r   r   Útest_dense_reprs   s    

zTestSparseArray.test_dense_reprÚfixr   r   c                 C   s$   |  |¡}t |¡}t ||¡ d S r1   )Zgetfixturevaluer   Zround_trip_pickler   )r   rB   ÚrequestÚobjZ	unpickledr   r   r   Útest_pickleƒ   s    

zTestSparseArray.test_picklec              	   C   s2   t dddgƒ}t d ¡� |D ]}qW 5 Q R X d S )Nr   r   r   )r   r   Zassert_produces_warning)r   Zsp_arrÚ_r   r   r   Útest_generator_warnings‰   s    z'TestSparseArray.test_generator_warningsc                 C   sx   t tjdgdd�}t ddg¡}| | d¡}t ddgdd�}t ||¡ t |¡}| 	| d¡}t 
|t |¡¡ d S )Nr!   r   r   TFr   )r   r   r   r   Z_wherer   r   ÚpdÚSeriesÚwhereZassert_series_equal)r   r   Úmaskr   r   Zserr   r   r   Útest_where_retain_fill_value�   s    
z,TestSparseArray.test_where_retain_fill_valuec                 C   s  t dtjtjdtjgƒ}| d¡}t dddddgdtjd�}t ||¡ t dtjtjdtjgdd�}| d¡}t dddddgdtjd�}t ||¡ t dtjdddgƒ}| d¡}t dddddgdtjd�}t ||¡ t dtjdddgdd�}| d¡}t dddddgdtjd�}t ||¡ t tjtjtjtjgƒ}| d¡}t ddddgdtjd�}t ||¡ t tjtjtjtjgdd�}| d¡}t ddddgdtjd�}t ||¡ t ddddgƒ}| d¡}t ddddgdd�}t ||¡ t ddddgƒ}|jttj	ƒk�st
‚|jdk�s t
‚| d¡}t ||¡ t ddddgdd�}|jttj	ƒk�s`t
‚|jdk�spt
‚| d¡}t ddddgdd�}t ||¡ t ddddgtjd�}|jttj	tjd�k�sÌt
‚t |j¡�sÞt
‚| d¡}t ddddgdd�}t ||¡ d S )Nr   r   éÿÿÿÿr"   r   r   ç        )r   r   r   ÚfillnaÚfloat64r   r   r   r   r$   r#   r   r%   ©r   Úsr   r   r   r   r   Útest_fillna�   sZ    









zTestSparseArray.test_fillnac                 C   sœ   t dtjtjdtjgƒ}| d¡}tjdddddgtjd�}t | ¡ |¡ t dtjtjdtjgdd�}| d¡}t dddddgdtjd�}t 	||¡ d S )Nr   r   r9   r   r   r"   )
r   r   r   rO   r   rP   r   r@   r5   r   rQ   r   r   r   Útest_fillna_overlapÙ   s    

z#TestSparseArray.test_fillna_overlapc                 C   sŽ   t tdƒtdƒddddddddddgƒ}tjdddgtjd�}| ¡ \}t ||¡ t ddddddddddddgƒ}| ¡ \}t ||¡ d S )	Nr   r   r   r   r   r
   é	   r9   )r   Úfloatr   r   Zint32Znonzeror   r@   )r   ÚsaÚexpectedÚresultr   r   r   Útest_nonzeroæ   s    (
 
zTestSparseArray.test_nonzero)Ú__name__Ú
__module__Ú__qualname__r,   ÚmarkÚparametrizer   r   r    r(   r   r0   r4   r6   Úobjectr=   rA   rE   rG   rL   rS   rT   rZ   r   r   r   r   r   #   s@   
	'"

üþ	
ýþ
<r   c                   @   sè   e Zd Zej dejdddddged�e	e dd	d
ddg¡ƒfejddej
ddged�e	e dd	ej
ddg¡ƒfg¡ej dddg¡dd„ ƒƒZdd„ Zdd„ Zej ddej
g¡dd„ ƒZdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&S )'ÚTestSparseArrayAnalyticszdata,expectedr   r   r   r	   r
   r9   r!   g      @g      @g      $@g      .@g      @g      (@ÚnumpyTFc              	   C   s  |r
t jndd„ }|t|ƒƒ}t ||¡ |t|t jd�ƒ}t ||¡ |t|dd�ƒ}t ||¡ |rÌd}tjt|d�� t jt|ƒt j	d� W 5 Q R X d}tjt|d�� t jt|ƒ|d	� W 5 Q R X n@d
}t
 d|› d�¡}tjt|d�� t|ƒj|d� W 5 Q R X d S )Nc                 S   s   |   ¡ S r1   )Úcumsum)rR   r   r   r   Ú<lambda>  ó    z6TestSparseArrayAnalytics.test_cumsum.<locals>.<lambda>r   r   z&the 'dtype' parameter is not supportedr*   r9   z$the 'out' parameter is not supported)r<   r   zaxis(=z) out of bounds)Úaxis)r   rc   r   r   r   r   r,   r-   r.   r$   ÚreÚescape)r   r;   rX   rb   rc   r<   r/   rf   r   r   r   Útest_cumsumó   s$    z$TestSparseArrayAnalytics.test_cumsumc                 C   s¸  t dtjdtjdgƒ}t dtjdtjdgƒ}t t|ƒ|¡ t t |¡|¡ t ddddgdd�}t dddg|jdd�}t t|ƒ|¡ t t |¡|¡ t ddddgdd�}t ddddgdd�}t t|ƒ|¡ t t |¡|¡ t dtjdtjdgƒ}t t dtjdtjdg¡ƒ}t t |¡|¡ t ddddgdd�}t t ddddg¡t d¡d�}t t |¡|¡ t ddddgdd�}t t ddddg¡t d¡d�}t t |¡|¡ d S )Nr   r   éþÿÿÿrM   r   )Úsparse_indexr   r   )r   r   r   r   r   Úabsr3   Úsin)r   r   rY   r   r   r   r   Ú
test_ufunc  s*      z#TestSparseArrayAnalytics.test_ufuncc                 C   s¼   t dtjdtjdgƒ}t dtjdtjdgƒ}t t |d¡|¡ t ddddgdd�}t ddddgdd�}t t |d¡|¡ t ddddgdd�}t ddddgdd�}t t |d¡|¡ d S )Nr   r   rj   r   rM   r   r   )r   r   r   r   r   Úadd)r   r   rY   r   r   r   Útest_ufunc_args8  s    z(TestSparseArrayAnalytics.test_ufunc_argsr   rN   c                 C   sh   t |gd ddg |d�}t |¡\}}t t |¡¡\}}t |t ||d�¡ t |t ||d�¡ d S )Né
   gš™™™™™ñ?gš™™™™™@r   )r   r   ÚmodfÚasarrayr   r   )r   r   r   Úr1Úr2Úe1Úe2r   r   r   Ú	test_modfF  s
    z"TestSparseArrayAnalytics.test_modfc                 C   s,   t dddddgdd�}|j}|dks(t‚d S )Nr   r   r   Úinteger©Úkindé   ©r   Únbytesr#   ©r   r   rY   r   r   r   Útest_nbytes_integerO  s    z,TestSparseArrayAnalytics.test_nbytes_integerc                 C   s,   t dddddgdd�}|j}|dks(t‚d S )Nr   r   r   Úblockrz   r|   r}   r   r   r   r   Útest_nbytes_blockU  s    z*TestSparseArrayAnalytics.test_nbytes_blockc                 C   s$   t t dd d dg¡ƒ}t |¡ d S )NZ2012Z2013)r   rH   Úto_datetimer   rs   )r   rR   r   r   r   Útest_asarray_datetime64\  s    z0TestSparseArrayAnalytics.test_asarray_datetime64c                 C   s   t ddgƒ}|jdkst‚d S )Nr   r   g      à?)r   Zdensityr#   r'   r   r   r   Útest_density`  s    z%TestSparseArrayAnalytics.test_densityc                 C   s   t ddgƒ}|jdkst‚d S )Nr   r   )r   Znpointsr#   r'   r   r   r   Útest_npointsd  s    z%TestSparseArrayAnalytics.test_npointsN)r[   r\   r]   r,   r^   r_   r   r   rV   r   r   ri   rn   rp   rx   r€   r‚   r„   r…   r†   r   r   r   r   ra   ò   s*   þþûþ
ra   c                  C   sN   t dtjdgdd�} tj| _|  ¡ }t |¡}t dddg¡}t ||¡ d S )Nr!   rN   r   FT)	r   r   r   r   r   rs   r   r   r@   ©r   rY   rX   r   r   r   Ú*test_setting_fill_value_fillna_still_worksi  s    
rˆ   c                  C   sT   t dtjgdd�} tj| _t jt tjg¡tddgƒtttjƒd�}t	 
| |¡ d S )NrN   r   r   r   r   )Zsparse_arrayrk   r   )r   r   r   r   Z_simple_newr   r   r   rV   r   r   )r   rX   r   r   r   Útest_setting_fill_value_updatesw  s    

ýr‰   zarr,fill_value,locr   r   r   rM   r
   c                 C   s    t | |d� ¡ }||kst‚d S r?   )r   Z_first_fill_value_locr#   )r   r   ÚlocrY   r   r   r   Útest_first_fill_value_loc„  s    r‹   r   c                 C   sF   t | |d� ¡ }t | ¡ ¡ }t|t ƒs,t‚t |¡}t 	||¡ d S r?   )
r   ÚuniquerH   rI   Ú
isinstancer#   r   rs   r   r@   )r   r   ÚaÚbr   r   r   Útest_unique_na_fillš  s
    
r�   c                  C   s.   t ddgƒ} |  ¡ }t dgƒ}t ||¡ d S )Nr   )r   rŒ   r   r   r‡   r   r   r   Útest_unique_all_sparse­  s    
r‘   c                  C   sœ   t dddgƒ} t dddgdd�}|  ddddœ¡}t ||¡ |  t ddddœ¡¡}t ||¡ |  t ddddœ¡¡}t dddgdd�}t ||¡ d S )	Nr   r   r   rq   é   é   r   )r   r   r   )r   Úmapr   r   rH   rI   ©r   rX   rY   r   r   r   Útest_mapµ  s    r–   c                  C   s@   t dddgƒ} t ddd gdd�}|  dddœ¡}t ||¡ d S )Nr   r   r   rq   r’   r   )r   r   )r   r”   r   r   r•   r   r   r   Útest_map_missingÇ  s    r—   c                 C   sv   t tjdg| d�}t dg| d�}t | ¡ |¡ t ddg|dœ¡}tjdg|dœt dg¡d�}t 	| ¡ |¡ d S )Nr   r   r!   r   )rŽ   r�   )Úindex)
r   r   r   r   r   ZdropnarH   Ú	DataFrameÚIndexZassert_equal)r   r   r   ÚdfZexpected_dfr   r   r   Útest_dropnaÏ  s    rœ   c                  C   sJ   t  t d¡¡ dd„ ¡} |  ¡ }t  dd„ tdƒD ƒ¡}t ||¡ d S )N)r
   r
   c                 S   s   t | dd�S )Nr   r   r   )Úxr   r   r   rd   Ý  re   z1test_drop_duplicates_fill_value.<locals>.<lambda>c                 S   s   i | ]}|t d gdd�“qS )rN   r   r   r   )Ú.0Úir   r   r   Ú
<dictcomp>ß  s      z3test_drop_duplicates_fill_value.<locals>.<dictcomp>r
   )	rH   r™   r   ZzerosÚapplyZdrop_duplicatesÚranger   Zassert_frame_equal)r›   rY   rX   r   r   r   Útest_drop_duplicates_fill_valueÛ  s    r£   )!rg   rb   r   r,   Zpandas._libs.sparser   ZpandasrH   r   Zpandas._testingZ_testingr   Zpandas.core.arrays.sparser   r   Zfixturer   r   r   r   ra   rˆ   r‰   r^   r_   r‹   r   r�   r‘   r–   r—   rœ   r£   r   r   r   r   Ú<module>   sh   


 Pwôþ

ûþ

