U
    c@;                     @   s  d dl Zd dlZd dlmZmZmZmZ d dlm	Z
 dd Zdd Zdd Zejd	d
ddgdd Zejdddeddfeddfeddfgdd Zejdddddedfddgdd Zejdddd d!d"d#gd$d% Zejdd&d'd(gd)d* Zejdddd d"d&d'gd+d, Zejdd#d!gd-d. Zejd/d0d1d2d3gd4d5 Zejd/d6d7d8d9d:gd;d< Zejdd=d>d ed fd?gd@dA ZejddBdCgdDdE ZejddFddgfde fgdGdH ZejdIdJdKdLdMdNgejdOdJdKdLdMdNgdPdQ Z dRdS Z!ejdddTdUddVdUfddTdUddTdVdWfdXdidfdXdidYfdXdidgfgdZd[ Z"ejd\ddTgd]d^ Z#d_d` Z$ejddadbdcdYdgfgddde Z%ejdddTdVgddTdVgfe&ddTdVge&ddTdVgfgdfdg Z'ejde&ddTdVgddTdVgfe&ddTdVge&dhdidjgfe(ddTdVgddTdVgfddTdVgddTdkgfddTdVgddTdVdkgfddTdVgdfgdldm Z)dndo Z*ejddej+fdpej+d fgdqdr Z,ejdej-ej-fej-e.dsfe&ej-ej/ej- ge&ej-ej/ej- gfej&ej-dej- gej0dtej&ej-ej/ej- gej0dtfgdudv Z1dwdx Z2ejdedhdgedhdygfedhdgedhdygfe&ddzge&ddigfedXdhdgiedXdhdygifgd{d| Z3d}d~ Z4dd Z5ejde&dgdddfde&dgddfgdd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?ej@dTedtZAej&ddgedtej&ddgedtgeAdd< ej&e&dddge&ddggedtej&e&dddge&ddggedtfej&ej&e&ddge&dggedtej&e&ddggedtgedtej&ej&e&ddge&dggedtej&e&ddggedtgedtfej&dddgddggedtej&dddgddggedtfej&e&ddTdVge&dkdggedtej&ddTdVgdkdggedtfej&ej&e&ddTdVge&dkdggedtej&e&dge&ddge&dggedtgedtej&ddTdVgdkdggdgddgdgggedtfej&eAdgedtej&eBddgddggdgedtfej&dej&dXdgedtdgedtej&dej&dXdgedtdgedtfej&dej&dXdgedtdgedtej&ddXdgdgedtfej&ej&dej&dXdgedtdgedtej&g edtgedtej&ddXdgdgg gedtfg	ZCejDdejdeCdd ZEdS )    N)	DataFrameIndexSeries	Timestampc                 K   s$   t j| |f| t j|| f| dS )a4  
    Check that two objects are approximately equal.

    This check is performed commutatively.

    Parameters
    ----------
    a : object
        The first object to compare.
    b : object
        The second object to compare.
    **kwargs
        The arguments passed to `tm.assert_almost_equal`.
    N)tmassert_almost_equalabkwargs r   N/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/util/test_assert_almost_equal.py_assert_almost_equal_both   s    r   c                 K   sJ   z0t j| |f| |  d| d}tj|d W n tk
rD   Y nX dS )a  
    Check that two objects are not approximately equal.

    Parameters
    ----------
    a : object
        The first object to compare.
    b : object
        The second object to compare.
    **kwargs
        The arguments passed to `tm.assert_almost_equal`.
    z and z7 were approximately equal when they shouldn't have beenmsgN)r   r   pytestZfailAssertionError)r	   r
   r   r   r   r   r   _assert_not_almost_equal    s    r   c                 K   s    t | |f| t || f| dS )a8  
    Check that two objects are not approximately equal.

    This check is performed commutatively.

    Parameters
    ----------
    a : object
        The first object to compare.
    b : object
        The second object to compare.
    **kwargs
        The arguments passed to `tm.assert_almost_equal`.
    Nr   r   r   r   r   _assert_not_almost_equal_both5   s    r   za,b,check_less_precise)皙?r   F)r   	?T)r   F%u?   c              	   C   s(   t t t| ||d W 5 Q R X d S )N)check_less_precise)r   Zassert_produces_warningFutureWarningr   )r	   r
   r   r   r   r   #test_assert_almost_equal_deprecatedH   s    r   za,b)r   r   )r   r      gzo ?r      c                 C   s   t | | d S Nr   r	   r
   r   r   r    test_assert_almost_equal_numbersR   s    r"   )r   r   )r   T)r   r   gqh ?)皙?g`TR'?)g/nR?ga2U0*S?c                 C   s   t | | d S r   r   r!   r   r   r   $test_assert_not_almost_equal_numbers`   s    r%   )r   r   )gư>gh㈵>)g     @@g/$@@)&|>gTqs*>c                 C   s   t | |ddd d S )NgMb@?)rtolatolr    r!   r   r   r   %test_assert_almost_equal_numbers_atolp   s    r)   )r   g(\?)r#   gB`"۹?)r&   gӹP?c                 C   s   t | |dd d S )NMbP?)r(   r$   r!   r   r   r   )test_assert_not_almost_equal_numbers_atol   s    r+   c                 C   s   t | |dd d S Ng?r'   r    r!   r   r   r   %test_assert_almost_equal_numbers_rtol   s    r.   c                 C   s   t | |dd d S r,   r$   r!   r   r   r   )test_assert_not_almost_equal_numbers_rtol   s    r/   za,b,rtol)grZ|
 ?g9m4 ?r*   )y$@?yBD?r*   )y?/$?y?jt?r#   )y`TR'?       @y?5^I @{Gz?c                 C   sF   t | ||d t t| t||d t t| t||d d S Nr-   )r   np	complex64
complex128r	   r
   r'   r   r   r   (test_assert_almost_equal_complex_numbers   s    
r6   )goѨ?gYa#t?gHz>)yuV?yKￚ?r*   )y?      ?y?       @r0   )yL7A`jt?yL7A`Gz?gh㈵>)y        oѨ?y        Ya#t?g&.>c                 C   sF   t | ||d t t| t||d t t| t||d d S r1   )r   r2   r3   r4   r5   r   r   r   ,test_assert_not_almost_equal_complex_numbers   s    r7   )r   r   )r   g        )g:0yE>r   c                 C   s   t | | d S r   r    r!   r   r   r   +test_assert_almost_equal_numbers_with_zeros   s    r8   )r*   r   )r   r   c                 C   s   t | | d S r   r$   r!   r   r   r   /test_assert_not_almost_equal_numbers_with_zeros   s    r9   )r   abcc                 C   s   t | | d S r   r$   r!   r   r   r   /test_assert_not_almost_equal_numbers_with_mixed   s    r;   
left_dtypezM8[ns]zm8[ns]float64Zint64objectright_dtypec                 C   s&   t tjg | dtjg |ddd d S )NZdtypeFZcheck_dtype)r   r2   array)r<   r?   r   r   r   +test_assert_almost_equal_edge_case_ndarrays   s
    rC   c                   C   s   t dddddd d S )Nr   r   r!   r    r   r   r   r   test_assert_almost_equal_dicts   s    rD   r   r!      )r	   r
   cr	   r:   c                 C   s   t | | d S r   r$   r!   r   r   r   "test_assert_not_almost_equal_dicts   s    rG   valc                    sB   d d| i}G  fddd}|  kr*t nt}||| dd d S )Nr   r	   c                       s    e Zd Zdd Z fddZdS )z>test_assert_almost_equal_dict_like_object.<locals>.DictLikeObjc                 S   s   dS )N)r	   r   )selfr   r   r   keys   s    zCtest_assert_almost_equal_dict_like_object.<locals>.DictLikeObj.keysc                    s   |dkr S d S )Nr	   r   )rI   itemZdict_valr   r   __getitem__   s    zJtest_assert_almost_equal_dict_like_object.<locals>.DictLikeObj.__getitem__N)__name__
__module____qualname__rJ   rM   r   rL   r   r   DictLikeObj   s   rQ   FrA   )r   r   )rH   Z	real_dictrQ   funcr   rL   r   )test_assert_almost_equal_dict_like_object   s    	rS   c                   C   s   t dd d S )Nr:   r    r   r   r   r    test_assert_almost_equal_strings   s    rT   )r:   Zabcd)r:   Zabd)r:   r   c                 C   s   t | | d S r   r$   r!   r   r   r   $test_assert_not_almost_equal_strings   s    rU   c                 C   s   t | | d S r   r    r!   r   r   r   "test_assert_almost_equal_iterables  s    rV   g      ?g       @g      @   c                 C   s   t | | d S r   r   r!   r   r   r   &test_assert_not_almost_equal_iterables  s    rX   c                   C   s   t d d  d S r   r    r   r   r   r   test_assert_almost_equal_null   s    rY   Nr   c                 C   s   t | | d S r   r   r!   r   r   r   !test_assert_not_almost_equal_null$  s    r[   infr@   c                 C   s   t | | d S r   r    r!   r   r   r   test_assert_almost_equal_inf)  s    r]   c                   C   s   t tjd d S rZ   )r   r2   r\   r   r   r   r    test_assert_not_almost_equal_inf9  s    r^   r   g7   @c                 C   s   t | | d S r   r    r!   r   r   r   test_assert_almost_equal_pandas=  s    
r_   c                  C   s.   t dt dg} t dt dg}t| | d S )N
2011-01-01)r   r   r!   r   r   r   test_assert_almost_equal_objectJ  s    ra   c               	   C   s.   d} t jt| d tdd W 5 Q R X d S )Nz?expected 2\.00000 but got 1\.00000, with rtol=1e-05, atol=1e-08matchr   r   r   raisesr   r   r   r   r   r   r   'test_assert_almost_equal_value_mismatchP  s    rf   za,b,klass1,klass2Zndarrayintc              	   C   s:   d| d| }t jt|d t| | W 5 Q R X d S )NzHnumpy array are different

numpy array classes are different
\[left\]:  z
\[right\]: rb   rd   )r	   r
   Zklass1Zklass2r   r   r   r   'test_assert_almost_equal_class_mismatchW  s    rh   c               	   C   sJ   d} t jt| d. tttjddgtdtjdg W 5 Q R X d S )Nznumpy array are different

numpy array values are different \(66\.66667 %\)
\[left\]:  \[nan, 2\.0, 3\.0\]
\[right\]: \[1\.0, nan, 3\.0\]rb   r   rE   r   )r   re   r   r   r   r2   rB   nanr   r   r   r   (test_assert_almost_equal_value_mismatch1g  s    rj   c               	   C   sB   d} t jt| d& ttddgtddg W 5 Q R X d S )Nzonumpy array are different

numpy array values are different \(50\.0 %\)
\[left\]:  \[1, 2\]
\[right\]: \[1, 3\]rb   r   r   rE   r   re   r   r   r   r2   rB   r   r   r   r   (test_assert_almost_equal_value_mismatch2r  s    rl   c               
   C   s^   d} t jt| dB ttddgddgddggtddgddgddgg W 5 Q R X d S )	Nznumpy array are different

numpy array values are different \(16\.66667 %\)
\[left\]:  \[\[1, 2\], \[3, 4\], \[5, 6\]\]
\[right\]: \[\[1, 3\], \[3, 4\], \[5, 6\]\]rb   r   r   rE   rW   r      rk   r   r   r   r   (test_assert_almost_equal_value_mismatch3}  s     rn   c               	   C   sR   d} t jt| d6 ttddgddggtddgddgg W 5 Q R X d S )Nznumpy array are different

numpy array values are different \(25\.0 %\)
\[left\]:  \[\[1, 2\], \[3, 4\]\]
\[right\]: \[\[1, 3\], \[3, 4\]\]rb   r   r   rE   rW   rk   r   r   r   r   (test_assert_almost_equal_value_mismatch4  s    ro   c               	   C   sH   d} t jt| d, tjtddgtdddgdd	 W 5 Q R X d S )
NzWIndex are different

Index shapes are different
\[left\]:  \(2L*,\)
\[right\]: \(3L*,\)rb   r   r   rE   rW   r   r   )objrk   r   r   r   r   0test_assert_almost_equal_shape_mismatch_override  s    rq   c               	   C   sF   d} t jt| d* ttdddgtdddg W 5 Q R X d S )Nu   numpy array are different

numpy array values are different \(33\.33333 %\)
\[left\]:  \[á, à, ä\]
\[right\]: \[á, à, å\]rb      á   à   ä   årk   r   r   r   r    test_assert_almost_equal_unicode  s    rv   c               	   C   sZ   t tdtdg} t tdtdg}d}tjt|d t| | W 5 Q R X d S )Nr`   z
2011-01-02znumpy array are different

numpy array values are different \(50\.0 %\)
\[left\]:  \[2011-01-01 00:00:00, 2011-01-01 00:00:00\]
\[right\]: \[2011-01-01 00:00:00, 2011-01-02 00:00:00\]rb   )r2   rB   r   r   re   r   r   r   )r	   r
   r   r   r   r   "test_assert_almost_equal_timestamp  s
    rw   c               	   C   s8   d} t jt| d tddgdddg W 5 Q R X d S )NzOIterable are different

Iterable length are different
\[left\]:  2
\[right\]: 3rb   r   r   rE   rW   r   rd   r   r   r   r   1test_assert_almost_equal_iterable_length_mismatch  s    rx   c               	   C   s6   d} t jt| d tddgddg W 5 Q R X d S )NziIterable are different

Iterable values are different \(50\.0 %\)
\[left\]:  \[1, 2\]
\[right\]: \[1, 3\]rb   r   r   rE   rd   r   r   r   r   1test_assert_almost_equal_iterable_values_mismatch  s    ry   r
   rF   d2   F   Z         rm         	   )f1f2z7ignore:elementwise comparison failed:DeprecationWarningc                 C   s   t | | d S r   r    r!   r   r   r   %test_assert_almost_equal_array_nested  s    r   )FZnumpyr2   r   Zpandasr   r   r   r   Zpandas._testingZ_testingr   r   r   r   markZparametrizer   Zint16r=   Zuint32r"   r%   r)   r+   r.   r/   r6   r7   r8   r9   r>   r;   rC   rD   rG   rS   rT   rU   rB   rV   iterrX   rY   NaNr[   r\   floatri   Zobject_r]   r^   r_   ra   rf   rh   rj   rl   rn   ro   rq   rv   rw   rx   ry   emptyZsubarrlistZNESTED_CASESfilterwarningsr   r   r   r   r   <module>   s  







	





  	




 
 2



.
	
&

,&&""&&" 	, """ 	K
