o
    _~#g¸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   ú/var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/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ÚpdÚ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"   r0   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   )r0   r   r#   r1   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 )Nr5   r7   r   ©r   r-   ©r   ÚarrayÚnanr   r)   )
r   r   r   Úall_arithmetic_functionsr-   r4   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 )Nr5   r7   r   ©r   r6   r8   ©r   r:   r;   r   r2   )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      @rB   rB   rC   rD   rC   rB   ©
rB   rD   ç      @g      @rB   rB   rC   rF   rD   rB   r   r8   )r   r:   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 )Nr5   r7   r   r6   é   r>   r9   )
r   r   r   r<   r   r&   r    rH   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 )
Nr5   r7   r   r6   rJ   r>   rA   rE   r8   r?   ©r   r   r    rH   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 ©Nr5   r7   r   r6   é   r>   r8   r9   rG   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 )
Nr5   r7   r   r6   rO   r   r>   r   r8   r9   )r   r   r<   r&   r    rH   r   r   r   r   r   Útest_float_array_different_kindË   rQ   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 rN   r?   rL   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   r5   r7   r   r   r   r5   r7   r5   r   ©r*   ©
r7   r   r7   r6   r   r   r5   rO   r7   r   ©r*   r   r   )r-   r*   r   r5   ©r-   r7   )r   Úint64r:   r   r*   r   r)   )
r   r   r   r<   r&   r*   r    rH   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 )
NrY   rT   rU   rV   rW   r   )r*   r   r-   r5   r7   )r   r:   r   r2   )r   r   r*   r    rH   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)TFTTrU   ©r   r*   r-   ©r   r:   r,   r   r3   ©r   r   r-   r    rH   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)TFTFTTrU   )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 ©
NrY   r5   r7   r   rV   rU   r>   r8   rX   )r   r:   r;   r   r*   r   r)   )r   r   r   r<   r   r&   Úrdtyper    rH   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 rb   )r   r:   r;   r   r*   r   r2   )r   r   rc   r    rH   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)TFTFrJ   ©r   r5   r7   Úint32rU   )FTT)Úsparse_index)
r   r   ÚcoreÚarraysÚsparseÚIntIndexr   r:   r   Úassert_sp_array_equal)r   ÚsÚtr(   Úsp_indexr'   r   r   r   Útest_xor‚  s    z#TestSparseArrayArithmetics.test_xorN)Ú__name__Ú
__module__Ú__qualname__r   r.   r)   r0   r2   r3   ÚpytestÚmarkÚparametrizer=   r@   rI   rK   rM   rP   rR   rS   rZ   r[   r   r;   r_   ra   rd   re   rq   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   r5   rX   )r   r   rm   )r&   Úarrr(   r'   r   r   r   Útest_with_list‹  s   ry   c                  C   s@   t ddgdd} t ddgddgg¡}|  |¡}|tu sJ ‚d S )Nr   r5   rX   r7   r6   rJ   )r   r   Ú	DataFrameÚ__add__ÚNotImplemented)rx   Údfr(   r   r   r   Útest_with_dataframe“  s   
r~   c                  C   s6   t ddgdd} | t d¡ }| d }t ||¡ d S )Nr   r5   rX   r7   ©r   r   r:   r   rm   )rx   r(   r'   r   r   r   Útest_with_zerodim_ndarray›  s   r€   Úufuncrx   )r   r   éÿÿÿÿr5   )NNr‚   r5   c                 C   s8   | |ƒ}| |j ƒ}t| t |¡ƒ|d}t ||¡ d S )NrX   )r-   r   r   Úasarrayr   rm   )r   rx   r(   r-   r'   r   r   r   Útest_ufuncs¤  s   
r„   za, b)r   r   r   rf   r5   rX   c                 C   sD   | ||ƒ}| t  |¡t  |¡ƒ}t|tƒsJ ‚t t  |¡|¡ d S r   )r   rƒ   r   r   r   r   )r   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   r7   r   r   ©r   r5   r7   r6   ©r   r6   r7   r6   )r   r   r:   r   r   ©Ú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   rX   r   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   ru   ÚraisesÚ
ValueError)r   ÚleftÚrightr   r   r   Útest_mismatched_length_cmp_opÒ  s
   
"ÿr“   )ÚaddÚsubÚmulÚtruedivÚfloordivÚpowr-   r6   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 )Nr7   é   r6   rX   r   )ÚallrJ   )ÚgetattrÚoperatorr   ÚrandomÚdefault_rngÚstandard_normalr   r"   r#   r-   r   r   Úassert_almost_equalrm   r   )r&   r-   Údata1Údata2ÚfirstÚsecondr/   ÚexpÚres2Úres3Úres4Úexp_fvr   r   r   Útest_binary_operatorsÚ  sB   

ÿ
ÿå"èr«   )#r   Únumpyr   ru   Úpandasr   r   Úpandas._testingÚ_testingr   Úpandas.core.arrays.sparser   Úfixturer   r   r   rv   rw   Úeqr”   ry   r~   r€   Úabsr¦   r„   r:   Úgreaterr…   r‹   rŒ   Úlistr“   r;   r«   r   r   r   r   Ú<module>   sR    

  r
	ÿûþ

