o
    $jA#                     @   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   i/var/www/html/Deteccion_Ine/venv/lib/python3.10/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sJ 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< q*|jjd	d
|d\}}}t||jsKJ t| |	 ||ksYJ ||ks_J 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   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   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   sL   t dddgi}tjtdd |j W d    d S 1 sw   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   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 )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sRJ 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}|rS|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   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.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sJ 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   s6    

"





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