a
    j=ic;                     @   sb  d dl mZ 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 ejejgZddgZddgZejd	d
 Zejdejejejg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ddg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e	j&g d&ej'd'e	j&g d&d(d'e	j&g d&d)d'e	j&g d*d+d'e	(g d,e	(g d,)d-e	(g d,j*d.d/e	+g d0e	,e	-d d1e	-d2d3e	-d1d2gg	d4d5 d6d7d8 Z.G d9d: d:Z/ejd;e0ee1gd<d= Z2d>d? Z3d@dA Z4dBdC Z5dS )D    )dequeN)is_dtype_equal)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dtypeN      )nprandomrandint)a1a2 r   o/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/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}|sNd nt}t|$ tj||dd}	W d    n1 s0    Y  ||f}
||	f}| rt	|
}
t	|}tj||
 |d}|| }t
|| d S r)   )r   r   r   r    FutureWarningr!   assert_produces_warningIndexZastyper+   r"   )r(   r   r   r   r   r   r   r$   warnr,   r-   r.   r&   r%   r   r   r   test_binary_ufunc_with_indexJ   s"    2r4   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lentakealignr   tupler+   r!   r"   )r(   r5   r   r   r   r   r   r   r$   r,   idxr   r-   r.   r&   r%   r   r   r   test_binary_ufunc_with_seriesi   s,    

r;   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    r9   r+   r!   r"   )r   r   r(   r   r#   _r,   r$   r.   r-   r&   r%   r   r   r   test_binary_ufunc_scalar   s    r=   z$ignore:divide by zero:RuntimeWarningc           
      C   s   |\}}d||dk< d||dk< |rLt |tddd}t |tddd}t|}t|}|rp|jdd}| ||}t|tsJ | ||}	t|	tsJ t|	d t|d  t|	d t|d  d S )N   r   r   r	   )frac)	r   r   r   r    sample
isinstancer9   r!   r"   )
r   r   r5   r   r   r   s1s2r&   r%   r   r   r   "test_multiple_output_binary_ufuncs   s     	



rD   c                 C   s   |\}}| rt |}tj|dd}t|}t|}t|tsDJ t|tsRJ t|d tj|d dd t|d tj|d dd d S )Nr   r*   r   r>   )	r   r   r    r   modfrA   r9   r!   r"   )r   r   r#   r<   r$   r%   r&   r   r   r   test_multiple_output_ufunc   s    

rF   c                 C   s@   |\}}t j|dd}t j|dd}| ||}|jd u s<J d S )Nar*   b)r   r    r   )r   r   r   r   r   rB   rC   r%   r   r   r   #test_binary_ufunc_drops_series_name   s
    
rI   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ddZdd ZdS )z$test_object_series_ok.<locals>.DummyNreturnc                 S   s
   || _ d S NvalueselfrN   r   r   r   __init__   s    z-test_object_series_ok.<locals>.Dummy.__init__c                 S   s   | j |j  S rL   rM   rP   r,   r   r   r   __add__   s    z,test_object_series_ok.<locals>.Dummy.__add__)__name__
__module____qualname__rQ   rS   r   r   r   r   Dummy   s   rW   r   r>   )r   arrayr   r    r!   r"   add)rW   r#   serr   r   r   test_object_series_ok   s
    
"r[   )r>   r   r   r	   ZInt64ZFloat32)r>   r   r   Sparse[int])2000Z2010Z2001ZCETD)freq)z1 Dayz3 Daysz2 Daysr>   r   r   c                 C   s
   t | jS rL   )strr
   )xr   r   r   <lambda>	      rb   )paramsr   c                 C   s   | j S rL   )param)requestr   r   r   values_for_np_reduce   s    rg   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestNumpyReductionsc                 C   sZ  |}|}d }t |jdr&|tju r&t}d}tj||d ||}W d    n1 sV0    Y  t|tjj	j
r|tjurtjjdd}	|j|	 |jjdv rtj|}
|tju r|jdd}t|
| n8|tju r|j }|
|ksJ n| }|
|ksVJ nJd	g d
}tjt|d tj| W d    n1 sL0    Y  d S )Nr\   !passing a SparseArray to pd.IndexmatchzSparseArray has no 'prod')reasonZiufFZnumeric_only|)does not support reductionunsupported operand typez$ufunc 'multiply' cannot use operands)r   r
   r   r2   r0   r!   r1   rA   coreZarraysr   pytestmarkZxfailnodeZ
add_markerkindr   multiplyreduce	DataFrameprodr"   _valuesjoinraises	TypeError)rP   rg   box_with_arrayrf   boxvaluesr3   msgobjrs   r%   r&   r   r   r   test_multiply  s4    &


z!TestNumpyReductions.test_multiplyc           
      C   s"  |}|}d }t |jdr&|tju r&t}d}tj||d ||}W d    n1 sV0    Y  |jjdv rtj	
|}|tju r|jdd}	t||	 n6|tju r|j }	||	ksJ n| }	||	ksJ nJdg d}tjt|d tj	
| W d    n1 s0    Y  d S )	Nr\   ri   rj   ZmiufFrm   rn   )ro   rp   zufunc 'add' cannot use operands)r   r
   r   r2   r0   r!   r1   ru   r   rY   rw   rx   sumr"   rz   r{   rr   r|   r}   )
rP   rg   r~   r   r   r3   r   r   r%   r&   r   r   r   test_add:  s.    &


zTestNumpyReductions.test_addc                 C   s   |}|}d}|t ju r&|jjdv r&d}d }t|jdrD|t ju rDt}d}tj||d ||}W d    n1 st0    Y  tj	
|}	|t ju r|jdd}
t|	|
 n,|d }
|	|
ksJ |rt|	t|
ksJ d S )	NTifFr\   ri   rj   rm   r>   )r   r2   r
   ru   r   r0   r!   r1   r   maximumrw   rx   maxr"   typerP   rg   r~   r   r   Z	same_typer3   r   r   r%   r&   r   r   r   test_max\  s&    &
zTestNumpyReductions.test_maxc                 C   s   |}|}d}|t ju r&|jjdv r&d}d }t|jdrD|t ju rDt}d}tj||d ||}W d    n1 st0    Y  tj	
|}	|t ju r|jdd}
t|	|
 n,|d }
|	|
ksJ |rt|	t|
ksJ d S )	NTr   Fr\   ri   rj   rm   r   )r   r2   r
   ru   r   r0   r!   r1   r   minimumrw   rx   minr"   r   r   r   r   r   test_minx  s&    &
zTestNumpyReductions.test_minN)rT   rU   rV   r   r   r   r   r   r   r   r   rh     s   '"rh   type_c                 C   sT   t jg ddd}| g d}t||}t jt| |dd}t|| d S )Nr>   r   r   r   r*   )r   r      )r   r    r   rY   Zto_numpyr!   r"   )r   rG   rH   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                       sB   e Zd Zdd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>.ThingNrJ   c                 S   s
   || _ d S rL   rM   rO   r   r   r   rQ     s    z,test_object_dtype_ok.<locals>.Thing.__init__c                 S   s   t |d|}t| | j| S )NrN   )getattrr   rN   rR   r   r   r   rS     s    z+test_object_dtype_ok.<locals>.Thing.__add__c                    s   t | u o| j|jkS rL   )r   rN   rR   Thingr   r   __eq__  s    z*test_object_dtype_ok.<locals>.Thing.__eq__c                 S   s   d| j  dS )NzThing()rM   )rP   r   r   r   __repr__  s    z,test_object_dtype_ok.<locals>.Thing.__repr__)	rT   rU   rV   rQ   rS   boolr   r`   r   r   r   r   r   r     s   r   r>   r   r   )r   r    r   rY   r!   r"   )sr%   r&   r   r   r   test_object_dtype_ok  s
    r   c                  C   s^   t g d} tg d}tjttjd tj	
| | W d    n1 sP0    Y  d S )Nr   rj   )r   r    r   rX   rr   r|   NotImplementedErrorr!   ZEMPTY_STRING_PATTERNsubtractouter)rZ   r   r   r   r   
test_outer  s    r   c                  C   sz   t jg dgd} t jg dd}t jdgd}tjtdd t| |}W d    n1 s`0    Y  t|| d S )N)r>   r   )dataf   zon non-alignedrj   )r   rx   r!   r1   r0   r   matmulZassert_frame_equal)Zdf1Zdf2Zexpected_resultr%   r   r   r   test_np_matmul  s    *r   )6collectionsr   r   numpyr   rr   Zpandas.core.dtypes.commonr   Zpandasr   Zpandas._testingZ_testingr!   Zpandas.arraysr   rY   Z	logaddexpZBINARY_UFUNCSZSPARSEZ
SPARSE_IDSZfixturer   rs   ZparametrizeZpositivefloorexpr'   r/   r4   r;   r=   divmodfilterwarningsrD   rF   rI   r[   rX   r   to_datetimeZtz_localizeZ	to_periodZto_timedeltaZIntervalIndexZIntervalrg   rh   r   r9   r   r   r   r   r   r   r   r   <module>   s   
&


&
 
		