U
    fª/e(  ã                   @   sà  d dl mZ d dlZd dlZd dlm  mZ d dl	Z
d dlmZ d dlmZ dddddœgZej de¡dd	„ ƒZej de¡d
d„ ƒZej de¡dd„ ƒZej dejdddddgfeejddgddggde ddgddgg¡d ddd gfeje ddgddgg¡ddddgfejddd ddgfeeje ddgddgg¡ddd ddd gfg¡dd„ ƒZej de¡ej de¡d d!„ ƒƒZej de¡d"d#„ ƒZej d$¡d%d&„ ƒZd'd(„ Z d)d*„ Z!d+d,„ Z"e #d-d.¡d/d0„ ƒZ$dS )1é    )ÚpartialN)Úis_extension_array_dtypeÚint64ZInt64©ÚAÚBÚdtypec                 C   st   t jddgddggdd}tj|ddgddgd	j| d}t  |¡}tjt  |¡|j|jd
 | ¡}t 	||¡ d S ©Néÿÿÿÿé   r   ©r   r   r   ÚaÚb©ÚcolumnsÚindex©r   r   )
ÚnpÚarrayÚpdÚ	DataFrameÚastypeZpositiver   r   ÚtmÚassert_frame_equal©r   ÚvaluesÚdfÚresultÚexpected© r   úA/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/frame/test_ufunc.pyÚtest_unary_unary   s     
  ÿþr!   c           	      C   sÌ   t |ƒst|tƒr(| j tjjdd¡ tj	ddgddggdd}t
j|ddgd	d
gdj|d}t |¡}t|tƒszt‚t|ƒdksŠt‚t |¡}t||ƒD ](\}}t
j||j|jd}t ||¡ qžd S )Nz8Extension / mixed with multiple outputs not implemented.©Úreasonr
   r   r   r   r   r   r   r   r   é   r   )r   Ú
isinstanceÚdictÚnodeÚ
add_markerÚpytestÚmarkÚxfailr   r   r   r   r   ÚmodfÚtupleÚAssertionErrorÚlenÚzipr   r   r   r   )	Úrequestr   r   r   Zresult_pandasZexpected_numpyr   r   r   r   r   r    Útest_unary_binary   s    ÿÿ 

r2   c                 C   sx   t jddgddggdd}tj|ddgddgd	j| d}t  ||¡}tjt  ||¡|j|jd
 | ¡}t 	||¡ d S r	   )
r   r   r   r   r   Úaddr   r   r   r   r   r   r   r    Ú test_binary_input_dispatch_binop5   s     
  ÿþr4   zfunc,arg,expectedr   r$   é   é   é   FT)Úwhereé	   é   r
   éþÿÿÿéýÿÿÿc                 C   s†   t  ddgddgg¡}t |¡}t  |¡}|d kr@| ||d}n| |||d}t  |¡ dd¡}t ||¡ t |¡}t ||¡ d S )Nr   r$   r5   r6   )Úout)	r   r   r   r   Z
zeros_likeZreshaper   Zassert_numpy_array_equalr   )ÚfuncÚargr   r1   Zarrr   Zresult_inplacer   r   r   r    Útest_ufunc_passes_argsA   s    


r@   Údtype_aÚdtype_bc              	   C   s  t |ƒs$t|tƒs$t |ƒs$t|tƒr:| j tjjdd¡ t 	ddgddgdœ¡ 
|¡}t|tƒrzt|tƒrz| d¡|d	< t 	ddgddgd
œ¡ 
|¡}t t¡ t ||¡}W 5 Q R X tj	ddgddggddgd}t ||¡ t ||j¡}t ||¡ d S )Nú7Extension / mixed with multiple inputs not implemented.r"   r   r$   r5   r6   r   r   ÚC)r   rD   ç      ð?r   ©r   )r   r%   r&   r'   r(   r)   r*   r+   r   r   r   Úpopr   Úassert_produces_warningÚFutureWarningr   Ú	heavisider   r   )r1   rA   rB   Údf1Údf2r   r   r   r   r    Ú test_binary_input_aligns_columnse   s.    ÿþýüÿÿrM   c              	   C   sä   t |ƒst|tƒr(| j tjjdd¡ tj	ddgddgdœdd	gd
 
|¡}tj	ddgddgdœddgd
 
|¡}t t¡ t ||¡}W 5 Q R X tj	ddgddggddgdd	gd}t ||¡ t ||j¡}t ||¡ d S )NrC   r"   r   r$   r5   r6   r   r   r   ©r   ÚcrE   r   r   r   )r   r%   r&   r'   r(   r)   r*   r+   r   r   r   r   rH   rI   r   rJ   r   r   )r1   r   rK   rL   r   r   r   r   r    Útest_binary_input_aligns_indexŠ   s$    ÿÿ&&  ÿrP   z3ignore:Calling a ufunc on non-aligned:FutureWarningc               	   C   sj   t  dddgi¡} tjtdd t | | d ¡ W 5 Q R X tjtdd t | d | ¡ W 5 Q R X d S )Nr   r   r$   Ú )Úmatch)r   r   r)   ZraisesÚ
ValueErrorr   Z	logaddexp©r   r   r   r    Útest_binary_frame_series_raises§   s
    rU   c                  C   sø   t  dddddgi¡} tj | ¡}t  dddddgi¡}t ||¡ t  ddddgdddd	gd
œ¡} tj | ¡}t  ddddgddddgd
œ¡}t ||¡ tjj| dd}t ||¡ tjj| dd}t  ddd	dgddddgd
œ¡}t ||¡ d S )Nr   r   r5   r$   r6   gš™™™™™¹?g      @ç      @g       @©r   r   rE   r   ©Zaxis)r   r   r   ÚmaximumÚ
accumulater   r   )r   r   r   r   r   r    Útest_unary_accumulate_axis´   s       r[   c               	   C   s:   t  dddgi¡} t t¡ tj | | ¡ W 5 Q R X d S )Nr   r   r$   )r   r   r   rH   rI   r   ÚsubtractÚouterrT   r   r   r    Útest_frame_outer_deprecatedÉ   s    r^   c               	   C   sð  t  dddgdddgdœ¡} t  dddgdddgdœ¡}t jddgd	d
gd}t jddgd
dgd}t  dddgdddgdœ¡}t d ¡ t | | ¡}W 5 Q R X t ||¡ t t¡ t | |¡}W 5 Q R X t ||¡ t | |j	¡}t ||¡ t | j	|¡}t  dddgdddgdœ¡}t ||¡ t  dddgdddgdœ¡}t d ¡ t | |¡}W 5 Q R X t ||¡ t t¡ t | |¡}W 5 Q R X t ||¡ t t¡ t || ¡}W 5 Q R X t ||¡ t | |j	¡}t ||¡ d S )Nr   r$   r5   r6   r7   é   rW   ©r   rO   r   r   rN   rO   é   é
   é   é   )
r   r   ZSeriesr   rH   r   r3   r   rI   r   )rK   rL   Ús1Ús2r   r   r   r   r    Útest_alignment_deprecationÏ   s8    rg   Únumbaz0.46.0c               	   C   s¦  ddl m} m} || | | | ƒgƒdd„ ƒ}t dddgdd	d
gdœ¡}t dddgdd	d
gdœ¡}t dddgdd	d
gdœ¡}t t¡ ||||ƒ}W 5 Q R X tjddgddgddggddgd}t ||¡ t d ¡ ||||ƒ}W 5 Q R X t ||¡ t t¡ ||||j	ƒ}W 5 Q R X t ||¡ t d ¡ |||j	|j	ƒ}W 5 Q R X t ||¡ t t¡ ||j	||ƒ}W 5 Q R X |j
ddgdd}t ||¡ d S )Nr   )Úfloat64Ú	vectorizec                 S   s   | | | S )Nr   )ÚxÚyÚzr   r   r    Úmy_ufunc  s    z8test_alignment_deprecation_many_inputs.<locals>.my_ufuncr   r$   r5   r6   r7   r_   rW   r`   )r   rO   rV   g      (@g      @g      .@g      "@g      2@r   r   rF   rO   rX   )rh   ri   rj   r   r   r   rH   rI   r   r   Zset_axis)ri   rj   rn   rK   rL   Zdf3r   r   r   r   r    Ú&test_alignment_deprecation_many_inputsþ   s.    
$ro   )%Ú	functoolsr   Znumpyr   r)   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   Zpandas._testingZ_testingr   Zpandas.api.typesr   Zdtypesr*   Zparametrizer!   r2   r4   r3   r   Úpowerr\   Únegativer@   rM   rP   ÚfilterwarningsrU   r[   r^   rg   Z
skip_if_noro   r   r   r   r    Ú<module>   sX   ý



ý$
ý÷þ
#


/
