a
    PfA#                     @   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   a/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/arrays/sparse/test_accessor.pytest_to_dense   s    
z TestSeriesAccessor.test_to_denseattr)Znpointsdensity
fill_valueZ	sp_valuesc                 C   s<   t ddg}t|}t|j|}t||}||ks8J d S )Nr   r   )r   r	   r
   getattrr   )r   r   Z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   Zscipy_sparse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   r5   r   )zr   r9   r   xr   r9   r   )r   r   )r   r   )r   r   T)r7   r4   r6   r2   )r;   r=   r8   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< qT|jjd	d
|d\}}}t||jsJ t| |	 ||ksJ ||ksJ d S )Nr   r   r   r   r   ))r3   r   r9   r   )r5   r   r9   r   )r5   r   r9   r   )r5   r   r<   r   )r3   r   r9   r   )r5   r   r9   r   r$   )r   r   r?   )r   r   )
row_levelscolumn_levelssort_labels)r%   r&   r   r+   nanr	   r)   from_tuplesr
   Zzerositemsr   to_coo
isinstancer'   r   Zassert_numpy_array_equaltoarray)r   rD   Zexpected_rowsZexpected_colsZexpected_values_pos	sp_sparsevaluesr$   ssZ
expected_Avaluer.   r/   Arowscolsr   r   r   test_to_coo/   s     


zTestSeriesAccessor.test_to_cooc                 C   sH   t g d}tjtdd |jj W d    n1 s:0    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   r1   rR   rW   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   sJ   t dddgi}tjtdd |j W d    n1 s<0    Y  d S )NrO   r   r   r   rS   )r	   	DataFramer%   rU   rV   r   r   dfr   r   r   test_accessor_raisese   s    z&TestFrameAccessor.test_accessor_raisesformat)ZcscZ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   rb   r   )r$   columns)r%   r&   r   r+   r,   itemeyer	   r^   r   from_spmatrixastyper   assert_frame_equal)	r   rb   rd   r   rK   Z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   rb   r   re           )r%   r&   randomr0   r	   r^   r   rk   r   Ztodenserl   r   rm   )r   rb   rK   rn   r   r   r   r   r   r   *test_from_spmatrix_including_explicit_zeroy   s    


z<TestFrameAccessor.test_from_spmatrix_including_explicit_zerorh   r5   r3   rO   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   re   rq   r   r   rp   )r   )rh   )r%   r&   r   rr   r	   r^   r   rk   rJ   rl   r   rm   )r   rh   rK   r   rn   r   r   r   r   r   test_from_spmatrix_columns   s    

z,TestFrameAccessor.test_from_spmatrix_columnscolnamesrO   Br>   r   )g?g?)r<   r<   )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	   r^   r   rH   r'   r+   Zasarraynnz)r   ru   rK   r`   r   r   r   r   r   rR      s    

zTestFrameAccessor.test_to_coor   c                 C   sv   t d tt|||dg|dt|d||g|dd}t jtdd |j  W d    n1 sh0    Y  d S )NZscipyr   r@   rv   zfill value must be 0rS   )	r%   r&   r	   r^   r   rU   
ValueErrorr   rH   )r   r   r`   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sJ d S )Nr   abr<   )namer   r   yr"   r#   )rB   rC   )r   r   )shape)r%   r&   r	   r)   r*   ZCategoricalIndexlistr
   r   rH   r'   r+   r,   rx   )r   rK   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   rf   r   g      ?rq   re   )rO   rw   Cr3   r5   rA   )r	   r^   r   r   r   r   r   rm   )r   r`   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   rv   g      ?)r	   r^   r   r   r   )r   r`   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}|r|tj|j}t|| d S )Nr   r   rc   rg   )r   r   r   r   r   )r   r   r   rA   )r%   r&   rj   r	   r
   r   r(   r)   rF   r+   r,   r-   r   Zreindexfrom_productZlevelsr   r   )r   r   r   rK   rO   r   r$   r   r   r   r   test_series_from_coo   s    
 z&TestFrameAccessor.test_series_from_cooc                 C   sf   t d}|tddgddgg}t jtdd tjj	
| W d    n1 sX0    Y  d S )Nr   r   r   z,Expected coo_matrix. Got csr_matrix instead.rS   )r%   r&   Z
csr_matrixr+   r,   rU   	TypeErrorr	   r
   r   r(   )r   rK   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s4J d S )Nr   r   r   )	r	   r^   Zarraysr   rI   r   coreaccessorZSparseFrameAccessorr_   r   r   r   test_with_column_named_sparse   s    z/TestFrameAccessor.test_with_column_named_sparse)rX   rY   rZ   ra   r%   r[   r\   r   stringascii_lettersro   rs   r	   r)   r   rt   ZNArR   r+   rE   rz   r   r   r   r   r   r   r   r   r   r   r]   d   s4   

"





r]   )r   numpyr+   r%   Zpandasr	   r   Zpandas._testingZ_testingr   Zpandas.core.arrays.sparser   r   r]   r   r   r   r   <module>   s   X