U
    NZf#                     @   sn   d dl Z d dlZd dlZd dlm  mZ d dlZ	d dl
mZ d dlmZmZ G dd dZG dd dZdS )    N)SparseArraySparseDtypec                   @   s   e Zd Zdd Zejdddddgdd	 Zej	d
d Z
ej	ejddddddgddddgdddfdddddgddddgdddfgdd Zdd Zd S )!TestSeriesAccessorc                 C   sB   t jddddgdd}|j }t ddddg}t|| d S )Nr      
   zSparse[int64]dtype)pdSeriessparseto_densetmassert_series_equal)selfserresultexpected r   L/tmp/pip-unpacked-wheel-nbcvw55c/pandas/tests/arrays/sparse/test_accessor.pytest_to_dense   s    
z TestSeriesAccessor.test_to_denseattrZnpointsdensity
fill_valueZ	sp_valuesc                 C   s<   t ddg}t|}t|j|}t||}||ks8td S )Nr   r   )r   r	   r
   getattrr   AssertionError)r   r   Zarrr   r   r   r   r   r   test_get_attributes   s
    

z&TestSeriesAccessor.test_get_attributesc           	      C   s   dd l }ddddg}ddddg}ddddg}|jj|||ffd	d
}tjj|}tjtj	ddddgtj
d
tj	ddddgtj
d
g}tjddddg|dd}t|| d S )Nr      r               	   intr   Sparse[int]indexr   )scipy.sparser   
coo_matrixr	   r
   from_coo
MultiIndexfrom_arraysnparrayint32r   r   )	r   scipyrowcoldataZsp_arrayr   r%   r   r   r   r   test_from_coo    s    z TestSeriesAccessor.test_from_cooz>sort_labels, expected_rows, expected_cols, expected_values_posF)br   )ar   )r3   r   )r4   r   )zr   )r5   r   )xr   )r5   r   )r   r   )r   r   )r   r   Tr   r   r   r   c                 C   s   dd l }tdtjddd dgdd}tjddddd	d
g}tj||d}td}	|	 D ]\}
\}}|
|	||f< qZ|j
jdd|d\}}}t||j
jstt| |	 ||kst||kstd S )Nr   r   r   r   )r3   r   r5   r   )r4   r   r5   r   )r4   r   r5   r   )r4   r   r6   r   )r3   r   r5   r   )r4   r   r5   r   r%   )r   r   r8   )r   r   )
row_levelscolumn_levelssort_labels)r&   r   r+   nanr	   r)   from_tuplesr
   zerositemsr   to_coo
isinstancer'   r   r   Zassert_numpy_array_equaltoarray)r   r=   Zexpected_rowsZexpected_colsZexpected_values_posr.   valuesr%   ssZ
expected_Avaluer/   r0   AZrowscolsr   r   r   test_to_coo5   s0    

  zTestSeriesAccessor.test_to_cooc              	   C   s6   t dddg}tjtdd |jj W 5 Q R X d S )Nr   r   r   z.sparsematch)r	   r
   pytestraisesAttributeErrorr   r   )r   r   r   r   r   test_non_sparse_raisese   s    z)TestSeriesAccessor.test_non_sparse_raisesN)__name__
__module____qualname__r   rM   markparametrizer   tdskip_if_no_scipyr2   rJ   rP   r   r   r   r   r      s,   





r   c                	   @   s|  e Zd Zdd Zejddddgejddeej	dd	 gejd
ddge
jdd Zejddddge
jdd Zejdddgejdgddggddgge
jdd Zejddddejfdddge
jdd Zejd dejge
jd!d" Ze
jd#d$ Zd%d& Zd'd( Zejd
ddgejd)d*d+ge
jd,d- Ze
jd.d/ Zd0d1 ZdS )2TestFrameAccessorc              	   C   s6   t dddgi}tjtdd |j W 5 Q R X d S )NrH   r   r   r   rK   )r	   	DataFramerM   rN   rO   r   r   dfr   r   r   test_accessor_raisesl   s    z&TestFrameAccessor.test_accessor_raisesformatZcscZcsrcoolabelsNr   r   float64int64c           	      C   sv   dd l }t|tjd|d }|jjd||d}tjjj	|||d}tjtjd|d||d
|}t|| d S )Nr   r   r   r]   r   )r%   columns)r&   r   r+   r,   itemr   eyer	   rY   from_spmatrixastyper   assert_frame_equal)	r   r]   r_   r   r.   Zsp_dtypematr   r   r   r   r   test_from_spmatrixq   s      z$TestFrameAccessor.test_from_spmatrixc                 C   sb   dd l }|jjddd|d}d|jd< tjj|}tdd}t| 	|}t
|| d S )Nr   r   r         ?)r   r]   r`           )r&   r   randomr1   r	   rY   rf   r   Ztodenserg   r   rh   )r   r]   r.   ri   r   r   r   r   r   r   *test_from_spmatrix_including_explicit_zero   s    

z<TestFrameAccessor.test_from_spmatrix_including_explicit_zerorc   r4   r3   rH   c                 C   s^   dd l }tdd}|jjdddd}tjjj||d}tj| |d|}t	
|| d S )	Nr   r`   rl   r   r   rk   )r   )rc   )r&   r   r   rm   r	   rY   rf   rD   rg   r   rh   )r   rc   r.   r   ri   r   r   r   r   r   test_from_spmatrix_columns   s    
z,TestFrameAccessor.test_from_spmatrix_columnscolnamesrH   Br7   r   )g?g?)r6   r6   )r   r   c                 C   sd   dd l }tj|d dddg|d dddgidd}|j }|jt|}||kjdks`t	d S )Nr   r   zSparse[int64, 0]r   )
r&   r	   rY   r   rB   r'   r+   Zasarraynnzr   )r   rp   r.   r[   r   r   r   r   r   rJ      s     
zTestFrameAccessor.test_to_coor   c              	   C   sX   t t|||dg|dt|d||g|dd}tjtdd |j  W 5 Q R X d S )Nr   r9   rq   zfill value must be 0rK   )r	   rY   r   rM   rN   
ValueErrorr   rB   )r   r   r[   r   r   r   #test_to_coo_nonzero_fill_val_raises   s    
 
 
z5TestFrameAccessor.test_to_coo_nonzero_fill_val_raisesc                 C   s   dd l }tjtjtdddtjddgddg}tjd|dd}|jjdgdgd	d }|jj	t
ddgt
ddgt
ddgffd
d}||kjdkstd S )Nr   abr6   )namer   yr#   r$   )r;   r<   )r   r   )shape)r&   r	   r)   r*   ZCategoricalIndexlistr
   r   rB   r'   r+   r,   rs   r   )r   r.   Zmidxr   r   r   r   r   r   test_to_coo_midx_categorical   s    ( z.TestFrameAccessor.test_to_coo_midx_categoricalc                 C   s   t jtddgtdddtddgtdddtddgtddddd	d
gd}|j }t jddgddgddgdd	d
gd}t|| d S )Nr   r   ra   r   g      ?rl   r`   )rH   rr   Cr3   r4   r:   )r	   rY   r   r   r   r   r   rh   )r   r[   r   r   r   r   r   r      s    
 zTestFrameAccessor.test_to_densec                 C   sL   t tddddgddtddddgddd}|jj}d}||ksHtd S )Nr   r   r   r9   rq   g      ?)r	   rY   r   r   r   r   )r   r[   resr   r   r   r   test_density   s    zTestFrameAccessor.test_densitydense_indexTFc                 C   s   dd l }|jjdd|d}tjjj||d}tjtj	ddgtj
dtj	ddgtj
dtj	ddgtj
dg}tjttj	dddg|d|d	}|r|tj|j}t|| d S )
Nr   r   r^   rb   )r   r   r   r   r:   )r&   r   re   r	   r
   r(   r)   r?   r+   r,   r-   r   Zreindexfrom_productlevelsr   r   )r   r   r   r.   rH   r   r%   r   r   r   r   test_series_from_coo   s    "z&TestFrameAccessor.test_series_from_cooc              	   C   sR   dd l }|jtddgddgg}tjtdd tj	j
| W 5 Q R X d S )Nr   r   z,Expected coo_matrix. Got csr_matrix instead.rK   )r&   r   Z
csr_matrixr+   r,   rM   rN   	TypeErrorr	   r
   r(   )r   r.   mr   r   r   ,test_series_from_coo_incorrect_format_raises   s     z>TestFrameAccessor.test_series_from_coo_incorrect_format_raisesc                 C   s8   t dt jddgi}t|jt jjjjjs4t	d S )Nr   r   r   )
r	   rY   Zarraysr   rC   r   coreaccessorZSparseFrameAccessorr   rZ   r   r   r   test_with_column_named_sparse  s    z/TestFrameAccessor.test_with_column_named_sparse)rQ   rR   rS   r\   rM   rT   rU   rz   stringascii_lettersrV   rW   rj   rn   r	   r)   r   ro   ZNArJ   r+   r>   ru   r{   r   r~   r   r   r   r   r   r   r   rX   k   sF   
"
 



rX   )r   Znumpyr+   rM   Zpandas.util._test_decoratorsutilZ_test_decoratorsrV   Zpandasr	   Zpandas._testingZ_testingr   Zpandas.core.arrays.sparser   r   r   rX   r   r   r   r   <module>   s   [