o
    �¨ÊhšA  ã                   @   s  d dl Z d dlZd dlZd dlmZ d dlZd dlmZm	Z	 d dl
mZ d dlmZ ejdd„ ƒZejdd„ ƒZejd	d
„ ƒZG dd„ dƒZG dd„ dƒZdd„ Zdd„ Zej dg d¢dd fg d¢ddfg d¢ddfg d¢ddfg d¢ddfg ddfg d¢dd fg d¢ddfg d¢ddfg d¢ddfg d¢d dfg d¢ddfg¡d d!„ ƒZej dddejejgdejdejgddejgejdd d ejdgejd d dddgg¡ej d"ejd dg¡d#d$„ ƒƒZd%d&„ Zd'd(„ Zd)d*„ Zej d"ejdg¡d+d,„ ƒZd-d.„ Z d/d0„ Z!dS )1é    N)ÚIntIndex)ÚSparseDtypeÚisna©ÚSparseArrayc                   C   s&   t  t jt jdddt jddt jdg
¡S )z<Fixture returning numpy array with valid and missing entriesé   é   é   é   é   é   )ÚnpÚarrayÚnan© r   r   úW/var/www/html/env/lib/python3.10/site-packages/pandas/tests/arrays/sparse/test_array.pyÚarr_data   s   &r   c                 C   s   t | ƒS )z-Fixture returning SparseArray from 'arr_data'r   )r   r   r   r   Úarr   s   r   c                   C   s   t g d¢dd�S )zEFixture returning SparseArray with integer entries and 'fill_value=0')
r   r   r   r   r	   r   r
   r   r   r   r   ©Ú
fill_valuer   r   r   r   r   Úzarr   s   r   c                
   @   sR  e Zd Zej dddejg¡dd„ ƒZdd„ Z	ej dg d	¢e 
d
dg¡d	g¡dd„ ƒZdd„ Zdd„ Zej dg d¢ddfg ddfdgddfddejdgdefg¡dd„ ƒZej dejejejejejgd
ejejdejgd
ejdddgg¡ej dddg¡dd„ ƒƒZej d d!d"g¡d#d$„ ƒZd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ ZdS )/ÚTestSparseArrayr   r   Nc                 C   s`   t t g d¢¡dd�}|jd|d�}t|ƒr|jj}t t |ddddg¡dd�}t ||¡ d S )N)r   r   r   r	   r   g       @r   r   r   r	   )	r   r   r   Úshiftr   ÚdtypeÚna_valueÚtmÚassert_sp_array_equal)Úselfr   ÚsparseÚresÚexpr   r   r   Útest_shift_fill_value$   s   z%TestSparseArray.test_shift_fill_valuec                 C   s(  t dtjdgtjd�}d|_|jdksJ ‚t g d¢dtjd�}d|_|jdks)J ‚d}tjt|d	�� d
|_W d   ƒ n1 s@w   Y  |jd
ksLJ ‚tj|_t |j¡sXJ ‚t g d¢dtj	d�}d|_|jdu slJ ‚tjt|d	�� d|_W d   ƒ n1 s�w   Y  tj|_t |j¡s’J ‚d S )Nç      ð?g       @r   r   )r   r   r   r   ©r   r   zAAllowing arbitrary scalar fill_value in SparseDtype is deprecated©ÚmatchgÍÌÌÌÌÌ@©TFTFT)
r   r   r   r   Úint64r   Úassert_produces_warningÚFutureWarningÚisnanÚbool_)r   r   Úmsgr   r   r   Útest_set_fill_value.   s*   ÿÿz#TestSparseArray.test_set_fill_valueÚval©r   r   r	   r   r   c                 C   sR   t g d¢dtjd�}d}tjt|d�� ||_W d   ƒ d S 1 s"w   Y  d S )Nr&   Fr#   zfill_value must be a scalarr$   )r   r   r+   ÚpytestÚraisesÚ
ValueErrorr   )r   r.   r   r,   r   r   r   Ú test_set_fill_invalid_non_scalarI   s
   "ÿz0TestSparseArray.test_set_fill_invalid_non_scalarc                 C   s,   |  ¡ }|j|jusJ ‚|j|ju sJ ‚d S ©N)ÚcopyÚ	sp_valuesÚsp_index)r   r   Úarr2r   r   r   Ú	test_copyQ   s   zTestSparseArray.test_copyc                 C   s   t  | ¡ |¡ d S r4   )r   Úassert_almost_equalÚto_dense)r   r   r   r   r   r   Útest_values_asarrayV   s   z#TestSparseArray.test_values_asarrayzdata,shape,dtype)r   r   r   r   r   )r   )r   )r   ÚAÚB)r
   c                 C   s   t ||d�}|j|ksJ ‚d S )N©r   )r   Úshape)r   Údatar@   r   Úoutr   r   r   Ú
test_shapeY   s   zTestSparseArray.test_shapeÚvalsr	   c                 C   s.   t  |¡}t||d�}| ¡ }t ||¡ d S ©Nr   )r   r   r   r;   r   Úassert_numpy_array_equal)r   rD   r   r   r   r   r   r   Útest_dense_reprg   s   

zTestSparseArray.test_dense_reprÚfixr   r   c                 C   s$   |  |¡}t |¡}t ||¡ d S r4   )Úgetfixturevaluer   Úround_trip_pickler   )r   rH   ÚrequestÚobjÚ	unpickledr   r   r   Útest_picklew   s   

zTestSparseArray.test_picklec                 C   sF   t g d¢ƒ}t d ¡� |D ]}qW d   ƒ d S 1 sw   Y  d S )Nr/   )r   r   r(   )r   Úsp_arrÚ_r   r   r   Útest_generator_warnings}   s   ÿ"ÿz'TestSparseArray.test_generator_warningsc                 C   sx   t tjdgdd�}t ddg¡}| | d¡}t ddgdd�}t ||¡ t |¡}| 	| d¡}t 
|t |¡¡ d S )Nr"   r   r   TFr   )r   r   r   r   Ú_wherer   r   ÚpdÚSeriesÚwhereÚassert_series_equal)r   r   Úmaskr   r    Úserr   r   r   Útest_where_retain_fill_valueƒ   s   
z,TestSparseArray.test_where_retain_fill_valuec                 C   sÌ  t dtjtjdtjgƒ}| d¡}t g d¢dtjd�}t ||¡ t dtjtjdtjgdd�}| d¡}t g d¢dtjd�}t ||¡ t dtjdddgƒ}| d¡}t g d¢dtjd�}t ||¡ t dtjdddgdd�}| d¡}t g d¢dtjd�}t ||¡ t tjtjtjtjgƒ}| d¡}t g d	¢dtjd�}t ||¡ t tjtjtjtjgdd�}| d¡}t g d	¢dtjd�}t ||¡ t g d
¢ƒ}| d¡}t g d
¢dd�}t ||¡ t g d¢ƒ}|jttj	ƒksñJ ‚|j
dksøJ ‚| d¡}t ||¡ t g d¢dd�}|jttj	ƒk�sJ ‚|j
dk�sJ ‚| d¡}t g d¢dd�}t ||¡ t g d¢tjd�}|jttj	tjd�k�sHJ ‚t |j
¡�sQJ ‚| d¡}t g d¢dd�}t ||¡ d S )Nr   r	   éÿÿÿÿ)r   rZ   rZ   r	   rZ   r#   r   r   )r   rZ   r   r	   r   )rZ   rZ   rZ   rZ   )ç        r[   r[   r[   )r   r   r   r   )r   r   r   ÚfillnaÚfloat64r   r   r   r   r'   r   r*   ©r   Úsr   r    r   r   r   Útest_fillna‘   sZ   









zTestSparseArray.test_fillnac                 C   s�   t dtjtjdtjgƒ}| d¡}tjg d¢tjd�}t | ¡ |¡ t dtjtjdtjgdd�}| d¡}t g d¢dtjd�}t 	||¡ d S )Nr   r	   )r   r	   r	   r	   r	   r?   r   r   r#   )
r   r   r   r\   r   r]   r   rF   r;   r   r^   r   r   r   Útest_fillna_overlapÍ   s   

z#TestSparseArray.test_fillna_overlapc                 C   sx   t tdƒtdƒddddddddddgƒ}tjg d¢tjd�}| ¡ \}t ||¡ t g d¢ƒ}| ¡ \}t ||¡ d S )	Nr   r   r   r   r	   )r   r   é	   r?   )r   r   r   r   r   r   r   r   r   r	   r   r   )r   Úfloatr   r   Úint32Únonzeror   rF   )r   ÚsaÚexpectedÚresultr   r   r   Útest_nonzeroÚ   s   (

zTestSparseArray.test_nonzero)Ú__name__Ú
__module__Ú__qualname__r0   ÚmarkÚparametrizer   r   r!   r-   r   r3   r9   r<   ÚobjectrC   rG   rN   rQ   rY   r`   ra   ri   r   r   r   r   r   #   sB    
	 

üþ
	ýþ
<r   c                   @   sÜ   e Zd Zej dejg d¢ed�e	e g d¢¡ƒfejddej
ddged�e	e d	d
ej
ddg¡ƒfg¡ej dddg¡dd„ ƒƒZdd„ Zdd„ Zej ddej
g¡dd„ ƒZdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$S )%ÚTestSparseArrayAnalyticszdata,expected)r   r   r	   r
   r   r?   )r"   ç      @g      @g      $@g      .@r   r   r
   r   r"   rq   g      @g      (@ÚnumpyTFc                 C   sR  |rt jndd„ }|t|ƒƒ}t ||¡ |t|t jd�ƒ}t ||¡ |t|dd�ƒ}t ||¡ |r|d}tjt|d�� t jt|ƒt j	d� W d   ƒ n1 sRw   Y  d}tjt|d�� t jt|ƒ|d	� W d   ƒ d S 1 suw   Y  d S d
}t
 d|› d�¡}tjt|d�� t|ƒj|d� W d   ƒ d S 1 s¢w   Y  d S )Nc                 S   s   |   ¡ S r4   )Úcumsum)r_   r   r   r   Ú<lambda>ö   s    z6TestSparseArrayAnalytics.test_cumsum.<locals>.<lambda>r   r   z&the 'dtype' parameter is not supportedr$   r?   z$the 'out' parameter is not supported)rB   r   zaxis(=z) out of bounds)Úaxis)r   rs   r   r   r   r   r0   r1   r2   r'   ÚreÚescape)r   rA   rg   rr   rs   rB   r,   ru   r   r   r   Útest_cumsumç   s*   ÿ"ÿ"ÿz$TestSparseArrayAnalytics.test_cumsumc                 C   sš  t dtjdtjdgƒ}t dtjdtjdgƒ}t t|ƒ|¡ t t |¡|¡ t g d¢dd�}t g d¢|jdd�}t t|ƒ|¡ t t |¡|¡ t g d¢dd�}t g d	¢dd�}t t|ƒ|¡ t t |¡|¡ t dtjdtjdgƒ}t t dtjdtjdg¡ƒ}t t |¡|¡ t g d¢dd�}t t g d¢¡t d¡d�}t t |¡|¡ t g d
¢dd�}t t g d
¢¡t d¡d�}t t |¡|¡ d S )Nr   r   éþÿÿÿ©r   rZ   r   ry   r   )r   r   r   )Úsparse_indexr   rZ   )r   r   r   r   ©r   rZ   r   ry   r   )r   r   r   r   r   Úabsr7   Úsin)r   r   rh   r    r   r   r   Ú
test_ufunc  s*   z#TestSparseArrayAnalytics.test_ufuncc                 C   s¬   t dtjdtjdgƒ}t dtjdtjdgƒ}t t |d¡|¡ t g d¢dd�}t g d¢dd�}t t |d¡|¡ t g d	¢d
d�}t g d¢dd�}t t |d¡|¡ d S )Nr   r   ry   r	   rZ   rz   r   )r   r   r	   rZ   r|   r   )r   r   r   rZ   )r   r   r   r   r   Úadd)r   r   rh   r   r   r   Útest_ufunc_args,  s   z(TestSparseArrayAnalytics.test_ufunc_argsr   r[   c                 C   sh   t |gd ddg |d�}t |¡\}}t t |¡¡\}}t |t ||d�¡ t |t ||d�¡ d S )Né
   gš™™™™™ñ?gš™™™™™@r   )r   r   ÚmodfÚasarrayr   r   )r   r   r   Úr1Úr2Úe1Úe2r   r   r   Ú	test_modf:  s
   z"TestSparseArrayAnalytics.test_modfc                 C   ó&   t g d¢dd�}|j}|dksJ ‚d S )N)r   r   r   r   r   Úinteger©Úkindé   ©r   Únbytes©r   r   rh   r   r   r   Útest_nbytes_integerC  s   z,TestSparseArrayAnalytics.test_nbytes_integerc                 C   rŠ   )N)r   r   r   r   r   ÚblockrŒ   rŽ   r�   r‘   r   r   r   Útest_nbytes_blockI  s   z*TestSparseArrayAnalytics.test_nbytes_blockc                 C   s    t t g d¢¡ƒ}t |¡ d S )N)Ú2012NNÚ2013)r   rS   Úto_datetimer   r„   )r   r_   r   r   r   Útest_asarray_datetime64P  s   z0TestSparseArrayAnalytics.test_asarray_datetime64c                 C   s   t ddgƒ}|jdksJ ‚d S )Nr   r   g      à?)r   Údensity©r   r   r   r   r   Útest_densityT  ó   z%TestSparseArrayAnalytics.test_densityc                 C   s   t ddgƒ}|jdksJ ‚d S )Nr   r   )r   Únpointsrš   r   r   r   Útest_npointsX  rœ   z%TestSparseArrayAnalytics.test_npointsN)rj   rk   rl   r0   rm   rn   r   r   rc   r   r   rx   r   r�   r‰   r’   r”   r˜   r›   rž   r   r   r   r   rp   æ   s,    þþûþ
rp   c                  C   sL   t dtjdgdd�} tj| _|  ¡ }t |¡}t g d¢¡}t ||¡ d S )Nr"   r[   r   )FTF)	r   r   r   r   r   r„   r   r   rF   ©r   rh   rg   r   r   r   Ú*test_setting_fill_value_fillna_still_works]  s   
r    c                  C   sT   t dtjgdd�} tj| _t jt tjg¡tddgƒtttjƒd�}t	 
| |¡ d S )Nr[   r   r   r   r   )Úsparse_arrayr{   r   )r   r   r   r   Ú_simple_newr   r   r   rc   r   r   )r   rg   r   r   r   Útest_setting_fill_value_updatesk  s   

ýr£   zarr,fill_value,loc)Nr   r   )r   Nr   r   )r   r   Nr   )r   r   r   NNr	   )r   r   r   r   rZ   )Nr   r   r   Nr   r   )Nr   r   r   r   r   c                 C   s    t | |d� ¡ }||ksJ ‚d S rE   )r   Ú_first_fill_value_loc)r   r   Úlocrh   r   r   r   Útest_first_fill_value_locx  s   r¦   r   c                 C   sF   t | |d� ¡ }t | ¡ ¡ }t|t ƒsJ ‚t |¡}t ||¡ d S rE   )	r   ÚuniquerS   rT   Ú
isinstancer   r„   r   rF   )r   r   ÚaÚbr   r   r   Útest_unique_na_fillŽ  s
   
r«   c                  C   s.   t ddgƒ} |  ¡ }t dgƒ}t ||¡ d S )Nr   )r   r§   r   r   rŸ   r   r   r   Útest_unique_all_sparse¡  s   
r¬   c                  C   s–   t g d¢ƒ} t g d¢dd�}|  ddddœ¡}t ||¡ |  t ddddœ¡¡}t ||¡ |  t ddddœ¡¡}t g d¢dd�}t ||¡ d S )N©r   r   r   )r‚   é   é   r‚   r   r®   r¯   )r   Úmapr   r   rS   rT   ©r   rg   rh   r   r   r   Útest_map©  s   r²   c                  C   s<   t g d¢ƒ} t g d¢dd�}|  dddœ¡}t ||¡ d S )Nr­   )r‚   r®   Nr‚   r   r®   )r   r   )r   r°   r   r   r±   r   r   r   Útest_map_missing»  s   r³   c                 C   sv   t tjdg| d�}t dg| d�}t | ¡ |¡ t ddg|dœ¡}tjdg|dœt dg¡d�}t 	| ¡ |¡ d S )Nr   r   r"   r   )r©   rª   ©Úindex)
r   r   r   r   r   ÚdropnarS   Ú	DataFrameÚIndexÚassert_equal)r   r   r    ÚdfÚexpected_dfr   r   r   Útest_dropnaÃ  s   r¼   c                  C   sJ   t  t d¡¡ dd„ ¡} |  ¡ }t  dd„ tdƒD ƒ¡}t ||¡ d S )N)r   r   c                 S   s   t | dd�S )Nr   r   r   )Úxr   r   r   rt   Ñ  s    z1test_drop_duplicates_fill_value.<locals>.<lambda>c                 S   s   i | ]
}|t d gdd�“qS )r[   r   r   r   )Ú.0Úir   r   r   Ú
<dictcomp>Ó  s    z3test_drop_duplicates_fill_value.<locals>.<dictcomp>r   )	rS   r·   r   ÚzerosÚapplyÚdrop_duplicatesÚranger   Úassert_frame_equal)rº   rh   rg   r   r   r   Útest_drop_duplicates_fill_valueÏ  s   rÆ   c                  C   sœ   t  tg d¢ƒg d¢dœ¡} t  tg d¢ƒg d¢dœ¡}| j| d dk }|j|d dk }t ||¡ t jtddgƒdd	gdœddgd
�}t ||¡ d S )N)r   r   r   r/   )r=   r>   )r   r   r   r>   r   r   r   r	   r´   )rS   r·   r   r¥   r   rÅ   )Údf1Údf2rh   rg   r   r   r   Útest_zero_sparse_column×  s   $rÉ   )"rv   rr   r   r0   Úpandas._libs.sparser   ÚpandasrS   r   r   Úpandas._testingÚ_testingr   Úpandas.core.arrays.sparser   Úfixturer   r   r   r   rp   r    r£   rm   rn   r¦   r   r«   r¬   r²   r³   r¼   rÆ   rÉ   r   r   r   r   Ú<module>   sl    


 Dwôþ

ûþ

