o
    ZZh8                    @   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   M/var/www/auris/lib/python3.10/site-packages/numpy/testing/tests/test_utils.py_test_equal      z_GenericTest._test_equalc                 C   s:   t t | || W d    d S 1 sw   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      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%   r+   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?      z_GenericTest.test_array_likesN)__name__
__module____qualname__r!   r$   r*   r-   r0   r2   r7   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d Zdd Zdd Zdd Zdd Zdd  Zd!S )"TestArrayEqualc                 C   
   t | _d S r   )r   r   r9   r   r   r    setup_methodE      
zTestArrayEqual.setup_methodc                    4    fdd}dD ]}|| qdD ]}|| qdS )z!Test rank 1 array for all dtypes.c                    L   t d| }|d | }| }|d  ||  || d S )Nr&   r%   r   r(   emptyfillcopyr!   r$   tr   r   cr9   r   r    fooJ      

z.TestArrayEqual.test_generic_rank1.<locals>.foo?bhilqpBHILQPfdgFDGZS1ZU1Nr   r   rL   rJ   r   r9   r    test_generic_rank1H      


z!TestArrayEqual.test_generic_rank1c                 C   s   t d}t d}tt}| || W d    n1 s w   Y  t|j}td|v  |}| || t d}t d}d}tjtt	
|d | || W d    n1 s_w   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                    rC   )z!Test rank 3 array for all dtypes.c                    rD   )N)r/   r&   r.   r%   r   rE   rI   r9   r   r    rL   v   rM   z.TestArrayEqual.test_generic_rank3.<locals>.foorN   rO   Nr   rP   r   r9   r    test_generic_rank3t   rR   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&   r8   N)r(   r)   nanr!   r$   r   r   r   rK   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 )r1   floupifloupafloupipiN)r(   r)   r!   r$   rc   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   dS 1 sXw   Y  dS )zTest record arrays.r&   re   rf   r%   rg   N)	r(   rF   floatrH   r!   rU   rV   	TypeErrorr$   rc   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maskrm   ro   )TFFrn   )r(   maMaskedArrayr)   rb   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 saw   Y  t dd	g|}d
}t	j
tt|d | || W d    d S 1 sw   Y  d S )Nc                   @      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__   r;   zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__eq__c                 S   s
   | |k S r   r   rz   r   r   r    __ne__   rB   zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__ne__N)r<   r=   r>   r|   r}   r   r   r   r    MyArray   s    r~         ?       @rm   z{Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 1.
Max relative difference among violations: 0.5rS           g333333@z{Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 2.
Max relative difference among violations: inf)r(   ndarrayr)   viewr   typerw   r!   r$   rU   rV   r#   rY   rZ   )r   r~   r   r   r_   rK   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 s1w   Y  | || | || | || d S )Nc                   @      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__      z^TestArrayEqual.test_subclass_that_does_not_implement_npall.<locals>.MyArray.__array_function__N)r<   r=   r>   r   r   r   r   r    r~          r~   r   r   rm   )	r(   r   r)   r   r   rj   ry   r!   r$   )r   r~   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< tjdd tjtg dtjtg dtj W d    n1 s,w   Y  W d    d S W d    d S 1 sDw   Y  d S )Nraisery   r8   )r%   gWw'&l7r.   )	rU   rV   r#   r(   Zerrstatetestingr   r)   float32r9   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.r   r   r   r   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 s+w   Y  t g d}d}tjtt|d | || W d   dS 1 sUw   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: infrS   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)   rU   rV   r#   rY   rZ   r   r   r   r   r_   r   r   r    test_array_vs_array_not_equal   s   "z,TestArrayEqual.test_array_vs_array_not_equalc                 C   sR   t g d}d}tt | j||dd W d   dS 1 s"w   Y  dS )z9Test comparing an array with a scalar with strict option.r   r   TstrictNr(   r)   rU   rV   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   s\   t g d}t g d}tt | j||dd W d   dS 1 s'w   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)r<   r=   r>   rA   rQ   r`   ra   rd   rh   rk   ru   r   r   r   r   r   r   r   r   r   r   r   r    r?   C   s"    
"r?   c                   @   ,   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   r[   r\   err_msgr   r   r   r   r    test_build_err_msg_defaults$  s   z1TestBuildErrorMessage.test_build_err_msg_defaultsc                 C   D   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   r   )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     z5TestBuildErrorMessage.test_build_err_msg_custom_namesc                 C   r   )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  r   z9TestBuildErrorMessage.test_build_err_msg_custom_precisionN)r<   r=   r>   r   r   r   r   r   r   r   r    r   "  s
    	r   c                   @   \   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   r@   r   )r   r   r9   r   r   r    rA   Q  rB   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(   rb   r$   r9   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(   rt   r$   r9   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$   r9   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 ]\}	}
| |	|
 | |	g|
g | |	g|
 q2t||D ]\}	}
| |	|
 | |	g|
g | |	g|
 qRt||D ]E\}	}
| |	|
 | |	|
g | |	g|
g | |	gt dd | |
gt dd | |	gt dd | |
gt dd qrd 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  s2   



zTestEqual.test_nat_itemsc                 C   s   |  dd | dd d S )NabZabb)r   r$   r9   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(   rb   r$   rt   r9   r   r   r    test_complex_item  s
   "zTestEqual.test_complex_itemc                 C   s   |  tjtj d S r   )r$   ncuZPZEROZNZEROr9   r   r   r    test_negative_zero  r;   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   rb   r   r$   r   r[   r\   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)r<   r=   r>   rA   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   r@   r   )r   r   r9   r   r   r    rA     rB   z!TestArrayAlmostEqual.setup_methodc                 C   sN  d}t jtt|d | jdddd W d    n1 sw   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 sOw   Y  dd	g}d
dg}d}t jtt|d | j||dd W d    n1 s{w   Y  d}t jtt|d | j||dd W d    d S 1 sw   Y  d S )Nz}Mismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.5
Max relative difference among violations: infrS         ?r   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.rU   rV   r#   rY   rZ   r   )r   r_   r   r   r   r   r    test_closeness  s&   "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    d S 1 s<w   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-08rS      r(   r)   r   rU   rV   r#   rY   rZ   r   r[   r\   r_   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 s%w   Y  d}t jtt|d | j||dd W d    n1 sIw   Y  ddg}d	}t jtt|d | j||d
d W d    n1 sqw   Y  d}d	}t jtt|d | j||d
d W d    d S 1 sw   Y  d S )N)mlz@gHPX@r   r   zMismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: 1.rS   	   r   zMismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: 5.4722099r   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 r   r   r   ananaoner   r   r    <lambda>      z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>c                           S r   r   r   ainfr   r   r   r    r     r   c                      r   r   r   r   r   r   r    r     r   r(   r)   rb   rt   r   r   r#   r9   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 )	Nr   r   rm   rn   )r   r   c                      r   r   r   r   r   r   r   r   r    r     r   z/TestArrayAlmostEqual.test_inf.<locals>.<lambda>c                      r   r   r   r   r   r   r    r     r   )r(   r)   rH   rt   r   r#   r9   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 )Nr   r   rm   rn   r   FTg      @rp   rl   )TTT)r   r   rm   )r(   r)   rr   Zmasked_arrayr   rs   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    d S 1 sOw   Y  d S )	Nc                       0   e Zd Z fddZ fddZdd Z  ZS )z5TestArrayAlmostEqual.test_subclass_2.<locals>.MyArrayc                       t  |tjS r   superr|   r   r(   r   rz   	__class__r   r    r|   >  r;   z<TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.__eq__c                    r   r   r   __lt__r   r(   r   rz   r   r   r    r   A  r;   z<TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.__lt__c                 _   s   t | S r   r   r   r   r   r    ry   D  s   z9TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.allr<   r=   r>   r|   r   ry   __classcell__r   r   r   r    r~   =      r~   r   r   T   zMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 200.
Max relative difference among violations: 0.99009rS   )r(   r   r)   r   r   ry   rU   rV   r#   rY   rZ   )r   r~   r   zr   r_   r   r   r    test_subclass_28  s   
"z$TestArrayAlmostEqual.test_subclass_2c                 C   6   G dd dt j}t ddg|}| || d S )Nc                       r   )zGTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                    r   r   r   rz   r   r   r    r|   Y  r;   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    r   r   r   rz   r   r   r    r   \  r;   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _      t r   NotImplementedErrorr   r   r   r    ry   _  r   zKTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allr   r   r   r   r    r~   X  r   r~   r   r   r(   r   r)   r   r   r   r~   r   r   r   r    !test_subclass_that_cannot_be_boolS     
z6TestArrayAlmostEqual.test_subclass_that_cannot_be_boolN)r<   r=   r>   rA   r   r   r   r   r   r   r  r
  r   r   r   r    r     s    %!
r   c                   @   r   )TestAlmostEqualc                 C   r@   r   )r   r   r9   r   r   r    rA   h  rB   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   r   r   r   c                      s    j ddddS Nr   r   r   r   r   r   r9   r   r    r   u      z0TestAlmostEqual.test_closeness.<locals>.<lambda>c                      s    j dgdgddS r  r   r   r9   r   r    r   z  s    r   r   r#   r9   r   r9   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                           tjdS r   )r   r(   rb   r   r9   r   r    r         z/TestAlmostEqual.test_nan_item.<locals>.<lambda>c                           tjtjS r   )r   r(   rb   rt   r   r9   r   r    r     r  c                      r  r   )r   r(   rt   rb   r   r9   r   r    r     r  )r   r(   rb   r   r#   r9   r   r9   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                      r  r   r   r(   rt   r   r9   r   r    r     r  z/TestAlmostEqual.test_inf_item.<locals>.<lambda>c                      s     tj tjS r   r  r   r9   r   r    r     s    )r   r(   rt   r   r#   r9   r   r9   r    test_inf_item  s   

zTestAlmostEqual.test_inf_itemc                 C   s   |  dd d S r   )r$   r9   r   r   r    test_simple_item  r"   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(   rb   rt   r$   r9   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   r[   r  r\   r   r   r    r     s   zTestAlmostEqual.test_complexc                 C   sr  t g d}t g d}d}tjtt|d | j||dd W d   n1 s-w   Y  d}tjtt|d | || W d   n1 sOw   Y  t t jd	g}t t jd
g}d}tjtt|d | || W d   n1 sw   Y  t d
dg}t d	d	g}d}tjtt|d | || W d   dS 1 sw   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      ])rS      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)   rU   rV   r#   rY   rZ   r   rt   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 s%w   Y  d}t d}d}tjtt|d | || W d   dS 1 sOw   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.rS   Nz~Mismatched elements: 20 / 20 (100%)
Max absolute difference among violations: 1.
Max relative difference among violations: 0.5)r(   onesrU   rV   r#   rY   rZ   r   r   r   r   r    test_error_message_2  s   

"z$TestAlmostEqual.test_error_message_2c                 C   r  )Nc                       r   )zBTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                    r   r   r   rz   r   r   r    r|     r;   zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    r   r   r   rz   r   r   r    r     r;   zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   r  r   r  r   r   r   r    ry     r   zFTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allr   r   r   r   r    r~     r   r~   r   r   r  r	  r   r   r    r
    r  z1TestAlmostEqual.test_subclass_that_cannot_be_boolN)r<   r=   r>   rA   r   r  r  r  r   r   r  r  r
  r   r   r   r    r  f  s    	3r  c                   @   4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestApproxEqualc                 C   r@   r   )r   r   r9   r   r   r    rA     rB   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                          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#   r9   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                      r"  r#  r   r   r   r   r    r     r  z3TestApproxEqual.test_simple_items.<locals>.<lambda>r  r9   r   r   r    test_simple_items  s   z!TestApproxEqual.test_simple_itemsc                    t   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                      r   r   r   r   r   r   r    r     r   z0TestApproxEqual.test_nan_array.<locals>.<lambda>c                      r   r   r   r   r   r   r    r     r   c                      r   r   r   r   r   r   r    r     r   r   r9   r   r   r    rd        
zTestApproxEqual.test_nan_arrayc                    r&  )Nr%   c                      r   r   r   r   r   r   r    r     r   z0TestApproxEqual.test_nan_items.<locals>.<lambda>c                      r   r   r   r   r   r   r    r      r   c                      r   r   r   r   r   r   r    r   !  r   r   r9   r   r   r    r     r'  zTestApproxEqual.test_nan_itemsN)r<   r=   r>   rA   r$  r%  rd   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   r@   r   )r   r   r9   r   r   r    rA   &  rB   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    d S 1 shw   Y  d S )N皙?皙@333333?ffffff@c                           S r   r   r   r   r   r    r   .  r   z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>r   c                           S r   r   r   r   r   r    r   2  r   c                      r-  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.5rS   )	r(   r)   r   r   r#   rU   rV   rY   rZ   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 s9w   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.09090909rS   r   c                      r.  r   r   r   r   r   r    r   J  r   z0TestArrayAssertLess.test_rank2.<locals>.<lambda>c                      r-  r   r   r   r   r   r    r   K  r   )	r(   r)   r   rU   rV   r#   rY   rZ   r   r   r_   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 s@w   Y  tt fd
d d S )N)r&   r&   r&   )shaper%   c                      r-  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: infrS   c                      r-  r   r   r   r   r   r    r   [  r   )	r(   r  r   r   r#   rU   rV   rY   rZ   r2  r   r   r    
test_rank3M  s   zTestArrayAssertLess.test_rank3c                    s   dd   d}tjtt|d    W d    n1 s'w   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.rS   r1  c                      r-  r   r   r   r   r   r    r   k  r   z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>r   c                      r.  r   r   r   r   r   r    r   o  r   )	r   rU   rV   r#   rY   rZ   r(   r)   r   r2  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 sKw   Y  d}tjtt|d | || W d    d S 1 snw   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=
ף@r6  )r7  r8  r9  gye}.Ar:  z}Mismatched elements: 1 / 12 (8.33%)
Max absolute difference among violations: 0.
Max relative difference among violations: 0.rS   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 s)w   Y  d}tjtt|d | || W d    n1 sKw   Y  d}d}tjtt|d | || W d    n1 sow   Y  d}tjtt|d | || W d    d S 1 sw   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.23423917rS   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                      r   r   r   r   r   r   r    r     r   z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>c                      r   r   r   r   r   r   r    r     r   c                      r   r   r   r   r   r   r    r     r   c                      r   r   r   r   r   r   r    r     r   r   r9   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*  r1  c                           S r   r   r   r   r   r[   r   r    r     r   z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>c                           S r   r   r   r?  r   r    r     r   r)  r*  c                      r>  r   r   r   r?  r   r    r     r   c                      r@  r   r   r   r?  r   r    r     r   r   r   c                      r.  r   r   r   r   r   r    r     r   )r(   r)   rb   r   r#   r   r9   r   )r   r   r[   r\   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                      r   r   r   r   r   r   r   r   r    r     r   z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>c                      s      S r   r   r   rB  r   r    r     r  c                      s      S r   r   r   r   r   r   r    r     r   c                      s       S r   r   r   rC  r   r    r     r  c                      s        S r   r   r   rC  r   r    r     r  )r(   r)   rt   r   r   r#   r9   r   rB  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                      r>  r   r   r   r   r   r[   r   r    r     r   z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>c                      r@  r   r   r   rE  r   r    r     r   c                      s      S r   r   r   rE  r   r    r     r  c                      s       S r   r   r   rE  r   r    r     r  c                      s       S r   r   r   rE  r   r    r     r  )r(   r)   rt   r   r#   r   r9   r   rE  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 s(w   Y  t ||j}| || tt | j||	t j
dd W d   dS 1 sWw   Y  dS z)Test the behavior of the `strict` option.r.   r   Tr   N)r(   Zzerosr  r   rU   rV   r#   Zbroadcast_tor4  astyper   r   r   r   r    test_strict  s   

"zTestArrayAssertLess.test_strictN)r<   r=   r>   rA   r0  r3  r5  r%  r;  r<  r=  rA  rD  rF  rI  r   r   r   r    r(  $  s    
r(  c                   @   r   )
	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>.frM  r.   c                 S   s   | S r   r   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   rO  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w   Y  t jd j}dd }tt| t	||d d S )NrM  rK  c                   S   s6   t   td W d    d S 1 sw   Y  d S NrK  )r
   rM  rN  r   r   r   r    no_warnings  s   "z3TestWarns.test_context_manager.<locals>.no_warningsrR  )
rS  rT  rU  r	   rV  rM  rN  r   r#   r   )r   rW  rX  r[  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$}t tdd td	t W d    n1 s-w   Y  W d    n1 s<w   Y  d
t|v sIJ dt|v sQJ tt$}t tdd td	t W d    n1 snw   Y  W d    n1 s}w   Y  d
t|v sJ dt|vsJ d S )Nr   r%   c                 S   s   t d | | S rZ  rL  )r   r   r   r   r    rO    s   
zTestWarns.test_args.<locals>.fr  r   ArS   Br	   zpytest.warns)Zwrong)r   r%   )r	   rV  rU   rV   RuntimeErrorrM  rN  rW   )r   rO  excr   r   r    	test_args  s$   
zTestWarns.test_argsc              	   C   sv   dd }d}t  ! t dt z	tt| d}W n	 ty#   Y nw W d    n1 s.w   Y  |r9tdd S )Nc                   S   s   t dt d S rZ  )rM  rN  DeprecationWarningr   r   r   r    rO  $  r"   z,TestWarns.test_warn_wrong_warning.<locals>.fFerrorTz#wrong warning caught by assert_warn)rM  catch_warningssimplefilterrc  r	   rV  r#   )r   rO  failedr   r   r    test_warn_wrong_warning#  s   

	z!TestWarns.test_warn_wrong_warningN)r<   r=   r>   rY  r\  rb  rh  r   r   r   r    rJ    s
    rJ  c                   @   r   )TestAssertAllclosec                 C   s&  d}d}t ||dd ttt || d}tjtt|d t || W d    n1 s.w   Y  d}d}tjtt|d t || W d    n1 sQw   Y  d	}tjtt|d t || W d    n1 srw   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 sw   Y  d}tjtt|d t || W d    d S 1 sw   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.rS   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#   rU   rV   rY   rZ   r(   r)   )r   r[   r\   r_   r  r   r   rK   r   r   r    r   7  sH   
$zTestAssertAllclose.test_simplec                 C   s*   t jt t jjgt jd}t|| d S )Nr3   )r(   r)   Ziinfoint_minr   r6   r   r   r    test_min_intl  s   zTestAssertAllclose.test_min_intc                 C   sd   t g d}t g d}d}tjtt|d t|| W d    d S 1 s+w   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.5rS   r(   r)   rU   rV   r#   rY   rZ   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)   rb   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 )NFrp  )r(   r)   rb   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)   rb   r   r   r   r   r   r   r   r    test_equal_nan_default  s   


z)TestAssertAllclose.test_equal_nan_defaultc                 C   sd   t ddg}t ddg}d}tjtt|d t|| W d    d S 1 s+w   Y  d S )Nr   r%   r&   z-Max relative difference among violations: 0.5rS   rn  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]r3   )r(   r)   r   r6   r   r   r    test_timedelta  s   z!TestAssertAllclose.test_timedeltac                 C   sp   t jg ddd}t jg ddd}d}tjtt|d t||dd W d	   d	S 1 s1w   Y  d	S )
zUCheck the message is formatted correctly when overflow can occur
           (gh21768))r   r%   r/  Zuint8r3   )r/   r/   r/   z+Max absolute difference among violations: 4rS   r.   rj  N)r(   ZasarrayrU   rV   r#   rY   rZ   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 s&w   Y  t|| tt t||t jdd W d   dS 1 sLw   Y  dS rG  )r(   r  r   rU   rV   r#   rH  r   r   r   r   r    rI    s   



"zTestAssertAllclose.test_strictN)r<   r=   r>   r   rm  ro  rq  rr  rs  rt  ru  rv  rI  r   r   r   r    ri  5  s    5
ri  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      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   r3   r   r   	r(   linspacefloat64r_finfor4   epsr   epsnegr   nulpr[   r  r\   r  r   r   r    test_float64_pass  s   z*TestArrayAlmostEqualNulp.test_float64_passc                 C      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 ry  r(   r}  r~  r  r  r4   r  r   r#   r   r  r  r   r   r    test_float64_fail     z*TestArrayAlmostEqualNulp.test_float64_failc                 C   T   t d}t jt jt jdt j}||A }|t j}|t j}t||d d S )Nl    r3   r   )r(   Zuint64r)   rb   r~  r   r   )r   offsetZnan1_i64Znan2_i64Znan1_f64Znan2_f64r   r   r    test_float64_ignore_nan     
z0TestArrayAlmostEqualNulp.test_float64_ignore_nanc                 C   rx  ry  	r(   r}  r   r  r  r4   r  r   r  r  r   r   r    test_float32_pass     z*TestArrayAlmostEqualNulp.test_float32_passc                 C   r  ry  r(   r}  r   r  r  r4   r  r   r#   r   r  r  r   r   r    test_float32_fail  r  z*TestArrayAlmostEqualNulp.test_float32_failc                 C   r  )Ni  r3   r   )r(   Zuint32r)   rb   r   r   r   )r   r  Znan1_i32Znan2_i32Znan1_f32Znan2_f32r   r   r    test_float32_ignore_nan  r  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   r3   r   )	r(   r}  float16r  r  r4   r  r   r  r  r   r   r    test_float16_pass  r  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 r  )r(   r}  r  r  r  r4   r  r   r#   r   r  r  r   r   r    test_float16_fail  r  z*TestArrayAlmostEqualNulp.test_float16_failc                 C   r  )N   r3   r   )r(   Zuint16r)   rb   r  r   r   )r   r  Znan1_i16Znan2_i16Znan1_f16Znan2_f16r   r   r    test_float16_ignore_nan-  r  z0TestArrayAlmostEqualNulp.test_float16_ignore_nanc                 C   $  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   rz  r  r{  r3   r                 ?r   rn   r|  r   r  r[   xir  r\   r  r   r   r    test_complex128_pass8  s"   z-TestArrayAlmostEqualNulp.test_complex128_passc                 C   4  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   rz  r  r{  r3   r   r  r   r  r  r   r   r    test_complex128_failO  s:   z-TestArrayAlmostEqualNulp.test_complex128_failc                 C   r  r  r  r  r   r   r    test_complex64_passl  s"   z,TestArrayAlmostEqualNulp.test_complex64_passc                 C   r  r  r  r  r   r   r    test_complex64_fail  s:   z,TestArrayAlmostEqualNulp.test_complex64_failN)r<   r=   r>   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r    rw    s    rw  c                   @   r  )TestULPc                 C   s   t jd}t||dd d S )Nr   r   maxulp)r(   randomrandnr   )r   r[   r   r   r    
test_equal  s   zTestULP.test_equalc                 C   R   t dt j}|dt jdt j 7 }t t jj}t||| dd d S )Nr   {Gz?r  r  )	r(   r  rH  r   r  r  r  r  r   r   r[   r  r   r   r    test_single     zTestULP.test_singlec                 C   r  )Nr   r     r  )	r(   r  rH  r~  r  r  r  r  r   r  r   r   r    test_double  r  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  r  )	r(   r   r~  r)   rt   rH  r  maxr   )r   dtrt   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   mBr   g       c                         t  dS Nr  r   r   )rt   r  rb   r   r    r         z"TestULP.test_nan.<locals>.<lambda>c                      r  r  r  r   )r  r  rb   r   r    r     r  c                         t  dS r  r  r   )r  rb   tinyr   r    r     r  c                      r  r  r  r   )r  rb   zeror   r    r     r  c                      r  r  r  r   )r  rb   nzeror   r    r     r  )r(   r   r~  r)   rt   rH  rb   r  r  r  r   r#   )r   r  r   )r  rt   r  rb   r  r  r  r    r     s4   
zTestULP.test_nanN)r<   r=   r>   r  r  r  r   r   r   r   r   r    r    s    r  c                   @   rv   )TestStringEqualc                 C   sn   t dd t dd tt}t dd W d    n1 sw   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   
   t ddS )NrL   r  r   r   r   r   r    r        
 z-TestStringEqual.test_simple.<locals>.<lambda>)r   rU   rV   r#   rW   rX   r   r   )r   r]   r^   r   r   r    r     s   



zTestStringEqual.test_simplec                 C   s   t dd ttdd  d S )Nza+*bc                   S   r  )NZaaaza+br  r   r   r   r    r     r  z,TestStringEqual.test_regex.<locals>.<lambda>)r   r   r#   r9   r   r   r    
test_regex  s   
zTestStringEqual.test_regexN)r<   r=   r>   r   r  r   r   r   r    r    s    r  c                 C   sH   z| j }W n ty   i }Y nw 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)r<   r=   r>   r   r   r   r    r    s    r  r   )r  r  c                   @   r   )r  c                 S   s   ddd| _ d S )Nr%   r&   Zwarning1Zwarning2)r  r9   r   r   r    __init__  s   z8test_warn_len_equal_call_scenarios.<locals>.mod.__init__N)r<   r=   r>   r  r   r   r   r    r    r   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 | S  ty   Y | S w r   )rS  rT  r<   r  clearr  my_modr   r   r    _get_fresh_mod  s   
r  c                  C   sF  t  } tt| di i  t| gd td td W d    n1 s'w   Y  t| ji  t  td td W d    n1 sJw   Y  t| d ddd| _t| gd td td	 W d    n1 suw   Y  t| d t  td td	 W d    n1 sw   Y  t| d d S )
Nr  )rT  ignoreSome warningr   r%   r&   r  zAnother warning)	r  r   getattrr   rM  rf  rN  r  r  r  r   r   r    test_clear_and_catch_warnings(  s2   





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 s8w   Y  tt|jd t|jd jjd d t| d t }|j| d | td W d    n1 sqw   Y  t| d |j| d | td W d    n1 sw   Y  t| d t  td td W d    n1 sw   Y  t| d d S )	Nr  c                  S      dd } t | ddg d S )Nc                 S      t jddd | S )NzSome warning 2r&   
stacklevelrL  Zarrr   r   r    rN  P     zFtest_suppress_warnings_module.<locals>.warn_other_module.<locals>.warnr   r(   Zapply_along_axisrN  r   r   r    warn_other_moduleM     z8test_suppress_warnings_module.<locals>.warn_other_moduler   moduler  r%   r  )r  r   r  r  r   recordrV  filterr(   libZ_shape_base_implrM  rN  r  logmessager   rf  )r  r  supr   r   r    test_suppress_warnings_moduleH  s:   
	

	



r  c                  C   s0  t  } tt| di i  t }|t td W d    n1 s$w   Y  t| d t }|t | td W d    n1 sHw   Y  t| d |j| d | td W d    n1 sjw   Y  t| d t  t	d td W d    n1 sw   Y  t| d d S )Nr  r  r   r  r  )
r  r   r  r   r  rV  rM  rN  r  rf  )r  r  r   r   r    test_suppress_warnings_typev  s.   





r  c                  C   sv   t  } | t | dd }tjdd}td |t |t tt|d W d    d S 1 s4w   Y  d S )Nc                 S   s   t d|  d S )Nr  rL  )categoryr   r   r    rN    s   z7test_suppress_warnings_decorate_no_record.<locals>.warnT)r  alwaysr%   )	r   r  rV  rM  re  rf  RuntimeWarningr   r  )r  rN  wr   r   r    )test_suppress_warnings_decorate_no_record  s   


"r  c               	   C   s  t  } |  }| D | 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 sPw   Y  | D | 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 sw   Y  t  @} |   t   }|jdd td td tt|jd W d    n1 sw   Y  tt| jd W d    d S 1 sw   Y  d S )NzSome other warning 2)r  r  Some other warningr&   r%   r   )
r   r  r  rM  rN  r   r  r  r  r   )r  Zlog1log2sup2r   r   r    test_suppress_warnings_record  sD   







"r  c               	   C   s2  dd } t  4}|  t d tdD ]}td qW d    n1 s'w   Y  tt|jd W d    n1 s>w   Y  t  9}|  t d tdD ]}td td qTW d    n1 skw   Y  tt|jd W d    n1 sw   Y  t  <}|  t d tdD ]}td td |   qW d    n1 sw   Y  tt|jd W d    n1 sw   Y  t  =}|  t d tdD ]}td td	 |   qW d    n1 sw   Y  tt|jd W d    d S 1 sw   Y  d S )
Nc                  S   r  )Nc                 S   r  )Nr  r&   r  rL  r  r   r   r    rN    r  zJtest_suppress_warnings_forwarding.<locals>.warn_other_module.<locals>.warnr   r  r  r   r   r    r    r  z<test_suppress_warnings_forwarding.<locals>.warn_other_moduler  r&   r  locationr  oncer  )r   r  rangerM  rN  r   r  r  )r  r  ir   r   r    !test_suppress_warnings_forwarding  sT   


	






$r  c               	   C   s   t  $} tj| d}t|d W d    n1 sw   Y  W d    n1 s*w   Y  ttj|   d}zt  } t1 sDw   Y  W n tyU   d}Y nw 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w   Y  W d    n1 s#w   Y  ttj|   d}zt  } t1 s=w   Y  W n tyN   d}Y nw 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)r<   r=   r>   rS  rT  Zclass_modulesr   r   r   r    r    s    r  c                  C   sP   t  } t  td td W d    n1 sw   Y  t| ji  d S )Nr  r  )r  r  rM  rf  rN  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w   Y  t | d S )Nc                  S   s   g } |  g  | S r   appendr]  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 sw   Y  W d    n1 s)w   Y  t t t| W d    d S 1 sBw   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   


"z!TestAssertNoGcCycles.test_assertsc                    s   G  fddd zCt   }ztt tdd  W d   n1 s&w   Y  W n ty@   | dur>td  Y nw W d _dS W d _dS d _w )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   )cycler9   r   r   r    r  R  rB   zETestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__init__c                    s   d | _  jr   d S d S r   )r  r  r9   ReferenceCycleInDelr   r    __del__U  s   
zDTestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__del__N)r<   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  rQ  z1TestAssertNoGcCycles.test_fails.<locals>.<lambda>Nz*GC does not call __del__ on cyclic objectsF)	weakrefrefr   r`  r   r#   rU   skipr  )r   r  r   r  r    
test_failsD  s$   



	zTestAssertNoGcCycles.test_failsN)
r<   r=   r>   r  r  r  rU   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 s$w   Y  t jt|d | ddd W d    n1 sAw   Y  d}t jt|d | ddd W d    n1 s`w   Y  t jt|d | ddd W d    n1 s}w   Y  d	}t jt|d5 t jt|d | ddd
 | dddd W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr%   )actualdesiredzArrays are not...rS   r&   zUse of keyword argument...)r[   r  )r\   z#...got multiple values for argumentrP  )rU   rV   r#   Zwarnsrc  rj   )r  Zassert_messageZdep_messageZtype_messager   r   r    test_xy_renamep  s.   
Pr  )BrM  rS  r  r   rU   r  rY   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(  rJ  ri  rw  r  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