o
    ŀgA#                     @   sd   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ	 d dl
mZ G dd dZG dd dZdS )    N)SparseDtype)SparseArrayc                
   @   s   e Zd Zdd Zejdg ddd Zdd Z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   \/var/www/html/myenv/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   t d}g d}g d}g d}||||ff}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 )Nscipy.sparse)r      r   r   )r   r   r      )         	   )r   r   r   r   r   )r   r    r   r   )r!   r$   r#   r"   Sparse[int]indexr   )pytestimportorskip
coo_matrixr	   r
   r   from_coo
MultiIndexfrom_arraysnparrayint32r   r   )	r   scipy_sparse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    r8   r   r:   r   )zr   r>   r    xr    r>   r   )r   r   )r   r   )r   r   T)r<   r9   r;   r7   )r@   rB   r=   r?   r   r    r   r   c                 C   s   t d}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sKJ t| |	 ||ksYJ ||ks_J d S )Nr   r   r   r   r   ))r8   r    r>   r   )r:   r    r>   r    )r:   r    r>   r   )r:   r    rA   r    )r8   r   r>   r   )r:   r   r>   r   r'   )r!   r!   rD   )r    r   )
row_levelscolumn_levelssort_labels)r(   r)   r   r.   nanr	   r,   from_tuplesr
   zerositemsr   to_coo
isinstancer*   r   assert_numpy_array_equaltoarray)r   rI   expected_rowsexpected_colsexpected_values_pos	sp_sparsevaluesr'   ss
expected_Avaluer2   r3   Arowscolsr   r   r   test_to_coo/   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
   r(   raisesAttributeErrorr   r   )r   r   r   r   r   test_non_sparse_raises^   s   
"z)TestSeriesAccessor.test_non_sparse_raisesN)__name__
__module____qualname__r   r(   markparametrizer   r6   r]   rb   r   r   r   r   r      s*    

r   c                	   @   sH  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dd Z
ejdg ddd Zejdddgejdgddggddggdd Zejddddejfdddgdd Zejddejgdd  Zd!d" Zd#d$ Zd%d& Zejdd
d	gejd'd(d)gd*d+ Z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 )NrZ   r   r   r   r^   )r	   	DataFramer(   r`   ra   r   r   dfr   r   r   test_accessor_raisese   s   "z&TestFrameAccessor.test_accessor_raisesformat)csccsrcoolabelsNr   r   float64int64c           	      C   sv   t d}t|tjd|d }|jd||d}tjj	j
|||d}tjtjd|d||d|}t|| d S )Nr   r   r   r   rm   r   )r'   columns)r(   r)   r   r.   r/   itemeyer	   ri   r   from_spmatrixastyper   assert_frame_equal)	r   rm   rq   r   rU   sp_dtypematr   r   r   r   r   test_from_spmatrixj   s   
z$TestFrameAccessor.test_from_spmatrixc                 C   sb   t d}|jddd|d}d|jd< tjj|}tdd}t|	 
|}t|| d S )	Nr   r   r          ?)r   rm   r   rr           )r(   r)   randomr4   r	   ri   r   rx   r   todensery   r   rz   )r   rm   rU   r|   r   r   r   r   r   r   *test_from_spmatrix_including_explicit_zeroy   s   


z<TestFrameAccessor.test_from_spmatrix_including_explicit_zeroru   r:   r8   rZ   c                 C   s^   t d}tdd}|jdddd}tjjj||d}tj| |d	|}t
|| d S )	Nr   rr   r   r   r    r~   )r   )ru   )r(   r)   r   r   r	   ri   r   rx   rQ   ry   r   rz   )r   ru   rU   r   r|   r   r   r   r   r   test_from_spmatrix_columns   s   

z,TestFrameAccessor.test_from_spmatrix_columnscolnamesrZ   BrC   r   )g?g?)rA   rA   )r   r   c                 C   s`   t d}tj|d g d|d g didd}|j }|t|}||kj	dks.J d S )Nr   r   )r   r   r   r   )r   r   r   zSparse[int64, 0]r   )
r(   r)   r	   ri   r   rN   r*   r.   asarraynnz)r   r   rU   rk   r   r   r   r   r   r]      s   

zTestFrameAccessor.test_to_coor   c                 C   sx   t d tt|||dg|dt|d||g|dd}t jtdd |j  W d    d S 1 s5w   Y  d S )Nscipyr    rE   r   zfill value must be 0r^   )	r(   r)   r	   ri   r   r`   
ValueErrorr   rN   )r   r   rk   r   r   r   #test_to_coo_nonzero_fill_val_raises   s   

"z5TestFrameAccessor.test_to_coo_nonzero_fill_val_raisesc                 C   s   t d}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
tddgtddgtddgffdd}||kjdksRJ d S )Nr   abrA   )namer   r   yr%   r&   )rG   rH   )r    r    )shape)r(   r)   r	   r,   r-   CategoricalIndexlistr
   r   rN   r*   r.   r/   r   )r   rU   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   rs   r   g      ?r   rr   )rZ   r   Cr8   r:   rF   )r	   ri   r   r   r   r   r   rz   )r   rk   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   rE   )r   r   r   r   r   g      ?)r	   ri   r   r   r   )r   rk   resr   r   r   r   test_density   s   zTestFrameAccessor.test_densitydense_indexTFc                 C   s   t d}|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   rp   rt   )r   r   r   r   r    )r   r   r   rF   )r(   r)   rw   r	   r
   r   r+   r,   rK   r.   r/   r0   r   reindexfrom_productlevelsr   r   )r   r   r   rU   rZ   r   r'   r   r   r   r   test_series_from_coo   s   
 z&TestFrameAccessor.test_series_from_cooc                 C   sh   t d}|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   r   z,Expected coo_matrix. Got csr_matrix instead.r^   )r(   r)   
csr_matrixr.   r/   r`   	TypeErrorr	   r
   r   r+   )r   rU   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	   ri   arraysr   rO   r   coreaccessorSparseFrameAccessorrj   r   r   r   test_with_column_named_sparse   s   z/TestFrameAccessor.test_with_column_named_sparse)rc   rd   re   rl   r(   rf   rg   r   stringascii_lettersr}   r   r	   r,   r   r   NAr]   r.   rJ   r   r   r   r   r   r   r   r   r   r   r   rh   d   s6    

"





rh   )r   numpyr.   r(   pandasr	   r   pandas._testing_testingr   pandas.core.arrays.sparser   r   rh   r   r   r   r   <module>   s    X