a
    oÝEb¤P  ã                   @   s2  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
 d dlmZ d dlmZ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(d
dg¡d)d*„ ƒZ#ej d(d ej$g¡ej de j%e j&g¡d+d,„ ƒƒZ'ej d-e(ejeg¡d.d/„ ƒZ)dS )0é    N)Únp_version_under1p20)Úops)ÚSparseArrayÚSparseDtypeÚintegerÚblock)Úparamsc                 C   s   | j S )z.kind kwarg to pass to SparseArray/SparseSeries©Úparam©Úrequest© r   úk/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/arrays/sparse/test_arithmetics.pyÚkind   s    r   TFc                 C   s   | j S ©Nr	   r   r   r   r   Úmix   s    r   c                   @   s  e Zd ZejZeZdd„ Ze	dœ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 r   )ÚtmÚassert_numpy_array_equal)ÚselfÚaÚbr   r   r   Ú_assert"   s    z"TestSparseArrayArithmetics._assert)r   c           	      C   s¤   t |tjƒr |t |¡|ƒj}n$t |tjƒr@||t |¡ƒj}nt‚tjddd��2 |rh|||ƒ ¡ }n|||ƒ ¡ }W d   ƒ n1 sŠ0    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   sF   t || jƒsJ ‚t |jtƒs J ‚|jjtjks2J ‚t |jtƒsBJ ‚d S r   )	r   Ú_klassÚdtyper   Úsubtyper   Úbool_Ú
fill_valueÚbool)r   Úresr   r   r   Ú_check_bool_result8   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   ƒ n1 �sî0    Y  d S )Nr   )r   )r   r#   r2   r   r$   ©r   r   r   r%   r&   r   r   r   Ú_check_comparison_ops>   s2    z0TestSparseArrayArithmetics._check_comparison_opsc                 C   sœ   |   ||@ ¡ |  ||@  ¡ ||@ ¡ |   ||B ¡ |  ||B  ¡ ||B ¡ |   ||@ ¡ |  ||@  ¡ ||@ ¡ |   ||B ¡ |  ||B  ¡ ||B ¡ d S r   )r2   r   r$   r3   r   r   r   Ú_check_logical_opsi   s    z-TestSparseArrayArithmetics._check_logical_opsÚscalar)r   é   é   r/   )Nr   é   c                 C   s¨   |}t r\|tjtjfv r\|tju r,|dkr,n0|tju r@|dkr@ntjjtdd�}|j	 
|¡ |  tjdddtjddddtjg
¡}	| j|	||d�}
|  |
||	|||¡ d S )Nr   úGH#38172©ÚraisesÚreasonr7   r9   ©r   r/   )r   ÚoperatorÚfloordivr   Ú	rfloordivÚpytestÚmarkÚxfailÚAssertionErrorÚnodeÚ
add_markerÚ_baser   Únanr+   r*   )r   r   r   Úall_arithmetic_functionsr/   r6   r   r'   rC   r!   r   r   r   r   Útest_float_scalarw   s    $z,TestSparseArrayArithmetics.test_float_scalarc                 C   sæ   |   tjdddtjddddtjg
¡}| j||d�}|  |d|d¡ |  |d|d¡ |  |d|d¡ | j||dd�}|  |d|d¡ |  |d|d¡ |  |d|d¡ | j||dd�}|  |d|d¡ |  |d|d¡ |  |d|d¡ d S )Nr7   r9   r   ©r   r8   r>   ©rH   r   rI   r+   r4   )r   r   r!   r   r   r   r   Útest_float_scalar_comparison�   s    $z7TestSparseArrayArithmetics.test_float_scalar_comparisonc           	      C   sX   |}|   g d¢¡}|   g d¢¡}| j||dd�}| j||dd�}|  ||||||¡ d S )N©
ç        ç      ð?ç       @g      @rP   rP   rQ   rR   rQ   rP   ©
rP   rR   ç      @g      @rP   rP   rQ   rT   rR   rP   r   r>   )rH   r+   r*   ©	r   r   r   rJ   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 r:|tju r:|r|dks:tjjtdd�}|j |¡ |  	t
jdddt
jddddt
jg
¡}|  	t
jdddt
jddddt
jg
¡}| j||d	�}	| j||d	�}
|  |	|
||||¡ d S )
Nr   r:   r;   r7   r9   r   r8   é   rL   )r   r   rA   rB   rC   rD   rE   rF   rG   rH   r   rI   r+   r*   )r   r   r   rJ   r   r'   rC   r!   rV   r   r   r   r   r   Útest_float_same_index_with_nansª   s     ÿþýý$$z:TestSparseArrayArithmetics.test_float_same_index_with_nansc                 C   sÄ   |   tjdddtjddddtjg
¡}|   tjdddtjddddtjg
¡}| j||d�}| j||d�}|  ||||¡ |   g d¢¡}|   g d¢¡}| j||dd	�}| j||dd	�}|  ||||¡ d S )
Nr7   r9   r   r8   rX   rL   rO   rS   r>   rM   ©r   r   r!   rV   r   r   r   r   r   Ú test_float_same_index_comparison¾   s    $$z;TestSparseArrayArithmetics.test_float_same_index_comparisonc           	      C   s6  |}|   tjdddtjddddtjg
¡}|   dtjddtjddddtjg
¡}| j||d�}| j||d�}|  ||||||¡ |  ||d ||d ||¡ | j||dd�}| j||d�}|  ||||||¡ | j||dd�}| j||dd�}|  ||||||¡ | j||dd�}| j||dd�}|  ||||||¡ d S ©Nr7   r9   r   r8   é   rL   r>   ©rH   r   rI   r+   r*   rU   r   r   r   Útest_float_arrayÎ   s     $$z+TestSparseArrayArithmetics.test_float_arrayc                 C   s6  |}|   tjdddtjddddtjg
¡}|   dtjddtjddddtjg
¡}| j|dd�}| j|dd�}|  ||||||¡ |  ||d ||d ||¡ | j|ddd	�}| j|dd�}|  ||||||¡ | j|ddd	�}| j|ddd	�}|  ||||||¡ | j|ddd	�}| j|ddd	�}|  ||||||¡ d S )
Nr7   r9   r   r8   r]   r   rL   r   r>   r^   )r   r   rJ   r'   r!   rV   r   r   r   r   r   Útest_float_array_different_kindå   s     $$z:TestSparseArrayArithmetics.test_float_array_different_kindc                 C   s  |   tjdddtjddddtjg
¡}|   dtjddtjddddtjg
¡}| j||d�}| j||d�}|  ||||¡ |  ||d ||d ¡ | j||dd�}| j||d�}|  ||||¡ | j||dd�}| j||dd�}|  ||||¡ | j||dd�}| j||dd�}|  ||||¡ d S r\   rM   rZ   r   r   r   Útest_float_array_comparisonü   s    $$z6TestSparseArrayArithmetics.test_float_array_comparisonc           
      C   sÈ  |}t j}| jg d¢|d�}| jg d¢|d�}| j|||d�}|jt|ƒksPJ ‚| j|||d�}	|	jt|ƒksrJ ‚|  ||	||||¡ |  ||	d ||d ||¡ | j|d||d�}|jt|ƒksÆJ ‚| j|||d�}	|	jt|ƒksèJ ‚|  ||	||||¡ | j|d||d�}|jt|ƒk�s"J ‚| j|d||d�}	|	jt|ƒk�sHJ ‚|  ||	||||¡ | j|d||d�}|jt|dd�k�s†J ‚| j|d	||d�}	|	jt|d	d�k�s°J ‚|  ||	||||¡ d S )
N©
r   r7   r9   r   r   r   r7   r9   r7   r   ©r,   ©
r9   r   r9   r8   r   r   r7   r]   r9   r   ©r,   r   r   )r/   r,   r   r7   ©r/   r9   )r   Úint64rH   r+   r,   r   r*   )
r   r   r   rJ   r'   r,   r!   rV   r   r   r   r   r   Útest_int_array  s2    z)TestSparseArrayArithmetics.test_int_arrayc                 C   s  d}| j g d¢|d�}| j g d¢|d�}| j|||d�}| j|||d�}|  ||||¡ |  ||d ||d ¡ | j|||dd�}| j|||d�}|  ||||¡ | j|||dd�}| j|||dd�}|  ||||¡ | j|||dd�}| j|||d	d�}|  ||||¡ d S )
Nrg   rb   rc   rd   re   r   )r,   r   r/   r7   r9   )rH   r+   r4   )r   r   r,   r!   rV   r   r   r   r   r   Útest_int_array_comparison5  s     z4TestSparseArrayArithmetics.test_int_array_comparisonTFc                 C   sd   | j g d¢tjd�}| j g d¢tjd�}| j||tj|d�}| j||tj|d�}|  ||||¡ d S )N)TFTTrc   ©r   r,   r/   ©rH   r   r.   r+   r5   ©r   r   r/   r!   rV   r   r   r   r   r   Útest_bool_same_indexM  s
    z/TestSparseArrayArithmetics.test_bool_same_indexc                 C   sd   | j g d¢tjd�}| j g d¢tjd�}| j||tj|d�}| j||tj|d�}|  ||||¡ d S )N)TFTFTTrc   )TFFTFTrj   rk   rl   r   r   r   Útest_bool_array_logicalX  s
    z2TestSparseArrayArithmetics.test_bool_array_logicalc                 C   s®  |}t r8|tjtjfv r8|r8tjjtdd�}|j	 
|¡ d}|  tjdddtjddddtjg
¡}| jg d¢|d�}	| j||d	�}
| j|	|d	�}|jt|ƒks J ‚|  |
|||	||¡ |  |
|d ||	d ||¡ | j||dd
�}
| j|	|d	�}|jt|ƒk�sJ ‚|  |
|||	||¡ | j||dd
�}
| j|	|dd
�}|jt|ƒk�sJJ ‚|  |
|||	||¡ | j||dd
�}
| j|	|dd
�}|jt|dd�k�s–J ‚|  |
|||	||¡ d S )Nr:   r;   rg   r7   r9   r   rd   rc   rL   r>   rf   )r   r?   r@   r   rA   rB   rC   rD   rE   rF   rG   rH   r   rI   r+   r,   r   r*   )r   r   r   rJ   r   r'   rC   Úrdtyper!   rV   r   r   r   r   r   Útest_mixed_array_float_intc  s0    $z5TestSparseArrayArithmetics.test_mixed_array_float_intc                 C   s`  d}|   tjdddtjddddtjg
¡}| j g d¢|d�}| j||d�}| j||d�}|jt|ƒkshJ ‚|  ||||¡ |  ||d ||d ¡ | j||dd�}| j||d�}|jt|ƒksÀJ ‚|  ||||¡ | j||dd�}| j||dd�}|jt|ƒk�sJ ‚|  ||||¡ | j||dd�}| j||dd�}|jt|dd	�k�sLJ ‚|  ||||¡ d S )
Nrg   r7   r9   r   rd   rc   rL   r>   rf   )rH   r   rI   r+   r,   r   r4   )r   r   ro   r!   rV   r   r   r   r   r   Útest_mixed_array_comparison…  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)TFTFrX   ©r   r7   r9   Zint32rc   )FTT)Zsparse_index)
r   r   ÚcoreZarraysÚsparseZIntIndexr   Úarrayr   Úassert_sp_array_equal)r   ÚsÚtr)   Zsp_indexr(   r   r   r   Útest_xor¢  s     z#TestSparseArrayArithmetics.test_xorN)!Ú__name__Ú
__module__Ú__qualname__r   ru   rH   r   r+   r   r0   r*   r2   r4   r5   rB   rC   ÚparametrizerK   rN   rW   rY   r[   r_   r`   ra   rh   ri   rI   rm   rn   rp   rq   ry   r   r   r   r   r      s4   +$



"r   r'   c                 C   s@   t ddgdd�}| |ddgƒ}| |t ddgƒƒ}t ||¡ d S )Nr   r7   rf   )r   r   rv   )r'   Úarrr)   r(   r   r   r   Útest_with_list«  s    r   c                  C   s@   t ddgdd�} t ddgddgg¡}|  |¡}|tu s<J ‚d S )Nr   r7   rf   r9   r8   rX   )r   r   Ú	DataFrameÚ__add__ÚNotImplemented)r~   Z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   r7   rf   r9   ©r   r   ru   r   rv   )r~   r)   r(   r   r   r   Útest_with_zerodim_ndarray»  s    r…   Úufuncr~   )r   r   éÿÿÿÿr7   )NNr‡   r7   c                 C   s8   | |ƒ}| |j ƒ}t| t |¡ƒ|d�}t ||¡ d S )Nrf   )r/   r   r   Úasarrayr   rv   )r†   r~   r)   r/   r(   r   r   r   Útest_ufuncsÄ  s    
r‰   za, b)r   r   r   rr   r7   rf   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   r9   r   r   ©r   r7   r9   r8   ©r   r8   r9   r8   )r   r   ru   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   rf   r„   rŽ   r   r   r   Útest_sparray_inplaceê  s
    r‘   r/   c                 C   sŒ   t  g d¢¡}t|| d�}| }t| |  d�}t ||¡ t |¡ }t |¡}t ||¡ t d|i¡ }t d|i¡}t 	||¡ d S )N)TFFTrf   ÚA)
r   ru   r   r   rv   r   r    Zassert_series_equalr€   Zassert_frame_equal)r/   r~   r�   r)   r(   r   r   r   Útest_invertò  s    
r“   c                 C   sL   t  ddt jdg¡}t||d�}| |ƒ}t| |ƒ| |ƒd�}t ||¡ d S )Nr   r7   r9   rf   )r   ru   rI   r   r   rv   )r'   r/   r~   r�   r)   r(   r   r   r   Útest_unary_op  s
    r”   Úconsc                 C   sR   t ddgƒ}| g d¢ƒ}tjtdd�� ||@  W d   ƒ n1 sD0    Y  d S )NT)TTTzoperands have mismatched length)Úmatch)r   rB   r<   Ú
ValueError)r•   ÚleftÚrightr   r   r   Útest_mismatched_length_cmp_op  s    rš   )*r?   Únumpyr   rB   Zpandas.compatr   Zpandasr   Zpandas._testingZ_testingr   Zpandas.corer   Zpandas.core.arrays.sparser   r   Zfixturer   r   r   rC   r}   ÚeqÚaddr   rƒ   r…   ÚabsÚexpr‰   ru   ZgreaterrŠ   r�   r‘   r“   rI   ÚposÚnegr”   Úlistrš   r   r   r   r   Ú<module>   sX   

   
	ÿûþ

