3
UdN                 @   s.  d dl Z d dlZd dlZd dlmZ d dlZd dlj	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jde je jgdd Zdd Zdd Zejjdejejgejjded d d*dgeddd+dggdd Zejjded d d gejd ddgfed d d gddejd ddgfed d d gddejd ddgfed d d gddejd ddgfed d d gddejd ddgfgejjdejejgdd  Z d!d" Z!d#d$ Z"ejjd%d
dgd&d' Z#ejjd%d ej$gejjde j%e j&gd(d) Z'dS ),    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   _/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/arrays/sparse/test_arithmetics.pykind   s    r   TFc             C   s   | j S )N)r	   )r
   r   r   r   mix   s    r   c               @   s
  e Zd ZejZeZdd Zdd Z	dd Z
dd Zd	d
 Zejjddddgejjddddg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jdd&d'ejgd(d) Zejjdd&d'ejgd*d+ Zd,d- Zd.d/ Zd0d1 ZdS )2TestSparseArrayArithmeticsc             C   s   t j|| d S )N)tmassert_numpy_array_equal)selfabr   r   r   _assert   s    z"TestSparseArrayArithmetics._assertc       
   
   C   s   t jddd |r$|||j }n|||j }|tjtjgkrR||d |}n
|||}|tjtjgkrt j	|}	|	j
 rt j||	< | j|| W d Q R X d S )Nignore)invaliddivideg      ?)nperrstateto_denseoperatortruedivr   Zrtruedivfloordiv	rfloordivisinfanynanr   )
r   r   r   a_denseb_denser   opresultexpectedmaskr   r   r   _check_numeric_ops"   s    


z-TestSparseArrayArithmetics._check_numeric_opsc             C   sF   t || jstt |jts t|jjtjks2tt |jt	sBtd S )N)

isinstance_klassAssertionErrordtyper   subtyper   bool_
fill_valuebool)r   resr   r   r   _check_bool_result7   s    z-TestSparseArrayArithmetics._check_bool_resultc             C   s  t jdd | j||k | j||kj ||k | j||k | j||kj ||k | j||k | j||kj ||k | j||k | j||kj ||k | j||k | j||kj ||k | j||k  | j||k j ||k  | j||k | j||kj ||k | j||k | j||kj ||k | j||k | j||kj ||k | j||k | j||kj ||k | j||k | j||kj ||k | j||k  | j||k j ||k  W d Q R X d S )Nr   )r   )r   r   r3   r   r   )r   r   r   r#   r$   r   r   r   _check_comparison_ops=   s2    z0TestSparseArrayArithmetics._check_comparison_opsc             C   s   | j ||@  | j||@ j ||@  | j ||B  | j||B j ||B  | j ||@  | j||@ j ||@  | j ||B  | j||B j ||B  d S )N)r3   r   r   )r   r   r   r#   r$   r   r   r   _check_logical_opsh   s    z-TestSparseArrayArithmetics._check_logical_opsscalarr         r0   N   c             C   s   |}t s4|tjtjgkr4tjjddd}|jj	| | j
tjdddtjddddtjg
}	| j|	||d}
| j|
||	||| d S )NFzGH#38172)strictreasonr7   r9   r   )r   r0   )r   r   r   r   r   pytestmarkxfailnode
add_marker_baser   r"   r+   r)   )r   r   r   all_arithmetic_functionsr0   r6   r
   r%   r=   valuesr   r   r   r   test_float_scalarv   s    $z,TestSparseArrayArithmetics.test_float_scalarc             C   s   | j tjdddtjddddtjg
}| j||d}| j|d|d | j|d|d | j|d|d | j||dd}| j|d|d | j|d|d | j|d|d | j||dd}| j|d|d | j|d|d | j|d|d d S )Nr7   r9   r   )r   r8   )r   r0   )rA   r   r"   r+   r4   )r   r   rC   r   r   r   r   test_float_scalar_comparison   s    $z7TestSparseArrayArithmetics.test_float_scalar_comparisonc       
      C   sx   |}| j ddddddddddg
}| j ddddddddddg
}| j||dd}| j||dd}	| j||	|||| d S )	Ng        g      ?g       @g      @g      @g      @r   )r   r0   )rA   r+   r)   )
r   r   r   rB   r
   r%   rC   rvaluesr   r   r   r   r   "test_float_same_index_without_nans   s    z=TestSparseArrayArithmetics.test_float_same_index_without_nansc             C   s   |}t s4|tjtjgkr4tjjddd}|jj	| | j
tjdddtjddddtjg
}| j
tjdddtjddddtjg
}| j||d	}	| j||d	}
| j|	|
|||| d S )
NFzGH#38172)r:   r;   r7   r9   r   r8      )r   )r   r   r   r   r   r<   r=   r>   r?   r@   rA   r   r"   r+   r)   )r   r   r   rB   r
   r%   r=   rC   rF   r   r   r   r   r   test_float_same_index_with_nans   s    $$z:TestSparseArrayArithmetics.test_float_same_index_with_nansc             C   s   | j tjdddtjddddtjg
}| j tjdddtjddddtjg
}| j||d}| j||d}| j|||| | j ddd	d
dddd	ddg
}| j dd	ddddddd	dg
}| j||dd}| j||dd}| j|||| d S )Nr7   r9   r   r8   rH   )r   g        g      ?g       @g      @g      @g      @)r   r0   )rA   r   r"   r+   r4   )r   r   rC   rF   r   r   r   r   r    test_float_same_index_comparison   s    $$z;TestSparseArrayArithmetics.test_float_same_index_comparisonc       	      C   s6  |}| j tjdddtjddddtjg
}| j dtjddtjddddtjg
}| j||d}| j||d}| j|||||| | j||d ||d || | j||dd}| j||d}| j|||||| | j||dd}| j||dd}| j|||||| | j||dd}| j||dd}| j|||||| d S )Nr7   r9   r   r8      )r   )r   r0   )rA   r   r"   r+   r)   )	r   r   r   rB   r%   rC   rF   r   r   r   r   r   test_float_array   s     $$z+TestSparseArrayArithmetics.test_float_arrayc             C   s6  |}| j tjdddtjddddtjg
}| j dtjddtjddddtjg
}| j|dd}| j|dd}| j|||||| | j||d ||d || | j|ddd	}| j|dd}| j|||||| | j|ddd	}| j|ddd	}| j|||||| | j|ddd	}| j|ddd	}| j|||||| d S )
Nr7   r9   r   r8   rK   r   )r   r   )r   r0   )rA   r   r"   r+   r)   )r   r   rB   r%   rC   rF   r   r   r   r   r   test_float_array_different_kind   s     $$z:TestSparseArrayArithmetics.test_float_array_different_kindc             C   s  | j tjdddtjddddtjg
}| j dtjddtjddddtjg
}| j||d}| j||d}| j|||| | j||d ||d  | j||dd}| j||d}| j|||| | j||dd}| j||dd}| j|||| | j||dd}| j||dd}| j|||| d S )Nr7   r9   r   r8   rK   )r   )r   r0   )rA   r   r"   r+   r4   )r   r   rC   rF   r   r   r   r   r   test_float_array_comparison   s    $$z6TestSparseArrayArithmetics.test_float_array_comparisonc       
      C   s  |}t j}| jddddddddddg
|d}| jddddddddddg
|d}| j|||d}|jt|kspt| j|||d}	|	jt|kst| j||	|||| | j||	d ||d || | j|d||d}|jt|kst| j|||d}	|	jt|ks
t| j||	|||| | j|d||d}|jt|ksDt| j|d||d}	|	jt|ksjt| j||	|||| | j|d||d}|jt|dd	kst| j|d||d}	|	jt|dd	kst| j||	|||| d S )
Nr   r7   r9   )r-   r8   rK   )r-   r   )r0   r-   r   )r0   )r   int64rA   r+   r-   r   r,   r)   )
r   r   r   rB   r%   r-   rC   rF   r   r   r   r   r   test_int_array  s2    ""z)TestSparseArrayArithmetics.test_int_arrayc             C   s.  d}| j ddddddddddg
|d}| j ddddddddddg
|d}| j|||d}| j|||d}| j|||| | j||d ||d  | j|||dd	}| j|||d}| j|||| | j|||dd	}| j|||dd	}| j|||| | j|||dd	}| j|||dd	}| j|||| d S )
NrO   r   r7   r9   )r-   r8   rK   )r-   r   )r-   r   r0   )rA   r+   r4   )r   r   r-   rC   rF   r   r   r   r   r   test_int_array_comparison/  s     ""z4TestSparseArrayArithmetics.test_int_array_comparisonTFc             C   sl   | j ddddgtjd}| j ddddgtjd}| j||tj|d}| j||tj|d}| j|||| d S )NTF)r-   )r   r-   r0   )rA   r   r/   r+   r5   )r   r   r0   rC   rF   r   r   r   r   r   test_bool_same_indexG  s
    z/TestSparseArrayArithmetics.test_bool_same_indexc             C   st   | j ddddddgtjd}| j ddddddgtjd}| j||tj|d}| j||tj|d}| j|||| d S )NTF)r-   )r   r-   r0   )rA   r   r/   r+   r5   )r   r   r0   rC   rF   r   r   r   r   r   test_bool_array_logicalR  s
    z2TestSparseArrayArithmetics.test_bool_array_logicalc             C   s  |}t s8|tjtjgkr8|r8tjjddd}|jj	| d}| j
tjdddtjddddtjg
}| j
dddddddd	ddg
|d
}	| j||d}
| j|	|d}|jt|kst| j|
|||	|| | j|
|d ||	d || | j||dd}
| j|	|d}|jt|kst| j|
|||	|| | j||dd}
| j|	|dd}|jt|ksZt| j|
|||	|| | j||dd}
| j|	|dd}|jt|ddkst| j|
|||	|| d S )NTzGH#38172)r:   r;   rO   r7   r9   r   r8   rK   )r-   )r   )r   r0   )r0   )r   r   r   r   r   r<   r=   r>   r?   r@   rA   r   r"   r+   r-   r   r,   r)   )r   r   r   rB   r
   r%   r=   rdtyperC   rF   r   r   r   r   r   test_mixed_array_float_int]  s2    $"z5TestSparseArrayArithmetics.test_mixed_array_float_intc             C   sp  d}| j tjdddtjddddtjg
}| j ddddddddddg
|d}| j||d}| j||d}|jt|ksxt| j|||| | j||d ||d  | j||dd	}| j||d}|jt|kst| j|||| | j||dd	}| j||dd	}|jt|kst| j|||| | j||dd	}| j||dd	}|jt|dd
ks\t| j|||| d S )NrO   r7   r9   r   r8   rK   )r-   )r   )r   r0   )r0   )rA   r   r"   r+   r-   r   r,   r4   )r   r   rT   rC   rF   r   r   r   r   r   test_mixed_array_comparison  s(    $"z6TestSparseArrayArithmetics.test_mixed_array_comparisonc             C   sl   t ddddg}t ddddg}||A }tjjjjdtjdddgdd}t dddg|d	}tj	|| d S )
NTFrH   r   r7   r9   Zint32)r-   )Zsparse_index)
r   pdcoreZarrayssparseZIntIndexr   arrayr   assert_sp_array_equal)r   str&   Zsp_indexr'   r   r   r   test_xor  s    "z#TestSparseArrayArithmetics.test_xor) __name__
__module____qualname__r   rZ   rA   r   r+   r   r)   r3   r4   r5   r<   r=   parametrizerD   rE   rG   rI   rJ   rL   rM   rN   rP   rQ   r"   rR   rS   rU   rV   r^   r   r   r   r   r      s.   +$#r   r%   c             C   s@   t ddgdd}| |ddg}| |t ddg}tj|| d S )Nr   r7   )r0   )r   r   r[   )r%   arrr&   r'   r   r   r   test_with_list  s    rd   c              C   s@   t ddgdd} tjddgddgg}| j|}|tks<td S )Nr   r7   )r0   r9   r8   rH   )r   rW   	DataFrame__add__NotImplementedr,   )rc   dfr&   r   r   r   test_with_dataframe  s    
ri   c              C   s6   t ddgdd} | tjd }| d }tj|| d S )Nr   r7   )r0   r9   )r   r   rZ   r   r[   )rc   r&   r'   r   r   r   test_with_zerodim_ndarray  s    rj   ufuncrc   r7   c             C   s8   | |}| |j }t| tj||d}tj|| d S )N)r0   )r0   r   r   asarrayr   r[   )rk   rc   r&   r0   r'   r   r   r   test_ufuncs  s    
rm   za, br9   )r0   c             C   sD   | ||}| t j|t j|}t|ts.ttjt j|| d S )N)r   rl   r*   r   r,   r   r   )rk   r   r   r&   r'   r   r   r   test_binary_ufuncs  s    
rn   c              C   sL   t ddddg} tjddddg}|| 7 }tjddddg}tj|| d S )Nr   r9   r7   r8   )r   r   rZ   r   r   )sparrayndarrayr'   r   r   r   test_ndarray_inplace  s
    rq   c              C   sN   t ddddg} tjddddg}| |7 } t ddddgdd}tj| | d S )Nr   r9   r7   r8   )r0   )r   r   rZ   r   r[   )ro   rp   r'   r   r   r   test_sparray_inplace  s
    rr   r0   c             C   s   t jddddg}t|| d}| }t| |  d}tj|| tj| }tj|}tj|| tjd|i }tjd|i}tj	|| d S )NTF)r0   A)
r   rZ   r   r   r[   rW   ZSeriesZassert_series_equalre   Zassert_frame_equal)r0   rc   ro   r&   r'   r   r   r   test_invert  s    
rt   c             C   sL   t jddt jdg}t||d}| |}t| || |d}tj|| d S )Nr   r7   r9   )r0   )r   rZ   r"   r   r   r[   )r%   r0   rc   ro   r&   r'   r   r   r   test_unary_op  s
    ru   rv   )(r   Znumpyr   r<   Zpandas.compat.numpyr   ZpandasrW   Zpandas._testingZ_testingr   Zpandas.corer   Zpandas.core.arrays.sparser   r   Zfixturer   r   r   r=   rb   eqaddrd   ri   rj   absexprm   rZ   Zgreaterrn   rq   rr   rt   r"   posnegru   r   r   r   r   <module>   s@   
   	.	   $ 	