o
    d;                     @   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  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 d/e/e0d d0e0d1d2e0d0d1gg	d3d4 d5d6d7 Z1G d8d9 d9Z2ejd:e3ee4gd;d< Z5d=d> Z6d?d@ Z7dAdB Z8dCdD Z9e
j:dEdF Z;dS )G    )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dtypeN      )nprandomrandint)a1a2 r   R/app/.heroku/python/lib/python3.10/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   |\}}|rt |tddd}t |tddd}d}tj||d}|}||f}	||f}
| r7t|	}	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_array1   s   r/   c                 C   s   |\}}|rt |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   IndexZastyper*   r    r!   r+   r   r   r   test_binary_ufunc_with_indexK   s   r1   shuffleZ	unalignedZalignedc                 C   s   |\}}|rt |tddd}t |tddd}d}tj||d}tj||d}	tjt|}
|rM|	|
}	| rD|		|d j
}n|	|	d j
}n|j
}||f}||	f}| rftt|}tt|}tj|| ||d}|| }t|| d S )Nr   r   r   r   r)   r   )r   r   r   r   r   r   ZpermutationlenZtakealignr   tupler*   r    r!   )r'   r2   r   r   r   r   r   r   r#   r,   idxr   r-   r.   r%   r$   r   r   r   test_binary_ufunc_with_seriesh   s,   

r7   c                 C   s|   |\}}|r
t |}d}tj|dd}||f}||f}	|r)tt|}tt|	}	tj| |	 dd}
| | }t||
 d S )Nr   r   r)   )r   r   r   r5   r*   r    r!   )r   r   r'   r   r"   _r,   r#   r.   r-   r%   r$   r   r   r   test_binary_ufunc_scalar   s   r9   z$ignore:divide by zero:RuntimeWarningc           
      C   s   |\}}d||dk< d||dk< |r&t |tddd}t |tddd}t|}t|}|r8|jdd}| ||}t|tsDJ | ||}	t|	tsPJ t|	d t|d  t|	d t|d  d S )N   r   r   r   )frac)	r   r   r   r   sample
isinstancer5   r    r!   )
r   r   r2   r   r   r   s1s2r%   r$   r   r   r   "test_multiple_output_binary_ufuncs   s    	



r@   c                 C   s   |\}}| r
t |}tj|dd}t|}t|}t|ts"J t|ts)J t|d tj|d dd t|d tj|d dd d S )Nr   r)   r   r:   )	r   r   r   r   modfr=   r5   r    r!   )r   r   r"   r8   r#   r$   r%   r   r   r   test_multiple_output_ufunc   s   

"rB   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   r>   r?   r$   r   r   r   #test_binary_ufunc_drops_series_name   s
   
rE   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Zdd ZdS )z$test_object_series_ok.<locals>.DummyreturnNc                 S   
   || _ d S NvalueselfrJ   r   r   r   __init__      
z-test_object_series_ok.<locals>.Dummy.__init__c                 S   s   | j |j  S rH   rI   rL   r,   r   r   r   __add__      z,test_object_series_ok.<locals>.Dummy.__add__rF   N)__name__
__module____qualname__rM   rP   r   r   r   r   Dummy   s    
rV   r   r:   )r   arrayr   r   r    r!   add)rV   r"   serr   r   r   test_object_series_ok   s
   
".rZ   )r:   r
   r   r   ZInt64ZFloat32)r:   r   r   zSparse[int])2000Z2010Z2001ZCETD)freq)z1 Dayz3 Daysz2 Daysr:   r   r
   c                 C   s
   t | jS rH   )strr	   )xr   r   r   <lambda>  s   
 r`   )paramsr   c                 C   s   | j S rH   )param)requestr   r   r   values_for_np_reduce   s   rd   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestNumpyReductionsc                 C   s,  |}|}t d  ||}W d    n1 sw   Y  t|tjjjr2tjj	dd}|j
| |jjdv rotj|}|tju rQ|jdd}	t ||	 d S |tju rc|j }	||	ksaJ d S | }	||	ksmJ d S dg d}
tjt|
d tj| W d    d S 1 sw   Y  d S )	NzSparseArray has no 'prod')reasonZiufFZnumeric_only|)does not support reductionunsupported operand typez$ufunc 'multiply' cannot use operandsmatch)r    assert_produces_warningr=   r   coreZarraysr   pytestmarkZxfailnodeZ
add_markerr	   kindr   multiplyreduce	DataFrameprodr!   r0   _valuesjoinraises	TypeError)rL   rd   box_with_arrayrc   boxvaluesobjrp   r$   r%   msgr   r   r   test_multiply  s0   



"z!TestNumpyReductions.test_multiplyc           	      C   s  |}|}t d  ||}W d    n1 sw   Y  |jjdv rZtj|}|tju r<|j	dd}t 
|| d S |tju rN|j	 }||ksLJ d S |	 }||ksXJ d S dg d}tjt|d tj| W d    d S 1 szw   Y  d S )NZmiufFrg   rh   )ri   rj   zufunc 'add' cannot use operandsrk   )r    rm   r	   rr   r   rX   rt   r   ru   sumr!   r0   rw   rx   ro   ry   rz   )	rL   rd   r{   r|   r}   r~   r$   r%   r   r   r   r   test_add4  s*   



"zTestNumpyReductions.test_addc           	      C      |}|}d}|t ju r|jjdv rd}td  ||}W d    n1 s'w   Y  tj|}|t j	u rE|j
dd}t|| d S |d }||ksOJ |r[t|t|ks]J d S d S )NTifFrg   r:   )r   r0   r	   rr   r    rm   r   maximumrt   ru   maxr!   type	rL   rd   r{   r|   r}   Z	same_typer~   r$   r%   r   r   r   test_maxR  s$   

zTestNumpyReductions.test_maxc           	      C   r   )NTr   Frg   r   )r   r0   r	   rr   r    rm   r   minimumrt   ru   minr!   r   r   r   r   r   test_minj  s$   

zTestNumpyReductions.test_minN)rS   rT   rU   r   r   r   r   r   r   r   r   re     s
    "re   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   rX   Zto_numpyr    r!   )r   rC   rD   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dZdd Zdef fddZdefd	d
ZdS )z#test_object_dtype_ok.<locals>.ThingrF   Nc                 S   rG   rH   rI   rK   r   r   r   rM     rN   z,test_object_dtype_ok.<locals>.Thing.__init__c                 S   s   t |d|}t| | j| S )NrJ   )getattrr   rJ   rO   r   r   r   rP     s   z+test_object_dtype_ok.<locals>.Thing.__add__c                    s   t | u o| j|jkS rH   )r   rJ   rO   Thingr   r   __eq__  s   z*test_object_dtype_ok.<locals>.Thing.__eq__c                 S   s   d| j  dS )NzThing()rI   )rL   r   r   r   __repr__  s   z,test_object_dtype_ok.<locals>.Thing.__repr__rR   )	rS   rT   rU   rM   rP   boolr   r^   r   r   r   r   r   r     s
    
r   r:   r   r
   )r   r   r   rX   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    d S 1 s)w   Y  d S )Nr   rk   )r   r   r   rW   ro   ry   NotImplementedErrorr    ZEMPTY_STRING_PATTERNsubtractouter)rY   r~   r   r   r   
test_outer  s
   "r   c                  C   sL   t jg dgd} t jg dd}t jdgd}t| |}t|| d S )N)r:   r   )dataf   )r   ru   r   matmulr    Zassert_frame_equal)Zdf1Zdf2r%   r$   r   r   r   test_np_matmul  s
   r   c                  C   s   dd } t | dd}tddg}|||d}tjddgtd}t|| tddgg}d}tj	t
t|d	 |||| W d    d S 1 sMw   Y  d S )
Nc                 S   s   | | | S rH   r   )r_   yzr   r   r   add3  rQ   z2test_array_ufuncs_for_many_arguments.<locals>.add3r
   r:   r   r   r   zTCannot apply ufunc <ufunc 'add3 (vectorized)'> to mixed DataFrame and Series inputs.rk   )r   Z
frompyfuncr   r   objectr    r!   ru   ro   ry   r   reescape)r   r   rY   r$   r%   Zdfr   r   r   r   $test_array_ufuncs_for_many_arguments  s   "r   c                  C   s6   t g d} t| }t g d}t|| d S )N)g      g      g      ?g      ?)g      g       g        g      ?)r   r   r   Zfixr    r!   )rY   r$   r%   r   r   r   test_np_fix  s   
r   )<collectionsr   r   r   numpyr   ro   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   Zpandas._testingZ_testingr    Zpandas.arraysr   rX   Z	logaddexpZBINARY_UFUNCSZSPARSEZ
SPARSE_IDSZfixturer   rp   ZparametrizeZpositivefloorexpr&   r/   r1   r7   r9   divmodfilterwarningsr@   rB   rE   rZ   rW   r   to_datetimeZtz_localizeZ	to_periodZto_timedeltaZIntervalIndexZIntervalrd   re   r   r5   r   r   r   r   r   Z&skip_copy_on_write_not_yet_implementedr   r   r   r   r   <module>   s    
&


&
s
		
