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   f/var/www/html/Deteccion_Ine/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   dtypeZ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 sw   Y  tj|_t|jsJ 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)copyZ	sp_valuessp_index)r   r   arr2r   r   r   	test_copyR   s   zTestSparseArray.test_copyc                 C   s   t | | d S r4   )r   Z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   datar>   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   r9   r   assert_numpy_array_equal)r   rB   r   r   r   r   r   r   test_dense_reprh   s   

zTestSparseArray.test_dense_reprfixr   r   c                 C   s$   | |}t|}t|| d S r4   )Zgetfixturevaluer   Zround_trip_pickler   )r   rF   requestobjZ	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 )Nr/   )r   r   r(   )r   Z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   Z_wherer   r   pdSerieswhereZassert_series_equal)r   r   maskr   r    Z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sJ |j
dksJ |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   rQ   rQ   r
   rQ   r#   r   r   )r   rQ   r   r
   r   )rQ   rQ   rQ   rQ   )        rR   rR   rR   )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   rS   r   rT   r   rD   r9   r   rU   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   Zint32Znonzeror   rD   )r   saexpectedresultr   r   r   test_nonzero   s   (

zTestSparseArray.test_nonzero)__name__
__module____qualname__r0   markparametrizer   r   r!   r-   r   r3   r8   r:   objectrA   rE   rI   rK   rP   rW   rX   r^   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"   rf   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 sw   Y  d S )Nc                 S   s   |   S r4   )cumsum)rV   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)r@   r   zaxis(=z) out of bounds)axis)r   rh   r   r   r   r   r0   r1   r2   r'   reescape)r   r?   r\   rg   rh   r@   r,   rj   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   rQ   r	   rn   r   )r   r	   r	   )sparse_indexr   rQ   )r   r   r	   r	   r   rQ   r   rn   r   )r   r   r   r   r   absr6   sin)r   r   r]   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	   rn   r
   rQ   ro   r   )r	   r   r
   rQ   rq   r   )r	   r   r   rQ   )r   r   r   r   r   add)r   r   r]   r   r   r   test_ufunc_args-  s   z(TestSparseArrayAnalytics.test_ufunc_argsr   rR   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   r]   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)Z2012NNZ2013)r   rL   to_datetimer   ry   )r   rV   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   Z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   Znpointsr   r   r   r   test_npointsY  r   z%TestSparseArrayAnalytics.test_npointsN)r_   r`   ra   r0   rb   rc   r   r   rZ   r   r   rm   rt   rv   r~   r   r   r   r   r   r   r   r   r   re      s,    
re   c                  C   sL   t dtjdgdd} tj| _|  }t|}tg d}t|| d S )Nr"   rR   r   )FTF)	r   r   r   r   r   ry   r   r   rD   r   r]   r\   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 )NrR   r   r   r	   r   )Zsparse_arrayrp   r   )r   r   r   r   Z_simple_newr   r   r   rZ   r   r   )r   r\   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	   rQ   )Nr   r   r   Nr	   r   )Nr   r   r   r	   r   c                 C   s    t | |d }||ksJ d S rC   )r   Z_first_fill_value_loc)r   r   locr]   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 rC   )	r   uniquerL   rM   
isinstancer   ry   r   rD   )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	   )rw         rw   r   r   r   )r   mapr   r   rL   rM   r   r\   r]   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   )rw   r   Nrw   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   ZdropnarL   	DataFrameIndexZassert_equal)r   r   r    dfZ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   ri     s    z1test_drop_duplicates_fill_value.<locals>.<lambda>c                 S   s   i | ]
}|t d gddqS )rR   r   r   r   ).0ir   r   r   
<dictcomp>  s    z3test_drop_duplicates_fill_value.<locals>.<dictcomp>r   )	rL   r   r   ZzerosapplyZdrop_duplicatesranger   assert_frame_equal)r   r]   r\   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   )rL   r   r   r   r   r   )Zdf1Zdf2r]   r\   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)r5   zGStarting with NumPy 2.0, the behavior of the 'copy' keyword has changedr$   Fr/   )
r   ry   r   rD   Zmay_share_memoryr   r   r(   r)   r   )	r   r   r]   Zresult_copy1Zresult_copy2r,   r7   Zresult_nocopy1Zresult_nocopy2r   r   r   test_array_interface  s$   


r   )%rk   rg   r   r0   Zpandas._libs.sparser   Zpandas.compat.numpyr   ZpandasrL   r   r   Zpandas._testingZ_testingr   Zpandas.core.arrays.sparser   Zfixturer   r   r   r   re   r   r   rb   rc   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sp    


 Dw



