o
    5c>                      @   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   ^/var/www/html/gps/gps/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g dg 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!   zSparse[int])indexr   )
scipy.sparser   
coo_matrixr	   r
   from_coo
MultiIndexfrom_arraysr   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   r2   r   r4   r   )zr   r8   r   xr   r8   r   )r   r   )r   r   )r   r   T)r6   r3   r5   r1   )r:   r<   r7   r9   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   ))r2   r   r8   r   )r4   r   r8   r   )r4   r   r8   r   )r4   r   r;   r   )r2   r   r8   r   )r4   r   r8   r   r%   )r    r    r>   )r   r   )
row_levelscolumn_levelssort_labels)r&   r   npnanr	   r)   from_tuplesr
   zerositemsr   to_coo
isinstancer'   r   assert_numpy_array_equaltoarray)r   rC   expected_rowsexpected_colsexpected_values_posr+   valuesr%   ss
expected_Avaluer,   r-   Arowscolsr   r   r   test_to_coo0   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_raises`   s   
"z)TestSeriesAccessor.test_non_sparse_raisesN)__name__
__module____qualname__r   rZ   markparametrizer   tdskip_if_no_scipyr0   rW   r]   r   r   r   r   r      s.    

r   c                	   @   sj  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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 ).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 )NrT   r   r   r   rX   )r	   	DataFramerZ   r[   r\   r   r   dfr   r   r   test_accessor_raisesg   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   rj   r   )r%   columns)r&   r   rD   arrayitemr   eyer	   rf   from_spmatrixastyper   assert_frame_equal)	r   rj   rn   r   r+   sp_dtypematr   r   r   r   r   test_from_spmatrixl   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   rj   ro           )r&   r   randomr.   r	   rf   rv   r   todenserw   r   rx   )r   rj   r+   rz   r   r   r   r   r   r   *test_from_spmatrix_including_explicit_zero|   s   

z<TestFrameAccessor.test_from_spmatrix_including_explicit_zerorr   r4   r2   rT   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   ro   r}   r   r   r|   )r   )rr   )r&   r   r   r~   r	   rf   rv   rL   rw   r   rx   )r   rr   r+   r   rz   r   r   r   r   r   test_from_spmatrix_columns   s   
z,TestFrameAccessor.test_from_spmatrix_columnscolnamesrT   Br=   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	   rf   r   rI   r'   rD   asarraynnz)r   r   r+   rh   r   r   r   r   r   rW      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   r?   r   zfill value must be 0rX   )r	   rf   r   rZ   r[   
ValueErrorr   rI   )r   r   rh   r   r   r   #test_to_coo_nonzero_fill_val_raises   s   
"z5TestFrameAccessor.test_to_coo_nonzero_fill_val_raisesc                 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   rp   r   g      ?r}   ro   )rT   r   Cr2   r4   r@   )r	   rf   r   r   r   r   r   rx   )r   rh   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   r?   )r   r   r   r   r   g      ?)r	   rf   r   r   r   )r   rh   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g d}tjtt	j
g d|d|d	}|r:|tj|j}t|| d S )
Nr   r   rm   rq   )r   )r   )r   r   )r   r   )r   r   r   r   r@   )r&   r   ru   r	   r
   r(   r)   rF   r   rD   rs   reindexfrom_productlevelsr   r   )r   r   r   r+   rT   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.rX   )r&   r   
csr_matrixrD   rs   rZ   r[   	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sJ d S )Nr   r   r   )	r	   rf   arraysr   rJ   r   coreaccessorSparseFrameAccessorrg   r   r   r   test_with_column_named_sparse   s   z/TestFrameAccessor.test_with_column_named_sparse)r^   r_   r`   ri   rZ   ra   rb   liststringascii_lettersrc   rd   r{   r   r	   r)   r   r   NArW   rD   rE   r   r   r   r   r   r   r   r   r   r   re   f   sB    
"



re   )r   numpyrD   rZ   pandas.util._test_decoratorsutil_test_decoratorsrc   pandasr	   pandas._testing_testingr   pandas.core.arrays.sparser   r   r   re   r   r   r   r   <module>   s    V