o
    Û­j	F  ã                   @   s  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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"d0d1„ Z#d2d3„ Z$dS )4é    N)ÚIntIndex)Únp_version_gt2)Ú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   úb/var/www/html/CropPilot/venv/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_scalarJ   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_copyR   s   zTestSparseArray.test_copyc                 C   s   t  | ¡ |¡ d S r5   )r   Úassert_almost_equalÚto_dense)r   r   r   r   r   r   Útest_values_asarrayW   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   ÚdatarA   r   Úoutr   r   r   Ú
test_shapeZ   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   rE   r   r   r    r   r   r   Útest_dense_reprh   s   

zTestSparseArray.test_dense_reprÚfixr   r   c                 C   s$   |  |¡}t |¡}t ||¡ d S r5   )Úgetfixturevaluer   Úround_trip_pickler   )r   rI   ÚrequestÚobjÚ	unpickledr   r   r   Útest_picklex   s   

zTestSparseArray.test_picklec                 C   sF   t g d¢ƒ}t d ¡� |D ]}qW d   ƒ d S 1 sw   Y  d S )Nr0   )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   r[   r[   r
   r[   r$   r   r   )r   r[   r   r
   r   )r[   r[   r[   r[   )ç        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   rG   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   rG   )r   ÚsaÚexpectedÚresultr   r   r   Útest_nonzeroÛ   s   (

zTestSparseArray.test_nonzero)Ú__name__Ú
__module__Ú__qualname__r1   ÚmarkÚparametrizer   r   r"   r.   r   r4   r:   r=   ÚobjectrD   rH   rO   rR   rZ   ra   rb   rj   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#   rr   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 r5   )Ú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)rC   r   zaxis(=z) out of bounds)Úaxis)r   rt   r   r   r   r   r1   r2   r3   r(   ÚreÚescape)r   rB   rh   rs   rt   rC   r-   rv   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   r[   r	   rz   r   )r   r	   r	   )Úsparse_indexr   r[   )r   r   r	   r	   ©r   r[   r   rz   r   )r   r   r   r   r   Úabsr8   Úsin)r   r   ri   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	   rz   r
   r[   r{   r   )r	   r   r
   r[   r}   r   )r	   r   r   r[   )r   r   r   r   r   Úadd)r   r   ri   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   ri   r   r   r   Útest_nbytes_integerD  s   z,TestSparseArrayAnalytics.test_nbytes_integerc                 C   r‹   )N)r   r	   r   r   r   Úblockr�   r�   r�   r’   r   r   r   Útest_nbytes_blockJ  s   z*TestSparseArrayAnalytics.test_nbytes_blockc                 C   s    t t g d¢¡ƒ}t |¡ d S )N)Ú2012NNÚ2013)r   rT   Úto_datetimer   r…   )r   r`   r   r   r   Útest_asarray_datetime64Q  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_densityU  ó   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_npointsY  r�   z%TestSparseArrayAnalytics.test_npointsN)rk   rl   rm   r1   rn   ro   r   r   rd   r   r   ry   r€   r‚   rŠ   r“   r•   r™   rœ   rŸ   r   r   r   r   rq   ç   s,    þþûþ
rq   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   rG   ©r   ri   rh   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   rd   r   r   )r   rh   r   r   r   Útest_setting_fill_value_updatesl  s   

ýr¤   zarr,fill_value,loc)Nr   r	   )r   Nr	   r   )r   r   Nr	   )r   r   r   NNr
   )r   r   r   r	   r[   )Nr   r   r   Nr	   r   )Nr   r   r   r	   r   c                 C   s    t | |d� ¡ }||ksJ ‚d S rF   )r   Ú_first_fill_value_loc)r   r   Úlocri   r   r   r   Útest_first_fill_value_locy  s   r§   r   c                 C   sF   t | |d� ¡ }t | ¡ ¡ }t|t ƒsJ ‚t |¡}t ||¡ d S rF   )	r   ÚuniquerT   rU   Ú
isinstancer   r…   r   rG   )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   rT   rU   ©r   rh   ri   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   ÚdropnarT   Ú	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   ru   Ò  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   )	rT   r¸   r   ÚzerosÚapplyÚdrop_duplicatesÚranger   Úassert_frame_equal)r»   ri   rh   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   r0   )r>   r?   )r   r   r   r?   r	   r   r   r
   rµ   )rT   r¸   r   r¦   r   rÆ   )Údf1Údf2ri   rh   r   r   r   Útest_zero_sparse_columnØ  s   $rÊ   c           	      C   sð   t  |¡}t || ¡ t  |¡}t  |¡}t  ||¡rJ ‚t j|dd�}t j|dd�}t  ||¡r3J ‚ts7d S d}tjt|d�� t j|dd� W d   ƒ n1 sRw   Y  t	t  g d¢¡ƒ}t j|dd�}t j|dd�}t  ||¡svJ ‚d S )NT)r6   zGStarting with NumPy 2.0, the behavior of the 'copy' keyword has changedr%   Fr0   )
r   r…   r   rG   Úmay_share_memoryr   r   r)   r*   r   )	r   r   ri   Úresult_copy1Úresult_copy2r-   r9   Úresult_nocopy1Úresult_nocopy2r   r   r   Útest_array_interfaceä  s$   


ÿrÐ   )%rw   rs   r   r1   Úpandas._libs.sparser   Úpandas.compat.numpyr   ÚpandasrT   r   r   Úpandas._testingÚ_testingr   Úpandas.core.arrays.sparser   Úfixturer   r   r   r   rq   r¡   r¤   rn   ro   r§   r   r¬   r­   r³   r´   r½   rÇ   rÊ   rÐ   r   r   r   r   Ú<module>   sp    


 Dwôþ

ûþ

