a
    ±<b´)  ã                   @   sÖ  d dl mZ d dlZd dlZd dlmZ d dlm  m	Z
 d dlZd dlmZ d dlmZ dddddœgZej de¡d	d
„ ƒZej de¡dd„ ƒZej de¡dd„ ƒZej dejdg d¢feejddgddggde ddgddgg¡g d¢feje ddgddgg¡g d¢fejdg d¢feeje ddgddgg¡ddg d¢fg¡dd„ ƒZej de¡ej de¡dd„ ƒƒZej de¡d d!„ ƒZej  d"¡d#d$„ ƒZ!d%d&„ Z"d'd(„ Z#d)d*„ Z$e
 %d+¡d,d-„ ƒZ&dS ).é    )ÚpartialN)Únp_version_gte1p22)Úis_extension_array_dtypeÚint64ZInt64©ÚAÚBÚdtypec                 C   st   t jddgddggdd}tj|ddgddgd	j| d}t  |¡}tjt  |¡|j|jd
 | ¡}t 	||¡ d S ©Néÿÿÿÿé   r   ©r	   r   r   ÚaÚb©ÚcolumnsÚindex©r   r   )
ÚnpÚarrayÚpdÚ	DataFrameÚastypeZpositiver   r   ÚtmÚassert_frame_equal©r	   ÚvaluesÚdfÚresultÚexpected© r    úm/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/pandas/tests/frame/test_ufunc.pyÚtest_unary_unary   s     
ÿþr"   c           	      C   sÌ   t |ƒst|tƒr(| j tjjdd¡ tj	ddgddggdd}t
j|ddgd	d
gdj|d}t |¡}t|tƒszJ ‚t|ƒdksŠJ ‚t |¡}t||ƒD ](\}}t
j||j|jd}t ||¡ qžd S )Nz8Extension / mixed with multiple outputs not implemented.©Úreasonr   r   r   r   r   r   r   r   r   é   r   )r   Ú
isinstanceÚdictÚnodeÚ
add_markerÚpytestÚmarkÚxfailr   r   r   r   r   ÚmodfÚtupleÚlenÚzipr   r   r   r   )	Úrequestr	   r   r   Zresult_pandasZexpected_numpyr   r   r   r    r    r!   Útest_unary_binary    s    ÿÿ 

r2   c                 C   sx   t jddgddggdd}tj|ddgddgd	j| d}t  ||¡}tjt  ||¡|j|jd
 | ¡}t 	||¡ d S r
   )
r   r   r   r   r   Úaddr   r   r   r   r   r    r    r!   Ú test_binary_input_dispatch_binop6   s     ÿþr4   zfunc,arg,expectedr   )r%   é   é   é   FT)Úwhere)r   r5   r6   r   r%   )r   r%   é	   é   )r   r   r   r%   )r   éþÿÿÿéýÿÿÿr   c                 C   s†   t  ddgddgg¡}t |¡}t  |¡}|d u r@| ||d}n| |||d}t  |¡ dd¡}t ||¡ t |¡}t ||¡ d S )Nr   r%   r5   r6   )Úout)	r   r   r   r   Z
zeros_likeZreshaper   Zassert_numpy_array_equalr   )ÚfuncÚargr   r1   Zarrr   Zresult_inplacer   r    r    r!   Útest_ufunc_passes_argsB   s    


r@   Údtype_aÚdtype_bc                 C   s  t |ƒs$t|tƒs$t |ƒs$t|tƒr:| j tjjdd¡ t 	ddgddgdœ¡ 
|¡}t|tƒrzt|tƒrz| d¡|d	< t 	ddgddgd
œ¡ 
|¡}t t¡ t ||¡}W d   ƒ n1 sÄ0    Y  tj	ddgddggddgd}t ||¡ t ||j¡}t ||¡ d S )Nú7Extension / mixed with multiple inputs not implemented.r#   r   r%   r5   r6   r   r   ÚC)r   rD   ç      ð?r   ©r   )r   r&   r'   r(   r)   r*   r+   r,   r   r   r   Úpopr   Úassert_produces_warningÚFutureWarningr   Ú	heavisider   r   )r1   rA   rB   Údf1Údf2r   r   r    r    r!   Ú test_binary_input_aligns_columnsf   s.    ÿþýüÿÿ*rM   c                 C   sø   t |ƒst|tƒr(| j tjjdd¡ tj	ddgddgdœdd	gd
 
|¡}tj	ddgddgdœddgd
 
|¡}t t¡ t ||¡}W d   ƒ n1 s 0    Y  tj	ddgddggddgdd	gd}t ||¡ t ||j¡}t ||¡ d S )NrC   r#   r   r%   r5   r6   r   r   r   ©r   ÚcrE   r   r   r   )r   r&   r'   r(   r)   r*   r+   r,   r   r   r   r   rH   rI   r   rJ   r   r   )r1   r	   rK   rL   r   r   r    r    r!   Útest_binary_input_aligns_index‹   s     ÿÿ&&*ÿrP   z3ignore:Calling a ufunc on non-aligned:FutureWarningc                  C   s’   t  dddgi¡} tjtdd  t | | d ¡ W d   ƒ n1 sF0    Y  tjtdd  t | d | ¡ W d   ƒ n1 s„0    Y  d S )Nr   r   r%   Ú )Úmatch)r   r   r*   ZraisesÚ
ValueErrorr   Z	logaddexp©r   r    r    r!   Útest_binary_frame_series_raises¨   s
    .rU   c                  C   sØ   t  dg d¢i¡} tj | ¡}t  dg d¢i¡}t ||¡ t  g d¢g d¢dœ¡} tj | ¡}t  g d¢g d¢dœ¡}t ||¡ tjj| dd	}t ||¡ tjj| d
d	}t  g d¢g d¢dœ¡}t ||¡ d S )Nr   )r   r5   r%   r6   )r   r5   r5   r6   )çš™™™™™¹?ç      @ç      @ç       @©r   r   )rE   rX   rX   rW   )rV   rW   rW   rW   r   ©Zaxisr   )rE   rX   rY   rW   )rE   rW   rX   rW   )r   r   r   ÚmaximumÚ
accumulater   r   )r   r   r   r    r    r!   Útest_unary_accumulate_axisµ   s    r^   c                  C   sN   t  dddgi¡} t t¡ tj | | ¡ W d   ƒ n1 s@0    Y  d S )Nr   r   r%   )r   r   r   rH   rI   r   ÚsubtractÚouterrT   r    r    r!   Útest_frame_outer_deprecatedÊ   s    ra   c                  C   sF  t  g d¢g d¢dœ¡} t  g d¢g d¢dœ¡}t jddgddgd	}t jddgdd
gd	}t  g d¢g d¢dœ¡}t d ¡ t | | ¡}W d   ƒ n1 s 0    Y  t ||¡ t t¡ t | |¡}W d   ƒ n1 sâ0    Y  t ||¡ t | |j	¡}t ||¡ t | j	|¡}t  g d¢g d¢dœ¡}t ||¡ t  g d¢g d¢dœ¡}t d ¡ t | |¡}W d   ƒ n1 sŠ0    Y  t ||¡ t t¡ t | |¡}W d   ƒ n1 sÎ0    Y  t ||¡ t t¡ t || ¡}W d   ƒ n1 s0    Y  t ||¡ t | |j	¡}t ||¡ d S )N©r   r%   r5   ©r6   r7   é   rZ   ©r   rO   r   r%   r   r   rN   rO   )r%   r6   rd   )é   é
   é   )r%   r5   r6   )rd   é   rf   )
r   r   ZSeriesr   rH   r   r3   r   rI   r   )rK   rL   Ús1Ús2r   r   r    r    r!   Útest_alignment_deprecationÐ   s8    **,,,rl   Únumbac           
      C   s<  ddl m}m} trFtjjdd}| j |¡ tj 	d¡}| j |¡ |||||ƒgƒdd„ ƒ}t
 g d¢g d	¢d
œ¡}t
 g d¢g d	¢dœ¡}t
 g d¢g d	¢dœ¡}t t¡ ||||ƒ}W d   ƒ n1 sÔ0    Y  t
jddgddgddggddgd}	t ||	¡ t d ¡ ||||ƒ}W d   ƒ n1 s<0    Y  t ||	¡ t t¡ ||||jƒ}W d   ƒ n1 s‚0    Y  t ||	¡ t d ¡  |||j|jƒ}W d   ƒ n1 sÊ0    Y  t ||	¡ t t¡ ||j||ƒ}W d   ƒ n1 s0    Y  |	jddgdd}	t ||	¡ d S )Nr   )Úfloat64Ú	vectorizezEufunc 'my_ufunc' did not contain a loop with signature matching typesr#   z5ignore:`np.MachAr` is deprecated.*:DeprecationWarningc                 S   s   | | | S )Nr    )ÚxÚyÚzr    r    r!   Úmy_ufunc  s    z8test_alignment_deprecation_many_inputs.<locals>.my_ufuncrb   rc   rZ   re   )r   rO   rX   g      (@g      @g      .@g      "@g      2@r   r   rF   rO   r   r[   )rm   rn   ro   r   r*   r+   r,   r(   r)   Úfilterwarningsr   r   r   rH   rI   r   r   Zset_axis)
r1   rn   ro   r+   rs   rK   rL   Zdf3r   r   r    r    r!   Ú&test_alignment_deprecation_many_inputsÿ   s@    ÿÿ
*$,.0.ru   )'Ú	functoolsr   Znumpyr   r*   Zpandas.compat.numpyr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   Zpandas._testingZ_testingr   Zpandas.api.typesr   Zdtypesr+   Zparametrizer"   r2   r4   r3   r   Úpowerr_   Únegativer@   rM   rP   rt   rU   r^   ra   rl   Z
skip_if_noru   r    r    r    r!   Ú<module>   sZ   ý


ý ý÷þ
#


/