U
    f/ez&                     @   s  d dl mZ 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 ejejejgZejejgZddgZddgZddgZejdd	 Zejd
eejjdeeddd Zejd
eejjdeedejjdddgddgddd Zejd
eejjdeedejjdddgddgddd Zejd
eejjdeedejjdddgddgdejjdddgddgddd Zejd
eejjdeedejdddgdd Zejd
ej gejjdeedejdeej!ddd Z"ejjdeeddd  Z#ejjdeedejd
ed!d" Z$d#d$ Z%ejd%ej&d&d'd(gd)d*ej&d&d+d gd,d*e'd-d.d/ge'd-d.d/g(d0e'd-d.d/gj)d1d2gd3d4 Z*ejd5e+ee,gd6d7 Z-d8d9 Z.d:d; Z/dS )<    )dequeN)SparseArrayTFsparseZdensec                  C   sL   t jjddddd} t jjddddd}d| ddd< d|ddd< | |fS )	zO
    A pair of random, length-100 integer-dtype arrays, that are mostly 0.
    r   
   d   int64ZdtypeN      )nprandomrandint)a1a2 r   B/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/series/test_ufunc.pyarrays_for_binary_ufunc   s
    r   ufunc)idsc                 C   s   t jjddddd}d|d d d< |r:t|tddd}ttjd d }d}tj	|||d}| |}tj	| |||d}t
|| d S )Nr   r   r   r      nameindexr   )r   r   r   r   pdSparseDtypeliststringascii_lettersSeriestmassert_series_equal)r   r   arrr   r   seriesresultexpectedr   r   r   test_unary_ufunc   s    r%   flipZflippedZstraightc                 C   s   |\}}|r4t |tddd}t |tddd}d}tj||d}|}||f}	||f}
| rnt|	}	t|
}
tj||	 |d}||
 }t|| d S Nr   r   r   r   r   )r   r   r   r   reversedr   r    r&   r   r   r   r   r   r   r"   other
array_argsseries_argsr$   r#   r   r   r   test_binary_ufunc_with_array0   s    r.   c                 C   s   |\}}|r4t |tddd}t |tddd}d}tj||d}tj||dd}||f}	||f}
| r~t|	}	t|
}
tj||	 |d}||
 }t|| d S r'   )	r   r   r   r   ZIndexZastyper)   r   r    r*   r   r   r   test_binary_ufunc_with_indexJ   s    r/   shuffleZ	unalignedZalignedc                 C   s   |\}}|r4t |tddd}t |tddd}d}tj||d}tj||d}	tjt|}
|r|	|
}	| r|		|d j
}q|	|	d j
}n|j
}||f}||	f}| rtt|}tt|}tj|| ||d}|| }t|| d S )Nr   r   r   r   r(   r   )r   r   r   r   r   r   ZpermutationlenZtakeZalignr   tupler)   r   r    )r&   r0   r   r   r   r   r   r   r"   r+   idxr   r,   r-   r$   r#   r   r   r   test_binary_ufunc_with_seriesf   s,    

r4   c                 C   s|   |\}}|rt |}d}tj|dd}||f}||f}	|rRtt|}tt|	}	tj| |	 dd}
| | }t||
 d S )Nr   r   r(   )r   r   r   r2   r)   r   r    )r   r   r&   r   r!   _r+   r"   r-   r,   r$   r#   r   r   r   test_binary_ufunc_scalar   s    r6   z$ignore:divide by zero:RuntimeWarningc           
      C   s   |r| t jkrtd |\}}d||dk< d||dk< |rdt|tddd}t|tddd}t|}t|}|r|jdd}| ||}t	|t
st| ||}	t	|	t
stt|	d t|d  t|	d t|d  d S )Nzsparse divmod not implemented.   r   r   r   )frac)r   divmodpytestskipr   r   r   r   sample
isinstancer2   AssertionErrorr   r    )
r   r   r0   r   r   r   s1s2r$   r#   r   r   r   "test_multiple_output_binary_ufuncs   s$    




rA   c                 C   s   |\}}| rt |}tj|dd}t|}t|}t|tsDtt|tsRtt	|d tj|d dd t	|d tj|d dd d S )Nr   r(   r   r7   )
r   r   r   r   modfr=   r2   r>   r   r    )r   r   r!   r5   r"   r#   r$   r   r   r   test_multiple_output_ufunc   s    

rC   c                 C   s@   |\}}t j|dd}t j|dd}| ||}|jd ks<td S )Nar(   b)r   r   r   r>   )r   r   r   r   r   r?   r@   r#   r   r   r   #test_binary_ufunc_drops_series_name   s
    
rF   c               
   C   s~   G dd d} t | d| dg}t|}tt ||tt || tt || dtt || d d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z$test_object_series_ok.<locals>.Dummyc                 S   s
   || _ d S NvalueselfrI   r   r   r   __init__   s    z-test_object_series_ok.<locals>.Dummy.__init__c                 S   s   | j |j  S rG   rH   rK   r+   r   r   r   __add__   s    z,test_object_series_ok.<locals>.Dummy.__add__N)__name__
__module____qualname__rL   rN   r   r   r   r   Dummy   s   rR   r   r7   )r   arrayr   r   r   r    add)rR   r!   Zserr   r   r   test_object_series_ok   s
    
"rU   valuesr7   r	   r   r   r   r   zSparse[int]2000Z2010Z2001ZCETD)freqc                 C   s&   t | }tj|| d ks"td S )Nr7   )r   r   r   maximumreducer>   )rV   rD   r   r   r   test_reduce   s    
r\   type_c                 C   sX   t jdddgdd}| dddg}t||}t jt| |dd}t|| d S )Nr7   r   r	   r   r(   r
      )r   r   r   rT   Zto_numpyr   r    )r]   rD   rE   r#   r$   r   r   r   test_binary_ufunc_other_types  s
    r_   c                     s^   G  fddd t  d dg} t|  d}t  d dg}t|| d S )Nc                       s<   e Zd Zdd Zdd Zed fddZeddd	Zd
S )z#test_object_dtype_ok.<locals>.Thingc                 S   s
   || _ d S rG   rH   rJ   r   r   r   rL     s    z,test_object_dtype_ok.<locals>.Thing.__init__c                 S   s   t |d|}t| | j| S )NrI   )getattrtyperI   rM   r   r   r   rN     s    z+test_object_dtype_ok.<locals>.Thing.__add__)returnc                    s   t | ko| j|jkS rG   )ra   rI   rM   Thingr   r   __eq__  s    z*test_object_dtype_ok.<locals>.Thing.__eq__c                 S   s   d| j  dS )NzThing()rH   )rK   r   r   r   __repr__!  s    z,test_object_dtype_ok.<locals>.Thing.__repr__N)	rO   rP   rQ   rL   rN   boolre   strrg   r   rc   r   r   rd     s   rd   r7   r   r	   )r   r   r   rT   r   r    )sr#   r$   r   rc   r   test_object_dtype_ok  s
    rk   c               	   C   sN   t dddg} tdddg}tjttjd tj	
| | W 5 Q R X d S )Nr7   r   r	   )match)r   r   r   rS   r:   ZraisesNotImplementedErrorr   ZEMPTY_STRING_PATTERNsubtractouter)rj   or   r   r   
test_outer*  s    rq   )0collectionsr   r   Znumpyr   r:   Zpandasr   Zpandas._testingZ_testingr   Zpandas.arraysr   ZpositivefloorexpZUNARY_UFUNCSrT   Z	logaddexpZBINARY_UFUNCSZSPARSEZ
SPARSE_IDSZSHUFFLEZfixturer   markZparametrizer%   r.   r/   r4   r6   r9   filterwarningsrA   rC   rF   rU   rS   Zto_datetimeZtz_localizeZ	to_periodr\   r   r2   r_   rk   rq   r   r   r   r   <module>   st   
&
 




	