U
    ÎZjÛ;  ã                   @   sr  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&d&d'd(gej'd)�e	j&d&d'd(gd*d)�e	j&d&d'd(gd+d)�e	j&d&d,d(gd-d)�e	 (d.d/d0g¡e	 (d.d/d0g¡ )d1¡e	 (d.d/d0g¡j*d2d3�e	 +d4d5d6g¡e	 ,e	 -d d&¡e	 -d(d'¡e	 -d&d(¡g¡g	d7d8„ d9�d:d;„ ƒZ.G d<d=„ d=ƒZ/ej d>e0ee1g¡d?d@„ ƒZ2dAdB„ Z3dCdD„ Z4dEdF„ Z5dS )Gé    )Ú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   úa/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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 5 Q R X ||f}
||	f}| r t	|
ƒ}
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"    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}| rÌt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(   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    r8   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ƒsˆt‚| ||ƒ}	t|	tƒs t‚t 	|	d t |d ¡¡ t 	|	d t |d ¡¡ d S )Né   r   r   r	   )Úfrac)
r   r   r   r    ÚsampleÚ
isinstancer8   ÚAssertionErrorr!   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ƒsDt‚t|tƒsRt‚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@   r8   rA   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 ks<t‚d S )NÚar*   Úb)r   r    r   rA   )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Float32r   úSparse[int]Ú2000Z2010Z2001ZCETÚD)Úfreqz1 Dayz3 Daysz2 Daysc                 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   s.  |}|}d }t |jdƒr&|tjkr&t}d}tj||d�� ||ƒ}W 5 Q R X t|tjj	j
ƒr€|tjk	r€tjjdd�}	|j |	¡ |jjdkrôtj |¡}
|tjkr¼|jdd�}t |
|¡ n6|tjkrÞ|j ¡ }|
|ksòt‚n| ¡ }|
|ksòt‚n6d	 d
ddg¡}tjt|d�� tj |¡ W 5 Q R X 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   r@   ÚcoreZarraysr   ÚpytestÚmarkZxfailÚnodeZ
add_markerÚkindr   ÚmultiplyÚreduceÚ	DataFrameÚprodr"   Ú_valuesrA   ÚjoinÚraisesÚ	TypeError)rP   rg   Úbox_with_arrayrf   ÚboxÚvaluesr3   ÚmsgÚobjrs   r%   r&   r   r   r   Útest_multiply  s:    


ýÿz!TestNumpyReductions.test_multiplyc           
   	   C   sú   |}|}d }t |jdƒr&|tjkr&t}d}tj||d�� ||ƒ}W 5 Q R X |jjdkrÀtj	 
|¡}|tjkrˆ|jdd�}	t ||	¡ qö|tjkrª|j ¡ }	||	ks¾t‚qö| ¡ }	||	ksöt‚n6d dd	d
g¡}tjt|d�� tj	 
|¡ W 5 Q R X 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   rA   r{   rr   r|   r}   )
rP   rg   r~   r   r€   r3   r�   r‚   r%   r&   r   r   r   Útest_add:  s4    


ýÿzTestNumpyReductions.test_addc              	   C   sÊ   |}|}d}|t jkr&|jjdkr&d}d }t|jdƒrD|t jkrDt}d}tj||d�� ||ƒ}W 5 Q R X tj	 
|¡}	|t jkrš|jdd�}
t |	|
¡ n,|d }
|	|
ks®t‚|rÆt|	ƒt|
ƒksÆt‚d S )	NT©ÚiÚfFr\   ri   rj   rm   r=   )r   r2   r
   ru   r   r0   r!   r1   r   Úmaximumrw   rx   Úmaxr"   rA   Ú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kr&|jjdkr&d}d }t|jdƒrD|t jkrDt}d}tj||d�� ||ƒ}W 5 Q R X tj	 
|¡}	|t jkrš|jdd�}
t |	|
¡ n,|d }
|	|
ks®t‚|rÆt|	ƒt|
ƒksÆt‚d S )	NTr†   Fr\   ri   rj   rm   r   )r   r2   r
   ru   r   r0   r!   r1   r   Úminimumrw   rx   Úminr"   rA   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   sX   t jdddgdd�}| dddgƒ}t ||¡}t jt | ¡ |¡dd�}t ||¡ d S )Nr=   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 |ƒˆ k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   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 )Nr=   r   r   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   sj   t jdddggd�} t jdddgd�}t jdgd�}tjtdd�� t | |¡}W 5 Q R X t ||¡ d S )Néÿÿÿÿr=   r   )Údataéf   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   r8   r“   rœ   r    r¥   r   r   r   r   Ú<module>   s€   
&


&÷ô
 
		