o
    od#                     @   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g ddd Zej	dd Z
ej	ejd	d
g dg ddddfdg dg ddddfgdd Zdd ZdS )TestSeriesAccessorc                 C   s:   t jg ddd}|j }t g d}t|| d S )N)r      r   
   zSparse[int64]dtype)pdSeriessparseto_densetmassert_series_equal)selfserresultexpected r   j/var/www/staging_poorna_satya/env/lib/python3.10/site-packages/pandas/tests/arrays/sparse/test_accessor.pytest_to_dense   s   
z TestSeriesAccessor.test_to_denseattr)npointsdensity
fill_value	sp_valuesc                 C   s<   t ddg}t|}t|j|}t||}||ksJ d S )Nr   r   )r   r	   r
   getattrr   )r   r   arrr   r   r   r   r   r   test_get_attributes   s
   

z&TestSeriesAccessor.test_get_attributesc           	      C   s   dd l }g d}g d}g d}|jj|||ffdd}tjj|}tjtj	g dtj
dtj	g dtj
dg}tjg d	|d
d}t|| d S )Nr   )r      r   r   )r   r   r      )         	   intr   )r   r   r   r   )r   r   r   r   )r    r#   r"   r!   Sparse[int]indexr   )scipy.sparser   
coo_matrixr	   r
   from_coo
MultiIndexfrom_arraysnparrayint32r   r   )	r   scipyrowcoldata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   r7   r   r9   r   )zr   r=   r   xr   r=   r   )r   r   )r   r   )r   r   T)r;   r8   r:   r6   )r?   rA   r<   r>   r   r   r   r   c                 C   s   dd l }tdtjddd dgdd}tjg d}tj||d}td}	|	 D ]\}
\}}|
|	||f< q)|j
jdd	|d
\}}}t||j
jsKJ t| |	 ||ksYJ ||ks_J d S )Nr   r   r   r   ))r7   r   r=   r   )r9   r   r=   r   )r9   r   r=   r   )r9   r   r@   r   )r7   r   r=   r   )r9   r   r=   r   r'   )r    r    rC   )r   r   )
row_levelscolumn_levelssort_labels)r(   r   r-   nanr	   r+   from_tuplesr
   zerositemsr   to_coo
isinstancer)   r   assert_numpy_array_equaltoarray)r   rH   expected_rowsexpected_colsexpected_values_posr0   valuesr'   ss
expected_Avaluer1   r2   Arowscolsr   r   r   test_to_coo5   s    

zTestSeriesAccessor.test_to_cooc                 C   sJ   t g d}tjtdd |jj W d    d S 1 sw   Y  d S )N)r   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   r^   markparametrizer   tdskip_if_no_scipyr5   r[   ra   r   r   r   r   r      s.    

r   c                	   @   sx  e Zd Zdd Zejdg dejddeej	dd gejdd	d
ge
jdd Zejdg d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d.d/ ZdS )0TestFrameAccessorc                 C   sL   t dddgi}tjtdd |j W d    d S 1 sw   Y  d S )NrX   r   r   r   r\   )r	   	DataFramer^   r_   r`   r   r   dfr   r   r   test_accessor_raisesl   s   "z&TestFrameAccessor.test_accessor_raisesformat)csc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   rn   r   )r'   columns)r(   r   r-   r.   itemr   eyer	   rj   from_spmatrixastyper   assert_frame_equal)	r   rn   rr   r   r0   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   rn   rs           )r(   r   randomr3   r	   rj   ry   r   todenserz   r   r{   )r   rn   r0   r}   r   r   r   r   r   r   *test_from_spmatrix_including_explicit_zero   s   

z<TestFrameAccessor.test_from_spmatrix_including_explicit_zerorv   r9   r7   rX   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   rs   r   r   r   r   )r   )rv   )r(   r   r   r   r	   rj   ry   rP   rz   r   r{   )r   rv   r0   r   r}   r   r   r   r   r   test_from_spmatrix_columns   s   
z,TestFrameAccessor.test_from_spmatrix_columnscolnamesrX   BrB   r   )g?g?)r@   r@   )r   r   c                 C   s`   dd l }tj|d g d|d g didd}|j }|jt|}||kjdks.J d S )Nr   )r   r   r   r   )r   r   r   zSparse[int64, 0]r   )	r(   r	   rj   r   rM   r)   r-   asarraynnz)r   r   r0   rl   r   r   r   r   r   r[      s   
zTestFrameAccessor.test_to_coor   c                 C   sn   t t|||dg|dt|d||g|dd}tjtdd |j  W d    d S 1 s0w   Y  d S )Nr   rD   r   zfill value must be 0r\   )r	   rj   r   r^   r_   
ValueErrorr   rM   )r   r   rl   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sRJ d S )Nr   abr@   )namer   yr%   r&   )rF   rG   )r   r   )shape)r(   r	   r+   r,   CategoricalIndexlistr
   r   rM   r)   r-   r.   r   )r   r0   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   rt   r   g      ?r   rs   )rX   r   Cr7   r9   rE   )r	   rj   r   r   r   r   r   r{   )r   rl   r   r   r   r   r   r      s   
zTestFrameAccessor.test_to_densec                 C   sD   t tg dddtg dddd}|jj}d}||ks J d S )N)r   r   r   r   r   rD   )r   r   r   r   r   g      ?)r	   rj   r   r   r   )r   rl   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	g d	|d|d
}|rS|tj|j}t|| d S )Nr   r   rq   ru   )r   r   r   r   )r   r   r   rE   )r(   r   rx   r	   r
   r*   r+   rJ   r-   r.   r/   r   reindexfrom_productlevelsr   r   )r   r   r   r0   rX   r   r'   r   r   r   r   test_series_from_coo   s    z&TestFrameAccessor.test_series_from_cooc                 C   sh   dd l }|jtddgddgg}tjtdd tj	j
| W d    d S 1 s-w   Y  d S )Nr   r   z,Expected coo_matrix. Got csr_matrix instead.r\   )r(   r   
csr_matrixr-   r.   r^   r_   	TypeErrorr	   r
   r*   )r   r0   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sJ d S )Nr   r   r   )	r	   rj   arraysr   rN   r   coreaccessorSparseFrameAccessorrk   r   r   r   test_with_column_named_sparse  s   z/TestFrameAccessor.test_with_column_named_sparse)rb   rc   rd   rm   r^   re   rf   r   stringascii_lettersrg   rh   r~   r   r	   r+   r   r   NAr[   r-   rI   r   r   r   r   r   r   r   r   r   r   r   ri   k   sF    
"




ri   )r   numpyr-   r^   pandas.util._test_decoratorsutil_test_decoratorsrg   pandasr	   pandas._testing_testingr   pandas.core.arrays.sparser   r   r   ri   r   r   r   r   <module>   s    [