o
    Eh9                     @   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ejgddd Zejejdejjdd	gd
dgddd
 Zejdd Zejdejejejgdd Zejjddd	gddgddd Z ejjddd	gddgddd Z!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dd	gdd  Z#ejdej$gejddd	gej%d!d"d# Z&d$d% Z'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 d0e,g d0-d1e,g d0j.d2d3e/g d4e0e1d d5e1d6d7e1d5d6gg	d8d9 dd:d; Z2G d<d= d=Z3ejd>e4ee5gd?d@ Z6dAdB Z7dCdD Z8dEdF Z9dGdH Z:e
j;dIdJ Z<dS )K    )dequeN)SparseArray)paramsc                 C      | j S Nparamrequest r   >lib/python3.10/site-packages/pandas/tests/series/test_ufunc.pyufunc   s   r   T)ZmarksFsparseZdense)r   idsc                 C   r   r   r   r	   r   r   r   r      s   c                  C   sX   t jdjddddd} t jd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default_rngintegers)a1a2r   r   r   arrays_for_binary_ufunc   s
   r   c                 C   s   t jd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   r   nameindexr   )r   r   r   r   r   pdSparseDtypeliststringZascii_lettersSeriestmassert_series_equal)r   r   arrr!   r   seriesresultexpectedr   r   r   test_unary_ufunc)   s   r-   flipZflippedZstraight)r   c                 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_array:   s   r6   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astyper1   r'   r(   r2   r   r   r   test_binary_ufunc_with_indexR   s   r8   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dt|}
|rP|		|
}	| rG|	
|d j}n|
|	d j}n|j}||f}||	f}| ritt|}tt|}tj|| ||d}|| }t|| d S )Nr   r   r   r   r0   r   r    )r   r"   r#   r&   r   r   r   ZpermutationlenZtakeZalignr!   tupler1   r'   r(   )r.   r9   r   r   r   r   r   r   r*   r3   idxr!   r4   r5   r,   r+   r   r   r   test_binary_ufunc_with_seriesm   s,   
r=   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   r0   )r   r"   r&   r;   r1   r'   r(   )r   r   r.   r   r)   _r3   r*   r5   r4   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< |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   )Zfrac)	r   r"   r#   r&   Zsample
isinstancer;   r'   r(   )
r   r   r9   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s"J t|ts)J t|d tj|d dd t|d tj|d dd d S )Nr   r0   r   r@   )	r   r"   r&   r   ZmodfrA   r;   r'   r(   )r   r   r)   r>   r*   r+   r,   r   r   r   test_multiple_output_ufunc   s   

"rE   c                 C   s@   |\}}t j|dd}t j|dd}| ||}|jd u sJ d S )Nar0   b)r"   r&   r   )r   r   r   r   r   rB   rC   r+   r   r   r   #test_binary_ufunc_drops_series_name   s
   
rH   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 r   valueselfrL   r   r   r   __init__      
z-test_object_series_ok.<locals>.Dummy.__init__c                 S   s   | j |j  S r   rK   rN   r3   r   r   r   __add__      z,test_object_series_ok.<locals>.Dummy.__add__rI   N)__name__
__module____qualname__rO   rR   r   r   r   r   Dummy   s    
rX   r   r@   )r   arrayr"   r&   r'   r(   add)rX   r)   serr   r   r   test_object_series_ok   s
   
".r\   )r@   r   r   r   ZInt64ZFloat32)r@   r   r   zSparse[int])Z2000Z2010Z2001ZCETD)Zfreq)z1 Dayz3 Daysz2 Daysr@   r   r   c                 C   s
   t | jS r   )strr   )xr   r   r   <lambda>  s   
 r`   c                 C   r   r   r   r	   r   r   r   values_for_np_reduce   s   ra   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r1tjj	dd}|
| |jjdv rntj|}|tju rP|jdd}	t ||	 d S |tju rb|j }	||	ks`J d S | }	||	kslJ 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_warningrA   r"   coreZarraysr   pytestmarkZxfailZapplymarkerr   kindr   Zmultiplyreduce	DataFrameZprodr(   r7   _valuesjoinraises	TypeError)rN   ra   box_with_arrayr
   boxvaluesobjrm   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miufFrd   re   )rf   rg   zufunc 'add' cannot use operandsrh   )r'   rj   r   rn   r   rZ   ro   r"   rp   sumr(   r7   rq   rr   rl   rs   rt   )	rN   ra   ru   rv   rw   rx   r+   r,   ry   r   r   r   test_add1  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fFrd   r@   )r"   r7   r   rn   r'   rj   r   Zmaximumro   rp   maxr(   type	rN   ra   ru   rv   rw   Z	same_typerx   r+   r,   r   r   r   test_maxO  s$   

zTestNumpyReductions.test_maxc           	      C   r}   )NTr~   Frd   r   )r"   r7   r   rn   r'   rj   r   Zminimumro   rp   minr(   r   r   r   r   r   test_ming  s$   

zTestNumpyReductions.test_minN)rU   rV   rW   rz   r|   r   r   r   r   r   r   rb     s
    "rb   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   r0   )r   r      )r"   r&   r   rZ   Zto_numpyr'   r(   )r   rF   rG   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>.ThingrI   Nc                 S   rJ   r   rK   rM   r   r   r   rO     rP   z,test_object_dtype_ok.<locals>.Thing.__init__c                 S   s   t |d|}t| | j| S )NrL   )getattrr   rL   rQ   r   r   r   rR     s   z+test_object_dtype_ok.<locals>.Thing.__add__c                    s   t | u o| j|jkS r   )r   rL   rQ   Thingr   r   __eq__  s   z*test_object_dtype_ok.<locals>.Thing.__eq__c                 S   s   d| j  dS )NzThing()rK   )rN   r   r   r   __repr__  s   z,test_object_dtype_ok.<locals>.Thing.__repr__rT   )	rU   rV   rW   rO   rR   boolr   r^   r   r   r   r   r   r     s
    
r   r@   r   r   )r"   r&   r   rZ   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dd tj| | W d    d S 1 s(w   Y  d S )Nr    rh   )	r"   r&   r   rY   rl   rs   NotImplementedErrorsubtractZouter)r[   rx   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"   rp   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 r   r   )r_   yzr   r   r   add3  rS   z2test_array_ufuncs_for_many_arguments.<locals>.add3r   r@   r   r   r   zTCannot apply ufunc <ufunc 'add3 (vectorized)'> to mixed DataFrame and Series inputs.rh   )r   Z
frompyfuncr"   r&   objectr'   r(   rp   rl   rs   r   reescape)r   r   r[   r+   r,   Zdfry   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(   )r[   r+   r,   r   r   r   test_np_fix  s   
r   )=collectionsr   r   r%   Znumpyr   rl   Zpandas.util._test_decoratorsutilZ_test_decoratorsZtdZpandasr"   Zpandas._testingZ_testingr'   Zpandas.arraysr   ZfixturerZ   Z	logaddexpr   r   rm   Zfails_arm_wheelsr   r   ZparametrizeZpositiveZfloorZexpr-   r6   r8   r=   r?   divmodfilterwarningsrD   rE   rH   r\   rY   r   Zto_datetimeZtz_localizeZ	to_periodZto_timedeltaZIntervalIndexZIntervalra   rb   r$   r;   r   r   r   r   r   Z&skip_copy_on_write_not_yet_implementedr   r   r   r   r   <module>   sv    





&


&
s
		
