
    Ng                        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  G d d          Z G d de          Z G d d          Z  G d	 d
e          Z! G d de          Z" G d de          Z# G d d          Z$ G d d          Z% G d d          Z& G d d          Z' G d d          Z( G d d          Z) G d d          Z*d Z+d Z,d Z-d  Z.d! Z/d" Z0d# Z1d$ Z2d% Z3d& Z4d' Z5 G d( d)e          Z6d* Z7ej8        9                    e d+,           G d- d.                      Z:d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                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
_GenericTestc                 2    |                      ||           d S N_assert_funcselfabs      Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/numpy/testing/tests/test_utils.py_test_equalz_GenericTest._test_equal   s    !Q    c                     t          t                    5  |                     ||           d d d            d S # 1 swxY w Y   d S r   )r	   AssertionErrorr   r   s      r"   _test_not_equalz_GenericTest._test_not_equal   s    >** 	$ 	$a###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   9= =c                     t          j        ddg          }t          j        ddg          }|                     ||           dS )z/Test two equal array of rank 1 are found equal.      Nnparrayr#   r   s      r"   test_array_rank1_eqz _GenericTest.test_array_rank1_eq   sD    HaVHaVAr$   c                     t          j        ddg          }t          j        ddg          }|                     ||           dS )z7Test two different array of rank 1 are found not equal.r)   r*   Nr,   r-   r'   r   s      r"   test_array_rank1_noteqz#_GenericTest.test_array_rank1_noteq#   sD    HaVHaVQ"""""r$   c                     t          j        ddgddgg          }t          j        ddgddgg          }|                     ||           dS )z/Test two equal array of rank 2 are found equal.r)   r*         Nr+   r   s      r"   test_array_rank2_eqz _GenericTest.test_array_rank2_eq*   sV    Hq!fq!f%&&Hq!fq!f%&&Ar$   c                     t          j        ddg          }t          j        ddgddgg          }|                     ||           dS ):Test two arrays with different shapes are found not equal.r)   r*   Nr0   r   s      r"   test_array_diffshapez!_GenericTest.test_array_diffshape1   sM    HaVHq!fq!f%&&Q"""""r$   c                 l    t          j        ddgt                    }|                     |d           dS )zTest object arrays.r)   dtypeN)r,   r-   objectr#   r   r    s     r"   test_objarrayz_GenericTest.test_objarray8   s6    HaV6***Ar$   c                 6    |                      g dd           d S )Nr)   r*   r3   )r#   r   s    r"   test_array_likesz_GenericTest.test_array_likes=   s"    I.....r$   N)__name__
__module____qualname__r#   r'   r.   r1   r5   r8   r>   rB    r$   r"   r   r      s             $ $ $  # # #  # # #  
/ / / / /r$   r   c                   n    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd ZdS )TestArrayEqualc                     t           | _        d S r   )r   r   rA   s    r"   setup_methodzTestArrayEqual.setup_methodC   s    .r$   c                 R      fd}dD ]} ||           dD ]} ||           dS )z!Test rank 1 array for all dtypes.c                 .   t          j        d|           }|                    d           |                                }|                                }|                    d                               ||                               ||           d S )Nr*   r)   r   r,   emptyfillcopyr#   r'   tr    r!   cr   s       r"   fooz.TestArrayEqual.test_generic_rank1.<locals>.fooH   s|    AAFF1IIIAAFF1IIIQ"""  A&&&&&r$   ?bhilqpBHILQPfdgFDGS1U1NrF   r   rT   rR   s   `  r"   test_generic_rank1z!TestArrayEqual.test_generic_rank1F   f    	' 	' 	' 	' 	' ' 	 	ACFFFF  	 	ACFFFF	 	r$   c                 v   t          j        d          }t          j        d          }t          t          | j        ||           |}|                     ||           t          j        d          }t          j        d          }t          t          | j        ||           |}|                     ||           d S )Nl   Cj<T"3w-l   (M$c7uv+   
   )r,   r-   r	   r&   r   r   xys      r"   test_0_ndim_arrayz TestArrayEqual.test_0_ndim_arrayY   s    H9::H899nd&7A>>>!QHRLLHRLLnd&7A>>>!Qr$   c                 R      fd}dD ]} ||           dD ]} ||           dS )z!Test rank 3 array for all dtypes.c                 .   t          j        d|           }|                    d           |                                }|                                }|                    d                               ||                               ||           d S )N)r4   r*   r3   r)   r   rM   rQ   s       r"   rT   z.TestArrayEqual.test_generic_rank3.<locals>.fooj   s~    A&&AFF1IIIAAFF1IIIQ"""  A&&&&&r$   rU   rV   NrF   rY   s   `  r"   test_generic_rank3z!TestArrayEqual.test_generic_rank3h   r[   r$   c                    t          j        ddt           j        g          }t          j        ddt           j        g          }|                     ||           t          j        g d          }|                     ||           dS )z$Test arrays with nan values in them.r)   r*   r@   N)r,   r-   nanr#   r'   r   r    r!   rS   s       r"   test_nan_arrayzTestArrayEqual.test_nan_array{   su    HaBF^$$HaBF^$$AHYYYQ"""""r$   c                     t          j        ddg          }t          j        ddg          }|                     ||           t          j        ddg          }|                     ||           dS )r7   floupifloupafloupipiN)r,   r-   r#   r'   rh   s       r"   test_string_arraysz!TestArrayEqual.test_string_arrays   sp    Hh)**Hh)**AHj(+,,Q"""""r$   c                    t          j        ddt          fdt          fg          }ddg|d<   ddg|d<   |                                }|                     ||           t          j        ddt          fdt          fdt          fg          }|d                                         |d<   |d                                         |d<   t          j        t                    5  |                     ||           ddd           dS # 1 swxY w Y   dS )zTest record arrays.r*   rk   rl   r)   rm   N)	r,   rN   floatrP   r#   pytestraises	TypeErrorr'   rh   s       r"   test_recarrayszTestArrayEqual.test_recarrays   sK   HQ(E*Xu,=>??!f(!f(FFHHAHQ*e,"E*Xu,=? @ @(((***k&&(((]9%% 	' 	'  A&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   DD	Dc                    t           j                            g dg d          }t          j        dt           j        dg          }|                     ||           |                     ||           t           j                            g dg d          }t          j        t           j        ddg          }|                     ||           |                     ||           d S )N      @      @      @)FTFmaskrw   ry   )TFFrx   )r,   maMaskedArrayr-   rg   r#   infr   s      r"   test_masked_nan_infz"TestArrayEqual.test_masked_nan_inf   s    Emmm2F2F2FGGHb"&#&''AAEmmm2F2F2FGGHbfb#&''AAr$   c                     G d dt           j                  }t          j        ddg                              |          }t          j        ddg                              |          }t	          t          ||k              t                     t	          ||k               t	          ||k               |                     ||           |                     ||           |                     ||           d S )Nc                       e Zd Zd Zd ZdS )?TestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArrayc                 j    t          t          j        | |                                                    S r   )boolr,   equalallr   others     r"   __eq__zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__eq__   s(    BHT5115577888r$   c                     | |k     S r   rF   r   s     r"   __ne__zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__ne__   s    5=((r$   N)rC   rD   rE   r   r   rF   r$   r"   MyArrayr      s2        9 9 9) ) ) ) )r$   r         ?       @rw   )	r,   ndarrayr-   viewr   typer   r#   r'   r   r   r    r!   s       r"   test_subclass_that_overrides_eqz.TestArrayEqual.test_subclass_that_overrides_eq   s    
	) 	) 	) 	) 	)bj 	) 	) 	) Hb"X##G,,Hb"X##G,,Q!Vd###QQAQ"""Q"""""r$   c                     G d dt           j                  }t          j        ddg                              |          }t          j        ddg                              |          }t	          t
                    5  t          j        |           d d d            n# 1 swxY w Y   |                     ||           |                     ||           |                     ||           d S )Nc                       e Zd Zd ZdS )KTestArrayEqual.test_subclass_that_does_not_implement_npall.<locals>.MyArrayc                     t           S r   )NotImplementedr   argskwargss      r"   __array_function__z^TestArrayEqual.test_subclass_that_does_not_implement_npall.<locals>.MyArray.__array_function__   s    %%r$   N)rC   rD   rE   r   rF   r$   r"   r   r      s#        & & & & &r$   r   r   r   rw   )	r,   r   r-   r   r	   rs   r   r#   r'   r   s       r"   +test_subclass_that_does_not_implement_npallz:TestArrayEqual.test_subclass_that_does_not_implement_npall   s*   	& 	& 	& 	& 	&bj 	& 	& 	& Hb"X##G,,Hb"X##G,,9%% 	 	F1III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	AQ"""Q"""""s   ?B  B$'B$c           	         t          j        t                    5  t          j        d          5  t          j                            t          j        g dt          j                  t          j        g dt          j                             d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nraise)r   r@   )r)   gWw'&l7r3   )	rq   rr   r&   r,   errstatetestingr   r-   float32rA   s    r"   test_suppress_overflow_warningsz.TestArrayEqual.test_suppress_overflow_warnings   s"   ]>** 	9 	9))) 9 9
--HYYY
33H]]]BJ779 9 99 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s5   B3ABB3B	B3"B	#B33B7:B7c                 b    t          j        g d          }d}|                     ||           dS )z@Test comparing an array with a scalar when all values are equal.r   r   r   r   Nr+   r   s      r"   test_array_vs_scalar_is_equalz,TestArrayEqual.test_array_vs_scalar_is_equal   s6    H\\\""Ar$   c                 b    t          j        g d          }d}|                     ||           dS )z@Test comparing an array with a scalar when not all values equal.r   r   rw   r   Nr0   r   s      r"   test_array_vs_scalar_not_equalz-TestArrayEqual.test_array_vs_scalar_not_equal   s6    H\\\""Q"""""r$   c                     t          j        g d          }d}t          j        t                    5  t          ||d           ddd           dS # 1 swxY w Y   dS )z9Test comparing an array with a scalar with strict option.r   r   TstrictNr,   r-   rq   rr   r&   r   r   s      r"   test_array_vs_scalar_strictz*TestArrayEqual.test_array_vs_scalar_strict   s    H\\\""]>** 	2 	2q!D1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   AAAc                     t          j        g d          }t          j        g d          }t          ||d           dS )-Test comparing two arrays with strict option.r   Tr   N)r,   r-   r   r   s      r"   test_array_vs_array_strictz)TestArrayEqual.test_array_vs_array_strict   sC    H\\\""H\\\""1a------r$   c                     t          j        g d          }t          j        g d          }t          j        t                    5  t          ||d           ddd           dS # 1 swxY w Y   dS )r   )r)   r)   r)   r   Tr   Nr   r   s      r"    test_array_vs_float_array_strictz/TestArrayEqual.test_array_vs_float_array_strict   s    HYYYH\\\""]>** 	2 	2q!D1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   A&&A*-A*N)rC   rD   rE   rJ   rZ   rb   re   ri   rn   rt   r   r   r   r   r   r   r   r   r   rF   r$   r"   rH   rH   A   s       / / /  &       &# # #	# 	# 	#' ' '"	 	 	# # #*# # #9 9 9  # # #2 2 2. . .2 2 2 2 2r$   rH   c                   &    e Zd Zd Zd Zd Zd ZdS )TestBuildErrorMessagec                     t          j        g d          }t          j        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`   ra   err_msgr    r!   s         r"   test_build_err_msg_defaultsz1TestBuildErrorMessage.test_build_err_msg_defaults   se    H00011H00011'1a&'**" 	Qr$   c                     t          j        g d          }t          j        g d          }d}t          ||g|d          }d}t          ||           d S )Nr   r   r   F)verbosez)
Items are not equal: There is a mismatchr   r   s         r"   test_build_err_msg_no_verbosez3TestBuildErrorMessage.test_build_err_msg_no_verbose	  sf    H00011H00011'1a&'59998Qr$   c                     t          j        g d          }t          j        g d          }d}t          ||g|d          }d}t          ||           d S )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   s         r"   test_build_err_msg_custom_namesz5TestBuildErrorMessage.test_build_err_msg_custom_names  sj    H00011H00011'1a&'@@@ 	Qr$   c                     t          j        g d          }t          j        g d          }d}t          ||g|d          }d}t          ||           d S )N)g0D   ?r   r   )g_p   ?r   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   s         r"   #test_build_err_msg_custom_precisionz9TestBuildErrorMessage.test_build_err_msg_custom_precision  sj    H44455H44455'1a&'R8887 	Qr$   N)rC   rD   rE   r   r   r   r   rF   r$   r"   r   r      sP        	 	 	  	 	 		 	 	 	 	r$   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )	TestEqualc                     t           | _        d S r   )r   r   rA   s    r"   rJ   zTestEqual.setup_method+  s    (r$   c                 H   |                      t          j        t          j                   |                      t          j        gt          j        g           |                     t          j        t          j        g           |                     t          j        d           d S Nr)   )r   r,   rg   r'   rA   s    r"   test_nan_itemszTestEqual.test_nan_items.  st    "&"&)))26(RVH---RVbfX...RVQ'''''r$   c                    |                      t          j        t          j                   |                      t          j        gt          j        g           |                     t          j        t          j        g           d S r   )r   r,   r~   r'   rA   s    r"   test_inf_itemszTestEqual.test_inf_items4  s\    "&"&)))26(RVH---RVbfX.....r$   c                    |                      t          j        dd          t          j        dd                     |                      t          j        dd          t          j        dd                     |                     t          j        dd          t          j        dd                     |                     t          j        dd          t          j        dd                     d S )N
2017-01-01smz
2017-01-02)r#   r,   
datetime64r'   rA   s    r"   test_datetimezTestEqual.test_datetime9  s    M,,,M,,,	
 	
 	
 	M,,,M,,,	
 	
 	
 	M,,,M,,,	
 	
 	
 	M,,,M,,,	
 	
 	
 	
 	
r$   c                    t          j        d          }t          j        dd          }t          j        dd          }t          j        d          }t          j        dd          }t          j        dd          }|||g}|||g}t          j        ||          D ]J\  }	}
|                     |	|
           |                     |	g|
g           |                     |	g|
           Kt          j        ||          D ]J\  }	}
|                     |	|
           |                     |	g|
g           |                     |	g|
           Kt          j        ||          D ]\  }	}
|                     |	|
           |                     |	|
g           |                     |	g|
g           |                     |	gt          j        dd                     |                     |
gt          j        dd                     |                     |	gt          j        dd                     |                     |
gt          j        dd                     d 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!   s              r"   test_nat_itemszTestEqual.test_nat_itemsM  s[   }U++uc**ud++~e,,s++t,,VV,VV,%c3// 	) 	)DAqa###qcA3'''  !a((((%c3// 	) 	)DAqa###qcA3'''  !a((((%c3// 	@ 	@DAq  A&&&  QC(((  !qc***  !bmL#&F&FGGG  !bmL#&F&FGGG  !bnS#&>&>???  !bnS#&>&>????	@ 	@r$   c                 ^    |                      dd           |                     dd           d S )Nababb)r   r'   rA   s    r"   test_non_numericzTestEqual.test_non_numericl  s4    $%%%T5)))))r$   c                    |                      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,   rg   r'   r~   rA   s    r"   test_complex_itemzTestEqual.test_complex_itemp  s    '!Q--A777'!RV,,ga.@.@AAAWQ//A???WRVQ//BF1C1CDDDWRVRV44gbfa6H6HIIIIIr$   c                 Z    |                      t          j        t          j                   d S r   )r'   r,   PZERONZEROrA   s    r"   test_negative_zerozTestEqual.test_negative_zerow  s"    RXrx00000r$   c                 :   t          j        t          dd          t          dt           j                  g          }t          j        t          dd          t          dd          g          }|                     ||           |                     ||           d S r   r,   r-   r   rg   r   r'   r_   s      r"   test_complexzTestEqual.test_complexz  s    HgammWQ%7%7899HgammWQ]]344!QQ"""""r$   c                     dd l }t          j        |                     ddd          |                     ddd          g          }|                     ||d d d                    d S )Nr   i  r)   r*   )datetimer,   r-   r'   )r   r   r    s      r"   test_objectzTestEqual.test_object  sp    Hh''a33''a335 6 6Q$$B$(((((r$   N)rC   rD   rE   rJ   r   r   r   r   r   r   r   r   r   rF   r$   r"   r   r   )  s        ) ) )( ( (/ / /

 
 
(@ @ @>* * *J J J1 1 1# # #) ) ) ) )r$   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestArrayAlmostEqualc                     t           | _        d S r   )r   r   rA   s    r"   rJ   z!TestArrayAlmostEqual.setup_method  s    5r$   c                                            ddd           t          t           fd                                 dgdgd           t          t           fd           d S )N?        r   decimalc                  4                          ddd          S Ng      ?r  r   r  r   rA   s   r"   <lambda>z5TestArrayAlmostEqual.test_closeness.<locals>.<lambda>  s    $"3"3Ca"3"H"H r$   c                  8                          dgdgd          S r  r   rA   s   r"   r  z5TestArrayAlmostEqual.test_closeness.<locals>.<lambda>  s     $"3"3SEC5!"3"L"L r$   r   r	   r&   rA   s   `r"   test_closenessz#TestArrayAlmostEqual.test_closeness  s     	(C333nHHHH	J 	J 	J 	8*seQ777nLLLL	N 	N 	N 	N 	Nr$   c                      t          j        dg          t          j        dg                               d                                d           t          t           fd           d S )NgeH@gwH@r3   r  r4   c                  4                          d          S )N   r  r   r_   s   r"   r  z2TestArrayAlmostEqual.test_simple.<locals>.<lambda>  s    ))!Q):: r$   r,   r-   r   r	   r&   r_   s   `@@r"   test_simplez TestArrayAlmostEqual.test_simple  s    Hi[!!Hi[!!!Q***!Q***n::::::	< 	< 	< 	< 	<r$   c                 |    t          j        t           j        g          t          j        dg          t          j        t           j        g                                          t          t           fd           t          t           fd           t          t           fd           d S )Nr)   c                  0                                    S r   r   ananaoner   s   r"   r  z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>      ))$55 r$   c                  0                                    S r   r   ainfr  r   s   r"   r  z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r  s   r"   r  z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>  r  r$   r,   r-   rg   r~   r   r	   r&   r   r  r  r  s   `@@@r"   test_nanzTestArrayAlmostEqual.test_nan  s    x!!x}}x!!$%%%n555555	7 	7 	7n555555	7 	7 	7n555555	7 	7 	7 	7 	7r$   c                     t          j        ddgddgg                                          t           j        d<   t	          t
           fd           t           j         d<   t	          t
           fd           d S )Nr   r   rw   rx   )r   r   c                  0                                    S r   r   r    r!   r   s   r"   r  z/TestArrayAlmostEqual.test_inf.<locals>.<lambda>      ))!Q// r$   c                  0                                    S r   r   r   s   r"   r  z/TestArrayAlmostEqual.test_inf.<locals>.<lambda>  r!  r$   )r,   r-   rP   r~   r	   r&   r   s   `@@r"   test_infzTestArrayAlmostEqual.test_inf  s    Hr2hR)**FFHH&$n//////	1 	1 	16'$n//////	1 	1 	1 	1 	1r$   c                    t          j        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                            dd	          }t          j        g d
          }|                     ||           |                     ||           t           j        j        }t          j        g d
          }|                     ||           |                     ||           t           j                            g d
g d	          }t          j        g d          }|                     ||           |                     ||           t           j                            g d
g d	          }t          j        d          }|                     ||           |                     ||           d S )Nr   r   rw   rx   r  FTg      @rz   rv   )TTTr   )r,   r-   r|   masked_arrayr   r}   r#   maskedr   s      r"   test_subclassz"TestArrayAlmostEqual.test_subclass  s   Hr2hR)**ER2r(3!&u>@ @!Q!Q!Q Ec--H]]]##AAELH]]]##AAEmmm2D2D2DEEH\\\""AAEmmm2D2D2DEEHRLLAAr$   c                      G d dt           j                  }t          j        ddg                              |          }|                     ||           d S )Nc                   .     e Zd Z fdZ fdZd Z xZS )GTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                     t                                          |                              t          j                  S r   superr   r   r,   r   r   r   	__class__s     r"   r   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__  )    ww~~e,,11"*===r$   c                     t                                          |                              t          j                  S r   r-  __lt__r   r,   r   r.  s     r"   r3  zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__  r0  r$   c                     t           r   NotImplementedErrorr   s      r"   r   zKTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.all      ))r$   rC   rD   rE   r   r3  r   __classcell__r/  s   @r"   r   r*    `        > > > > >> > > > >* * * * * * *r$   r   r   r   r,   r   r-   r   r   r   r   r    s      r"   !test_subclass_that_cannot_be_boolz6TestArrayAlmostEqual.test_subclass_that_cannot_be_bool  m    
	* 	* 	* 	* 	*bj 	* 	* 	* Hb"X##G,,!Qr$   N)
rC   rD   rE   rJ   r  r  r  r#  r'  r>  rF   r$   r"   r   r     s        6 6 6N N N"< < <
7 
7 
71 1 1  4         r$   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestAlmostEqualc                     t           | _        d S r   )r   r   rA   s    r"   rJ   zTestAlmostEqual.setup_method      /r$   c                                            ddd           t          t           fd                                 dgdgd           t          t           fd           d S )Nr  r  r   r  c                  4                          ddd          S r  r   rA   s   r"   r  z0TestAlmostEqual.test_closeness.<locals>.<lambda>  s    d//S!/DD r$   c                  8                          dgdgd          S r  r   rA   s   r"   r  z0TestAlmostEqual.test_closeness.<locals>.<lambda>  s     d//ua/HH r$   r
  rA   s   `r"   r  zTestAlmostEqual.test_closeness  s     	(C333nDDDD	F 	F 	F 	8*seQ777nHHHH	J 	J 	J 	J 	Jr$   c                                            t          j        t          j                   t          t           fd           t          t           fd           t          t           fd           d S )Nc                  D                          t          j        d          S r   )r   r,   rg   rA   s   r"   r  z/TestAlmostEqual.test_nan_item.<locals>.<lambda>      d//:: r$   c                  X                          t          j        t          j                  S r   )r   r,   rg   r~   rA   s   r"   r  z/TestAlmostEqual.test_nan_item.<locals>.<lambda>      d//?? r$   c                  X                          t          j        t          j                  S r   )r   r,   r~   rg   rA   s   r"   r  z/TestAlmostEqual.test_nan_item.<locals>.<lambda>  rK  r$   )r   r,   rg   r	   r&   rA   s   `r"   test_nan_itemzTestAlmostEqual.test_nan_item   s    "&"&)))n::::	< 	< 	<n????	A 	A 	An????	A 	A 	A 	A 	Ar$   c                                           t          j        t          j                                         t          j         t          j                    t          t           fd           t          t           fd           d S )Nc                  D                          t          j        d          S r   r   r,   r~   rA   s   r"   r  z/TestAlmostEqual.test_inf_item.<locals>.<lambda>  rI  r$   c                  Z                          t          j         t          j                  S r   rP  rA   s   r"   r  z/TestAlmostEqual.test_inf_item.<locals>.<lambda>  s    d//@@ r$   )r   r,   r~   r	   r&   rA   s   `r"   test_inf_itemzTestAlmostEqual.test_inf_item	  s    "&"&)))26'BF7+++n::::	< 	< 	<n@@@@	B 	B 	B 	B 	Br$   c                 2    |                      dd           d S r   )r'   rA   s    r"   test_simple_itemz TestAlmostEqual.test_simple_item  s    Q"""""r$   c                 N   |                      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,   rg   r~   r'   rA   s    r"   r   z!TestAlmostEqual.test_complex_item  s   '!Q--A777'!RV,,ga.@.@AAA'"&"&11726263J3JKKKWQ//A???WRVQ//BF1C1CDDDWRVRV44gbfa6H6HIIIIIr$   c                    t          j        t          dd          t          dt           j                  g          }t          j        t          dd          t          t           j        d          g          }t          j        t          dd          t          dd          g          }|                     ||           |                     ||           |                     ||           d S r   r   )r   r`   zra   s       r"   r   zTestAlmostEqual.test_complex  s    HgammWQ%7%7899HgammWRVQ%7%7899HgammWQ]]344!QQ"""Q"""""r$   c                    t          j        g d          }t          j        g d          }t          j        t                    5 }|                     ||d           ddd           n# 1 swxY w Y   t          |j                                      d          }t          |d         d           t          |d	         d
           t          |d         d           t          |d         d           t          |d         d           t          j        t                    5 }|                     ||           ddd           n# 1 swxY w Y   t          |j                                      d          }t          |d         d           t          |d	         d
           t          |d         d           t          |d         d           t          |d         d           t          j        t           j
        dg          }t          j        t           j
        dg          }t          j        t                    5 }|                     ||           ddd           n# 1 swxY w Y   t          |j                                      d          }t          |d         d           t          |d	         d           t          |d         d           t          |d         d           t          |d         d           t          j        ddg          }t          j        ddg          }t          j        t                    5 }|                     ||           ddd           n# 1 swxY 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
r3   z!Mismatched elements: 3 / 3 (100%)r4   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-   rq   rr   r&   r   strvaluesplitr   r~   r   r`   ra   exc_infomsgss        r"   test_error_messagez"TestAlmostEqual.test_error_message$  sw    H<<<==H<<<== ]>** 	0haB///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	08>""((..T!WABBBT!W?@@@T!WGHHHGF	H 	H 	H 	GF	H 	H 	H ]>** 	$ha###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$8>""((..T!WBCCCT!W?@@@T!WGHHHT!WFGGGT!WFGGG Hbfa[!!Hbfa[!!]>** 	$ha###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$8>""((..T!W@AAAT!W;<<<T!W;<<<T!W5666T!W5666 HaVHaV]>** 	$ha###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$8>""((..T!WABBBT!W:;;;T!W<=====sH   A++A/2A/$EEE I##I'*I'M++M/2M/c                    d}t          j        d          }t          j        t                    5 }|                     ||           ddd           n# 1 swxY w Y   t          |j                                      d          }t          |d         d           t          |d         d           t          |d	         d
           d}t          j        d          }t          j        t                    5 }|                     ||           ddd           n# 1 swxY 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*      NrZ  r3   z#Mismatched elements: 20 / 20 (100%)r4   r]  r  r^  Max relative difference: 0.5)
r,   onesrq   rr   r&   r   r_  r`  ra  r   rb  s        r"   test_error_message_2z$TestAlmostEqual.test_error_message_2Z  s   GBKK]>** 	$ha###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$8>""((..T!WCDDDT!W;<<<T!W;<<<GBKK]>** 	$ha###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$8>""((..T!WCDDDT!W;<<<T!W<=====s#   AAA6DD Dc                      G d dt           j                  }t          j        ddg                              |          }|                     ||           d S )Nc                   .     e Zd Z fdZ fdZd Z xZS )BTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                     t                                          |                              t          j                  S r   r,  r.  s     r"   r   zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__t  r0  r$   c                     t                                          |                              t          j                  S r   r2  r.  s     r"   r3  zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__w  r0  r$   c                     t           r   r5  r   s      r"   r   zFTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allz  r7  r$   r8  r:  s   @r"   r   rm  s  r;  r$   r   r   r   r<  r=  s      r"   r>  z1TestAlmostEqual.test_subclass_that_cannot_be_booln  r?  r$   N)rC   rD   rE   rJ   r  rM  rR  rT  r   r   re  rj  r>  rF   r$   r"   rA  rA    s        0 0 0J J J"A A AB B B# # #J J J# # #4> 4> 4>l> > >(         r$   rA  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestApproxEqualc                     t           | _        d S r   )r   r   rA   s    r"   rJ   zTestApproxEqual.setup_method  rC  r$   c                      t          j        d          t          j        d                               d                                d           t          t           fd           d S )N{GH@RH@r  significantr[  c                  4                          d          S Nr\  rw  r   r_   s   r"   r  z7TestApproxEqual.test_simple_0d_arrays.<locals>.<lambda>      d//1!/DD r$   r  r_   s   `@@r"   test_simple_0d_arraysz%TestApproxEqual.test_simple_0d_arrays  s    HWHW!QA...!QA...nDDDDDD	F 	F 	F 	F 	Fr$   c                      dd                      d                                 d                                 d           t          t           fd           d S )Nru  rv  r4   rw  r  r[  c                  4                          d          S rz  r   r_   s   r"   r  z3TestApproxEqual.test_simple_items.<locals>.<lambda>  r{  r$   r
  r_   s   `@@r"   test_simple_itemsz!TestApproxEqual.test_simple_items  s    !QA...!QA...!QA...nDDDDDD	F 	F 	F 	F 	Fr$   c                 v    t          j        t           j                  t          j        d          t          j        t           j                                                  t          t           fd           t          t           fd           t          t           fd           d S )Nr)   c                  0                                    S r   r   r  s   r"   r  z0TestApproxEqual.test_nan_array.<locals>.<lambda>      d.?.?d.K.K r$   c                  0                                    S r   r   r  s   r"   r  z0TestApproxEqual.test_nan_array.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r  s   r"   r  z0TestApproxEqual.test_nan_array.<locals>.<lambda>  r  r$   r  r  s   `@@@r"   ri   zTestApproxEqual.test_nan_array      xx{{x$%%%n&K&K&K&K&K&KLLLn&K&K&K&K&K&KLLLn&K&K&K&K&K&KLLLLLr$   c                 v    t          j        t           j                  t          j        d          t          j        t           j                                                  t          t           fd           t          t           fd           t          t           fd           d S )Nr)   c                  0                                    S r   r   r  s   r"   r  z0TestApproxEqual.test_nan_items.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r  s   r"   r  z0TestApproxEqual.test_nan_items.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r  s   r"   r  z0TestApproxEqual.test_nan_items.<locals>.<lambda>  r  r$   r  r  s   `@@@r"   r   zTestApproxEqual.test_nan_items  r  r$   N)rC   rD   rE   rJ   r|  r  ri   r   rF   r$   r"   rr  rr    sm        0 0 0F F FF F FM M MM M M M Mr$   rr  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestArrayAssertLessc                     t           | _        d S r   )r   r   rA   s    r"   rJ   z TestArrayAssertLess.setup_method  s    -r$   c                 X    t          j        ddg          t          j        ddg                                          t          t           fd           t          j        ddg          t          t           fd           t          t           fd           d S )	N皙?皙@333333?ffffff@c                  0                                    S r   r   r_   s   r"   r  z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>      d.?.?1.E.E r$   r   c                  0                                    S r   r   r_   s   r"   r  z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r_   s   r"   r  z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>  r  r$   r  r_   s   `@@r"   test_simple_arraysz&TestArrayAssertLess.test_simple_arrays  s    Hc3Z  Hc3Z  !Qn&E&E&E&E&E&EFFFHc3Z  n&E&E&E&E&E&EFFFn&E&E&E&E&E&EFFFFFr$   c                 p    t          j        ddgddgg          t          j        ddgddgg                                          t          t           fd	           t          j        d
dgddgg          t          t           fd           t          t           fd           d S )Nr  r  ffffff
@g@r  r  g333333@g      @c                  0                                    S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank2.<locals>.<lambda>  r  r$   r   c                  0                                    S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank2.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank2.<locals>.<lambda>  r  r$   r  r_   s   `@@r"   
test_rank2zTestArrayAssertLess.test_rank2  s    HsCj3*-..HsCj3*-..!Qn&E&E&E&E&E&EFFFHsCj3*-..n&E&E&E&E&E&EFFFn&E&E&E&E&E&EFFFFFr$   c                 8    t          j        d          t          j        d          dz                                   t          t           fd           dd<   t          t           fd           t          t           fd           d S )	N)r*   r*   r*   )shaper)   c                  0                                    S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank3.<locals>.<lambda>  r  r$   r   )r   r   r   c                  0                                    S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank3.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank3.<locals>.<lambda>  r  r$   )r,   ri  r   r	   r&   r_   s   `@@r"   
test_rank3zTestArrayAssertLess.test_rank3  s    G)$$$G)$$$Q&!Qn&E&E&E&E&E&EFFF'
n&E&E&E&E&E&EFFFn&E&E&E&E&E&EFFFFFr$   c                 `    dd                                 t          t           fd           t          j        ddg                                           t          t           fd           t          j        ddg          t          t           fd           d S )Nr  r  c                  0                                    S r   r   r_   s   r"   r  z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>  r  r$   r  c                  0                                    S r   r   r_   s   r"   r  z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>  r  r$   r   c                  0                                    S r   r   r_   s   r"   r  z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>  r  r$   )r   r	   r&   r,   r-   r_   s   `@@r"   r  z%TestArrayAssertLess.test_simple_items  s    !Qn&E&E&E&E&E&EFFFHc3Z  !Qn&E&E&E&E&E&EFFFHc3Z  n&E&E&E&E&E&EFFFFFr$   c                     t          j        t           j                  t          j        d          t          j        t           j                                                  t          t           fd           t          t           fd           t          t           fd           t          t           fd           d S )Nr)   c                  0                                    S r   r   r  s   r"   r  z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r  s   r"   r  z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r  s   r"   r  z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r  s   r"   r  z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>  r  r$   r  r  s   `@@@r"   test_nan_noncomparez'TestArrayAssertLess.test_nan_noncompare  s    xx{{x$%%%n&K&K&K&K&K&KLLLn&K&K&K&K&K&KLLLn&K&K&K&K&K&KLLLn&K&K&K&K&K&KLLLLLr$   c                 *    t          j        g d          t          j        t           j                  t          t           fd           t          t           fd           t          j        ddt           j        g          t          t           fd           t          t           fd           t          j        dd	t           j        g                                          t          t           fd
           d S )N)r  r  r  c                  0                                    S r   r   r  r   r`   s   r"   r  z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>      d.?.?4.H.H r$   c                  0                                    S r   r   r  s   r"   r  z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>      d.?.?a.H.H r$   r  r  c                  0                                    S r   r   r  s   r"   r  z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r  s   r"   r  z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>  r  r$   r   r   c                  0                                    S r   r   r_   s   r"   r  z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>  r  r$   )r,   r-   rg   r	   r&   r   )r   r  r`   ra   s   `@@@r"   test_nan_noncompare_arrayz-TestArrayAssertLess.test_nan_noncompare_array  s   H___%%xn&H&H&H&H&H&HIIIn&H&H&H&H&H&HIIIHc3'((n&H&H&H&H&H&HIIIn&H&H&H&H&H&HIIIHc3'((!Qn&E&E&E&E&E&EFFFFFr$   c                     t          j        d          t          j        t           j                                                                                                                    t	          t
           fd           t	          t
           fd           t	          t
           fd           t	          t
           fd           t	          t
           fd           d S )Nr)   c                  0                                    S r   r   r  r  r   s   r"   r  z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>  r  r$   c                  2                                     S r   r   r  s   r"   r  z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>      d.?.?te.L.L r$   c                  0                                     S r   r   r  r   s   r"   r  z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>	  r  r$   c                  2                                      S r   r   r  s   r"   r  z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>
  r  r$   c                  4                                       S r   r   r  s   r"   r  z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>  s    d.?.?u.M.M r$   )r,   r-   r~   r   r	   r&   )r   r  r  s   `@@r"   test_inf_comparez$TestArrayAssertLess.test_inf_compare   s   x{{x$%%%4%&&&4%&&&n&K&K&K&K&K&KLLLn&L&L&L&L&L&LMMMn&K&K&K&K&KLLLn&L&L&L&L&LMMMn&M&M&M&M&MNNNNNr$   c                     t          j        ddt           j        g          t          j        t           j                  t          t           fd           t          t           fd           t          t           fd           t          t           fd           t          t           fd                                            d S )Nr  r  c                  0                                    S r   r   r  r   r`   s   r"   r  z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>  r  r$   c                  0                                    S r   r   r  s   r"   r  z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>  r  r$   c                  2                                     S r   r   r  s   r"   r  z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>  s    d.?.?D5.I.I r$   c                  4                                      S r   r   r  s   r"   r  z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>  s    d.?.?TE.J.J r$   c                  4                                      S r   r   r  s   r"   r  z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>  s    d.?.?r.J.J r$   )r,   r-   r~   r	   r&   r   )r   r  r`   s   `@@r"   test_inf_compare_arrayz*TestArrayAssertLess.test_inf_compare_array  s    Hc3'((xn&H&H&H&H&H&HIIIn&H&H&H&H&H&HIIIn&I&I&I&I&I&IJJJn&J&J&J&J&J&JKKKn&J&J&J&J&J&JKKK4%#####r$   N)rC   rD   rE   rJ   r  r  r  r  r  r  r  r  rF   r$   r"   r  r    s        . . .
G 
G 
G
G 
G 
G
G 
G 
GG G G M M MG G G"O O O	$ 	$ 	$ 	$ 	$r$   r  c                        e Zd Zd Zd Zd ZdS )	TestWarnsc                 T   d }t           j        d         j        d d          }t          t	          t
          |          d           t           j        d         j        }t          t          t          |           t          t          d d          d           t          ||d           d S )Nc                  .    t          j        d           dS )Nyor3   warningswarnrF   r$   r"   fzTestWarns.test_warn.<locals>.f  s    M$1r$   r  r3   c                     | S r   rF   )r`   s    r"   r  z%TestWarns.test_warn.<locals>.<lambda>%  s    ! r$   r)   .assert_warns does not preserver warnings state)	sysmodulesfiltersr   r
   UserWarningr	   r&   r   )r   r  before_filtersafter_filterss       r"   	test_warnzTestWarns.test_warn  s    	 	 	 Z08;\+q111555J/7n&8!<<<'Q77;;; 	^]E	G 	G 	G 	G 	Gr$   c                 D   t           j        d         j        d d          }t          t                    5  t          j        d           d d d            n# 1 swxY w Y   t           j        d         j        }d }t          t          |           t          ||d           d S )Nr  r  c                  |    t                      5  t          j        d           d d d            d S # 1 swxY w Y   d S Nr  )r   r  r  rF   r$   r"   no_warningsz3TestWarns.test_context_manager.<locals>.no_warnings2  s    #%% $ $d###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   155r  )
r  r  r  r
   r  r  r  r	   r&   r   )r   r  r  r  s       r"   test_context_managerzTestWarns.test_context_manager+  s    Z08;+&& 	  	 M$	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 J/7	$ 	$ 	$ 	nk222^]E	G 	G 	G 	G 	Gs   AAAc                    d }d}t          j                    5  t          j        dt                     	 t	          t
          |           d}n# t          $ r Y nw xY wd d d            n# 1 swxY w Y   |rt          d          d S )Nc                  :    t          j        dt                     d S r  )r  r  DeprecationWarningrF   r$   r"   r  z,TestWarns.test_warn_wrong_warning.<locals>.f;  s    M$ 233333r$   FerrorTz#wrong warning caught by assert_warn)r  catch_warningssimplefilterr  r
   r  r&   )r   r  faileds      r"   test_warn_wrong_warningz!TestWarns.test_warn_wrong_warning:  s    	4 	4 	4 $&& 	 	!'+=>>>[!,,,%   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	H !FGGG	H 	Hs4   A)AA)
AA)AA))A-0A-N)rC   rD   rE   r  r  r  rF   r$   r"   r  r    sL        G G G G G GH H H H Hr$   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestAssertAllclosec                    d}d}t          ||d           t          t          t           ||           t          j        ||||g          }t          j        ||||g          }t          ||d           t          t          t           ||           |dz  |d<   t          ||           t          t          t           ||d           t          dd	d
           t          t          t           d	dd
           d S )NgMbP?g&.>r)   atolg1  ?r   )rtolr[  r^   g      ?)r   r	   r&   r,   r-   )r   r`   ra   r    r!   s        r"   r  zTestAssertAllclose.test_simpleN  s    11%%%%noq!<<<HaAq\""HaAq\""11%%%%noq!<<<X"1noq!$GGGG2C((((nor13GGGGGGr$   c                     t          j        t          j        t           j                  j        gt           j                  }t          ||           d S )Nr:   )r,   r-   iinfoint_minr   r=   s     r"   test_min_intzTestAssertAllclose.test_min_intb  s@    Hbhrw''+,BG<<<1r$   c                 *   t          j        g d          }t          j        g d          }t          j        t                    5 }t          ||           d d d            n# 1 swxY 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-   rq   rr   r&   r   r_  r`  r   r   r    r!   rc  msgs        r"   test_report_fail_percentagez.TestAssertAllclose.test_report_fail_percentageg  s    H\\\""H\\\""]>** 	"hAq!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"(.!! /256 	7 	7 	7 	7 	7   A##A'*A'c                     t          j        t           j        g          }t          j        t           j        g          }t          ||d           d S )NT	equal_nan)r,   r-   rg   r   r   s      r"   test_equal_nanz!TestAssertAllclose.test_equal_nanr  sC    HbfXHbfX1------r$   c                     t          j        t           j        g          }t          j        t           j        g          }t          t          t
          ||d           d S )NFr  )r,   r-   rg   r	   r&   r   r   s      r"   test_not_equal_nanz%TestAssertAllclose.test_not_equal_nanx  sG    HbfXHbfXnoq!uMMMMMMr$   c                    t          j        t           j        g          }t          j        t           j        g          }t          ||           t	          ||           t          ||           t          ||           d S r   )r,   r-   rg   r   r   r   r   r   s      r"   test_equal_nan_defaultz)TestAssertAllclose.test_equal_nan_default}  sp     HbfXHbfX1a   !!Q'''!Q1r$   c                 *   t          j        ddg          }t          j        ddg          }t          j        t                    5 }t          ||           d d d            n# 1 swxY w Y   t          |j                  }t          d|v            d S )Nr   r)   r*   rh  r  r  s        r"   test_report_max_relative_errorz1TestAssertAllclose.test_report_max_relative_error  s    HaVHaV]>** 	"hAq!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"(.!!.#566666r  c                 X    t          j        g dgd          }t          ||           d S )N)r)   r*   r3   r   zm8[ns]r:   )r,   r-   r   r=   s     r"   test_timedeltaz!TestAssertAllclose.test_timedelta  s6    H&&&'x8881r$   c                 f   t          j        g dd          }t          j        g dd          }t          j        t                    5 }t          ||d           ddd           n# 1 swxY w Y   t          |j                                      d          }t          |d	         d
           dS )zYCheck the the message is formatted correctly when overflow can occur
           (gh21768))r   r)      uint8r:   )r4   r4   r4   r3   r  NrZ  r4   zMax absolute difference: 4)
r,   asarrayrq   rr   r&   r   r_  r`  ra  r   rb  s        r"   test_error_message_unsignedz.TestAssertAllclose.test_error_message_unsigned  s     Jyyy000Jyyy000]>** 	*hAqq))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*8>""((..T!W:;;;;;s   
A))A-0A-N)rC   rD   rE   r  r  r  r  r  r   r  r  r	  rF   r$   r"   r  r  L  s        H H H(  
	7 	7 	7. . .N N N
	 	 	7 7 7  
< < < < <r$   r  c                   \    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd ZdS )TestArrayAlmostEqualNulpc                 v   d}t          j        dddt           j                  }d|z  }t           j        | |f         }t          j        |j                  j        }|||z  |z  dz  z   }t          |||           t          j        |j                  j        }|||z  |z  dz  z
  }t          |||           d S Nr  rg  2   r:   r^   r   	r,   linspacefloat64r_finfor;   epsr   epsnegr   nulpr`   r  ra   r  s         r"   test_float64_passz*TestArrayAlmostEqualNulp.test_float64_pass  s     KR2:666EE1"a%L hqw##d
2&q!T222 !'"")&b  &q!T22222r$   c                    d}t          j        dddt           j                  }d|z  }t           j        | |f         }t          j        |j                  j        }|||z  |z  dz  z   }t          t          t          |||           t          j        |j                  j
        }|||z  |z  dz  z
  }t          t          t          |||           d S r  r,   r  r  r  r  r;   r  r	   r&   r   r  r  s         r"   test_float64_failz*TestArrayAlmostEqualNulp.test_float64_fail      KR2:666EE1"a%Lhqw##d
2n&DD	" 	" 	" !'"")&b  n&DD	" 	" 	" 	" 	"r$   c                 d   t          j        d          }t          j        t           j        t           j                                      t           j                  }||z  }|                    t           j                  }|                    t           j                  }t          ||d           d S )Nl    r:   r   )r,   uint64r-   rg   r  r   r   )r   offsetnan1_i64nan2_i64nan1_f64nan2_f64s         r"   test_float64_ignore_nanz0TestArrayAlmostEqualNulp.test_float64_ignore_nan  s     :&&8BF"*555::29EEf$==,,==,,Xx33333r$   c                 v   d}t          j        dddt           j                  }d|z  }t           j        | |f         }t          j        |j                  j        }|||z  |z  dz  z   }t          |||           t          j        |j                  j        }|||z  |z  dz  z
  }t          |||           d S r  	r,   r  r   r  r  r;   r  r   r  r  s         r"   test_float32_passz*TestArrayAlmostEqualNulp.test_float32_pass  s    KR2:666EE1"a%Lhqw##d
2&q!T222!'"")&b  &q!T22222r$   c                    d}t          j        dddt           j                  }d|z  }t           j        | |f         }t          j        |j                  j        }|||z  |z  dz  z   }t          t          t          |||           t          j        |j                  j
        }|||z  |z  dz  z
  }t          t          t          |||           d S r  r,   r  r   r  r  r;   r  r	   r&   r   r  r  s         r"   test_float32_failz*TestArrayAlmostEqualNulp.test_float32_fail  r  r$   c                 d   t          j        d          }t          j        t           j        t           j                                      t           j                  }||z  }|                    t           j                  }|                    t           j                  }t          ||d           d S )Ni  r:   r   )r,   uint32r-   rg   r   r   r   )r   r   nan1_i32nan2_i32nan1_f32nan2_f32s         r"   test_float32_ignore_nanz0TestArrayAlmostEqualNulp.test_float32_ignore_nan  s     6""8BF"*555::29EEf$==,,==,,Xx33333r$   c                 v   d}t          j        dddt           j                  }d|z  }t           j        | |f         }t          j        |j                  j        }|||z  |z  dz  z   }t          |||           t          j        |j                  j        }|||z  |z  dz  z
  }t          |||           d S Nr  r4   r^   r:   r   )	r,   r  float16r  r  r;   r  r   r  r  s         r"   test_float16_passz*TestArrayAlmostEqualNulp.test_float16_pass  s    KAr444EE1"a%Lhqw##d
2&q!T222!'"")&b  &q!T22222r$   c                    d}t          j        dddt           j                  }d|z  }t           j        | |f         }t          j        |j                  j        }|||z  |z  dz  z   }t          t          t          |||           t          j        |j                  j
        }|||z  |z  dz  z
  }t          t          t          |||           d S r4  )r,   r  r6  r  r  r;   r  r	   r&   r   r  r  s         r"   test_float16_failz*TestArrayAlmostEqualNulp.test_float16_fail  s    KAr444EE1"a%Lhqw##d
2n&DD	" 	" 	" !'"")&b  n&DD	" 	" 	" 	" 	"r$   c                 d   t          j        d          }t          j        t           j        t           j                                      t           j                  }||z  }|                    t           j                  }|                    t           j                  }t          ||d           d S )N   r:   r   )r,   uint16r-   rg   r6  r   r   )r   r   nan1_i16nan2_i16nan1_f16nan2_f16s         r"   test_float16_ignore_nanz0TestArrayAlmostEqualNulp.test_float16_ignore_nan  s     48BF"*555::29EEf$==,,==,,Xx33333r$   c                    d}t          j        dddt           j                  }d|z  }t           j        | |f         }||dz  z   }t          j        |j                  j        }|||z  |z  dz  z   }t          |||dz  z   |           t          |||dz  z   |           |||z  |z  d	z  z   }t          |||dz  z   |           t          j        |j                  j        }|||z  |z  dz  z
  }t          |||dz  z   |           t          |||dz  z   |           |||z  |z  d	z  z
  }t          |||dz  z   |           d S 
Nr  r  rg  r  r:   r^                 ?r   rx   r  r   r  r`   xir  ra   r  s          r"   test_complex128_passz-TestArrayAlmostEqualNulp.test_complex128_pass&  sn   KR2:666EE1"a%L2Xhqw##d
2&r1qt8T:::&r1qt8T::: #d
2&r1qt8T:::!'"")&b  &r1qt8T:::&r1qt8T:::&b  &r1qt8T:::::r$   c                    d}t          j        dddt           j                  }d|z  }t           j        | |f         }||dz  z   }t          j        |j                  j        }|||z  |z  dz  z   }t          t          t          |||dz  z   |           t          t          t          |||dz  z   |           |||z  |z  z   }t          t          t          |||dz  z   |           t          j        |j                  j
        }|||z  |z  dz  z
  }t          t          t          |||dz  z   |           t          t          t          |||dz  z   |           |||z  |z  z
  }t          t          t          |||dz  z   |           d S 	Nr  r  rg  r  r:   r^   rD  r   r  rE  s          r"   test_complex128_failz-TestArrayAlmostEqualNulp.test_complex128_fail=  s   KR2:666EE1"a%L2Xhqw##d
2n&D!ad(D	* 	* 	*n&D!ad(D	* 	* 	* #d
Nn&D!ad(D	* 	* 	* !'"")&b  n&D!ad(D	* 	* 	*n&D!ad(D	* 	* 	*&n&D!ad(D	* 	* 	* 	* 	*r$   c                    d}t          j        dddt           j                  }d|z  }t           j        | |f         }||dz  z   }t          j        |j                  j        }|||z  |z  dz  z   }t          |||dz  z   |           t          |||dz  z   |           |||z  |z  d	z  z   }t          |||dz  z   |           t          j        |j                  j        }|||z  |z  dz  z
  }t          |||dz  z   |           t          |||dz  z   |           |||z  |z  d	z  z
  }t          |||dz  z   |           d S rC  r'  rE  s          r"   test_complex64_passz,TestArrayAlmostEqualNulp.test_complex64_passZ  sl   KR2:666EE1"a%L2Xhqw##d
2&r1qt8T:::&r1qt8T:::#d
2&r1qt8T:::!'"")&b  &r1qt8T:::&r1qt8T:::&b  &r1qt8T:::::r$   c                    d}t          j        dddt           j                  }d|z  }t           j        | |f         }||dz  z   }t          j        |j                  j        }|||z  |z  dz  z   }t          t          t          |||dz  z   |           t          t          t          |||dz  z   |           |||z  |z  z   }t          t          t          |||dz  z   |           t          j        |j                  j
        }|||z  |z  dz  z
  }t          t          t          |||dz  z   |           t          t          t          |||dz  z   |           |||z  |z  z
  }t          t          t          |||dz  z   |           d S rI  r*  rE  s          r"   test_complex64_failz,TestArrayAlmostEqualNulp.test_complex64_failo  s   KR2:666EE1"a%L2Xhqw##d
2n&D!ad(D	* 	* 	*n&D!ad(D	* 	* 	*#d
Nn&D!ad(D	* 	* 	* !'"")&b  n&D!ad(D	* 	* 	*n&D!ad(D	* 	* 	*&n&D!ad(D	* 	* 	* 	* 	*r$   N)rC   rD   rE   r  r  r%  r(  r+  r2  r7  r9  rA  rG  rJ  rL  rN  rF   r$   r"   r  r    s        3 3 3$" " " 	4 	4 	43 3 3" " " 	4 	4 	43 3 3" " " 	4 	4 	4; ; ;.* * *:; ; ;** * * * *r$   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestULPc                 h    t           j                            d          }t          ||d           d S )Nr^   r   maxulp)r,   randomrandnr   )r   r`   s     r"   
test_equalzTestULP.test_equal  s0    IOOBQ!,,,,,,r$   c                 \   t          j        d                              t           j                  }|dt           j                            d                              t           j                  z  z  }t          j        t           j                  j        }t          |||z   d           d S )Nr^   {Gz?rg  rR  )	r,   ri  astyper   rT  rU  r  r  r   r   r`   r  s      r"   test_singlezTestULP.test_single  s    GBKKrz**	TBIOOB''..rz::::hrz""&Q#b111111r$   c                 \   t          j        d                              t           j                  }|dt           j                            d                              t           j                  z  z  }t          j        t           j                  j        }t          |||z   d           d S )Nr^   rX     rR  )	r,   ri  rY  r  rT  rU  r  r  r   rZ  s      r"   test_doublezTestULP.test_double  s    GBKKrz**	TBIOOB''..rz::::hrz""&Q#c222222r$   c                    t           j        t           j        fD ]r}t          j        t           j        g                              |          }t          j        t          j        |          j        g          }t          ||d           sd S )Nr]  rR  )	r,   r   r  r-   r~   rY  r  maxr   )r   dtr~   bigs       r"   r#  zTestULP.test_inf  sz    :rz* 	7 	7B(BF8$$++B//C(BHRLL,-..C c#66666	7 	7r$   c                    t           j        t           j        fD ]}|t           j        k    rdndt          j        t           j        g                              |          t          j        t           j        g                              |          t          j        t          j        |          j        g          t          j        t          j        |          j	        g          t          j        t           j
        g                              |          t          j        t           j        g                              |          t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           d S )Ng    .Ag   mBc                  (    t                     S NrR  r   )r~   rS  rg   s   r"   r  z"TestULP.test_nan.<locals>.<lambda>      "6sC!'#) #) #) r$   c                  (    t                     S re  rf  )rb  rS  rg   s   r"   r  z"TestULP.test_nan.<locals>.<lambda>  rg  r$   c                  (    t                     S re  rf  )rS  rg   tinys   r"   r  z"TestULP.test_nan.<locals>.<lambda>      "6sD!'#) #) #) r$   c                  (    t                     S re  rf  )rS  rg   zeros   r"   r  z"TestULP.test_nan.<locals>.<lambda>  rk  r$   c                  (    t                     S re  rf  )rS  rg   nzeros   r"   r  z"TestULP.test_nan.<locals>.<lambda>  s    "6sE!'#) #) #) r$   )r,   r   r  r-   r~   rY  rg   r  r`  rj  r   r   r	   r&   )	r   ra  rb  r~   rS  rg   ro  rj  rm  s	     @@@@@@@r"   r  zTestULP.test_nan  s	   :rz* 	* 	*BRZ(BF8$$++B//C(BF8$$++B//C(BHRLL,-..C8RXb\\./00D8RXJ''..r22DHbhZ((//33E.) ) ) ) ) )* * * .) ) ) ) ) )* * * .) ) ) ) ) )* * * .) ) ) ) ) )* * * .) ) ) ) ) )* * * */	* 	*r$   N)rC   rD   rE   rV  r[  r^  r#  r  rF   r$   r"   rP  rP    s_        - - -2 2 23 3 37 7 7* * * * *r$   rP  c                       e Zd Zd Zd ZdS )TestStringEqualc                 <   t          dd           t          dd           t          j        t                    5 }t          dd           d d d            n# 1 swxY w Y   t	          |j                  }t          |d           t          t          d            d S )Nhellozhello
multilinezfoo
barz	hello
barz%Differences in strings:
- foo
+ helloc                  "    t          dd          S )NrT   rs  r   rF   r$   r"   r  z-TestStringEqual.test_simple.<locals>.<lambda>  s    1%AA r$   )r   rq   rr   r&   r_  r`  r   r	   )r   rc  r  s      r"   r  zTestStringEqual.test_simple  s    GW---.0BCCC]>** 	:h
L999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:(.!!SCDDDnAA	C 	C 	C 	C 	Cs   AAAc                 R    t          dd           t          t          d            d S )Nza+*bc                  "    t          dd          S )Naaaza+bru  rF   r$   r"   r  z,TestStringEqual.test_regex.<locals>.<lambda>  s    1%?? r$   )r   r	   r&   rA   s    r"   
test_regexzTestStringEqual.test_regex  s;    FF+++n??	A 	A 	A 	A 	Ar$   N)rC   rD   rE   r  ry  rF   r$   r"   rq  rq    s:        
C 
C 
CA A A A Ar$   rq  c                     	 | j         }n# t          $ r i }Y nw xY wt          |          }d|v r|dz  }t          ||           d S )Nversionr)   )__warningregistry__AttributeErrorlenr   )modn_in_context	mod_warns	num_warnss       r"   assert_warn_len_equalr    sp    
+		    			 III 	Q	L)))))s   
 c                       G d d          }  |             }t          |d            G d d          }  |             }t          |d           d S )Nc                       e Zd ZdS )/test_warn_len_equal_call_scenarios.<locals>.modN)rC   rD   rE   rF   r$   r"   r  r    s        r$   r  r   )r  r  c                       e Zd Zd ZdS )r  c                     ddd| _         d S )Nr)   r*   warning1warning2)r|  rA   s    r"   __init__z8test_warn_len_equal_call_scenarios.<locals>.mod.__init__  s    3434(6 (6D$$$r$   N)rC   rD   rE   r  rF   r$   r"   r  z/test_warn_len_equal_call_scenarios.<locals>.mod   s#        	6 	6 	6 	6 	6r$   r*   )r  )r  mod_insts     r"   "test_warn_len_equal_call_scenariosr    s            suuHh'(* * * *
6 6 6 6 6 6 6 6
 suuHh'(* * * * * *r$   c                      t           j        t                   } 	 | j                                         n# t
          $ r Y nw xY w| S r   )r  r  rC   r|  clearr}  my_mods    r"   _get_fresh_modr  
  sT    ["F"((****    	 Ms   3 
A A c                  z   t                      } t          t          | di           i            t          | g          5  t	          j        d           t	          j        d           d d d            n# 1 swxY w Y   t          | j        i            t                      5  t	          j        d           t	          j        d           d d d            n# 1 swxY w Y   t          | d           ddd| _        t          | g          5  t	          j        d           t	          j        d	           d d d            n# 1 swxY w Y   t          | d           t                      5  t	          j        d           t	          j        d	           d d d            n# 1 swxY w Y   t          | d           d S )
Nr|  )r  ignoreSome warningr   r)   r*   r  zAnother warning)	r  r   getattrr   r  r  r  r|  r  r  s    r"   test_clear_and_catch_warningsr    s   F!6;;R@@@	!6(	3	3	3 & &h'''n%%%& & & & & & & & & & & & & & & +R000 
"	#	# & &h'''n%%%& & & & & & & & & & & & & & & &!$$$ /0./"1 "1F 
"6(	3	3	3 ) )h''''((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) &!$$$ 
"	#	# ) )h''''((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) &!$$$$$sG   )A44A8;A8")CCC)EE	E+)F  F$'F$c                  n   t                      } t          t          | di           i            d }t          | d           t	                      5 }|                    t                     |                    t          j	        j
                   t          j        d            |             d d d            n# 1 swxY w Y   t          t          |j                  d           t          |j        d         j        j        d         d           t          | d           t	                      }|                    |            |5  t          j        d           d d d            n# 1 swxY w Y   t          | d           |                    |            |5  t          j        d           d d d            n# 1 swxY w Y   t          | d           t	                      5  t          j        d           t          j        d           d d d            n# 1 swxY w Y   t          | d           d S )Nr|  c                  :    d } t          j        | ddg           d S )Nc                 2    t          j        dd           | S )NzSome warning 2r*   
stacklevelr  arrs    r"   r  zFtest_suppress_warnings_module.<locals>.warn_other_module.<locals>.warn>  s    M*q9999Jr$   r   r,   apply_along_axisr  s    r"   warn_other_modulez8test_suppress_warnings_module.<locals>.warn_other_module;  0    	 	 	 	D!aS)))))r$   r   moduler  r)   r  )r  r   r  r  r   recordr  filterr,   lib
shape_baser  r  r~  logmessager   r  )r  r  sups      r"   test_suppress_warnings_moduler  6  s   F!6;;R@@@* * * &!$$$			 

; 	

"&+
,,,n%%%               SWq!!!#(+^<<<&!$$$


CJJfJ	 & &n%%%& & & & & & & & & & & & & & &&!$$$JJfJ	 & &n%%%& & & & & & & & & & & & & & &&!$$$ 
		 & &h'''n%%%& & & & & & & & & & & & & & & &!$$$$$sI   AB99B= B=E((E,/E,F<<G G %)HH!Hc                  X   t                      } t          t          | di           i            t                      5 }|                    t
                     t          j        d           d d d            n# 1 swxY w Y   t          | d           t                      }|                    t
                     |5  t          j        d           d d d            n# 1 swxY w Y   t          | d           |                    |            |5  t          j        d           d d d            n# 1 swxY w Y   t          | d           t                      5  t          j	        d           t          j        d           d d d            n# 1 swxY w Y   t          | d           d S )Nr|  r  r   r  r  )
r  r   r  r   r  r  r  r  r  r  )r  r  s     r"   test_suppress_warnings_typer  d  s   F!6;;R@@@ 
		 &

;n%%%& & & & & & & & & & & & & & & &!$$$


CJJ{	 & &n%%%& & & & & & & & & & & & & & &&!$$$JJfJ	 & &n%%%& & & & & & & & & & & & & & &&!$$$ 
		 & &h'''n%%%& & & & & & & & & & & & & & & &!$$$$$sG   /A77A;>A;<CC!$C!D11D58D5)FFFc                  j   t                      } |                     t                     | d             }t          j        d          5 }t          j        d            |t                      |t                     t          t          |          d           d d d            d S # 1 swxY w Y   d S )Nc                 0    t          j        d|            d S )Nr  r  )categorys    r"   r  z7test_suppress_warnings_decorate_no_record.<locals>.warn  s    nh/////r$   T)r  alwaysr)   )	r   r  r  r  r  r  RuntimeWarningr   r~  )r  r  ws      r"   )test_suppress_warnings_decorate_no_recordr    s    


CJJ{0 0 	S0 
	 	-	-	-  h'''[^SVVQ	                                   s   	AB((B,/B,c                      t                      } |                                 }| 5  |                     d          }|                     d           t          j        d           t          j        d           t          j        d           t          t          | j                  d           t          t          |          d           t          t          |          d           t          |d         j        j	        d         d           d d d            n# 1 swxY w Y   | 5  |                     d          }|                     d           t          j        d           t          j        d           t          j        d           t          t          | j                  d           t          t          |          d           t          t          |          d           t          |d         j        j	        d         d           d d d            n# 1 swxY w Y   t                      5 } |                                  t                      5 }|                    d           t          j        d           t          j        d           t          t          |j                  d           d d d            n# 1 swxY w Y   t          t          | j                  d           d d d            d S # 1 swxY w Y   d S )NzSome other warning 2)r  r  Some other warningr*   r)   r   )
r   r  r  r  r  r   r~  r  r  r   )r  log1log2sup2s       r"   test_suppress_warnings_recordr    s   


C::<<D	 
F 
Fzz"8z99

>
***n%%%*+++,---S\\1%%%SYY"""SYYq!!!T!W_)!,.DEEE
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
 
F 
Fzz"8z99

>
***n%%%*+++,---S\\1%%%SYY"""SYY"""T!W_)!,.DEEE
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
F 
		 &

   	+DKKK///M.)))M.///TX***		+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
 	S\\1%%%& & & & & & & & & & & & & & & & & &s\   C+DD #D )C+H  H$'H$9#LA!K	=L	K	LK	%LL
Lc                     d } t                      5 }|                                 t          d          5  t          d          D ]}t          j        d           	 d d d            n# 1 swxY w Y   t          t          |j                  d           d d d            n# 1 swxY w Y   t                      5 }|                                 t          d          5  t          d          D ]*}t          j        d           t          j        d           +	 d d d            n# 1 swxY w Y   t          t          |j                  d           d d d            n# 1 swxY w Y   t                      5 }|                                 t          d          5  t          d          D ]4}t          j        d           t          j        d            |              5	 d d d            n# 1 swxY w Y   t          t          |j                  d           d d d            n# 1 swxY w Y   t                      5 }|                                 t          d          5  t          d          D ]4}t          j        d           t          j        d            |              5	 d d d            n# 1 swxY w Y   t          t          |j                  d           d d d            d S # 1 swxY w Y   d S )	Nc                  :    d } t          j        | ddg           d S )Nc                 2    t          j        dd           | S )Nr  r*   r  r  r  s    r"   r  zJtest_suppress_warnings_forwarding.<locals>.warn_other_module.<locals>.warn  s    M.Q7777Jr$   r   r  r  s    r"   r  z<test_suppress_warnings_forwarding.<locals>.warn_other_module  r  r$   r  r*   r  locationr  oncer  )r   r  ranger  r  r   r~  r  )r  r  is      r"   !test_suppress_warnings_forwardingr    s   * * * 
		 &

x(( 	. 	.1XX . .n----.	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	S\\1%%%& & & & & & & & & & & & & & & 
		 &

z** 	. 	.1XX . .n---n----.	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.
 	S\\1%%%& & & & & & & & & & & & & & & 
		 &

x(( 	$ 	$1XX $ $n---n---!!####$	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	S\\1%%%& & & & & & & & & & & & & & & 
		 &

v&& 	$ 	$1XX $ $n---2333!!####$	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	S\\1%%%& & & & & & & & & & & & & & & & & &s   $B#'A*B#*A.	.B#1A.	2%B##B'*B'<$E! ;D(E!(D,	,E!/D,	0%E!!E%(E%:$H)AG0$H)0G4	4H)7G4	8%H))H-0H-$K2&AJ8,K28J<	<K2?J<	 %K22K69K6c                  2   t                      5 } t          j                            | d          }t	          |d          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          t          j                            |                       d}	 t                      5 } t                      # 1 swxY w Y   n# t          $ r d}Y nw xY wt          |           t          t          j                            |                       d S )Ntmpr  FT)r   ospathjoinopenr   isdir
ValueError)tdirfpathraiseds      r"   test_tempdirr    s   	 dT5))% 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	               d###$$$FYY 	$,,	 	 	 	 	 	 	 	 	   FOOOd###$$$$$se   1A% AA%A	A%A	A%%A),A) C	 .B==CC	 CC	 	CCc                     t                      5 } t          | d          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          t          j                            |                       d}	 t                      5 } t                      # 1 swxY w Y   n# t          $ r d}Y nw xY wt          |           t          t          j                            |                       d S )Nr  FT)r   r  r   r  r  isfiler  )r  r  s     r"   test_temppathr    s   	 u% 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	               u%%%&&&FZZ 	5,,	 	 	 	 	 	 	 	 	   FOOOu%%%&&&&&s\   A.A2	A2	AA	A	 B) BB!!B) $B!%B) )B87B8c                   *    e Zd Zej        e          fZdS )my_cacwN)rC   rD   rE   r  r  class_modulesrF   r$   r"   r  r    s        [*,MMMr$   r  c                      t                      } t                      5  t          j        d           t          j        d           d d d            n# 1 swxY w Y   t          | j        i            d S )Nr  r  )r  r  r  r  r  r   r|  r  s    r"   %test_clear_and_catch_warnings_inheritr    s    F	 & &h'''n%%%& & & & & & & & & & & & & & & +R00000s   )AAAzPython lacks refcounts)reasonc                   H    e Zd ZdZd Zd Zej        j        d             Z	dS )TestAssertNoGcCyclesz Test assert_no_gc_cycles c                     d }t                      5   |             d d d            n# 1 swxY w Y   t          |           d S )Nc                  4    g } |                      g            | S r   append)r!   s    r"   no_cyclez2TestAssertNoGcCycles.test_passes.<locals>.no_cycle  s    AHHRLLLHr$   )r   )r   r  s     r"   test_passesz TestAssertNoGcCycles.test_passes  s    	 	 	
 !"" 	 	HJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	H%%%%%s   )--c                 <   d }t          t                    5  t                      5   |             d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          t                    5  t          |           d d d            d S # 1 swxY w Y   d S )Nc                  ^    g } |                      |            |                      |            | S r   r  )r    s    r"   
make_cyclez5TestAssertNoGcCycles.test_asserts.<locals>.make_cycle$  s*    AHHQKKKHHQKKKHr$   )r	   r&   r   )r   r  s     r"   test_assertsz!TestAssertNoGcCycles.test_asserts#  sd   	 	 	 >** 	 	$&&  
              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 >** 	, 	,
+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,sC   A>AA	AA	AAA4BBBc                 `    G fdd          	 t          j                               }	 t          t                    5  t	          d            ddd           n# 1 swxY w Y   n/# t
          $ r"  |            t          j        d            Y nw xY wd_        dS # d_        w xY 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                   (    e Zd ZdZdZd Z fdZdS )<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                     | | _         d S r   )cyclerA   s    r"   r  zETestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__init__?  s    !


r$   c                 <    d | _         j        r              d S d S r   )r  r  )r   ReferenceCycleInDels    r"   __del__zDTestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__del__B  s6    !
&1 * (')))))* *r$   N)rC   rD   rE   __doc__r  r  r  )r  s   r"   r  r  8  sN          J" " "* * * * * * *r$   r  c                      d S r   rF   rF   r$   r"   r  z1TestAssertNoGcCycles.test_fails.<locals>.<lambda>P  s     r$   Nz*GC does not call __del__ on cyclic objectsF)	weakrefrefr	   RuntimeErrorr   r&   rq   skipr  )r   r  r  s     @r"   
test_failszTestAssertNoGcCycles.test_fails1  s7   	* 	* 	* 	* 	* 	* 	* 	* 	* 	*&	3//1122A	"<00 6 6'5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 "    133?K LMMM #? .3***U*2222sR   B$ A, A A,  A$$A, 'A$(A, +B$ ,)BB$ BB$ $	B-N)
rC   rD   rE   r  r  r  rq   markslowr  rF   r$   r"   r  r    sY        $$	& 	& 	&, , , [(3 (3 (3 (3 (3r$   r  );r  r  r  r   rq   r  numpyr,   numpy.testingr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rH   r   r   r   rA  rr  r  r  r  r  rP  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  skipifr  rF   r$   r"   <module>r     s    



 				                                                       +/ +/ +/ +/ +/ +/ +/ +/\x2 x2 x2 x2 x2\ x2 x2 x2v* * * * * * * *Z\) \) \) \) \) \) \) \)~_  _  _  _  _ < _  _  _ DT  T  T  T  T l T  T  T n(M (M (M (M (M (M (M (MVj$ j$ j$ j$ j$ j$ j$ j$Z0H 0H 0H 0H 0H 0H 0H 0HfV< V< V< V< V< V< V< V<rc* c* c* c* c* c* c* c*L5* 5* 5* 5* 5* 5* 5* 5*pA A A A A A A A(* * *.* * *8	 	 	% % %@+% +% +%\% % %8     %& %& %&P,& ,& ,&^% % %"' ' ' - - - - -& - - -
1 1 1 $-EFFD3 D3 D3 D3 D3 D3 D3 GFD3 D3 D3r$   