o
    $Îj¸N  ã                   @   s  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 ejddgddd„ ƒZejd	d
gddd„ ƒZG dd„ dƒZej de je jg¡dd„ ƒZdd„ Zdd„ Zej dejejg¡ej deg d¢ƒeg d¢ƒg¡dd„ ƒƒZej deg d¢ƒe g d¢¡feg d¢dd e g d¢¡feg d¢dd e g d¢¡feg d¢dd e g d¢¡feg d¢dd e g d¢¡fg¡ej dejejg¡d!d"„ ƒƒZd#d$„ Zd%d&„ Zej d'eejeg¡d(d)„ ƒZ ej dg d*¢¡ej d+ej!d,g¡d-d.„ ƒƒZ"dS )/é    N)ÚSparseDtype)ÚSparseArrayÚintegerÚblock)Úparamsc                 C   ó   | j S )z!kind kwarg to pass to SparseArray©Úparam©Úrequest© r   úl/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/pandas/tests/arrays/sparse/test_arithmetics.pyÚkind   s   r   TFc                 C   r   )z}
    Fixture returning True or False, determining whether to operate
    op(sparse, dense) instead of op(sparse, sparse)
    r   r
   r   r   r   Úmix   s   r   c                   @   s  e Zd Zdd„ Zdefdd„Zdd„ Zdd	„ Zd
d„ Ze	j
 dg d¢¡e	j
 dg d¢¡dd„ ƒƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Ze	j
 dd$d%ejg¡d&d'„ ƒZe	j
 dd$d%ejg¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zd0S )1ÚTestSparseArrayArithmeticsc                 C   s   t  ||¡ d S ©N)ÚtmÚassert_numpy_array_equal)ÚselfÚaÚbr   r   r   Ú_assert   s   z"TestSparseArrayArithmetics._assertr   c           	      C   s¤   t |tjƒr|t |¡|ƒj}nt |tjƒr ||t |¡ƒj}nt‚tjddd |r4|||ƒ ¡ }n|||ƒ ¡ }W d   ƒ n1 sEw   Y  |  	||¡ d S )NÚignore)ÚinvalidÚdivide)
Ú
isinstanceÚnpÚndarrayÚpdZSeriesÚvaluesÚNotImplementedErrorÚerrstateÚto_denser   )	r   r   r   Úa_denseÚb_denser   ÚopÚexpectedÚresultr   r   r   Ú_check_numeric_ops    s   €üz-TestSparseArrayArithmetics._check_numeric_opsc                 C   sD   t |tƒsJ ‚t |jtƒsJ ‚|jjtjksJ ‚t |jtƒs J ‚d S r   )	r   r   Údtyper   Úsubtyper   Úbool_Ú
fill_valueÚbool)r   Úresr   r   r   Ú_check_bool_result2   s   z-TestSparseArrayArithmetics._check_bool_resultc                 C   sú  t jddí |  ||k¡ |  ||k ¡ ||k¡ |  ||k¡ |  ||k ¡ ||k¡ |  ||k¡ |  ||k ¡ ||k¡ |  ||k¡ |  ||k ¡ ||k¡ |  ||k¡ |  ||k ¡ ||k¡ |  ||k ¡ |  ||k  ¡ ||k ¡ |  ||k¡ |  ||k ¡ ||k¡ |  ||k¡ |  ||k ¡ ||k¡ |  ||k¡ |  ||k ¡ ||k¡ |  ||k¡ |  ||k ¡ ||k¡ |  ||k¡ |  ||k ¡ ||k¡ |  ||k ¡ |  ||k  ¡ ||k ¡ W d   ƒ d S 1 söw   Y  d S )Nr   )r   )r   r!   r/   r   r"   ©r   r   r   r#   r$   r   r   r   Ú_check_comparison_ops8   s4   "Øz0TestSparseArrayArithmetics._check_comparison_opsc                 C   sœ   |   ||@ ¡ |  ||@  ¡ ||@ ¡ |   ||B ¡ |  ||B  ¡ ||B ¡ |   ||@ ¡ |  ||@  ¡ ||@ ¡ |   ||B ¡ |  ||B  ¡ ||B ¡ d S r   )r/   r   r"   r0   r   r   r   Ú_check_logical_opsc   s   z-TestSparseArrayArithmetics._check_logical_opsÚscalar)r   é   é   r,   )Nr   é   c           
      C   sN   |}t  t jdddt jddddt jg
¡}t|||d}	|  |	|||||¡ d S )Nr4   r6   r   ©r   r,   ©r   ÚarrayÚnanr   r(   )
r   r   r   Úall_arithmetic_functionsr,   r3   r   r%   r   r   r   r   r   Útest_float_scalarq   s   $z,TestSparseArrayArithmetics.test_float_scalarc                 C   sà   t  t jdddt jddddt jg
¡}t||d}|  |d|d¡ |  |d|d¡ |  |d|d¡ t||dd}|  |d|d¡ |  |d|d¡ |  |d|d¡ t||dd}|  |d|d¡ |  |d|d¡ |  |d|d¡ d S )Nr4   r6   r   ©r   r5   r7   ©r   r9   r:   r   r1   )r   r   r   r   r   r   r   Útest_float_scalar_comparison{   s   $z7TestSparseArrayArithmetics.test_float_scalar_comparisonc           	      C   sT   |}t  g d¢¡}t  g d¢¡}t||dd}t||dd}|  ||||||¡ d S )N©
ç        ç      ð?ç       @g      @rA   rA   rB   rC   rB   rA   ©
rA   rC   ç      @g      @rA   rA   rB   rE   rC   rA   r   r7   )r   r9   r   r(   ©	r   r   r   r;   r%   r   Úrvaluesr   r   r   r   r   Ú"test_float_same_index_without_nans   s   z=TestSparseArrayArithmetics.test_float_same_index_without_nansc           
      C   s|   |}t  t jdddt jddddt jg
¡}t  t jdddt jddddt jg
¡}t||d}t||d}	|  ||	||||¡ d S )Nr4   r6   r   r5   é   r=   r8   )
r   r   r   r;   r   r%   r   rG   r   r   r   r   r   Útest_float_same_index_with_nans˜   s   $$z:TestSparseArrayArithmetics.test_float_same_index_with_nansc                 C   s¼   t  t jdddt jddddt jg
¡}t  t jdddt jddddt jg
¡}t||d}t||d}|  ||||¡ t  g d¢¡}t  g d¢¡}t||dd	}t||dd	}|  ||||¡ d S )
Nr4   r6   r   r5   rI   r=   r@   rD   r7   r>   ©r   r   r   rG   r   r   r   r   r   Ú test_float_same_index_comparison¤   s   $$z;TestSparseArrayArithmetics.test_float_same_index_comparisonc           	      C   s&  |}t  t jdddt jddddt jg
¡}t  dt jddt jddddt jg
¡}t||d}t||d}|  ||||||¡ |  ||d ||d ||¡ t||dd}t||d}|  ||||||¡ t||dd}t||dd}|  ||||||¡ t||dd}t||dd}|  ||||||¡ d S ©Nr4   r6   r   r5   é   r=   r7   r8   rF   r   r   r   Útest_float_array´   ó    $$z+TestSparseArrayArithmetics.test_float_arrayc                 C   s&  |}t  t jdddt jddddt jg
¡}t  dt jddt jddddt jg
¡}t|dd}t|dd}|  ||||||¡ |  ||d ||d ||¡ t|ddd	}t|dd}|  ||||||¡ t|ddd	}t|ddd	}|  ||||||¡ t|ddd	}t|ddd	}|  ||||||¡ d S )
Nr4   r6   r   r5   rN   r   r=   r   r7   r8   )r   r   r;   r%   r   rG   r   r   r   r   r   Útest_float_array_different_kindË   rP   z:TestSparseArrayArithmetics.test_float_array_different_kindc                 C   s  t  t jdddt jddddt jg
¡}t  dt jddt jddddt jg
¡}t||d}t||d}|  ||||¡ |  ||d ||d ¡ t||dd}t||d}|  ||||¡ t||dd}t||dd}|  ||||¡ t||dd}t||dd}|  ||||¡ d S rM   r>   rK   r   r   r   Útest_float_array_comparisonâ   s   $$z6TestSparseArrayArithmetics.test_float_array_comparisonc           
      C   s°  |}t j}t jg d¢|d}t jg d¢|d}t|||d}|jt|ƒks'J ‚t|||d}	|	jt|ƒks7J ‚|  ||	||||¡ |  ||	d ||d ||¡ t|d||d}|jt|ƒks`J ‚t|||d}	|	jt|ƒkspJ ‚|  ||	||||¡ t|d||d}|jt|ƒks‹J ‚t|d||d}	|	jt|ƒksœJ ‚|  ||	||||¡ t|d||d}|jt|ddks¹J ‚t|d	||d}	|	jt|d	dksÌJ ‚|  ||	||||¡ d S )
N©
r   r4   r6   r   r   r   r4   r6   r4   r   ©r)   ©
r6   r   r6   r5   r   r   r4   rN   r6   r   ©r)   r   r   )r,   r)   r   r4   ©r,   r6   )r   Úint64r9   r   r)   r   r(   )
r   r   r   r;   r%   r)   r   rG   r   r   r   r   r   Útest_int_array÷   s2   z)TestSparseArrayArithmetics.test_int_arrayc                 C   sþ   d}t jg d¢|d}t jg d¢|d}t|||d}t|||d}|  ||||¡ |  ||d ||d ¡ t|||dd}t|||d}|  ||||¡ t|||dd}t|||dd}|  ||||¡ t|||dd}t|||d	d}|  ||||¡ d S )
NrX   rS   rT   rU   rV   r   )r)   r   r,   r4   r6   )r   r9   r   r1   )r   r   r)   r   rG   r   r   r   r   r   Útest_int_array_comparison  s    z4TestSparseArrayArithmetics.test_int_array_comparisonTFc                 C   s`   t jg d¢t jd}t jg d¢t jd}t||t j|d}t||t j|d}|  ||||¡ d S )N)TFTTrT   ©r   r)   r,   ©r   r9   r+   r   r2   ©r   r   r,   r   rG   r   r   r   r   r   Útest_bool_same_index3  ó
   z/TestSparseArrayArithmetics.test_bool_same_indexc                 C   s`   t jg d¢t jd}t jg d¢t jd}t||t j|d}t||t j|d}|  ||||¡ d S )N)TFTFTTrT   )TFFTFTr[   r\   r]   r   r   r   Útest_bool_array_logical>  r_   z2TestSparseArrayArithmetics.test_bool_array_logicalc                 C   sd  |}d}t  t jdddt jddddt jg
¡}t jg d¢|d}t||d}	t||d}
|
jt|ƒks4J ‚|  |	|
||||¡ |  |	|
d ||d ||¡ t||dd}	t||d}
|
jt|ƒksbJ ‚|  |	|
||||¡ t||dd}	t||dd}
|
jt|ƒksƒJ ‚|  |	|
||||¡ t||dd}	t||dd}
|
jt|dd	ks¦J ‚|  |	|
||||¡ d S ©
NrX   r4   r6   r   rU   rT   r=   r7   rW   )r   r9   r:   r   r)   r   r(   )r   r   r   r;   r   r%   Úrdtyper   rG   r   r   r   r   r   Útest_mixed_array_float_intI  s*   $z5TestSparseArrayArithmetics.test_mixed_array_float_intc                 C   sL  d}t  t jdddt jddddt jg
¡}t jg d¢|d}t||d}t||d}|jt|ƒks2J ‚|  ||||¡ |  ||d ||d ¡ t||dd}t||d}|jt|ƒks\J ‚|  ||||¡ t||dd}t||dd}|jt|ƒks{J ‚|  ||||¡ t||dd}t||dd}|jt|dd	ksœJ ‚|  ||||¡ d S ra   )r   r9   r:   r   r)   r   r1   )r   r   rb   r   rG   r   r   r   r   r   Útest_mixed_array_comparisone  s(   $z6TestSparseArrayArithmetics.test_mixed_array_comparisonc                 C   s`   t g d¢ƒ}t g d¢ƒ}||A }tjjj dtjg d¢dd¡}t g d¢|d}t 	||¡ d S )	N)TTFF)TFTFrI   ©r   r4   r6   Zint32rT   )FTT)Zsparse_index)
r   r   ÚcoreZarraysÚsparseZIntIndexr   r9   r   Úassert_sp_array_equal)r   ÚsÚtr'   Zsp_indexr&   r   r   r   Útest_xor‚  s    z#TestSparseArrayArithmetics.test_xorN)Ú__name__Ú
__module__Ú__qualname__r   r-   r(   r/   r1   r2   ÚpytestÚmarkÚparametrizer<   r?   rH   rJ   rL   rO   rQ   rR   rY   rZ   r   r:   r^   r`   rc   rd   rk   r   r   r   r   r      s2    +$



r   r%   c                 C   s@   t ddgdd}| |ddgƒ}| |t ddgƒƒ}t ||¡ d S )Nr   r4   rW   )r   r   rh   )r%   Úarrr'   r&   r   r   r   Útest_with_list‹  s   rs   c                  C   s@   t ddgdd} t ddgddgg¡}|  |¡}|tu sJ ‚d S )Nr   r4   rW   r6   r5   rI   )r   r   Z	DataFrameÚ__add__ÚNotImplemented)rr   Zdfr'   r   r   r   Útest_with_dataframe“  s   
rv   c                  C   s6   t ddgdd} | t d¡ }| d }t ||¡ d S )Nr   r4   rW   r6   ©r   r   r9   r   rh   )rr   r'   r&   r   r   r   Útest_with_zerodim_ndarray›  s   rx   Úufuncrr   )r   r   éÿÿÿÿr4   )NNrz   r4   c                 C   s8   | |ƒ}| |j ƒ}t| t |¡ƒ|d}t ||¡ d S )NrW   )r,   r   r   Úasarrayr   rh   )ry   rr   r'   r,   r&   r   r   r   Útest_ufuncs¤  s   
r|   za, b)r   r   r   re   r4   rW   c                 C   sD   | ||ƒ}| t  |¡t  |¡ƒ}t|tƒsJ ‚t t  |¡|¡ d S r   )r   r{   r   r   r   r   )ry   r   r   r'   r&   r   r   r   Útest_binary_ufuncs¯  s   
r}   c                  C   s@   t g d¢ƒ} t g d¢¡}|| 7 }t g d¢¡}t ||¡ d S )N©r   r6   r   r   ©r   r4   r6   r5   ©r   r5   r6   r5   )r   r   r9   r   r   ©Zsparrayr   r&   r   r   r   Útest_ndarray_inplaceÂ  s
   r‚   c                  C   sB   t g d¢ƒ} t g d¢¡}| |7 } t g d¢dd}t | |¡ d S )Nr~   r   r€   r   rW   rw   r   r   r   r   Útest_sparray_inplaceÊ  s
   rƒ   Úconsc                 C   sT   t ddgƒ}| g d¢ƒ}tjtdd ||@  W d   ƒ d S 1 s#w   Y  d S )NT)TTTzoperands have mismatched length)Úmatch)r   ro   ZraisesÚ
ValueError)r„   ÚleftÚrightr   r   r   Útest_mismatched_length_cmp_opÒ  s
   
"ÿr‰   )ÚaddÚsubÚmulÚtruedivÚfloordivÚpowr,   r5   c              	   C   s¤  t t| ƒ} tj d¡ d¡}tj d¡ d¡}||d d d…< ||d d d…< t||d}t||d}tjdd‘ | ||ƒ}t| | ¡ | ¡ ƒ|j	d}t
|tƒsRJ ‚t | ¡ | ¡ ¡ | || ¡ ƒ}t
|tƒsjJ ‚t ||¡ | | ¡ |ƒ}	t
|	tƒs~J ‚t ||	¡ | |dƒ}
t
|
tƒsJ ‚z| | ¡ dƒ}| |j	dƒ}W n	 ty¨   Y nw t |
j	|¡ t |
 ¡ |¡ W d   ƒ d S W d   ƒ d S 1 sËw   Y  d S )Nr6   é   r5   rW   r   )ÚallrI   )ÚgetattrÚoperatorr   ÚrandomZdefault_rngZstandard_normalr   r!   r"   r,   r   r   Zassert_almost_equalrh   r†   )r%   r,   Zdata1Zdata2ÚfirstÚsecondr.   ÚexpZres2Zres3Zres4Zexp_fvr   r   r   Útest_binary_operatorsÚ  sB   

ÿ
ÿå"èr˜   )#r“   Únumpyr   ro   Zpandasr   r   Zpandas._testingZ_testingr   Zpandas.core.arrays.sparser   Zfixturer   r   r   rp   rq   ÚeqrŠ   rs   rv   rx   Úabsr—   r|   r9   Zgreaterr}   r‚   rƒ   Úlistr‰   r:   r˜   r   r   r   r   Ú<module>   sR    

  r
	ÿûþ

