U
    sVc(                     @   s  d dl mZ d dlZd dlZd dlm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/d0 Z&dS )1    )partialN)np_version_gte1p22)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-xj8nt62q/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stt|}t||D ](\}}t
j||j|jd}t|| qd 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     

r3   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_binop6   s     
  r5   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%   r6   r7   )out)	r   r   r   r   Z
zeros_likeZreshaper   Zassert_numpy_array_equalr   )funcargr   Zarrr   Zresult_inplacer   r    r    r!   test_ufunc_passes_argsB   s    


rA   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 )N7Extension / mixed with multiple inputs not implemented.r#   r   r%   r6   r7   r   r   C)r   rE         ?r   r   )r   r&   r'   r(   r)   r*   r+   r,   r   r   r   popr   assert_produces_warningFutureWarningr   	heavisider   r   )r2   rB   rC   df1df2r   r   r    r    r!    test_binary_input_aligns_columnsf   s.    rN   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 )NrD   r#   r   r%   r6   r7   r   r   r   r   crF   r   r   r   )r   r&   r'   r(   r)   r*   r+   r,   r   r   r   r   rI   rJ   r   rK   r   r   )r2   r	   rL   rM   r   r   r    r    r!   test_binary_input_aligns_index   s$    &&  rQ   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
    rV   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   r6   r%   r7   g?g      @      @g       @r   r   rF   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   rI   rJ   r   subtractouterrU   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%   r6   r7   r8      rX   r   rP   r   r   rO   rP      
         )
r   r   ZSeriesr   rI   r   r4   r   rJ   r   )rL   rM   s1s2r   r   r    r    r!   test_alignment_deprecation   s8    rh   numbac           
   	   C   s  ddl m}m} tr,tjd}| j| |||||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	vectorizez5ignore:`np.MachAr` is deprecated.*:DeprecationWarningc                 S   s   | | | S )Nr    )xyzr    r    r!   my_ufunc  s    z8test_alignment_deprecation_many_inputs.<locals>.my_ufuncr   r%   r6   r7   r8   r`   rX   ra   )r   rP   rW   g      (@g      @g      .@g      "@g      2@r   r   rG   rP   rY   )ri   rj   rk   r   r*   r+   filterwarningsr(   r)   r   r   r   rI   rJ   r   r   Zset_axis)
r2   rj   rk   r+   ro   rL   rM   Zdf3r   r   r    r    r!   &test_alignment_deprecation_many_inputs   s8    
$rq   )'	functoolsr   Znumpyr   r*   Zpandas.compat.numpyr   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   Zpandas._testingZ_testingr   Zpandas.api.typesr   Zdtypesr+   Zparametrizer"   r3   r5   r4   r   powerr]   negativerA   rN   rQ   rp   rV   r\   r_   rh   Z
skip_if_norq   r    r    r    r!   <module>   sZ   



$

#


/