o
    h                     @   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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mZ d dl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(ej)j*dd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!Z0d"d# Z1d$d% Z2d&d' Z3d(d) Z4d*d+ Z5d,d- Z6d.d/ Z7d0d1 Z8d2d3 Z9d4d5 Z:d6d7 Z;G d8d9 d9eZ<d:d; Z=ej)j>e d<dG d=d> d>Z?dS )?    N)assert_equalassert_array_equalassert_almost_equalassert_array_almost_equalassert_array_lessbuild_err_msgraises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_REFCOUNT)ARRAY_FUNCTION_ENABLEDc                   @   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!   Y/var/www/html/scripts/venv/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_diffshape2   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_objarray9   s   z_GenericTest.test_objarrayc                 C   s   |  g dd d S )Nr'   r(   r0   )r#   r   r!   r!   r"   test_array_likes>      z_GenericTest.test_array_likesN)__name__
__module____qualname__r#   r&   r,   r/   r2   r4   r9   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ejje dd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   r;   r!   r!   r"   setup_methodD      
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    cr;   r!   r"   fooI      

z.TestArrayEqual.test_generic_rank1.<locals>.foo?bhilqpBHILQPfdgFDGS1U1Nr!   r   rN   rL   r!   r;   r"   test_generic_rank1G      


z!TestArrayEqual.test_generic_rank1c                 C   sl   t d}t d}tt| j|| |}| || t d}t d}tt| j|| |}| || d S )Nl   Cj<T"3w-l   (M$c7uv+   
   )r*   r+   r	   r%   r   r   xyr!   r!   r"   test_0_ndim_arrayZ   s   



z TestArrayEqual.test_0_ndim_arrayc                    rE   )z!Test rank 3 array for all dtypes.c                    rF   )N)r1   r(   r0   r'   r   rG   rK   r;   r!   r"   rN   k   rO   z.TestArrayEqual.test_generic_rank3.<locals>.foorP   rQ   Nr!   rT   r!   r;   r"   test_generic_rank3i   rV   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(   r:   N)r*   r+   nanr#   r&   r   r   r    rM   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 )r3   floupifloupafloupipiN)r*   r+   r#   r&   r_   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(   ra   rb   r'   rc   N)	r*   rH   floatrJ   r#   pytestr   	TypeErrorr&   r_   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maskrj   rl   )TFFrk   )r*   maMaskedArrayr+   r^   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 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!   rw   r!   r!   r"   __ne__   rD   zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__ne__N)r>   r?   r@   ry   rz   r!   r!   r!   r"   MyArray   s    r{         ?       @rj   )	r*   ndarrayr+   viewr   typert   r#   r&   r   r{   r   r    r!   r!   r"   test_subclass_that_overrides_eq   s   z.TestArrayEqual.test_subclass_that_overrides_eqzrequires __array_function__reasonc                 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}   rj   )	r*   r~   r+   r   r	   rg   rv   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)rv   r:   )r'   gWw'&l7r0   )	rf   r   r%   r*   errstatetestingr   r+   float32r;   r!   r!   r"   test_suppress_overflow_warnings   s   "z.TestArrayEqual.test_suppress_overflow_warningsc                 C   "   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      z,TestArrayEqual.test_array_vs_scalar_is_equalc                 C   r   )z@Test comparing an array with a scalar when not all values equal.r|   r}   rj   r|   Nr.   r   r!   r!   r"   test_array_vs_scalar_not_equal   r   z-TestArrayEqual.test_array_vs_scalar_not_equalc                 C   sP   t g d}d}tt t||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+   rf   r   r%   r   r   r!   r!   r"   test_array_vs_scalar_strict   s
   "z*TestArrayEqual.test_array_vs_scalar_strictc                 C   s.   t g d}t g d}t||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 t||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@   rC   rU   r\   r]   r`   rd   rh   rr   r   rf   markskipifr   r   r   r   r   r   r   r   r!   r!   r!   r"   rA   B   s(    

rA   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   rZ   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   )FOO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_names     z5TestBuildErrorMessage.test_build_err_msg_custom_namesc                 C   r   )N)g0D   ?r   r   )g_p   ?r   r   r   rX   )	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_precision   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   rB   r   )r   r   r;   r!   r!   r"   rC   .  rD   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*   r^   r&   r;   r!   r!   r"   test_nan_items1  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*   rq   r&   r;   r!   r!   r"   test_inf_items7  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&   r;   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   timedelta64	itertoolsproductr   r&   )r   nadt_no_unitnadt_snadt_dnatd_no_unitnatd_snatd_ddtstdsr   r    r!   r!   r"   test_nat_itemsP  s2   



zTestEqual.test_nat_itemsc                 C   s   |  dd | dd d S )Nababb)r   r&   r;   r!   r!   r"   test_non_numerico  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*   r^   r&   rq   r;   r!   r!   r"   test_complex_items  s
   "zTestEqual.test_complex_itemc                 C   s   |  tjtj d S r   )r&   r*   PZERONZEROr;   r!   r!   r"   test_negative_zeroz  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   r^   r   r&   rY   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@   rC   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r   ,  s    r   c                   @   sD   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S )TestArrayAlmostEqualc                 C   rB   r   )r   r   r;   r!   r!   r"   rC     rD   z!TestArrayAlmostEqual.setup_methodc                    L    j dddd tt fdd  j dgdgdd tt fdd d S )N?        r   decimalc                          j ddddS Ng      ?r   r   r   r   r!   r;   r!   r"   <lambda>      z5TestArrayAlmostEqual.test_closeness.<locals>.<lambda>c                          j dgdgddS r   r   r!   r;   r!   r"   r         r   r	   r%   r;   r!   r;   r"   test_closeness     

z#TestArrayAlmostEqual.test_closenessc                    sR   t dgt dg jdd  jdd tt fdd d S )NgeH@gwH@r0   r   r1   c                          j ddS )N   r   r   r!   rY   r!   r"   r     r   z2TestArrayAlmostEqual.test_simple.<locals>.<lambda>r*   r+   r   r	   r%   r;   r!   rY   r"   test_simple  s   z TestArrayAlmostEqual.test_simplec                    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"   r         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+   r^   rq   r   r	   r%   r;   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}   rj   rk   )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+   rJ   rq   r	   r%   r;   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}   rj   rk   r   FTg      @rm   ri   )TTTr   )r*   r+   ro   masked_arrayr   rp   r#   maskedr   r!   r!   r"   test_subclass  s.   
z"TestArrayAlmostEqual.test_subclassc                 C   6   G dd dt j}t ddg|}| || d S )Nc                       0   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                       t  |tjS r   superry   r   r*   r~   rw   	__class__r!   r"   ry     r=   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    r  r   r  __lt__r   r*   r~   rw   r  r!   r"   r
    r=   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _      t r   NotImplementedErrorr   r!   r!   r"   rv     r   zKTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allr>   r?   r@   ry   r
  rv   __classcell__r!   r!   r  r"   r{         r{   r|   r}   r*   r~   r+   r   r   r   r{   r   r!   r!   r"   !test_subclass_that_cannot_be_bool     
z6TestArrayAlmostEqual.test_subclass_that_cannot_be_boolN)
r>   r?   r@   rC   r   r   r   r   r  r  r!   r!   r!   r"   r     s    	
r   c                   @   r   )TestAlmostEqualc                 C   rB   r   )r   r   r;   r!   r!   r"   rC     rD   zTestAlmostEqual.setup_methodc                    r   )Nr   r   r   r   c                      r   r   r   r!   r;   r!   r"   r     r   z0TestAlmostEqual.test_closeness.<locals>.<lambda>c                      r   r   r   r!   r;   r!   r"   r     r   r   r;   r!   r;   r"   r     r   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*   r^   r!   r;   r!   r"   r         z/TestAlmostEqual.test_nan_item.<locals>.<lambda>c                           tjtjS r   )r   r*   r^   rq   r!   r;   r!   r"   r     r   c                      r  r   )r   r*   rq   r^   r!   r;   r!   r"   r   
  r   )r   r*   r^   r	   r%   r;   r!   r;   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*   rq   r!   r;   r!   r"   r     r  z/TestAlmostEqual.test_inf_item.<locals>.<lambda>c                      s     tj tjS r   r  r!   r;   r!   r"   r     s    )r   r*   rq   r	   r%   r;   r!   r;   r"   test_inf_item  s   

zTestAlmostEqual.test_inf_itemc                 C   s   |  dd d S r   )r&   r;   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*   r^   rq   r&   r;   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   rZ   zr[   r!   r!   r"   r     s   zTestAlmostEqual.test_complexc                 C   sv  t g d}t g d}tt}| j||dd W d   n1 s&w   Y  t|jd}t	|d d t	|d	 d
 t	|d d t	|d d t	|d d tt}| || W d   n1 slw   Y  t|jd}t	|d d t	|d	 d
 t	|d d t	|d d t	|d d t t j
dg}t t j
dg}tt}| || W d   n1 sw   Y  t|jd}t	|d d t	|d	 d t	|d d t	|d d t	|d d t ddg}t ddg}tt}| || W d   n	1 sw   Y  t|jd}t	|d d t	|d	 d t	|d d 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      r   N
r0   z!Mismatched elements: 3 / 3 (100%)r1   zMax absolute difference: 1.e-05r   z'Max relative difference: 3.33328889e-06   z8 x: array([1.00000000001, 2.00000000002, 3.00003      ])   z8 y: array([1.00000000002, 2.00000000003, 3.00004      ])z"Mismatched elements: 1 / 3 (33.3%)z& x: array([1.     , 2.     , 3.00003])z& y: array([1.     , 2.     , 3.00004])r   r'   z Mismatched elements: 1 / 2 (50%)Max absolute difference: 1.Max relative difference: 1.z x: array([inf,  0.])z y: array([inf,  1.])r(   z!Mismatched elements: 2 / 2 (100%)zMax absolute difference: 2zMax relative difference: inf)r*   r+   rf   r   r%   r   strvaluesplitr   rq   r   rZ   r[   exc_infomsgsr!   r!   r"   test_error_message'  s\   z"TestAlmostEqual.test_error_messagec                 C   s   d}t d}tt}| || W d   n1 sw   Y  t|jd}t	|d d t	|d d t	|d	 d
 d}t d}tt}| || W d   n1 s\w   Y  t|jd}t	|d d t	|d d t	|d	 d dS )zHCheck the message is formatted correctly when either x or y is a scalar.r(      Nr  r0   z#Mismatched elements: 20 / 20 (100%)r1   r"  r   r#  Max relative difference: 0.5)
r*   onesrf   r   r%   r   r$  r%  r&  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  rw   r  r!   r"   ry   w  r=   zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    r  r   r	  rw   r  r!   r"   r
  z  r=   zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   r  r   r  r   r!   r!   r"   rv   }  r   zFTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allr  r!   r!   r  r"   r{   v  r  r{   r|   r}   r  r  r!   r!   r"   r  q  r  z1TestAlmostEqual.test_subclass_that_cannot_be_boolN)r>   r?   r@   rC   r   r  r  r  r   r   r*  r.  r  r!   r!   r!   r"   r    s    	6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   rB   r   )r   r   r;   r!   r!   r"   rC     rD   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   significantr   c                      r   Nr!  r3  r   r!   rY   r!   r"   r     r   z7TestApproxEqual.test_simple_0d_arrays.<locals>.<lambda>r   r;   r!   rY   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 )	Nr1  r2  r1   r3  r   r   c                      r   r5  r   r!   rY   r!   r"   r     r   z3TestApproxEqual.test_simple_items.<locals>.<lambda>r   r;   r!   rY   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   r;   r!   r   r"   r`        
zTestApproxEqual.test_nan_arrayc                    r8  )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   r;   r!   r   r"   r     r9  zTestApproxEqual.test_nan_itemsN)r>   r?   r@   rC   r6  r7  r`   r   r!   r!   r!   r"   r0    s    	
	r0  c                   @   T   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 )TestArrayAssertLessc                 C   rB   r   )r   r   r;   r!   r!   r"   rC     rD   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 d S )
N皙?皙@333333?ffffff@c                           S r   r   r!   rY   r!   r"   r     r   z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>r|   c                           S r   r   r!   rY   r!   r"   r     r   c                      r@  r   r   r!   rY   r!   r"   r     r   r   r;   r!   rY   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  tt fd	d
 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      @c                      r@  r   r   r!   rY   r!   r"   r     r   z0TestArrayAssertLess.test_rank2.<locals>.<lambda>r|   c                      rA  r   r   r!   rY   r!   r"   r     r   c                      r@  r   r   r!   rY   r!   r"   r     r   r   r;   r!   rY   r"   
test_rank2  s   zTestArrayAssertLess.test_rank2c                    sv   t jddt jddd   tt fdd dd< tt fdd tt fd	d d S )
N)r(   r(   r(   )shaper'   c                      r@  r   r   r!   rY   r!   r"   r     r   z0TestArrayAssertLess.test_rank3.<locals>.<lambda>r   )r   r   r   c                      rA  r   r   r!   rY   r!   r"   r     r   c                      r@  r   r   r!   rY   r!   r"   r     r   )r*   r-  r   r	   r%   r;   r!   rY   r"   
test_rank3  s   zTestArrayAssertLess.test_rank3c                    s   dd   tt fdd tddg   tt fdd tddgtt fdd d S )	Nr<  r=  c                      r@  r   r   r!   rY   r!   r"   r     r   z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>rC  c                      r@  r   r   r!   rY   r!   r"   r     r   r|   c                      rA  r   r   r!   rY   r!   r"   r     r   )r   r	   r%   r*   r+   r;   r!   rY   r"   r7    s   z%TestArrayAssertLess.test_simple_itemsc                    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   r;   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=  rC  c                           S r   r   r!   r   r   rZ   r!   r"   r     r   z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>c                           S r   r   r!   rI  r!   r"   r     r   r<  r=  c                      rH  r   r   r!   rI  r!   r"   r     r   c                      rJ  r   r   r!   rI  r!   r"   r     r   r|   r}   c                      rA  r   r   r!   rY   r!   r"   r     r   )r*   r+   r^   r	   r%   r   r;   r!   )r   r   rZ   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!   rL  r!   r"   r     r  c                      s      S r   r   r!   r   r   r!   r"   r     r   c                      s       S r   r   r!   rM  r!   r"   r     r  c                      s        S r   r   r!   rM  r!   r"   r     r   )r*   r+   rq   r   r	   r%   r;   r!   rL  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                      rH  r   r   r!   r   r   rZ   r!   r"   r     r   z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>c                      rJ  r   r   r!   rO  r!   r"   r     r   c                      s      S r   r   r!   rO  r!   r"   r     r  c                      s       S r   r   r!   rO  r!   r"   r     r   c                      s       S r   r   r!   rO  r!   r"   r     r   )r*   r+   rq   r	   r%   r   r;   r!   rO  r"   test_inf_compare_array  s   z*TestArrayAssertLess.test_inf_compare_arrayN)r>   r?   r@   rC   rB  rD  rF  r7  rG  rK  rN  rP  r!   r!   r!   r"   r;    s    
r;  z$The raises decorator depends on Noser   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S )
TestRaisesc                 C   s   G dd dt }|| _d S )Nc                   @      e Zd ZdS )z,TestRaises.setup_method.<locals>.MyExceptionNr>   r?   r@   r!   r!   r!   r"   MyException       rT  )	Exceptione)r   rT  r!   r!   r"   rC     s   
zTestRaises.setup_methodc                 C   s   |r   r!   )r   rW  r!   r!   r"   raises_exception%  r   zTestRaises.raises_exceptionc                 C      d S r   r!   r;   r!   r!   r"   does_not_raise_exception(  r   z#TestRaises.does_not_raise_exceptionc                 C   s   t | j| j| j d S r   )r   rW  rX  r;   r!   r!   r"   test_correct_catch+  s   zTestRaises.test_correct_catchc                 C   s4   zt | j| jt W td ty   Y d S w )Nzshould have caught RuntimeError)r   rW  rX  RuntimeErrorr%   r;   r!   r!   r"   test_wrong_exception.  s   zTestRaises.test_wrong_exceptionc                 C   s2   zt | j| j  W td ty   Y d S w )Nz$should have raised an AssertionError)r   rW  rZ  r%   r;   r!   r!   r"   test_catch_no_raise6  s   zTestRaises.test_catch_no_raiseN)	r>   r?   r@   rC   rX  rZ  r[  r]  r^  r!   r!   r!   r"   rQ    s    rQ  c                   @   s$   e Z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yor0   warningswarnr!   r!   r!   r"   fB  s   
zTestWarns.test_warn.<locals>.frb  r0   c                 S   s   | S r   r!   )rZ   r!   r!   r"   r   K      z%TestWarns.test_warn.<locals>.<lambda>r'   .assert_warns does not preserver warnings state)	sysmodulesfiltersr   r
   UserWarningr	   r%   r   )r   rd  before_filtersafter_filtersr!   r!   r"   	test_warnA  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 )Nrb  r`  c                   S   s6   t   td W d    d S 1 sw   Y  d S Nr`  )r   rb  rc  r!   r!   r!   r"   no_warningsX  s   "z3TestWarns.test_context_manager.<locals>.no_warningsrf  )
rg  rh  ri  r
   rj  rb  rc  r	   r%   r   )r   rk  rl  ro  r!   r!   r"   test_context_managerQ  s   

zTestWarns.test_context_managerc              	   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 rn  )rb  rc  DeprecationWarningr!   r!   r!   r"   rd  a  r$   z,TestWarns.test_warn_wrong_warning.<locals>.fFerrorTz#wrong warning caught by assert_warn)rb  catch_warningssimplefilterrq  r
   rj  r%   )r   rd  failedr!   r!   r"   test_warn_wrong_warning`  s   

	z!TestWarns.test_warn_wrong_warningN)r>   r?   r@   rm  rp  rv  r!   r!   r!   r"   r_  ?  s    r_  c                   @   r:  )TestAssertAllclosec                 C   s   d}d}t ||dd ttt || 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 d S )NgMbP?g&.>r'   atolg1  ?r   )rtolr   rX   g      ?)r   r	   r%   r*   r+   )r   rZ   r[   r   r    r!   r!   r"   r   t  s   
zTestAssertAllclose.test_simplec                 C   s*   t jt t jjgt jd}t|| d S )Nr5   )r*   r+   iinfoint_minr   r8   r!   r!   r"   test_min_int  s   zTestAssertAllclose.test_min_intc                 C   sj   t g d}t g d}tt}t|| W d    n1 s#w   Y  t|j}td|v  d S )N)r'   r'   r'   r'   )r'   r'   r'   r(   zXMismatched elements: 1 / 4 (25%)
Max absolute difference: 1
Max relative difference: 0.5	r*   r+   rf   r   r%   r   r$  r%  r   r   r   r    r(  msgr!   r!   r"   test_report_fail_percentage  s   

z.TestAssertAllclose.test_report_fail_percentagec                 C   s.   t t jg}t t jg}t||dd d S )NT	equal_nan)r*   r+   r^   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 )NFr  )r*   r+   r^   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+   r^   r   r   r   r   r   r!   r!   r"   test_equal_nan_default  s   


z)TestAssertAllclose.test_equal_nan_defaultc                 C   sj   t ddg}t ddg}tt}t|| W d    n1 s#w   Y  t|j}td|v  d S )Nr   r'   r(   r,  r  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(   r0   r   zm8[ns]r5   )r*   r+   r   r8   r!   r!   r"   test_timedelta  s   z!TestAssertAllclose.test_timedeltac                 C   s~   t jg ddd}t jg ddd}tt}t||dd W d   n1 s)w   Y  t|jd}t	|d	 d
 dS )zYCheck the the message is formatted correctly when overflow can occur
           (gh21768))r   r'      uint8r5   )r1   r1   r1   r0   rx  Nr  r1   zMax absolute difference: 4)
r*   asarrayrf   r   r%   r   r$  r%  r&  r   r'  r!   r!   r"   test_error_message_unsigned  s   z.TestAssertAllclose.test_error_message_unsignedN)r>   r?   r@   r   r~  r  r  r  r  r  r  r  r!   r!   r!   r"   rw  r  s    	rw  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   r5   rX   r}   	r*   linspacefloat64r_finfor6   epsr   epsnegr   nulprZ   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 r  r*   r  r  r  r  r6   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    r5   r   )r*   uint64r+   r^   r  r   r   )r   offsetnan1_i64nan2_i64nan1_f64nan2_f64r!   r!   r"   test_float64_ignore_nan     
z0TestArrayAlmostEqualNulp.test_float64_ignore_nanc                 C   r  r  	r*   r  r   r  r  r6   r  r   r  r  r!   r!   r"   test_float32_pass     z*TestArrayAlmostEqualNulp.test_float32_passc                 C   r  r  r*   r  r   r  r  r6   r  r	   r%   r   r  r  r!   r!   r"   test_float32_fail  r  z*TestArrayAlmostEqualNulp.test_float32_failc                 C   r  )Ni  r5   r   )r*   uint32r+   r^   r   r   r   )r   r  nan1_i32nan2_i32nan1_f32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   r1   rX   r5   r}   )	r*   r  float16r  r  r6   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  r6   r  r	   r%   r   r  r  r!   r!   r"   test_float16_fail1  r  z*TestArrayAlmostEqualNulp.test_float16_failc                 C   r  )N   r5   r   )r*   uint16r+   r^   r  r   r   )r   r  nan1_i16nan2_i16nan1_f16nan2_f16r!   r!   r"   test_float16_ignore_nanA  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   r  r+  r  r5   rX                 ?r}   rk   r  r   r  rZ   xir  r[   r  r!   r!   r"   test_complex128_passL  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   r  r+  r  r5   rX   r  r}   r  r  r!   r!   r"   test_complex128_failc  s:   z-TestArrayAlmostEqualNulp.test_complex128_failc                 C   r  r  r  r  r!   r!   r"   test_complex64_pass  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"   r    s    r  c                   @   r/  )TestULPc                 C   s   t jd}t||dd d S )NrX   r   maxulp)r*   randomrandnr   )r   rZ   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 )NrX   {Gz?r+  r  )	r*   r-  astyper   r  r  r  r  r   r   rZ   r  r!   r!   r"   test_single     zTestULP.test_singlec                 C   r  )NrX   r     r  )	r*   r-  r  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+   rq   r  r  maxr   )r   dtrq   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 t j
g|t t j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   mBc                         t  dS Nr  r   r!   )rq   r  r^   r!   r"   r         z"TestULP.test_nan.<locals>.<lambda>c                      r  r  r  r!   )r  r  r^   r!   r"   r     r  c                         t  dS r  r  r!   )r  r^   tinyr!   r"   r     r  c                      r  r  r  r!   )r  r^   zeror!   r"   r     r  c                      r  r  r  r!   )r  r^   nzeror!   r"   r     r  )r*   r   r  r+   rq   r  r^   r  r  r  r   r   r	   r%   )r   r  r!   )r  rq   r  r^   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                   @   rs   )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 )NrN   r  r   r!   r!   r!   r"   r        
 z-TestStringEqual.test_simple.<locals>.<lambda>)r   rf   r   r%   r$  r%  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  )Naaaza+br  r!   r!   r!   r"   r     r  z,TestStringEqual.test_regex.<locals>.<lambda>)r   r	   r%   r;   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_context	mod_warns	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                   @   rR  )/test_warn_len_equal_call_scenarios.<locals>.modNrS  r!   r!   r!   r"   r    rU  r  r   )r  r  c                   @   r   )r  c                 S   s   ddd| _ d S )Nr'   r(   warning1warning2)r  r;   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  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   )rg  rh  r>   r  clearr  my_modr!   r!   r"   _get_fresh_mod0  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  )rh  ignoreSome warningr   r'   r(   r  zAnother warning)	r  r   getattrr   rb  rt  rc  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(   
stacklevelra  arrr!   r!   r"   rc  d     zFtest_suppress_warnings_module.<locals>.warn_other_module.<locals>.warnr   r*   apply_along_axisrc  r!   r!   r"   warn_other_modulea     z8test_suppress_warnings_module.<locals>.warn_other_moduler   moduler  r'   r   )r  r   r  r  r   recordrj  filterr*   lib
shape_baserb  rc  r  logmessager   rt  )r  r  supr!   r!   r"   test_suppress_warnings_module\  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  rj  rb  rc  r  rt  )r  r  r!   r!   r"   test_suppress_warnings_type  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  ra  )categoryr!   r!   r"   rc    s   z7test_suppress_warnings_decorate_no_record.<locals>.warnT)r  alwaysr'   )	r   r  rj  rb  rs  rt  RuntimeWarningr   r  )r  rc  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  rb  rc  r   r  r  r  r   )r  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  ra  r  r!   r!   r"   rc    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  rangerb  rc  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 sEw   Y  W n tyV   d}Y nw t| ttj|   d S )Ntmpr  FT)r   ospathjoinopenr   isdir
ValueError)tdirfpathraisedr!   r!   r"   test_tempdir  s$   r4  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yO   d}Y nw t| ttj|   d S )Nr  FT)r   r.  r   r+  r,  isfiler0  )r2  r3  r!   r!   r"   test_temppath  s"   r6  c                   @   s   e Zd Zeje  fZdS )my_cacwN)r>   r?   r@   rg  rh  class_modulesr!   r!   r!   r"   r7  -  s    r7  c                  C   sP   t  } t  td td W d    n1 sw   Y  t| ji  d S )Nr   r  )r  r7  rb  rt  rc  r   r  r  r!   r!   r"   %test_clear_and_catch_warnings_inherit2  s   
r9  zPython lacks refcountsc                   @   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   append)r    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_cycleJ  s   

z5TestAssertNoGcCycles.test_asserts.<locals>.make_cycle)r	   r%   r   )r   r?  r!   r!   r"   test_assertsI  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   )cycler;   r!   r!   r"   r  e  rD   zETestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__init__c                    s   d | _  jr   d S d S r   )rA  r?  r;   ReferenceCycleInDelr!   r"   __del__h  s   
zDTestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__del__N)r>   r?   r@   __doc__r?  r  rD  r!   rB  r!   r"   rC  ^  s
    rC  c                   S   rY  r   r!   r!   r!   r!   r"   r   v  re  z1TestAssertNoGcCycles.test_fails.<locals>.<lambda>Nz*GC does not call __del__ on cyclic objectsF)	weakrefrefr	   r\  r   r%   rf   skipr?  )r   r  r!   rB  r"   
test_failsW  s$   



	zTestAssertNoGcCycles.test_failsN)
r>   r?   r@   rE  r>  r@  rf   r   slowrI  r!   r!   r!   r"   r:  ;  s    r:  )@rb  rg  r+  r   rf   rF  numpyr*   numpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   numpy.core.overridesr   r   rA   r   r   r   r  r0  r;  r   rH  rQ  r_  rw  r  r  r  r  r  r  r  r  r  r  r$  r)  r4  r6  r7  r9  r   r:  r!   r!   r!   r"   <module>   sT    `. >-_b +m"3Y g8 .(/	