o
    i;                     @   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sparse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   Y/var/www/edux/Edux_v2/venv/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(   flipflipped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_array0   s   r2   c                 C   s   |\}}|rt |tddd}t |tddd}d}tj||d}|s'd nt}t| tj||dd}	W d    n1 sCw   Y  ||f}
||	f}| rZt	|
}
t	|}tj||
 |d}|| }t
|| d S r,   )r   r   r   r!   FutureWarningr"   assert_produces_warningIndexastyper.   r#   )r)   r   r   r   r   r   r   r%   warnr/   r0   r1   r'   r&   r   r   r   test_binary_ufunc_with_indexJ   s$   r8   shuffle	unaligned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   permutationlentakealignr   tupler.   r"   r#   )r)   r9   r   r   r   r   r   r   r%   r/   idxr   r0   r1   r'   r&   r   r   r   test_binary_ufunc_with_seriesi   s,   

rB   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!   r@   r.   r"   r#   )r   r   r)   r   r$   _r/   r%   r1   r0   r'   r&   r   r   r   test_binary_ufunc_scalar   s   rD   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
isinstancer@   r"   r#   )
r   r   r9   r   r   r   s1s2r'   r&   r   r   r   "test_multiple_output_binary_ufuncs   s    	



rK   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   rE   )	r   r   r!   r   modfrH   r@   r"   r#   )r   r   r$   rC   r%   r&   r'   r   r   r   test_multiple_output_ufunc   s   

"rM   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   rI   rJ   r&   r   r   r   #test_binary_ufunc_drops_series_name   s
   
rP   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selfrU   r   r   r   __init__      
z-test_object_series_ok.<locals>.Dummy.__init__c                 S   s   | j |j  S rS   rT   rW   r/   r   r   r   __add__   s   z,test_object_series_ok.<locals>.Dummy.__add__rQ   N)__name__
__module____qualname__rX   r[   r   r   r   r   Dummy   s    
r`   r   rE   )r   arrayr   r!   r"   r#   add)r`   r$   serr   r   r   test_object_series_ok   s
   
".rd   )rE   r   r   r
   Int64Float32)rE   r   r   Sparse[int])200020102001CETD)freq)z1 Dayz3 Daysz2 DaysrE   r   r   c                 C   s
   t | jS rS   )strr   )xr   r   r   <lambda>	  s   
 rp   )paramsr   c                 C   s   | j S rS   )param)requestr   r   r   values_for_np_reduce   s   rt   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestNumpyReductionsc                 C   s\  |}|}d }t |jdr|tju rt}d}tj||d ||}W d    n1 s+w   Y  t|tjj	j
rJ|tjurJtjjdd}	|j|	 |jjdv rtj|}
|tju ri|jdd}t|
| d S |tju r{|j }|
|ksyJ d S | }|
|ksJ d S d	g d
}tjt|d tj| W d    d S 1 sw   Y  d S )Nrg   !passing a SparseArray to pd.IndexmatchzSparseArray has no 'prod')reasoniufFnumeric_only|)does not support reductionunsupported operand typez$ufunc 'multiply' cannot use operands)r   r   r   r5   r3   r"   r4   rH   corearraysr   pytestmarkxfailnode
add_markerkindr   multiplyreduce	DataFrameprodr#   _valuesjoinraises	TypeError)rW   rt   box_with_arrayrs   boxvaluesr7   msgobjr   r&   r'   r   r   r   test_multiply  s8   



"z!TestNumpyReductions.test_multiplyc           
      C   s(  |}|}d }t |jdr|tju rt}d}tj||d ||}W d    n1 s+w   Y  |jjdv rmtj	
|}|tju rO|jdd}	t||	 d S |tju ra|j }	||	ks_J d S | }	||	kskJ d S dg d}tjt|d tj	
| W d    d S 1 sw   Y  d S )	Nrg   rv   rw   miufFr{   r}   )r~   r   zufunc 'add' cannot use operands)r   r   r   r5   r3   r"   r4   r   r   rb   r   r   sumr#   r   r   r   r   r   )
rW   rt   r   r   r   r7   r   r   r&   r'   r   r   r   test_add:  s2   



"zTestNumpyReductions.test_addc                 C      |}|}d}|t ju r|jjdv rd}d }t|jdr"|t ju r"t}d}tj||d ||}W d    n1 s:w   Y  tj	
|}	|t ju rX|jdd}
t|	|
 d S |d }
|	|
ksbJ |rnt|	t|
kspJ d S d S )	NTifFrg   rv   rw   r{   rE   )r   r5   r   r   r   r3   r"   r4   r   maximumr   r   maxr#   typerW   rt   r   r   r   	same_typer7   r   r   r&   r'   r   r   r   test_max\  s,   

zTestNumpyReductions.test_maxc                 C   r   )	NTr   Frg   rv   rw   r{   r   )r   r5   r   r   r   r3   r"   r4   r   minimumr   r   minr#   r   r   r   r   r   test_minx  s,   

zTestNumpyReductions.test_minN)r]   r^   r_   r   r   r   r   r   r   r   r   ru     s
    '"ru   type_c                 C   sT   t jg ddd}| g d}t||}t jt| |dd}t|| d S )NrE   r   r   r   r-   )r   r      )r   r!   r   rb   to_numpyr"   r#   )r   rN   rO   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>.ThingrQ   Nc                 S   rR   rS   rT   rV   r   r   r   rX     rY   z,test_object_dtype_ok.<locals>.Thing.__init__c                 S   s   t |d|}t| | j| S )NrU   )getattrr   rU   rZ   r   r   r   r[     s   z+test_object_dtype_ok.<locals>.Thing.__add__c                    s   t | u o| j|jkS rS   )r   rU   rZ   Thingr   r   __eq__  s   z*test_object_dtype_ok.<locals>.Thing.__eq__c                 S   s   d| j  dS )NzThing()rT   )rW   r   r   r   __repr__  s   z,test_object_dtype_ok.<locals>.Thing.__repr__r\   )	r]   r^   r_   rX   r[   boolr   rn   r   r   r   r   r   r     s
    
r   rE   r   r   )r   r!   r   rb   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   rw   )r   r!   r   ra   r   r   NotImplementedErrorr"   EMPTY_STRING_PATTERNsubtractouter)rc   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 s0w   Y  t|| d S )N)rE   r   )dataf   zon non-alignedrw   )r   r   r"   r4   r3   r   matmulassert_frame_equal)df1df2expected_resultr&   r   r   r   test_np_matmul  s   r   )6collectionsr   r   numpyr   r   pandas.core.dtypes.commonr   pandasr   pandas._testing_testingr"   pandas.arraysr   rb   	logaddexpBINARY_UFUNCSSPARSE
SPARSE_IDSfixturer   r   parametrizepositivefloorexpr(   r2   r8   rB   rD   divmodfilterwarningsrK   rM   rP   rd   ra   r	   to_datetimetz_localize	to_periodto_timedeltaIntervalIndexIntervalrt   ru   r   r@   r   r   r   r   r   r   r   r   <module>   s    
&


&
 
		