a
    Lfl                    @   s  d dl Z d dlZd dlZd dl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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z" G dd dZ#G dd de#Z$G dd dZ%G d	d
 d
e$Z&G dd de#Z'G dd de#Z(G dd dZ)G dd dZ*G dd dZ+G dd dZ,G dd dZ-G dd dZ.G dd dZ/dd Z0dd  Z1d!d" Z2d#d$ Z3d%d& Z4d'd( Z5d)d* Z6d+d, Z7d-d. Z8d/d0 Z9d1d2 Z:G d3d4 d4eZ;d5d6 Z<ej=j>e" d7d8G d9d: d:Z?ej=@d;eegd<d= ZAdS )>    N)assert_equalassert_array_equalassert_almost_equalassert_array_almost_equalassert_array_lessbuild_err_msgassert_raisesassert_warnsassert_no_warningsassert_allcloseassert_approx_equalassert_array_almost_equal_nulpassert_array_max_ulpclear_and_catch_warningssuppress_warningsassert_string_equalassert_tempdirtemppathassert_no_gc_cyclesHAS_REFCOUNTc                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )_GenericTestc                 C   s   |  || d S N_assert_funcselfab r   W/var/www/ai-form-bot/venv/lib/python3.9/site-packages/numpy/testing/tests/test_utils.py_test_equal   s    z_GenericTest._test_equalc                 C   s8   t t | || W d    n1 s*0    Y  d S r   )r   AssertionErrorr   r   r   r   r    _test_not_equal   s    
z_GenericTest._test_not_equalc                 C   s,   t ddg}t ddg}| || dS )z/Test two equal array of rank 1 are found equal.      Nnparrayr!   r   r   r   r    test_array_rank1_eq   s    z _GenericTest.test_array_rank1_eqc                 C   s,   t ddg}t ddg}| || dS )z7Test two different array of rank 1 are found not equal.r$   r%   Nr'   r(   r#   r   r   r   r    test_array_rank1_noteq%   s    z#_GenericTest.test_array_rank1_noteqc                 C   s<   t ddgddgg}t ddgddgg}| || dS )z/Test two equal array of rank 2 are found equal.r$   r%         Nr&   r   r   r   r    test_array_rank2_eq,   s    z _GenericTest.test_array_rank2_eqc                 C   s4   t ddg}t ddgddgg}| || dS ):Test two arrays with different shapes are found not equal.r$   r%   Nr*   r   r   r   r    test_array_diffshape3   s    z!_GenericTest.test_array_diffshapec                 C   s"   t jddgtd}| |d dS )zTest object arrays.r$   dtypeN)r'   r(   objectr!   r   r   r   r   r    test_objarray:   s    z_GenericTest.test_objarrayc                 C   s   |  g dd d S )Nr$   r%   r,   )r!   r   r   r   r    test_array_likes?   s    z_GenericTest.test_array_likesN)__name__
__module____qualname__r!   r#   r)   r+   r.   r0   r5   r8   r   r   r   r    r      s   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!S )"TestArrayEqualc                 C   s
   t | _d S r   )r   r   r7   r   r   r    setup_methodE   s    zTestArrayEqual.setup_methodc                    s4    fdd}dD ]}|| qdD ]}|| q"dS )z!Test rank 1 array for all dtypes.c                    sL   t d| }|d | }| }|d  ||  || d S )Nr%   r$   r   r'   emptyfillcopyr!   r#   tr   r   cr7   r   r    fooJ   s    

z.TestArrayEqual.test_generic_rank1.<locals>.foo?bhilqpBHILQPfdgFDGZS1ZU1Nr   r   rE   rC   r   r7   r    test_generic_rank1H   s
    

z!TestArrayEqual.test_generic_rank1c                 C   s   t d}t d}tt}| || W d    n1 s@0    Y  t|j}td|v  |}| || t d}t d}d}tjtt	
|d | || W d    n1 s0    Y  |}| || d S )Nl   Cj<T"3w-l   (M$c7uvz"Mismatched elements: 1 / 1 (100%)
gLxrBr   zMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 4.39506535e+12
Max relative difference among violations: inf
match)r'   r(   pytestraisesr"   r   strvaluer   reescape)r   xyexc_infomsgexpected_msgr   r   r    test_0_ndim_array[   s"    

*


*z TestArrayEqual.test_0_ndim_arrayc                    s4    fdd}dD ]}|| qdD ]}|| q"dS )z!Test rank 3 array for all dtypes.c                    sL   t d| }|d | }| }|d  ||  || d S )N)r-   r%   r,   r$   r   r>   rB   r7   r   r    rE   v   s    

z.TestArrayEqual.test_generic_rank3.<locals>.foorF   rG   Nr   rH   r   r7   r    test_generic_rank3t   s
    

z!TestArrayEqual.test_generic_rank3c                 C   sN   t ddt jg}t ddt jg}| || t g d}| || dS )z$Test arrays with nan values in them.r$   r%   r6   N)r'   r(   nanr!   r#   r   r   r   rD   r   r   r    test_nan_array   s
    zTestArrayEqual.test_nan_arrayc                 C   sF   t ddg}t ddg}| || t ddg}| || dS )r/   floupifloupafloupipiN)r'   r(   r!   r#   rZ   r   r   r    test_string_arrays   s
    z!TestArrayEqual.test_string_arraysc                 C   s   t ddtfdtfg}ddg|d< ddg|d< | }| || t ddtfdtfdtfg}|d  |d< |d  |d< tt | || W d   n1 s0    Y  dS )zTest record arrays.r%   r\   r]   r$   r^   N)	r'   r?   floatrA   r!   rL   rM   	TypeErrorr#   rZ   r   r   r    test_recarrays   s    zTestArrayEqual.test_recarraysc                 C   s   t jjg dg dd}t dt jdg}| || | || t jjg dg dd}t t jddg}| || | || d S )N      @      @      @)FTFmaskrd   rf   )TFFre   )r'   maMaskedArrayr(   rY   r!   infr   r   r   r    test_masked_nan_inf   s    z"TestArrayEqual.test_masked_nan_infc                 C   s*  G dd dt j}t ddg|}t ddg|}tt||kt t||k t||k | || | || | || d}t	j
tt|d | || W d    n1 s0    Y  t dd	g|}d
}t	j
tt|d | || W d    n1 s0    Y  d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z?TestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArrayc                 S   s   t t| | S r   )boolr'   equalallr   otherr   r   r    __eq__   s    zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__eq__c                 S   s
   | |k S r   r   rp   r   r   r    __ne__   s    zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__ne__N)r9   r:   r;   rr   rs   r   r   r   r    MyArray   s   rt         ?       @rd   z{Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 1.
Max relative difference among violations: 0.5rJ           g333333@z{Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 2.
Max relative difference among violations: inf)r'   ndarrayr(   viewr   typerm   r!   r#   rL   rM   r"   rP   rQ   )r   rt   r   r   rV   rD   r   r   r    test_subclass_that_overrides_eq   s     *z.TestArrayEqual.test_subclass_that_overrides_eqc                 C   s   G dd dt j}t ddg|}t ddg|}tt t | W d    n1 sb0    Y  | || | || | || d S )Nc                   @   s   e Zd Zdd ZdS )zKTestArrayEqual.test_subclass_that_does_not_implement_npall.<locals>.MyArrayc                 _   s   t S r   )NotImplementedr   argskwargsr   r   r    __array_function__   s    z^TestArrayEqual.test_subclass_that_does_not_implement_npall.<locals>.MyArray.__array_function__N)r9   r:   r;   r   r   r   r   r    rt      s   rt   ru   rv   rd   )	r'   rx   r(   ry   r   ra   ro   r!   r#   )r   rt   r   r   r   r   r    +test_subclass_that_does_not_implement_npall   s    
(z:TestArrayEqual.test_subclass_that_does_not_implement_npallc              	   C   s   t tf tjdd: tjtg dtjtg dtj W d    n1 sX0    Y  W d    n1 sv0    Y  d S )Nraisero   r6   )r$   gWw'&l7r,   )	rL   rM   r"   r'   ZerrstateZtestingr   r(   float32r7   r   r   r    test_suppress_overflow_warnings   s    z.TestArrayEqual.test_suppress_overflow_warningsc                 C   s"   t g d}d}| || dS )z@Test comparing an array with a scalar when all values are equal.ru   ru   ru   ru   Nr&   r   r   r   r    test_array_vs_scalar_is_equal   s    z,TestArrayEqual.test_array_vs_scalar_is_equalc                 C   s   t g d}t g d}d}tjtt|d | || W d   n1 sV0    Y  t g d}d}tjtt|d | || W d   n1 s0    Y  dS )z@Test comparing an array with a scalar when not all values equal.)骈  S g 6 )r   r   r   r   zMismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 563766
Max relative difference among violations: infrJ   N)r   r   g̜Ar   zMismatched elements: 2 / 4 (50%)
Max absolute difference among violations: 563766.
Max relative difference among violations: 4.54902139e-07r'   r(   rL   rM   r"   rP   rQ   r   r   r   r   rV   r   r   r    test_array_vs_array_not_equal   s    *z,TestArrayEqual.test_array_vs_array_not_equalc                 C   sP   t g d}d}tt  | j||dd W d   n1 sB0    Y  dS )z9Test comparing an array with a scalar with strict option.r   ru   TstrictNr'   r(   rL   rM   r"   r   r   r   r   r    test_array_vs_scalar_strict
  s    z*TestArrayEqual.test_array_vs_scalar_strictc                 C   s0   t g d}t g d}| j||dd dS )-Test comparing two arrays with strict option.r   Tr   N)r'   r(   r   r   r   r   r    test_array_vs_array_strict  s    z)TestArrayEqual.test_array_vs_array_strictc                 C   sZ   t g d}t g d}tt  | j||dd W d   n1 sL0    Y  dS )r   )r$   r$   r$   r   Tr   Nr   r   r   r   r     test_array_vs_float_array_strict  s    z/TestArrayEqual.test_array_vs_float_array_strictN)r9   r:   r;   r=   rI   rW   rX   r[   r_   rb   rl   r{   r   r   r   r   r   r   r   r   r   r   r    r<   C   s    
"r<   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestBuildErrorMessagec                 C   s@   t g d}t g d}d}t||g|}d}t|| d S )NgrZ|
 ?rZ|
  @& @g㈵ ?&  @㈵ @There is a mismatchz
Items are not equal: There is a mismatch
 ACTUAL: array([1.00001, 2.00002, 3.00003])
 DESIRED: array([1.00002, 2.00003, 3.00004])r'   r(   r   r   r   rR   rS   err_msgr   r   r   r   r    test_build_err_msg_defaults$  s    z1TestBuildErrorMessage.test_build_err_msg_defaultsc                 C   sD   t g d}t g d}d}t||g|dd}d}t|| d S )Nr   r   r   F)verbosez)
Items are not equal: There is a mismatchr   r   r   r   r    test_build_err_msg_no_verbose/  s    z3TestBuildErrorMessage.test_build_err_msg_no_verbosec                 C   sD   t g d}t g d}d}t||g|dd}d}t|| d S )Nr   r   r   )ZFOOZBAR)namesz{
Items are not equal: There is a mismatch
 FOO: array([1.00001, 2.00002, 3.00003])
 BAR: array([1.00002, 2.00003, 3.00004])r   r   r   r   r    test_build_err_msg_custom_names8  s    z5TestBuildErrorMessage.test_build_err_msg_custom_namesc                 C   sD   t g d}t g d}d}t||g|dd}d}t|| d S )N)g0D   ?r   r   )g_p   ?r   r   r   
   )	precisionz
Items are not equal: There is a mismatch
 ACTUAL: array([1.000000001, 2.00002    , 3.00003    ])
 DESIRED: array([1.000000002, 2.00003    , 3.00004    ])r   r   r   r   r    #test_build_err_msg_custom_precisionC  s    z9TestBuildErrorMessage.test_build_err_msg_custom_precisionN)r9   r:   r;   r   r   r   r   r   r   r   r    r   "  s   	r   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )	TestEqualc                 C   s
   t | _d S r   )r   r   r7   r   r   r    r=   Q  s    zTestEqual.setup_methodc                 C   sH   |  tjtj |  tjgtjg | tjtjg | tjd d S Nr$   )r   r'   rY   r#   r7   r   r   r    test_nan_itemsT  s    zTestEqual.test_nan_itemsc                 C   s:   |  tjtj |  tjgtjg | tjtjg d S r   )r   r'   rk   r#   r7   r   r   r    test_inf_itemsZ  s    zTestEqual.test_inf_itemsc                 C   st   |  tddtdd |  tddtdd | tddtdd | tddtdd d S )N
2017-01-01smz
2017-01-02)r!   r'   
datetime64r#   r7   r   r   r    test_datetime_  s     







zTestEqual.test_datetimec                 C   st  t d}t dd}t dd}t d}t dd}t dd}|||g}|||g}t||D ]2\}	}
| |	|
 | |	g|
g | |	g|
 qdt||D ]2\}	}
| |	|
 | |	g|
g | |	g|
 qt||D ]\}	}
| |	|
 | |	|
g | |	g|
g | |	gt dd | |
gt dd | |	gt dd | |
gt dd qd S )NNaTr   nsr   {   )r'   r   Ztimedelta64	itertoolsproductr   r#   )r   Znadt_no_unitZnadt_sZnadt_dZnatd_no_unitZnatd_sZnatd_ddtsZtdsr   r   r   r   r    test_nat_itemss  s0    



zTestEqual.test_nat_itemsc                 C   s   |  dd | dd d S )NabZabb)r   r#   r7   r   r   r    test_non_numeric  s    zTestEqual.test_non_numericc                 C   s   |  tddtdd |  tdtjtdtj | tdtjtdd | ttjdtdtj | ttjtjttjd d S Nr$   r%   )r   complexr'   rY   r#   rk   r7   r   r   r    test_complex_item  s
    zTestEqual.test_complex_itemc                 C   s   |  tjtj d S r   )r#   ncuZPZEROZNZEROr7   r   r   r    test_negative_zero  s    zTestEqual.test_negative_zeroc                 C   sR   t tddtdt jg}t tddtddg}| || | || d S r   r'   r(   r   rY   r   r#   r   rR   rS   r   r   r    test_complex  s    zTestEqual.test_complexc                 C   sD   dd l }t| ddd| dddg}| ||d d d  d S )Nr   i  r$   r%   )datetimer'   r(   r#   )r   r   r   r   r   r    test_object  s
    zTestEqual.test_objectN)r9   r:   r;   r=   r   r   r   r   r   r   r   r   r   r   r   r   r    r   O  s   r   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestArrayAlmostEqualc                 C   s
   t | _d S r   )r   r   r7   r   r   r    r=     s    z!TestArrayAlmostEqual.setup_methodc                 C   sN  d}t jtt|d  | jdddd W d    n1 s>0    Y  | jdgdgdd d}t jtt|d$ | jdgdgdd W d    n1 s0    Y  dd	g}d
dg}d}t jtt|d  | j||dd W d    n1 s0    Y  d}t jtt|d  | j||dd W d    n1 s@0    Y  d S )Nz}Mismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.5
Max relative difference among violations: infrJ         ?rw   r   decimal?ge(?giUMu>gB??zMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 3.e-05
Max relative difference among violations: inf   z~Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 3.e-05
Max relative difference among violations: 1.rL   rM   r"   rP   rQ   r   )r   rV   r   r   r   r   r    test_closeness  s    .2.z#TestArrayAlmostEqual.test_closenessc                 C   s   t dg}t dg}| j||dd | j||dd d}tjtt|d  | j||dd W d    n1 sv0    Y  d S )	NgeH@gwH@r,   r   r-   zMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.e-04
Max relative difference among violations: 8.10226812e-08rJ      r'   r(   r   rL   rM   r"   rP   rQ   r   rR   rS   rV   r   r   r    test_simple  s    z TestArrayAlmostEqual.test_simplec                 C   s>  g d}d}d}t jtt|d  | j||dd W d    n1 sJ0    Y  d}t jtt|d  | j||dd W d    n1 s0    Y  ddg}d	}t jtt|d  | j||d
d W d    n1 s0    Y  d}d	}t jtt|d  | j||d
d W d    n1 s00    Y  d S )N)mlz@gHPX@rw   r   zMismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: 1.rJ   	   r   zMismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: 5.4722099rw   zMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: infr   r   r   r   r   r   r    test_array_vs_scalar  s     ...z)TestArrayAlmostEqual.test_array_vs_scalarc                    sz   t t jgt dgt t jg  ttfdd tt fdd tt fdd d S )Nr$   c                      s     S r   r   r   ananaoner   r   r    <lambda>      z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>c                      s     S r   r   r   ainfr   r   r   r    r     r   c                      s     S r   r   r   r   r   r    r     r   r'   r(   rY   rk   r   r   r"   r7   r   r   r   r   r   r    test_nan  s    zTestArrayAlmostEqual.test_nanc                    sd   t ddgddgg   t j d< tt fdd t j d< tt fdd d S )	Nru   rv   rd   re   )r   r   c                      s     S r   r   r   r   r   r   r   r    r     r   z/TestArrayAlmostEqual.test_inf.<locals>.<lambda>c                      s     S r   r   r   r   r   r    r     r   )r'   r(   rA   rk   r   r"   r7   r   r   r    test_inf  s    
zTestArrayAlmostEqual.test_infc                 C   s@  t ddgddgg}t jddgddggddgddgg}| || | || | || t jjddd	}t g d
}| || | || t jj}t g d
}| || | || t jjg d
g dd	}t g d}| || | || t jjg d
g dd	}t d}| || | || d S )Nru   rv   rd   re   rw   FTg      @rg   rc   )TTT)ru   rv   rd   )r'   r(   ri   Zmasked_arrayr   rj   r!   Zmaskedr   r   r   r    test_subclass  s.    
z"TestArrayAlmostEqual.test_subclassc                 C   s   G dd dt j}t ddg|}| || t ddg|}t| t ddg|}d}tjtt	
|d | || W d    n1 s0    Y  d S )	Nc                       s0   e Zd Z fddZ fddZdd Z  ZS )z5TestArrayAlmostEqual.test_subclass_2.<locals>.MyArrayc                    s   t  |tjS r   superrr   ry   r'   rx   rp   	__class__r   r    rr   >  s    z<TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.__eq__c                    s   t  |tjS r   r   __lt__ry   r'   rx   rp   r   r   r    r   A  s    z<TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.__lt__c                 _   s   t | S r   r   r}   r   r   r    ro   D  s    z9TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.allr9   r:   r;   rr   r   ro   __classcell__r   r   r   r    rt   =  s   rt   ru   rv   T   zMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 200.
Max relative difference among violations: 0.99009rJ   )r'   rx   r(   ry   r   ro   rL   rM   r"   rP   rQ   )r   rt   r   zr   rV   r   r   r    test_subclass_28  s    
z$TestArrayAlmostEqual.test_subclass_2c                 C   s6   G dd dt j}t ddg|}| || d S )Nc                       s0   e Zd Z fddZ fddZdd Z  ZS )zGTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                    s   t  |tjS r   r   rp   r   r   r    rr   Y  s    zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    s   t  |tjS r   r   rp   r   r   r    r   \  s    zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   s   t d S r   NotImplementedErrorr}   r   r   r    ro   _  s    zKTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allr   r   r   r   r    rt   X  s   rt   ru   rv   r'   rx   r(   ry   r   r   rt   r   r   r   r    !test_subclass_that_cannot_be_boolS  s    
z6TestArrayAlmostEqual.test_subclass_that_cannot_be_boolN)r9   r:   r;   r=   r   r   r   r   r   r   r   r   r   r   r   r    r     s   %!
r   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestAlmostEqualc                 C   s
   t | _d S r   )r   r   r7   r   r   r    r=   h  s    zTestAlmostEqual.setup_methodc                    sL    j dddd tt fdd  j dgdgdd tt fdd d S )Nr   rw   r   r   c                      s    j ddddS Nr   rw   r   r   r   r   r7   r   r    r   u  r   z0TestAlmostEqual.test_closeness.<locals>.<lambda>c                      s    j dgdgddS r   r   r   r7   r   r    r   z  r   r   r   r"   r7   r   r7   r    r   k  s    

zTestAlmostEqual.test_closenessc                    sJ     tjtj tt fdd tt fdd tt fdd d S )Nc                      s     tjdS r   )r   r'   rY   r   r7   r   r    r     r   z/TestAlmostEqual.test_nan_item.<locals>.<lambda>c                      s     tjtjS r   )r   r'   rY   rk   r   r7   r   r    r     r   c                      s     tjtjS r   )r   r'   rk   rY   r   r7   r   r    r     r   )r   r'   rY   r   r"   r7   r   r7   r    test_nan_item|  s    


zTestAlmostEqual.test_nan_itemc                    sL     tjtj   tj tj  tt fdd tt fdd d S )Nc                      s     tjdS r   r   r'   rk   r   r7   r   r    r     r   z/TestAlmostEqual.test_inf_item.<locals>.<lambda>c                      s     tj tjS r   r   r   r7   r   r    r     r   )r   r'   rk   r   r"   r7   r   r7   r    test_inf_item  s    

zTestAlmostEqual.test_inf_itemc                 C   s   |  dd d S r   )r#   r7   r   r   r    test_simple_item  s    z TestAlmostEqual.test_simple_itemc                 C   s   |  tddtdd |  tdtjtdtj |  ttjtjttjtj | tdtjtdd | ttjdtdtj | ttjtjttjd d S r   )r   r   r'   rY   rk   r#   r7   r   r   r    r     s     z!TestAlmostEqual.test_complex_itemc                 C   sz   t tddtdt jg}t tddtt jdg}t tddtddg}| || | || | || d S r   r   )r   rR   r   rS   r   r   r    r     s    zTestAlmostEqual.test_complexc                 C   st  t g d}t g d}d}tjtt|d  | j||dd W d   n1 sZ0    Y  d}tjtt|d | || W d   n1 s0    Y  t t jd	g}t t jd
g}d}tjtt|d | || W d   n1 s0    Y  t d
dg}t d	d	g}d}tjtt|d | || W d   n1 sf0    Y  dS )zCheck the message is formatted correctly for the decimal value.
           Also check the message when input includes inf or nan (gh12200))g    ?g     @r   )g_   ?g    @r   a  Mismatched elements: 3 / 3 (100%)
Max absolute difference among violations: 1.e-05
Max relative difference among violations: 3.33328889e-06
 ACTUAL: array([1.00000000001, 2.00000000002, 3.00003      ])
 DESIRED: array([1.00000000002, 2.00000000003, 3.00004      ])rJ      r   NzMismatched elements: 1 / 3 (33.3%)
Max absolute difference among violations: 1.e-05
Max relative difference among violations: 3.33328889e-06
 ACTUAL: array([1.     , 2.     , 3.00003])
 DESIRED: array([1.     , 2.     , 3.00004])r   r$   zMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 1.
Max relative difference among violations: 1.
 ACTUAL: array([inf,  0.])
 DESIRED: array([inf,  1.])r%   z{Mismatched elements: 2 / 2 (100%)
Max absolute difference among violations: 2
Max relative difference among violations: inf)	r'   r(   rL   rM   r"   rP   rQ   r   rk   r   r   r   r    test_error_message  s$    	.*,z"TestAlmostEqual.test_error_messagec                 C   s   d}t d}d}tjtt|d | || W d   n1 sH0    Y  d}t d}d}tjtt|d | || W d   n1 s0    Y  dS )z)Check the message is formatted correctly r%      z}Mismatched elements: 20 / 20 (100%)
Max absolute difference among violations: 1.
Max relative difference among violations: 1.rJ   Nz~Mismatched elements: 20 / 20 (100%)
Max absolute difference among violations: 1.
Max relative difference among violations: 0.5)r'   onesrL   rM   r"   rP   rQ   r   r   r   r   r    test_error_message_2  s    
*
z$TestAlmostEqual.test_error_message_2c                 C   s6   G dd dt j}t ddg|}| || d S )Nc                       s0   e Zd Z fddZ fddZdd Z  ZS )zBTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                    s   t  |tjS r   r   rp   r   r   r    rr     s    zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    s   t  |tjS r   r   rp   r   r   r    r     s    zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   s   t d S r   r   r}   r   r   r    ro     s    zFTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allr   r   r   r   r    rt     s   rt   ru   rv   r   r   r   r   r    r     s    
z1TestAlmostEqual.test_subclass_that_cannot_be_boolN)r9   r:   r;   r=   r   r   r   r   r   r   r   r   r   r   r   r   r    r   f  s   	3r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestApproxEqualc                 C   s
   t | _d S r   )r   r   r7   r   r   r    r=     s    zTestApproxEqual.setup_methodc                    sN   t dt d jdd  jdd tt fdd d S )N{GH@RH@r   Zsignificant   c                      s    j ddS Nr   r  r   r   r   r   r    r     r   z7TestApproxEqual.test_simple_0d_arrays.<locals>.<lambda>)r'   r(   r   r   r"   r7   r   r   r    test_simple_0d_arrays  s    

z%TestApproxEqual.test_simple_0d_arraysc                    sR   dd j dd  j dd  j dd tt fdd d S )	Nr   r   r-   r  r   r  c                      s    j ddS r  r   r   r   r   r    r     r   z3TestApproxEqual.test_simple_items.<locals>.<lambda>r   r7   r   r   r    test_simple_items  s    z!TestApproxEqual.test_simple_itemsc                    st   t t jt dt t j  ttfdd tt fdd tt fdd d S )Nr$   c                      s     S r   r   r   r   r   r    r     r   z0TestApproxEqual.test_nan_array.<locals>.<lambda>c                      s     S r   r   r   r   r   r    r     r   c                      s     S r   r   r   r   r   r    r     r   r   r7   r   r   r    r[     s    
zTestApproxEqual.test_nan_arrayc                    st   t t jt dt t j  ttfdd tt fdd tt fdd d S )Nr$   c                      s     S r   r   r   r   r   r    r     r   z0TestApproxEqual.test_nan_items.<locals>.<lambda>c                      s     S r   r   r   r   r   r    r      r   c                      s     S r   r   r   r   r   r    r   !  r   r   r7   r   r   r    r     s    
zTestApproxEqual.test_nan_itemsN)r9   r:   r;   r=   r  r  r[   r   r   r   r   r    r     s
   	
	r   c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )TestArrayAssertLessc                 C   s
   t | _d S r   )r   r   r7   r   r   r    r=   &  s    z TestArrayAssertLess.setup_methodc                    s   t ddgt ddg  tt fdd t ddgtt fdd tt fd	d t g d
}t g d}d}tjtt|d  || W d    n1 s0    Y  d S )N皙?皙@333333?ffffff@c                      s     S r   r   r   r   r   r    r   .  r   z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>ru   c                      s     S r   r   r   r   r   r    r   2  r   c                      s     S r   r   r   r   r   r    r   3  r   )r$   r,   r  r   )r%   r-   r     z{Mismatched elements: 2 / 4 (50%)
Max absolute difference among violations: 12
Max relative difference among violations: 1.5rJ   )	r'   r(   r   r   r"   rL   rM   rP   rQ   r   r   r   r    test_simple_arrays)  s    z&TestArrayAssertLess.test_simple_arraysc                    s   t ddgddggt ddgddgg  d	}tjtt|d
   W d    n1 sr0    Y  t ddgddggtt fdd tt fdd d S )Nr  r  ffffff
@g@r	  r
  g333333@g      @zMismatched elements: 4 / 4 (100%)
Max absolute difference among violations: 0.1
Max relative difference among violations: 0.09090909rJ   ru   c                      s     S r   r   r   r   r   r    r   J  r   z0TestArrayAssertLess.test_rank2.<locals>.<lambda>c                      s     S r   r   r   r   r   r    r   K  r   )	r'   r(   r   rL   rM   r"   rP   rQ   r   r   rV   r   r   r    
test_rank2>  s    *zTestArrayAssertLess.test_rank2c                    s   t jddt jddd   tt fdd dd< d}tjtt|d	   W d    n1 s0    Y  tt fd
d d S )N)r%   r%   r%   )shaper$   c                      s     S r   r   r   r   r   r    r   R  r   z0TestArrayAssertLess.test_rank3.<locals>.<lambda>r   )r   r   r   z}Mismatched elements: 1 / 8 (12.5%)
Max absolute difference among violations: 1.
Max relative difference among violations: infrJ   c                      s     S r   r   r   r   r   r    r   [  r   )	r'   r   r   r   r"   rL   rM   rP   rQ   r  r   r   r    
test_rank3M  s    *zTestArrayAssertLess.test_rank3c                    s   dd   d}tjtt|d    W d    n1 sN0    Y  tddg   tt fdd tddgtt fd	d d S )
Nr  r  z|Mismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.1
Max relative difference among violations: 1.rJ   r  c                      s     S r   r   r   r   r   r    r   k  r   z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>ru   c                      s     S r   r   r   r   r   r    r   o  r   )	r   rL   rM   r"   rP   rQ   r'   r(   r   r  r   r   r    r  ]  s    *z%TestArrayAssertLess.test_simple_itemsc                 C   s   t g dg dg dg}d}| || d}| || t g dg dg dg}d	}d
}tjtt|d | || W d    n1 s0    Y  d}tjtt|d | || W d    n1 s0    Y  d S )N)g.c}j@g镲hx@g|yE@g㥛Ġ@)gQEK@gH}@g      *@V-Xy@)(\@Gz @nV@gt@gQ@gmXSY @)gk	@g6<R@g//8{@gMbеA)gףp=I@Hze}.Ag=
ף@r  )r  r  r  gye}.Ar  z}Mismatched elements: 1 / 12 (8.33%)
Max absolute difference among violations: 0.
Max relative difference among violations: 0.rJ   zMismatched elements: 12 / 12 (100%)
Max absolute difference among violations: 999087.0864
Max relative difference among violations: 289288.5934676r   r   r   r   r    test_simple_items_and_arrayq  s&    

*z/TestArrayAssertLess.test_simple_items_and_arrayc                 C   s2  t g d}t d}d}tjtt|d | || W d    n1 sR0    Y  d}tjtt|d | || W d    n1 s0    Y  d}d}tjtt|d | || W d    n1 s0    Y  d}tjtt|d | || W d    n1 s$0    Y  d S )	N)g    0 Ar   g)\.@g    `f@zMismatched elements: 1 / 3 (33.3%)
Max absolute difference among violations: 458802.
Max relative difference among violations: 5.23423917rJ   zMismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 87654.
Max relative difference among violations: 5670.5626011r   zMismatched elements: 3 / 3 (100%)
Max absolute difference among violations: 546456.
Max relative difference among violations: infz}Mismatched elements: 1 / 3 (33.3%)
Max absolute difference among violations: 0.
Max relative difference among violations: infr   r   r   r   r    test_zeroes  s    
***zTestArrayAssertLess.test_zeroesc                    s   t t jt dt t j  ttfdd ttfdd tt fdd tt fdd d S )Nr$   c                      s     S r   r   r   r   r   r    r     r   z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>c                      s     S r   r   r   r   r   r    r     r   c                      s     S r   r   r   r   r   r    r     r   c                      s     S r   r   r   r   r   r    r     r   r   r7   r   r   r    test_nan_noncompare  s    
z'TestArrayAssertLess.test_nan_noncomparec                    s   t g dt t j tt fdd tt fdd t ddt jgtt fdd tt fdd t d	d
t jg ttfdd d S )N)r  r  r  c                      s     S r   r   r   r   r   rR   r   r    r     r   z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>c                      s     S r   r   r   r  r   r    r     r   r  r  c                      s     S r   r   r   r  r   r    r     r   c                      s     S r   r   r   r  r   r    r     r   ru   rv   c                      s     S r   r   r   r   r   r    r     r   )r'   r(   rY   r   r"   r   r7   r   )r   r   rR   rS   r    test_nan_noncompare_array  s    z-TestArrayAssertLess.test_nan_noncompare_arrayc                    s   t dt t j          tt fdd tt fdd tt fdd tt fdd tt fdd d S )Nr$   c                      s     S r   r   r   r   r   r   r   r    r     r   z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>c                      s      S r   r   r   r  r   r    r     r   c                      s      S r   r   r   r   r   r   r    r     r   c                      s       S r   r   r   r  r   r    r     r   c                      s        S r   r   r   r  r   r    r     r   )r'   r(   rk   r   r   r"   r7   r   r  r    test_inf_compare  s    
z$TestArrayAssertLess.test_inf_comparec                    s   t ddt jgt t j tt fdd tt fdd tt fdd tt fdd tt fdd    d S )	Nr  r  c                      s     S r   r   r   r   r   rR   r   r    r     r   z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>c                      s     S r   r   r   r  r   r    r     r   c                      s      S r   r   r   r  r   r    r     r   c                      s       S r   r   r   r  r   r    r     r   c                      s       S r   r   r   r  r   r    r     r   )r'   r(   rk   r   r"   r   r7   r   r  r    test_inf_compare_array  s    z*TestArrayAssertLess.test_inf_compare_arrayc                 C   s   t d}t d}| || tt  | j||dd W d   n1 sP0    Y  t ||j}| || tt( | j||	t j
dd W d   n1 s0    Y  dS z)Test the behavior of the `strict` option.r,   r   Tr   N)r'   Zzerosr   r   rL   rM   r"   Zbroadcast_tor  astyper   r   r   r   r    test_strict  s    

.zTestArrayAssertLess.test_strictN)r9   r:   r;   r=   r  r  r  r  r  r  r  r  r  r   r#  r   r   r   r    r  $  s   
r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
	TestWarnsc                 C   sh   dd }t jd jd d  }ttt|d t jd j}ttt| ttdd dd t||d d S )	Nc                   S   s   t d dS )Nyor,   warningswarnr   r   r   r    f  s    
zTestWarns.test_warn.<locals>.fr'  r,   c                 S   s   | S r   r   rR   r   r   r    r     r   z%TestWarns.test_warn.<locals>.<lambda>r$   .assert_warns does not preserver warnings state)	sysmodulesfiltersr   r	   UserWarningr   r"   r
   )r   r)  before_filtersafter_filtersr   r   r    	test_warn  s    zTestWarns.test_warnc                 C   st   t jd jd d  }tt td W d    n1 s<0    Y  t jd j}dd }tt| t	||d d S )Nr'  r%  c                   S   s4   t   td W d    n1 s&0    Y  d S Nr%  )r
   r'  r(  r   r   r   r    no_warnings  s    z3TestWarns.test_context_manager.<locals>.no_warningsr+  )
r,  r-  r.  r	   r/  r'  r(  r   r"   r   )r   r0  r1  r4  r   r   r    test_context_manager  s    
(
zTestWarns.test_context_managerc              	   C   s,  ddd}t t|dddks J ttH}t tdd td	t W d    n1 sZ0    Y  W d    n1 sx0    Y  d
t|v sJ dt|v sJ ttH}t tdd td	t W d    n1 s0    Y  W d    n1 s0    Y  d
t|v sJ dt|vs(J d S )Nr   r$   c                 S   s   t d | | S r3  r&  )r   r   r   r   r    r)    s    
zTestWarns.test_args.<locals>.fr   r   ArJ   Br	   zpytest.warns)Zwrong)r   r$   )r	   r/  rL   rM   RuntimeErrorr'  r(  rN   )r   r)  excr   r   r    	test_args  s    
HHzTestWarns.test_argsc              	   C   sv   dd }d}t  B t dt ztt| d}W n tyF   Y n0 W d    n1 s\0    Y  |rrtdd S )Nc                   S   s   t dt d S r3  )r'  r(  DeprecationWarningr   r   r   r    r)  $  s    z,TestWarns.test_warn_wrong_warning.<locals>.fFerrorTz#wrong warning caught by assert_warn)r'  catch_warningssimplefilterr<  r	   r/  r"   )r   r)  Zfailedr   r   r    test_warn_wrong_warning#  s    

$z!TestWarns.test_warn_wrong_warningN)r9   r:   r;   r2  r5  r;  r@  r   r   r   r    r$    s   r$  c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestAssertAllclosec                 C   s&  d}d}t ||dd ttt || d}tjtt|d t || W d    n1 s\0    Y  d}d}tjtt|d t || W d    n1 s0    Y  d	}tjtt|d t || W d    n1 s0    Y  t||||g}t||||g}t ||dd ttt || |d
 |d< t || ttt ||dd t dddd ttt dddd t||||g}t||||g}d}tjtt|d t || W d    n1 s0    Y  d}tjtt|d t || W d    n1 s0    Y  d S )NgMbP?g&.>r$   ZatolzMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 0.001
Max relative difference among violations: 999999.rJ   r   zMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.e-09
Max relative difference among violations: infzMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.e-09
Max relative difference among violations: 1.g1  ?r   )Zrtolr  r   g      ?z~Mismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 0.001
Max relative difference among violations: infz}Mismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 0.001
Max relative difference among violations: 1.)	r   r   r"   rL   rM   rP   rQ   r'   r(   )r   rR   rS   rV   r   r   r   rD   r   r   r    r   7  s>    (((
*zTestAssertAllclose.test_simplec                 C   s*   t jt t jjgt jd}t|| d S )Nr1   )r'   r(   Ziinfoint_minr   r4   r   r   r    test_min_intl  s    zTestAssertAllclose.test_min_intc                 C   sb   t g d}t g d}d}tjtt|d t|| W d    n1 sT0    Y  d S )N)r$   r$   r$   r$   )r$   r$   r$   r%   zzMismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 1
Max relative difference among violations: 0.5rJ   r'   r(   rL   rM   r"   rP   rQ   r   r   r   r   r    test_report_fail_percentageq  s
    z.TestAssertAllclose.test_report_fail_percentagec                 C   s.   t t jg}t t jg}t||dd d S )NTZ	equal_nan)r'   r(   rY   r   r   r   r   r    test_equal_nan{  s    z!TestAssertAllclose.test_equal_nanc                 C   s2   t t jg}t t jg}ttt||dd d S )NFrH  )r'   r(   rY   r   r"   r   r   r   r   r    test_not_equal_nan  s    z%TestAssertAllclose.test_not_equal_nanc                 C   sH   t t jg}t t jg}t|| t|| t|| t|| d S r   )r'   r(   rY   r   r   r   r   r   r   r   r    test_equal_nan_default  s    


z)TestAssertAllclose.test_equal_nan_defaultc                 C   sb   t ddg}t ddg}d}tjtt|d t|| W d    n1 sT0    Y  d S )Nr   r$   r%   z-Max relative difference among violations: 0.5rJ   rF  r   r   r   r    test_report_max_relative_error  s
    z1TestAssertAllclose.test_report_max_relative_errorc                 C   s"   t jg dgdd}t|| d S )N)r$   r%   r,   r   zm8[ns]r1   )r'   r(   r   r4   r   r   r    test_timedelta  s    z!TestAssertAllclose.test_timedeltac                 C   sn   t jg ddd}t jg ddd}d}tjtt|d t||dd W d	   n1 s`0    Y  d	S )
zUCheck the message is formatted correctly when overflow can occur
           (gh21768))r   r$   r  Zuint8r1   )r-   r-   r-   z+Max absolute difference among violations: 4rJ   r,   rB  N)r'   ZasarrayrL   rM   r"   rP   rQ   r   r   r   r   r    test_error_message_unsigned  s
    z.TestAssertAllclose.test_error_message_unsignedc                 C   s   t d}t d}t|| tt t||dd W d   n1 sL0    Y  t|| tt& t||t jdd W d   n1 s0    Y  dS r!  )r'   r   r   rL   rM   r"   r"  r   r   r   r   r    r#    s    


,
zTestAssertAllclose.test_strictN)r9   r:   r;   r   rE  rG  rI  rJ  rK  rL  rM  rN  r#  r   r   r   r    rA  5  s   5
rA  c                   @   st   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )TestArrayAlmostEqualNulpc                 C   s   d}t jdddt jd}d| }t j| |f }t |jj}||| | d  }t||| t |jj}||| | d  }t||| d S Nr   r   2   r1   r   rv   	r'   linspacefloat64r_finfor2   epsr   epsnegr   nulprR   rX  rS   rY  r   r   r    test_float64_pass  s    z*TestArrayAlmostEqualNulp.test_float64_passc                 C   s   d}t jdddt jd}d| }t j| |f }t |jj}||| | d  }ttt	||| t |jj
}||| | d  }ttt	||| d S rP  r'   rT  rU  rV  rW  r2   rX  r   r"   r   rY  rZ  r   r   r    test_float64_fail  s    z*TestArrayAlmostEqualNulp.test_float64_failc                 C   sT   t d}t jt jt jdt j}||A }|t j}|t j}t||d d S )Nl    r1   r   )r'   Zuint64r(   rY   rU  ry   r   )r   offsetZnan1_i64Znan2_i64Znan1_f64Znan2_f64r   r   r    test_float64_ignore_nan  s    
z0TestArrayAlmostEqualNulp.test_float64_ignore_nanc                 C   s   d}t jdddt jd}d| }t j| |f }t |jj}||| | d  }t||| t |jj}||| | d  }t||| d S rP  	r'   rT  r   rV  rW  r2   rX  r   rY  rZ  r   r   r    test_float32_pass  s    z*TestArrayAlmostEqualNulp.test_float32_passc                 C   s   d}t jdddt jd}d| }t j| |f }t |jj}||| | d  }ttt	||| t |jj
}||| | d  }ttt	||| d S rP  r'   rT  r   rV  rW  r2   rX  r   r"   r   rY  rZ  r   r   r    test_float32_fail  s    z*TestArrayAlmostEqualNulp.test_float32_failc                 C   sT   t d}t jt jt jdt j}||A }|t j}|t j}t||d d S )Ni  r1   r   )r'   Zuint32r(   rY   r   ry   r   )r   r_  Znan1_i32Znan2_i32Znan1_f32Znan2_f32r   r   r    test_float32_ignore_nan  s    
z0TestArrayAlmostEqualNulp.test_float32_ignore_nanc                 C   s   d}t jdddt jd}d| }t j| |f }t |jj}||| | d  }t||| t |jj}||| | d  }t||| d S Nr   r-   r   r1   rv   )	r'   rT  float16rV  rW  r2   rX  r   rY  rZ  r   r   r    test_float16_pass  s    z*TestArrayAlmostEqualNulp.test_float16_passc                 C   s   d}t jdddt jd}d| }t j| |f }t |jj}||| | d  }ttt	||| t |jj
}||| | d  }ttt	||| d S rf  )r'   rT  rh  rV  rW  r2   rX  r   r"   r   rY  rZ  r   r   r    test_float16_fail  s    z*TestArrayAlmostEqualNulp.test_float16_failc                 C   sT   t d}t jt jt jdt j}||A }|t j}|t j}t||d d S )N   r1   r   )r'   Zuint16r(   rY   rh  ry   r   )r   r_  Znan1_i16Znan2_i16Znan1_f16Znan2_f16r   r   r    test_float16_ignore_nan-  s    
z0TestArrayAlmostEqualNulp.test_float16_ignore_nanc                 C   s$  d}t jdddt jd}d| }t j| |f }||d  }t |jj}||| | d  }t|||d  | t|||d  | ||| | d	  }t|||d  | t |jj}||| | d  }t|||d  | t|||d  | ||| | d	  }t|||d  | d S 
Nr   rQ  r   rR  r1   r                 ?rv   re   rS  r   r[  rR   xirX  rS   rY  r   r   r    test_complex128_pass8  s"    z-TestArrayAlmostEqualNulp.test_complex128_passc                 C   s4  d}t jdddt jd}d| }t j| |f }||d  }t |jj}||| | d  }ttt	|||d  | ttt	|||d  | ||| |  }ttt	|||d  | t |jj
}||| | d  }ttt	|||d  | ttt	|||d  | ||| |  }ttt	|||d  | d S 	Nr   rQ  r   rR  r1   r   rn  rv   r]  ro  r   r   r    test_complex128_failO  s:    z-TestArrayAlmostEqualNulp.test_complex128_failc                 C   s$  d}t jdddt jd}d| }t j| |f }||d  }t |jj}||| | d  }t|||d  | t|||d  | ||| | d	  }t|||d  | t |jj}||| | d  }t|||d  | t|||d  | ||| | d	  }t|||d  | d S rm  ra  ro  r   r   r    test_complex64_passl  s"    z,TestArrayAlmostEqualNulp.test_complex64_passc                 C   s4  d}t jdddt jd}d| }t j| |f }||d  }t |jj}||| | d  }ttt	|||d  | ttt	|||d  | ||| |  }ttt	|||d  | t |jj
}||| | d  }ttt	|||d  | ttt	|||d  | ||| |  }ttt	|||d  | d S rr  rc  ro  r   r   r    test_complex64_fail  s:    z,TestArrayAlmostEqualNulp.test_complex64_failN)r9   r:   r;   r\  r^  r`  rb  rd  re  ri  rj  rl  rq  rs  rt  ru  r   r   r   r    rO    s   rO  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestULPc                 C   s   t jd}t||dd d S )Nr   r   maxulp)r'   randomrandnr   )r   rR   r   r   r    
test_equal  s    zTestULP.test_equalc                 C   sR   t dt j}|dt jdt j 7 }t t jj}t||| dd d S )Nr   {Gz?r   rw  )	r'   r   r"  r   ry  rz  rW  rX  r   r   rR   rX  r   r   r    test_single  s    zTestULP.test_singlec                 C   sR   t dt j}|dt jdt j 7 }t t jj}t||| dd d S )Nr   r|     rw  )	r'   r   r"  rU  ry  rz  rW  rX  r   r}  r   r   r    test_double  s    zTestULP.test_doublec                 C   sL   t jt jfD ]:}t t jg|}t t |jg}t||dd qd S )Nr  rw  )	r'   r   rU  r(   rk   r"  rW  maxr   )r   dtrk   bigr   r   r    r     s    zTestULP.test_infc                    s  t jt jfD ]}|t jkr dndt t jg|t t jg|t t |jg t t |j	gt dg|t dg|t
tfdd t
t fdd t
tfdd t
tfd	d t
tfd
d qd S )Ng    .Ag   mBrw   g       c                      s   t  dS Nrw  r   r   )rk   rx  rY   r   r    r     s   z"TestULP.test_nan.<locals>.<lambda>c                      s   t  dS r  r  r   )r  rx  rY   r   r    r     s   c                      s   t  dS r  r  r   )rx  rY   tinyr   r    r     s   c                      s   t  dS r  r  r   )rx  rY   zeror   r    r     s   c                      s   t  dS r  r  r   )rx  rY   nzeror   r    r     s   )r'   r   rU  r(   rk   r"  rY   rW  r  r  r   r"   )r   r  r   )r  rk   rx  rY   r  r  r  r    r     s2    
zTestULP.test_nanN)r9   r:   r;   r{  r~  r  r   r   r   r   r   r    rv    s
   rv  c                   @   s   e Zd Zdd Zdd ZdS )TestStringEqualc                 C   sn   t dd t dd tt}t dd W d    n1 s>0    Y  t|j}t|d ttdd  d S )Nhellozhello
multilinezfoo
barz	hello
barz%Differences in strings:
- foo
+ helloc                   S   s
   t ddS )NrE   r  r   r   r   r   r    r     r   z-TestStringEqual.test_simple.<locals>.<lambda>)r   rL   rM   r"   rN   rO   r   r   )r   rT   rU   r   r   r    r     s    

(

zTestStringEqual.test_simplec                 C   s   t dd ttdd  d S )Nza+*bc                   S   s
   t ddS )NZaaaza+br  r   r   r   r    r     r   z,TestStringEqual.test_regex.<locals>.<lambda>)r   r   r"   r7   r   r   r    
test_regex  s    
zTestStringEqual.test_regexN)r9   r:   r;   r   r  r   r   r   r    r    s   r  c                 C   sH   z
| j }W n ty    i }Y n0 t|}d|v r:|d8 }t|| d S )Nversionr$   )__warningregistry__AttributeErrorlenr   )modn_in_contextZ	mod_warnsZ	num_warnsr   r   r    assert_warn_len_equal  s    

r  c                  C   sD   G dd d} |  }t |dd G dd d} |  }t |dd d S )Nc                   @   s   e Zd ZdS )/test_warn_len_equal_call_scenarios.<locals>.modN)r9   r:   r;   r   r   r   r    r    s   r  r   )r  r  c                   @   s   e Zd Zdd ZdS )r  c                 S   s   ddd| _ d S )Nr$   r%   Zwarning1Zwarning2)r  r7   r   r   r    __init__  s    z8test_warn_len_equal_call_scenarios.<locals>.mod.__init__N)r9   r:   r;   r  r   r   r   r    r    s   r%   )r  )r  Zmod_instr   r   r    "test_warn_len_equal_call_scenarios   s    r  c                  C   s0   t jt } z| j  W n ty*   Y n0 | S r   )r,  r-  r9   r  clearr  my_modr   r   r    _get_fresh_mod  s    
r  c                  C   sH  t  } tt| di i  t| gd$ td td W d    n1 sN0    Y  t| ji  t $ td td W d    n1 s0    Y  t| d ddd| _t| gd$ td td	 W d    n1 s0    Y  t| d t $ td td	 W d    n1 s00    Y  t| d d S )
Nr  )r-  ignoreSome warningr   r$   r%   r  zAnother warning)	r  r   getattrr   r'  r?  r(  r  r  r  r   r   r    test_clear_and_catch_warnings(  s*    
(
(

(

*r  c                  C   s  t  } tt| di i  dd }t| d t :}|t |jtj	j
d td |  W d    n1 sp0    Y  tt|jd t|jd jjd d t| d t }|j| d | td W d    n1 s0    Y  t| d |j| d | td W d    n1 s(0    Y  t| d t $ td td W d    n1 sn0    Y  t| d d S )	Nr  c                  S   s   dd } t | ddg d S )Nc                 S   s   t jddd | S )NzSome warning 2r%   
stacklevelr&  Zarrr   r   r    r(  P  s    zFtest_suppress_warnings_module.<locals>.warn_other_module.<locals>.warnr   r'   Zapply_along_axisr(  r   r   r    warn_other_moduleM  s    z8test_suppress_warnings_module.<locals>.warn_other_moduler   moduler  r$   r  )r  r   r  r  r   recordr/  filterr'   libZ_shape_base_implr'  r(  r  logmessager~   r?  )r  r  supr   r   r    test_suppress_warnings_moduleH  s2    	


$
(
*

*r  c                  C   s2  t  } tt| di i  t $}|t td W d    n1 sH0    Y  t| d t }|t | td W d    n1 s0    Y  t| d |j| d | td W d    n1 s0    Y  t| d t $ t	d td W d    n1 s0    Y  t| d d S )Nr  r  r   r  r  )
r  r   r  r   r  r/  r'  r(  r  r?  )r  r  r   r   r    test_suppress_warnings_typev  s&    
(

(
(

*r  c                  C   st   t  } | t | dd }tjdd8}td |t |t tt|d W d    n1 sf0    Y  d S )Nc                 S   s   t d|  d S )Nr  r&  )categoryr   r   r    r(    s    z7test_suppress_warnings_decorate_no_record.<locals>.warnT)r  alwaysr$   )	r   r  r/  r'  r>  r?  RuntimeWarningr   r  )r  r(  wr   r   r    )test_suppress_warnings_decorate_no_record  s    


r  c               	   C   s  t  } |  }|  | jdd}| jdd td td td tt| jd tt|d tt|d t|d jj	d d W d    n1 s0    Y  |  | jdd}| jdd td td td tt| jd tt|d tt|d t|d jj	d d W d    n1 s>0    Y  t  } |   t  @}|jdd td td tt|jd W d    n1 s0    Y  tt| jd W d    n1 s0    Y  d S )NzSome other warning 2)r  r  Some other warningr%   r$   r   )
r   r  r  r'  r(  r   r  r  r  r~   )r  Zlog1log2sup2r   r   r    test_suppress_warnings_record  s<    


4


6

0r  c               	   C   s<  dd } t  h}|  t d( tdD ]}td q*W d    n1 sN0    Y  tt|jd W d    n1 s|0    Y  t  r}|  t d2 tdD ]}td td qW d    n1 s0    Y  tt|jd W d    n1 s0    Y  t  |}|  t d: tdD ] }td td |   q2W d    n1 sj0    Y  tt|jd W d    n1 s0    Y  t  |}|  t d: tdD ] }td td	 |   qW d    n1 s0    Y  tt|jd W d    n1 s.0    Y  d S )
Nc                  S   s   dd } t | ddg d S )Nc                 S   s   t jddd | S )Nr  r%   r  r&  r  r   r   r    r(    s    zJtest_suppress_warnings_forwarding.<locals>.warn_other_module.<locals>.warnr   r  r  r   r   r    r    s    z<test_suppress_warnings_forwarding.<locals>.warn_other_moduler  r%   r  locationr  oncer  )r   r  ranger'  r(  r   r  r  )r  r  ir   r   r    !test_suppress_warnings_forwarding  s<    
*.

*0


*0


*r  c               	   C   s   t  H} tj| d}t|d W d    n1 s60    Y  W d    n1 sT0    Y  ttj|   d}z0t  } t W d    n1 s0    Y  W n ty   d}Y n0 t| ttj|   d S )Ntmpr  FT)r   ospathjoinopenr   isdir
ValueError)Ztdirfpathraisedr   r   r    test_tempdir  s    <(
r  c               	   C   s   t  :} t| d W d    n1 s(0    Y  W d    n1 sF0    Y  ttj|   d}z0t  } t W d    n1 s0    Y  W n ty   d}Y n0 t| ttj|   d S )Nr  FT)r   r  r   r  r  isfiler  )r  r  r   r   r    test_temppath	  s    <(
r  c                   @   s   e Zd Zeje  fZdS )my_cacwN)r9   r:   r;   r,  r-  Zclass_modulesr   r   r   r    r    s   r  c                  C   sP   t  } t $ td td W d    n1 s60    Y  t| ji  d S )Nr  r  )r  r  r'  r?  r(  r   r  r  r   r   r    %test_clear_and_catch_warnings_inherit  s
    
(r  zPython lacks refcounts)reasonc                   @   s0   e Zd ZdZdd Zdd Zejjdd Z	dS )	TestAssertNoGcCyclesz Test assert_no_gc_cycles c                 C   s@   dd }t   |  W d    n1 s*0    Y  t | d S )Nc                  S   s   g } |  g  | S r   appendr6  r   r   r    no_cycle,  s    
z2TestAssertNoGcCycles.test_passes.<locals>.no_cycle)r   )r   r  r   r   r    test_passes+  s    $z TestAssertNoGcCycles.test_passesc              	   C   s   dd }t t< t  |  W d    n1 s40    Y  W d    n1 sR0    Y  t t t| W d    n1 s0    Y  d S )Nc                  S   s   g } |  |  |  |  | S r   r  )r   r   r   r    
make_cycle7  s    

z5TestAssertNoGcCycles.test_asserts.<locals>.make_cycle)r   r"   r   )r   r  r   r   r    test_asserts6  s    
B
z!TestAssertNoGcCycles.test_assertsc                    s   G  fddd zxt   }z8tt tdd  W d   n1 sL0    Y  W n( ty   | dur|td  Y n0 W d _nd _0 dS )z
        Test that in cases where the garbage cannot be collected, we raise an
        error, instead of hanging forever trying to clear it.
        c                       s(   e Zd ZdZdZdd Z fddZdS )z<TestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDelz
            An object that not only contains a reference cycle, but creates new
            cycles whenever it's garbage-collected and its __del__ runs
            Tc                 S   s
   | | _ d S r   )cycler7   r   r   r    r  R  s    zETestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__init__c                    s   d | _  jr   d S r   )r  r  r7   ReferenceCycleInDelr   r    __del__U  s    zDTestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__del__N)r9   r:   r;   __doc__r  r  r  r   r  r   r    r  K  s   r  c                   S   s   d S r   r   r   r   r   r    r   c  r   z1TestAssertNoGcCycles.test_fails.<locals>.<lambda>Nz*GC does not call __del__ on cyclic objectsF)	weakrefrefr   r9  r   r"   rL   skipr  )r   r  r   r  r    
test_failsD  s    
.


zTestAssertNoGcCycles.test_failsN)
r9   r:   r;   r  r  r  rL   markZslowr  r   r   r   r    r  '  s
   r  assert_funcc              	   C   s  | dd | ddd d}t jt|d | dd W d    n1 sH0    Y  t jt|d | ddd W d    n1 s0    Y  d}t jt|d | ddd W d    n1 s0    Y  t jt|d | ddd W d    n1 s0    Y  d	}t jt|dZ t jt|d* | ddd
 | dddd W d    n1 sX0    Y  W d    n1 sx0    Y  d S )Nr$   )actualdesiredzArrays are not...rJ   r%   zUse of keyword argument...)rR   r  )rS   z#...got multiple values for argumentr*  )rL   rM   r"   Zwarnsr<  ra   )r  Zassert_messageZdep_messageZtype_messager   r   r    test_xy_renamep  s$    
(***r  )Br'  r,  r  r   rL   r  rP   numpyr'   Znumpy._core._multiarray_umathZ_coreZ_multiarray_umathr   Znumpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   r   r   r   r   r   r  r$  rA  rO  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Zskipifr  Zparametrizer  r   r   r   r    <module>   s^   \
. `-_ 9 + JH  g8 .(/	H
