o
    �¨ÊhA#  ã                   @   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   úZ/var/www/html/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–   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