
    ,|h                     X   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jp                  js                  e d+,       G d- d.             Z:y)/    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
y	)
_GenericTestc                 (    | j                  ||       y N_assert_funcselfabs      ]/var/www/html/test/engine/venv/lib/python3.12/site-packages/numpy/testing/tests/test_utils.py_test_equalz_GenericTest._test_equal   s    !Q    c                 p    t        t              5  | j                  ||       d d d        y # 1 sw Y   y xY wr   )r	   AssertionErrorr   r   s      r"   _test_not_equalz_GenericTest._test_not_equal   s/    >* 	$a#	$ 	$ 	$s   ,5c                     t        j                  ddg      }t        j                  ddg      }| j                  ||       y)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   s6    HHaVHHaVAr$   c                     t        j                  ddg      }t        j                  ddg      }| j                  ||       y)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#   s6    HHaVHHaVQ"r$   c                     t        j                  ddgddgg      }t        j                  ddgddgg      }| j                  ||       y)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*   sH    HHq!fq!f%&HHq!fq!f%&Ar$   c                     t        j                  ddg      }t        j                  ddgddgg      }| j                  ||       y):Test two arrays with different shapes are found not equal.r)   r*   Nr0   r   s      r"   test_array_diffshapez!_GenericTest.test_array_diffshape1   s?    HHaVHHq!fq!f%&Q"r$   c                 b    t        j                  ddgt              }| j                  |d       y)zTest object arrays.r)   dtypeN)r,   r-   objectr#   r   r    s     r"   test_objarrayz_GenericTest.test_objarray8   s&    HHaV6*Ar$   c                 ,    | j                  g dd       y )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                   l    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y)TestArrayEqualc                     t         | _        y r   )r   r   rA   s    r"   setup_methodzTestArrayEqual.setup_methodC   s
    .r$   c                 L      fd}dD ]
  } ||        dD ]
  } ||        y)z!Test rank 1 array for all dtypes.c                     t        j                  d|       }|j                  d       |j                         }|j                         }|j                  d       j	                  ||       j                  ||       y )Nr*   r)   r   r,   emptyfillcopyr#   r'   tr    r!   cr   s       r"   fooz.TestArrayEqual.test_generic_rank1.<locals>.fooH   s^    AAFF1IAAFF1IQ"  A&r$   ?bhilqpBHILQPfdgFDGS1U1NrF   r   rT   rR   s   `  r"   test_generic_rank1z!TestArrayEqual.test_generic_rank1F   8    	' ' 	AF	  	AF	r$   c                 l   t        j                  d      }t        j                  d      }t        t        | j                  ||       |}| j	                  ||       t        j                  d      }t        j                  d      }t        t        | j                  ||       |}| j	                  ||       y )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    HH9:HH89nd&7&7A>!QHHRLHHRLnd&7&7A>!Qr$   c                 L      fd}dD ]
  } ||        dD ]
  } ||        y)z!Test rank 3 array for all dtypes.c                     t        j                  d|       }|j                  d       |j                         }|j                         }|j                  d       j	                  ||       j                  ||       y )N)r4   r*   r3   r)   r   rM   rQ   s       r"   rT   z.TestArrayEqual.test_generic_rank3.<locals>.fooj   s_    A&AFF1IAAFF1I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      }| j                  ||       t        j                  g d      }| j	                  ||       y)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{   s`    HHaBFF^$HHaBFF^$AHHYQ"r$   c                     t        j                  ddg      }t        j                  ddg      }| j                  ||       t        j                  ddg      }| j                  ||       y)r7   floupifloupafloupipiN)r,   r-   r#   r'   rh   s       r"   test_string_arraysz!TestArrayEqual.test_string_arrays   s[    HHh)*HHh)*AHHj(+,Q"r$   c                    t        j                  ddt        fdt        fg      }ddg|d<   ddg|d<   |j                         }| j	                  ||       t        j                  ddt        fdt        fdt        fg      }|d   j                         |d<   |d   j                         |d<   t        j                  t              5  | j                  ||       ddd       y# 1 sw Y   yxY w)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   s    HHQ(E*Xu,=>?!f(!f(FFHAHHQ*e,"E*Xu,=? @(((**k&&((]]9% 	'  A&	' 	' 	's   C!!C*c                    t         j                  j                  g dg d      }t        j                  dt         j                  dg      }| j                  ||       | j                  ||       t         j                  j                  g dg d      }t        j                  t         j                  ddg      }| j                  ||       | j                  ||       y )N      @      @      @)FTFmaskrw   ry   )TFFrx   )r,   maMaskedArrayr-   rg   r#   infr   s      r"   test_masked_nan_infz"TestArrayEqual.test_masked_nan_inf   s    EEm2FGHHb"&&#&'AAEEm2FGHHbffb#&'AAr$   c                     G d dt         j                        }t        j                  ddg      j                  |      }t        j                  ddg      j                  |      }t	        t        ||k(        t               t	        ||k(         t	        ||k7         | j                  ||       | j                  ||       | j                  ||       y )Nc                       e Zd Zd Zd Zy)?TestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArrayc                 \    t        t        j                  | |      j                               S r   )boolr,   equalallr   others     r"   __eq__zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__eq__   s!    BHHT51557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      s    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    
	)bjj 	) HHb"X##G,HHb"X##G,Q!Vd#QQAQ"Q"r$   c                     G d dt         j                        }t        j                  ddg      j                  |      }t        j                  ddg      j                  |      }t	        t
              5  t        j                  |       d d d        | j                  ||       | j                  ||       | j                  ||       y # 1 sw Y   @xY w)Nc                       e Zd Zd Zy)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    	&bjj 	& HHb"X##G,HHb"X##G,9% 	FF1I	AQ"Q"		 	s   5C

Cc           	         t        j                  t              5  t        j                  d      5  t        j
                  j                  t        j                  g dt        j                        t        j                  g dt        j                               d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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

--HHY

3HH]BJJ799	9 	99 9	9 	9s#   B7A)B+B7+B4	0B77C c                 Z    t        j                  g d      }d}| j                  ||       y)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   s%    HH\"Ar$   c                 Z    t        j                  g d      }d}| j                  ||       y)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   s%    HH\"Q"r$   c                     t        j                  g d      }d}t        j                  t              5  t        ||d       ddd       y# 1 sw Y   yxY w)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   sB    HH\"]]>* 	2q!D1	2 	2 	2s   AAc                 |    t        j                  g d      }t        j                  g d      }t        ||d       y)-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   s*    HH\"HH\"1a-r$   c                     t        j                  g d      }t        j                  g d      }t        j                  t              5  t        ||d       ddd       y# 1 sw Y   yxY w)r   )r)   r)   r)   r   Tr   Nr   r   s      r"    test_array_vs_float_array_strictz/TestArrayEqual.test_array_vs_float_array_strict   sK    HHYHH\"]]>* 	2q!D1	2 	2 	2s   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   sR    /& &#	#'"	#*#9#2.2r$   rH   c                   $    e Zd Zd Zd Zd Zd Zy)TestBuildErrorMessagec                     t        j                  g d      }t        j                  g d      }d}t        ||g|      }d}t        ||       y )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   sH    HH01HH01'1a&'*" 	Qr$   c                     t        j                  g d      }t        j                  g d      }d}t        ||g|d      }d}t        ||       y )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    HH01HH01'1a&'598Qr$   c                     t        j                  g d      }t        j                  g d      }d}t        ||g|d      }d}t        ||       y )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    HH01HH01'1a&'@ 	Qr$   c                     t        j                  g d      }t        j                  g d      }d}t        ||g|d      }d}t        ||       y )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    HH45HH45'1a&'R87 	Qr$   N)rC   rD   rE   r   r   r   r   rF   r$   r"   r   r      s    			r$   r   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)	TestEqualc                     t         | _        y r   )r   r   rA   s    r"   rJ   zTestEqual.setup_method+  s
    (r$   c                 ^   | j                  t        j                  t        j                         | j                  t        j                  gt        j                  g       | j                  t        j                  t        j                  g       | j                  t        j                  d       y Nr)   )r   r,   rg   r'   rA   s    r"   test_nan_itemszTestEqual.test_nan_items.  sd    "&&"&&)266(RVVH-RVVbffX.RVVQ'r$   c                    | j                  t        j                  t        j                         | j                  t        j                  gt        j                  g       | j                  t        j                  t        j                  g       y r   )r   r,   r~   r'   rA   s    r"   test_inf_itemszTestEqual.test_inf_items4  sP    "&&"&&)266(RVVH-RVVbffX.r$   c                    | j                  t        j                  dd      t        j                  dd             | j                  t        j                  dd      t        j                  dd             | j                  t        j                  dd      t        j                  dd             | j                  t        j                  dd      t        j                  dd             y )N
2017-01-01smz
2017-01-02)r#   r,   
datetime64r'   rA   s    r"   test_datetimezTestEqual.test_datetime9  s    MM,,MM,,	
 	MM,,MM,,	
 	MM,,MM,,	
 	MM,,MM,,	
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                  |	|
       | j                  |	g|
g       | j                  |	g|
       @ t        j                  ||      D ]>  \  }	}
| j                  |	|
       | j                  |	g|
g       | j                  |	g|
       @ t        j                  ||      D ]  \  }	}
| j                  |	|
       | j                  |	|
g       | j                  |	g|
g       | j                  |	gt        j                  dd             | j                  |
gt        j                  dd             | j                  |	gt        j                  dd             | j                  |
gt        j                  dd              y )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*  !bmmL#&FG  !bmmL#&FG  !bnnS#&>?  !bnnS#&>?	@r$   c                 L    | j                  dd       | j                  dd       y )Nababb)r   r'   rA   s    r"   test_non_numericzTestEqual.test_non_numericl  s"    $%T5)r$   c                 `   | j                  t        dd      t        dd             | j                  t        dt        j                        t        dt        j                               | j	                  t        dt        j                        t        dd             | j	                  t        t        j                  d      t        dt        j                               | j	                  t        t        j                  t        j
                        t        t        j                  d             y Nr)   r*   )r   complexr,   rg   r'   r~   rA   s    r"   test_complex_itemzTestEqual.test_complex_itemp  s    '!Q-A7'!RVV,ga.@AWQ/A?WRVVQ/BFF1CDWRVVRVV4gbffa6HIr$   c                 `    | j                  t        j                  t        j                         y r   )r'   r,   PZERONZEROrA   s    r"   test_negative_zerozTestEqual.test_negative_zerow  s    RXXrxx0r$   c                    t        j                  t        dd      t        dt         j                        g      }t        j                  t        dd      t        dd      g      }| j	                  ||       | j                  ||       y r   r,   r-   r   rg   r   r'   r_   s      r"   test_complexzTestEqual.test_complexz  se    HHgamWQ%789HHgamWQ]34!QQ"r$   c                     dd l }t        j                  |j                  ddd      |j                  ddd      g      }| j                  ||d d d          y )Nr   i  r)   r*   )datetimer,   r-   r'   )r   r   r    s      r"   test_objectzTestEqual.test_object  sS    HHh''a3''a35 6Q$B$(r$   N)rC   rD   rE   rJ   r   r   r   r   r   r   r   r   r   rF   r$   r"   r   r   )  s6    )(/

(@>*J1#)r$   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestArrayAlmostEqualc                     t         | _        y r   )r   r   rA   s    r"   rJ   z!TestArrayAlmostEqual.setup_method  s
    5r$   c                       j                  ddd       t        t         fd        j                  dgdgd       t        t         fd       y )N?        r   decimalc                  ,     j                  ddd      S Ng      ?r  r   r  r   rA   s   r"   <lambda>z5TestArrayAlmostEqual.test_closeness.<locals>.<lambda>  s    $"3"3Ca"3"H r$   c                  0     j                  dgdgd      S r  r   rA   s   r"   r  z5TestArrayAlmostEqual.test_closeness.<locals>.<lambda>  s    $"3"3SEC5!"3"L r$   r   r	   r&   rA   s   `r"   test_closenessz#TestArrayAlmostEqual.test_closeness  sQ     	(C3nH	J 	8*seQ7nL	Nr$   c                      t        j                  dg      t        j                  dg       j                  d        j                  d       t        t         fd       y )NgeH@gwH@r3   r  r4   c                  ,     j                  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  sZ    HHi[!HHi[!!Q*!Q*n:	<r$   c                 j    t        j                  t         j                  g      t        j                  dg      t        j                  t         j                  g       j	                         t        t         fd       t        t         fd       t        t         fd       y )Nr)   c                  (    j                         S r   r   ananaoner   s   r"   r  z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>      ))$5 r$   c                  (    j                         S r   r   ainfr  r   s   r"   r  z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>  r  r$   c                  (    j                         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  sq    xx!xx}xx!$%n5	7n5	7n5	7r$   c                     t        j                  ddgddgg      j                         t         j                  d<   t	        t
         fd       t         j                   d<   t	        t
         fd       y )Nr   r   rw   rx   )r   r   c                  (    j                         S r   r   r    r!   r   s   r"   r  z/TestArrayAlmostEqual.test_inf.<locals>.<lambda>      ))!Q/ r$   c                  (    j                         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_    HHr2hR)*FFH&&$n/	166'$n/	1r$   c                    t        j                  ddgddgg      }t         j                  j                  ddgddggddgddgg      }| j	                  ||       | j	                  ||       | j	                  ||       t         j                  j                  dd	      }t        j                  g d
      }| j                  ||       | j                  ||       t         j                  j                  }t        j                  g d
      }| j                  ||       | j                  ||       t         j                  j                  g d
g d	      }t        j                  g d      }| j                  ||       | j                  ||       t         j                  j                  g d
g d	      }t        j                  d      }| j                  ||       | j                  ||       y )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   HHr2hR)*EER2r(3!&u>@!Q!Q!Q EEc-HH]#AAEELLHH]#AAEEm2DEHH\"AAEEm2DEHHRLAAr$   c                      G d dt         j                        }t        j                  ddg      j                  |      }| j	                  ||       y )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         |   |      j                  t        j                        S r   superr   r   r,   r   r   r   	__class__s     r"   r   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__  !    w~e,11"**==r$   c                 \    t         |   |      j                  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  A    
	*bjj 	* HHb"X##G,!Qr$   N)
rC   rD   rE   rJ   r  r  r  r#  r'  r>  rF   r$   r"   r   r     s&    6N"<
714 r$   r   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestAlmostEqualc                     t         | _        y r   )r   r   rA   s    r"   rJ   zTestAlmostEqual.setup_method  
    /r$   c                       j                  ddd       t        t         fd        j                  dgdgd       t        t         fd       y )Nr  r  r   r  c                  ,     j                  ddd      S r  r   rA   s   r"   r  z0TestAlmostEqual.test_closeness.<locals>.<lambda>  s    d//S!/D r$   c                  0     j                  dgdgd      S r  r   rA   s   r"   r  z0TestAlmostEqual.test_closeness.<locals>.<lambda>  s    d//ua/H r$   r
  rA   s   `r"   r  zTestAlmostEqual.test_closeness  sQ     	(C3nD	F 	8*seQ7nH	Jr$   c                       j                  t        j                  t        j                         t        t         fd       t        t         fd       t        t         fd       y )Nc                  D     j                  t        j                  d      S r   )r   r,   rg   rA   s   r"   r  z/TestAlmostEqual.test_nan_item.<locals>.<lambda>      d//: r$   c                  `     j                  t        j                  t        j                        S r   )r   r,   rg   r~   rA   s   r"   r  z/TestAlmostEqual.test_nan_item.<locals>.<lambda>      d//? r$   c                  `     j                  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   sD    "&&"&&)n:	<n?	An?	Ar$   c                      j                  t        j                  t        j                          j                  t        j                   t        j                          t        t         fd       t        t         fd       y )Nc                  D     j                  t        j                  d      S r   r   r,   r~   rA   s   r"   r  z/TestAlmostEqual.test_inf_item.<locals>.<lambda>  rI  r$   c                  b     j                  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	  sR    "&&"&&)266'BFF7+n:	<n@	Br$   c                 (    | j                  dd       y r   )r'   rA   s    r"   test_simple_itemz TestAlmostEqual.test_simple_item  s    Q"r$   c                    | j                  t        dd      t        dd             | j                  t        dt        j                        t        dt        j                               | j                  t        t        j                  t        j                        t        t        j                  t        j                               | j                  t        dt        j                        t        dd             | j                  t        t        j                  d      t        dt        j                               | j                  t        t        j                  t        j                        t        t        j                  d             y r   )r   r   r,   rg   r~   r'   rA   s    r"   r   z!TestAlmostEqual.test_complex_item  s    '!Q-A7'!RVV,ga.@A'"&&"&&172662663JKWQ/A?WRVVQ/BFF1CDWRVVRVV4gbffa6H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      }| j	                  ||       | j                  ||       | j                  ||       y r   r   )r   r`   zra   s       r"   r   zTestAlmostEqual.test_complex  s    HHgamWQ%789HHgamWRVVQ%789HHgamWQ]34!QQ"Q"r$   c                    t        j                  g d      }t        j                  g d      }t        j                  t              5 }| j                  ||d       ddd       t        j                        j                  d      }t        |d   d       t        |d	   d
       t        |d   d       t        |d   d       t        |d   d       t        j                  t              5 }| j                  ||       ddd       t        |j                        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 }| j                  ||       ddd       t        |j                        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 }| j                  ||       ddd       t        |j                        j                  d      }t        |d   d       t        |d	   d       t        |d   d       y# 1 sw Y   xY w# 1 sw Y   'xY w# 1 sw Y   GxY w# 1 sw Y   xY w)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$  s    HH<=HH<= ]]>* 	0haB/	08>>"((.T!WABT!W?@T!WGHGF	H 	GF	H ]]>* 	$ha#	$8>>"((.T!WBCT!W?@T!WGHT!WFGT!WFG HHbffa[!HHbffa[!]]>* 	$ha#	$8>>"((.T!W@AT!W;<T!W;<T!W56T!W56 HHaVHHaV]]>* 	$ha#	$8>>"((.T!WABT!W:;T!W<=[	0 	0 	$ 	$	$ 	$	$ 	$s0   L-L%L2+L?L"%L/2L<?Mc                    d}t        j                  d      }t        j                  t              5 }| j                  ||       ddd       t        j                        j                  d      }t        |d   d       t        |d   d       t        |d	   d
       d}t        j                  d      }t        j                  t              5 }| j                  ||       ddd       t        |j                        j                  d      }t        |d   d       t        |d   d       t        |d	   d       y# 1 sw Y   xY w# 1 sw Y   gxY w)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   GGBK]]>* 	$ha#	$8>>"((.T!WCDT!W;<T!W;<GGBK]]>* 	$ha#	$8>>"((.T!WCDT!W;<T!W<=	$ 	$	$ 	$s   D:E:EEc                      G d dt         j                        }t        j                  ddg      j                  |      }| j	                  ||       y )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         |   |      j                  t        j                        S r   r,  r.  s     r"   r   zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__t  r0  r$   c                 \    t         |   |      j                  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    s9    0J"AB#J#4>l>( r$   rA  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestApproxEqualc                     t         | _        y r   )r   r   rA   s    r"   rJ   zTestApproxEqual.setup_method  rC  r$   c                      t        j                  d      t        j                  d       j                  d        j                  d       t        t         fd       y )N{GH@RH@r  significantr[  c                  ,     j                  d      S Nr\  rw  r   r_   s   r"   r  z7TestApproxEqual.test_simple_0d_arrays.<locals>.<lambda>      d//1!/D r$   r  r_   s   `@@r"   test_simple_0d_arraysz%TestApproxEqual.test_simple_0d_arrays  sW    HHWHHW!QA.!QA.nD	Fr$   c                      dd j                  d        j                  d        j                  d       t        t         fd       y )Nru  rv  r4   rw  r  r[  c                  ,     j                  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  sZ    !QA.!QA.!QA.nD	Fr$   c                 d    t        j                  t         j                        t        j                  d      t        j                  t         j                         j	                         t        t         fd       t        t         fd       t        t         fd       y )Nr)   c                  (    j                         S r   r   r  s   r"   r  z0TestApproxEqual.test_nan_array.<locals>.<lambda>      d.?.?d.K r$   c                  (    j                         S r   r   r  s   r"   r  z0TestApproxEqual.test_nan_array.<locals>.<lambda>  r  r$   c                  (    j                         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  e    xxxx{xx$%n&KLn&KLn&KLr$   c                 d    t        j                  t         j                        t        j                  d      t        j                  t         j                         j	                         t        t         fd       t        t         fd       t        t         fd       y )Nr)   c                  (    j                         S r   r   r  s   r"   r  z0TestApproxEqual.test_nan_items.<locals>.<lambda>  r  r$   c                  (    j                         S r   r   r  s   r"   r  z0TestApproxEqual.test_nan_items.<locals>.<lambda>  r  r$   c                  (    j                         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    s    0FFMMr$   rr  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestArrayAssertLessc                     t         | _        y r   )r   r   rA   s    r"   rJ   z TestArrayAssertLess.setup_method  s
    -r$   c                 6    t        j                  ddg      t        j                  ddg       j                         t        t         fd       t        j                  ddg      t        t         fd       t        t         fd       y )	N皙?皙@333333?ffffff@c                  (     j                        S r   r   r_   s   r"   r  z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>      d.?.?1.E r$   r   c                  (     j                        S r   r   r_   s   r"   r  z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>  r  r$   c                  (     j                        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  sj    HHc3Z HHc3Z !Qn&EFHHc3Z n&EFn&EFr$   c                 N    t        j                  ddgddgg      t        j                  ddgddgg       j                         t        t         fd	       t        j                  d
dgddgg      t        t         fd       t        t         fd       y )Nr  r  ffffff
@g@r  r  g333333@g      @c                  (     j                        S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank2.<locals>.<lambda>  r  r$   r   c                  (     j                        S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank2.<locals>.<lambda>  r  r$   c                  (     j                        S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank2.<locals>.<lambda>  r  r$   r  r_   s   `@@r"   
test_rank2zTestArrayAssertLess.test_rank2  s    HHsCj3*-.HHsCj3*-.!Qn&EFHHsCj3*-.n&EFn&EFr$   c                     t        j                  d      t        j                  d      dz    j                         t        t         fd       dd<   t        t         fd       t        t         fd       y )	N)r*   r*   r*   )shaper)   c                  (     j                        S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank3.<locals>.<lambda>  r  r$   r   )r   r   r   c                  (     j                        S r   r   r_   s   r"   r  z0TestArrayAssertLess.test_rank3.<locals>.<lambda>  r  r$   c                  (     j                        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^    GG)$GG)$Q&!Qn&EF'
n&EFn&EFr$   c                 4    dd j                         t        t         fd       t        j                  ddg       j                         t        t         fd       t        j                  ddg      t        t         fd       y )Nr  r  c                  (     j                        S r   r   r_   s   r"   r  z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>  r  r$   r  c                  (     j                        S r   r   r_   s   r"   r  z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>  r  r$   r   c                  (     j                        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  sr    !Qn&EFHHc3Z !Qn&EFHHc3Z n&EFr$   c                     t        j                  t         j                        t        j                  d      t        j                  t         j                         j	                         t        t         fd       t        t         fd       t        t         fd       t        t         fd       y )Nr)   c                  (    j                         S r   r   r  s   r"   r  z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>  r  r$   c                  (    j                         S r   r   r  s   r"   r  z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>  r  r$   c                  (    j                         S r   r   r  s   r"   r  z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>  r  r$   c                  (    j                         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  sp    xxxx{xx$%n&KLn&KLn&KLn&K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       j                         t        t         fd
       y )N)r  r  r  c                  (    j                         S r   r   r  r   r`   s   r"   r  z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>      d.?.?4.H r$   c                  (    j                         S r   r   r  s   r"   r  z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>      d.?.?a.H r$   r  r  c                  (    j                         S r   r   r  s   r"   r  z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>  r  r$   c                  (    j                         S r   r   r  s   r"   r  z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>  r  r$   r   r   c                  (     j                        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    HH_%xxn&HIn&HIHHc3'(n&HIn&HIHHc3'(!Qn&EFr$   c                     t        j                  d      t        j                  t         j                         j                          j                           j                          t	        t
         fd       t	        t
         fd       t	        t
         fd       t	        t
         fd       t	        t
         fd       y )Nr)   c                  (    j                         S r   r   r  r  r   s   r"   r  z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>  r  r$   c                  *    j                          S r   r   r  s   r"   r  z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>      d.?.?te.L r$   c                  (    j                          S r   r   r  r   s   r"   r  z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>	  r  r$   c                  *    j                           S r   r   r  s   r"   r  z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>
  r  r$   c                  ,    j                            S r   r   r  s   r"   r  z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>  s    d.?.?u.M r$   )r,   r-   r~   r   r	   r&   )r   r  r  s   `@@r"   test_inf_comparez$TestArrayAssertLess.test_inf_compare   s    xx{xx$%4%&4%&n&KLn&LMn&KLn&LMn&M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        j                          y )Nr  r  c                  (    j                         S r   r   r  r   r`   s   r"   r  z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>  r  r$   c                  (    j                         S r   r   r  s   r"   r  z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>  r  r$   c                  *    j                          S r   r   r  s   r"   r  z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>  s    d.?.?D5.I r$   c                  ,    j                           S r   r   r  s   r"   r  z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>  s    d.?.?TE.J r$   c                  ,    j                           S r   r   r  s   r"   r  z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>  s    d.?.?r.J r$   )r,   r-   r~   r	   r&   r   )r   r  r`   s   `@@r"   test_inf_compare_arrayz*TestArrayAssertLess.test_inf_compare_array  sw    HHc3'(xxn&HIn&HIn&IJn&JKn&JK4%#r$   N)rC   rD   rE   rJ   r  r  r  r  r  r  r  r  rF   r$   r"   r  r    s6    .
G
G
GG MG"O	$r$   r  c                       e Zd Zd Zd Zd Zy)	TestWarnsc                 *   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       y )Nc                  .    t        j                  d       y)Nyor3   warningswarnrF   r$   r"   fzTestWarns.test_warn.<locals>.f  s    MM$r$   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  sx    	 Z088;\+q115J/77n&8!<'Q7; 	^]E	Gr$   c                 0   t         j                  d   j                  d d  }t        t              5  t        j                  d       d d d        t         j                  d   j                  }d }t        t        |       t        ||d       y # 1 sw Y   GxY w)Nr  r  c                  l    t               5  t        j                  d       d d d        y # 1 sw Y   y xY wNr  )r   r  r  rF   r$   r"   no_warningsz3TestWarns.test_context_manager.<locals>.no_warnings2  s)    #% $d#$ $ $s   *3r  )
r  r  r  r
   r  r  r  r	   r&   r   )r   r  r  r  s       r"   test_context_managerzTestWarns.test_context_manager+  sy    Z088;+& 	 MM$	 J/77	$ 	nk2^]E	G	  	 s   BBc                     d }d}t        j                         5  t        j                  dt               	 t	        t
        |       d}d d d        |rt        d      y # t        $ r Y !w xY w# 1 sw Y   &xY w)Nc                  8    t        j                  dt               y r  )r  r  DeprecationWarningrF   r$   r"   r  z,TestWarns.test_warn_wrong_warning.<locals>.f;  s    MM$ 2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 $$& 	!!'+=>[!,	  !FGG  & 	 	s(   A-A	A*'A-)A**A--A6N)rC   rD   rE   r  r  r  rF   r$   r"   r  r    s    G GHr$   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)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
       y )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!<HHaAq\"HHaAq\"11%noq!<X"1noq!$G2C(nor13Gr$   c                     t        j                  t        j                  t         j                        j                  gt         j                        }t        ||       y )Nr:   )r,   r-   iinfoint_minr   r=   s     r"   test_min_intzTestAssertAllclose.test_min_intb  s6    HHbhhrww'++,BGG<1r$   c                    t        j                  g d      }t        j                  g d      }t        j                  t              5 }t        ||       d d d        t        j                        }t        d|v        y # 1 sw Y   ,xY w)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  sn    HH\"HH\"]]>* 	"hAq!	"(..! /256 	7	" 	"   B  B	c                     t        j                  t         j                  g      }t        j                  t         j                  g      }t        ||d       y )NT	equal_nan)r,   r-   rg   r   r   s      r"   test_equal_nanz!TestAssertAllclose.test_equal_nanr  s6    HHbffXHHbffX1-r$   c                     t        j                  t         j                  g      }t        j                  t         j                  g      }t        t        t
        ||d       y )NFr  )r,   r-   rg   r	   r&   r   r   s      r"   test_not_equal_nanz%TestAssertAllclose.test_not_equal_nanx  s:    HHbffXHHbffXnoq!uMr$   c                     t        j                  t         j                  g      }t        j                  t         j                  g      }t        ||       t	        ||       t        ||       t        ||       y r   )r,   r-   rg   r   r   r   r   r   s      r"   test_equal_nan_defaultz)TestAssertAllclose.test_equal_nan_default}  sT     HHbffXHHbffX1a !!Q'!Q1r$   c                    t        j                  ddg      }t        j                  ddg      }t        j                  t              5 }t        ||       d d d        t        j                        }t        d|v        y # 1 sw Y   ,xY w)Nr   r)   r*   rh  r  r  s        r"   test_report_max_relative_errorz1TestAssertAllclose.test_report_max_relative_error  so    HHaVHHaV]]>* 	"hAq!	"(..!.#56	" 	"r  c                 P    t        j                  g dgd      }t        ||       y )N)r)   r*   r3   r   zm8[ns]r:   )r,   r-   r   r=   s     r"   test_timedeltaz!TestAssertAllclose.test_timedelta  s     HH&'x81r$   c                 F   t        j                  g dd      }t        j                  g dd      }t        j                  t              5 }t        ||d       ddd       t        j                        j                  d      }t        |d	   d
       y# 1 sw Y   =xY w)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{     JJy0JJy0]]>* 	*hAqq)	*8>>"((.T!W:;	* 	*s   BB N)rC   rD   rE   r  r  r  r  r  r   r  r  r	  rF   r$   r"   r  r  L  s1    H(
	7.N
	7
<r$   r  c                   Z    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y)TestArrayAlmostEqualNulpc                    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        |||       y 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     KKR2::6EEE1"a%L hhqww###d
2&q!T2 !''"))&b  &q!T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        |||       y r  r,   r  r  r  r  r;   r  r	   r&   r   r  r  s         r"   test_float64_failz*TestArrayAlmostEqualNulp.test_float64_fail      KKR2::6EEE1"a%Lhhqww###d
2n&DD	" !''"))&b  n&DD	"r$   c                 n   t        j                  d      }t        j                  t         j                  t         j                        j                  t         j                        }||z  }|j                  t         j                        }|j                  t         j                        }t        ||d       y )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  ss     :&88BFF"**5::299Ef$==,==,Xx3r$   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        j                  |j
                        j                  }|||z  |z  dz  z
  }t        |||       y r  	r,   r  r   r  r  r;   r  r   r  r  s         r"   test_float32_passz*TestArrayAlmostEqualNulp.test_float32_pass  s    KKR2::6EEE1"a%Lhhqww###d
2&q!T2!''"))&b  &q!T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        |||       y 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                 n   t        j                  d      }t        j                  t         j                  t         j                        j                  t         j                        }||z  }|j                  t         j                        }|j                  t         j                        }t        ||d       y )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  ss     6"88BFF"**5::299Ef$==,==,Xx3r$   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        j                  |j
                        j                  }|||z  |z  dz  z
  }t        |||       y Nr  r4   r^   r:   r   )	r,   r  float16r  r  r;   r  r   r  r  s         r"   test_float16_passz*TestArrayAlmostEqualNulp.test_float16_pass  s    KKAr4EEE1"a%Lhhqww###d
2&q!T2!''"))&b  &q!T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        |||       y r4  )r,   r  r6  r  r  r;   r  r	   r&   r   r  r  s         r"   test_float16_failz*TestArrayAlmostEqualNulp.test_float16_fail  s    KKAr4EEE1"a%Lhhqww###d
2n&DD	" !''"))&b  n&DD	"r$   c                 n   t        j                  d      }t        j                  t         j                  t         j                        j                  t         j                        }||z  }|j                  t         j                        }|j                  t         j                        }t        ||d       y )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  sr     488BFF"**5::299Ef$==,==,Xx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   |       y 
Nr  r  rg  r  r:   r^                 ?r   rx   r  r   r  r`   xir  ra   r  s          r"   test_complex128_passz-TestArrayAlmostEqualNulp.test_complex128_pass&  sL   KKR2::6EEE1"a%L2Xhhqww###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   |       y 	Nr  r  rg  r  r:   r^   rD  r   r  rE  s          r"   test_complex128_failz-TestArrayAlmostEqualNulp.test_complex128_fail=  st   KKR2::6EEE1"a%L2Xhhqww###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   |       y rC  r'  rE  s          r"   test_complex64_passz,TestArrayAlmostEqualNulp.test_complex64_passZ  sJ   KKR2::6EEE1"a%L2Xhhqww###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   |       y rI  r*  rE  s          r"   test_complex64_failz,TestArrayAlmostEqualNulp.test_complex64_failo  sr   KKR2::6EEE1"a%L2Xhhqww###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    sC    3$" 	43" 	43" 	4;.*:;**r$   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestULPc                 ^    t         j                  j                  d      }t        ||d       y )Nr^   r   maxulp)r,   randomrandnr   )r   r`   s     r"   
test_equalzTestULP.test_equal  s     IIOOBQ!,r$   c                 h   t        j                  d      j                  t         j                        }|dt         j                  j                  d      j                  t         j                        z  z  }t        j                  t         j                        j                  }t        |||z   d       y )Nr^   {Gz?rg  rR  )	r,   ri  astyper   rT  rU  r  r  r   r   r`   r  s      r"   test_singlezTestULP.test_single  sq    GGBKrzz*	TBIIOOB'..rzz:::hhrzz"&&Q#b1r$   c                 h   t        j                  d      j                  t         j                        }|dt         j                  j                  d      j                  t         j                        z  z  }t        j                  t         j                        j                  }t        |||z   d       y )Nr^   rX     rR  )	r,   ri  rY  r  rT  rU  r  r  r   rZ  s      r"   test_doublezTestULP.test_double  sq    GGBKrzz*	TBIIOOB'..rzz:::hhrzz"&&Q#c2r$   c                 6   t         j                  t         j                  fD ]v  }t        j                  t         j                  g      j                  |      }t        j                  t        j                  |      j                  g      }t        ||d       x y )Nr]  rR  )	r,   r   r  r-   r~   rY  r  maxr   )r   dtr~   bigs       r"   r#  zTestULP.test_inf  sh    ::rzz* 	7B((BFF8$++B/C((BHHRL,,-.C c#6	7r$   c                    t         j                  t         j                  fD ]  }|t         j                  k(  rdndt        j                  t         j                  g      j                  |      t        j                  t         j                  g      j                  |      t        j                  t        j                  |      j                  g      t        j                  t        j                  |      j                  g      t        j                  t         j                  g      j                  |      t        j                  t         j                  g      j                  |      t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        fd        y )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  sB   ::rzz* 	*BRZZ((BFF8$++B/C((BFF8$++B/C((BHHRL,,-.C88RXXb\../0D88RXXJ'..r2DHHbhhZ(//3E.)* .)* .)* .)* .)*/	*r$   N)rC   rD   rE   rV  r[  r^  r#  r  rF   r$   r"   rP  rP    s    -237*r$   rP  c                       e Zd Zd Zd Zy)TestStringEqualc                    t        dd       t        dd       t        j                  t              5 }t        dd       d d d        t	        j
                        }t        |d       t        t        d        y # 1 sw Y   <xY w)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 r$   )r   rq   rr   r&   r_  r`  r   r	   )r   rc  r  s      r"   r  zTestStringEqual.test_simple  sl    GW-.0BC]]>* 	:h
L9	:(..!SCDnA	C	: 	:s   A::Bc                 >    t        dd       t        t        d        y )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r$   N)rC   rD   rE   r  ry  rF   r$   r"   rq  rq    s    
CAr$   rq  c                     	 | j                   }t        |      }d|v r|dz  }t        ||       y # t        $ r i }Y .w xY w)Nversionr)   )__warningregistry__AttributeErrorlenr   )modn_in_context	mod_warns	num_warnss       r"   assert_warn_len_equalr    sR    
++	 III 	Q	L)#   	s   / ==c                  |     G d d      }  |        }t        |d        G d d      }  |        }t        |d       y )Nc                       e Zd Zy)/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y)r  c                     ddd| _         y )Nr)   r*   warning1warning2)r|  rA   s    r"   __init__z8test_warn_len_equal_call_scenarios.<locals>.mod.__init__  s    3434(6D$r$   N)rC   rD   rE   r  rF   r$   r"   r  z/test_warn_len_equal_call_scenarios.<locals>.mod   s    	6r$   r*   )r  )r  mod_insts     r"   "test_warn_len_equal_call_scenariosr    sB      uHh'(*
6 6
 uHh'(*r$   c                      t         j                  t           } 	 | j                  j	                          | S # t
        $ r Y | S w xY wr   )r  r  rC   r|  clearr}  my_mods    r"   _get_fresh_modr  
  sI    [["F""((*
 M	   	M	s   5 	AAc                  $   t               } t        t        | di       i        t        | g      5  t	        j
                  d       t	        j                  d       d d d        t        | j                  i        t               5  t	        j
                  d       t	        j                  d       d d d        t        | d       ddd| _        t        | g      5  t	        j
                  d       t	        j                  d	       d d d        t        | d       t               5  t	        j
                  d       t	        j                  d	       d d d        t        | d       y # 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   ;xY w)
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    sJ   F!6;R@	!6(	3 &h'n%& ++R0 
"	# &h'n%& &!$ /0./"1F 
"6(	3 )h''() &!$ 
"	# )h''() &!$3& && &) )) )s/   +E!+E.+E:!+F!E+.E7:FFc                     t               } t        t        | di       i        d }t        | d       t	               5 }|j                  t               |j                  t        j                  j                         t        j                  d        |        d d d        t        t        j                        d       t        |j                  d   j                  j                   d   d       t        | d       t	               }|j                  |        |5  t        j                  d       d d d        t        | d       |j                  |        |5  t        j                  d       d d d        t        | d       t	               5  t        j"                  d       t        j                  d       d d d        t        | d       y # 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   ;xY w)Nr|  c                  :    d } t        j                  | ddg       y )Nc                 4    t        j                  dd       | S )NzSome warning 2r*   
stacklevelr  arrs    r"   r  zFtest_suppress_warnings_module.<locals>.warn_other_module.<locals>.warn>  s    MM*q9Jr$   r   r,   apply_along_axisr  s    r"   warn_other_modulez8test_suppress_warnings_module.<locals>.warn_other_module;      	 	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% SWWq!##((+^<&!$

CJJfJ	 &n%&&!$JJfJ	 &n%&&!$ 
	 &h'n%& &!$9 & &
& &
& &s0   AG
GG#
+G/
GG #G,/G8c                     t               } t        t        | di       i        t               5 }|j	                  t
               t        j                  d       d d d        t        | d       t               }|j	                  t
               |5  t        j                  d       d d d        t        | d       |j	                  |        |5  t        j                  d       d d d        t        | d       t               5  t        j                  d       t        j                  d       d d d        t        | d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   :xY w)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%& &!$'& && &
& &
& &s/   +D>E

E>+E">E
EE"E+c                  ,   t               } | j                  t               | d        }t        j                  d      5 }t        j
                  d        |t                |t               t        t        |      d       d d d        y # 1 sw Y   y xY w)Nc                 0    t        j                  d|        y )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 
	 	 	-  h'[^SVQ	     s   AB

Bc                  n   t               } | j                         }| 5  | j                  d      }| j                  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        | 5  | j                  d      }| j                  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        t               5 } | j                          t               5 }|j                  d       t        j                  d       t        j                  d       t        t        |j                        d       d d d        t        t        | j                        d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   JxY w# 1 sw Y   y xY w)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zz"8z9

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

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

  	+DKKK/MM.)MM./TXX*		+
 	S\1%& &5
F 
F
F 
F	+ 	+& &s>   CJ:CJJ+:AJ'J+JJJ(	$J++J4c                  L   d } t               5 }|j                          t        d      5  t        d      D ]  }t        j                  d        	 d d d        t        t        |j                        d       d d d        t               5 }|j                          t        d      5  t        d      D ],  }t        j                  d       t        j                  d       . 	 d d d        t        t        |j                        d       d d d        t               5 }|j                          t        d      5  t        d      D ]3  }t        j                  d       t        j                  d        |         5 	 d d d        t        t        |j                        d       d d d        t               5 }|j                          t        d      5  t        d      D ]3  }t        j                  d       t        j                  d        |         5 	 d d d        t        t        |j                        d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   bxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   y xY w)	Nc                  :    d } t        j                  | ddg       y )Nc                 4    t        j                  dd       | S )Nr  r*   r  r  r  s    r"   r  zJtest_suppress_warnings_forwarding.<locals>.warn_other_module.<locals>.warn  s    MM.Q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( 	.1X .n-.	. 	S\1%& 
	 &

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

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

v& 	$1X $n-23!#$	$ 	S\1%& &3	. 	.& &	. 	.& &	$ 	$& &	$ 	$& &s   I&I'I
I)&;I"'I)J7AI6:'J3JAJ'JI	III&	!I))I36I?	;JJJ	JJ#c                     t               5 } t        j                  j                  | d      }t	        |d      5  	 d d d        d d d        t        t        j                  j                                 d}	 t               5 } t               # 1 sw Y   RxY w# 1 sw Y   VxY w# 1 sw Y   nxY wn# t        $ r d}Y nw xY wt        |       t        t        j                  j                  |               y )Ntmpr  FT)r   ospathjoinopenr   isdir
ValueError)tdirfpathraiseds      r"   test_tempdirr    s    	 dT5)% 		 d##$FY 	$,	 	 	 	 	 FOd##$sE   -BBB6
B0  B#B	BB #B,(B0 0B>=B>c                     t               5 } t        | d      5  	 d d d        d d d        t        t        j                  j                                 d}	 t               5 } t               # 1 sw Y   RxY w# 1 sw Y   VxY w# 1 sw Y   nxY wn# t        $ r d}Y nw xY wt        |       t        t        j                  j                  |               y )Nr  FT)r   r  r   r  r  isfiler  )r  r  s     r"   test_temppathr    s    	 u% 		 u%%&FZ 	5,	 	 	 	 	 FOu%%&sE   A7A+A7
B  B+A4	0A77B BB BBc                   ,    e Zd Zej                  e    fZy)my_cacwN)rC   rD   rE   r  r  class_modulesrF   r$   r"   r  r    s    [[*,Mr$   r  c                      t               } t               5  t        j                  d       t        j                  d       d d d        t        | j                  i        y # 1 sw Y    xY w)Nr  r  )r  r  r  r  r  r   r|  r  s    r"   %test_clear_and_catch_warnings_inheritr    sP    F	 &h'n%& ++R0& &s   +AA(zPython lacks refcounts)reasonc                   T    e Zd ZdZd Zd Zej                  j                  d        Z	y)TestAssertNoGcCyclesz Test assert_no_gc_cycles c                 l    d }t               5   |        d d d        t        |       y # 1 sw Y   xY w)Nc                  ,    g } | j                  g        | S r   append)r!   s    r"   no_cyclez2TestAssertNoGcCycles.test_passes.<locals>.no_cycle  s    AHHRLHr$   )r   )r   r  s     r"   test_passesz TestAssertNoGcCycles.test_passes  s3    	
 !" 	J	 	H%	 	s   *3c                     d }t        t              5  t               5   |        d d d        d d d        t        t              5  t        |       d d d        y # 1 sw Y   5xY w# 1 sw Y   9xY w# 1 sw Y   y xY w)Nc                  N    g } | j                  |        | j                  |        | S r   r  )r    s    r"   
make_cyclez5TestAssertNoGcCycles.test_asserts.<locals>.make_cycle$  s"    AHHQKHHQKHr$   )r	   r&   r   )r   r  s     r"   test_assertsz!TestAssertNoGcCycles.test_asserts#  sr    	 >* 	$& 	 >* 	,
+	, 	, 	 		, 	,s-   A&AA&A2A#	A&&A/2A;c                 4    G fdd      	 t        j                                }	 t        t              5  t	        d        ddd       d_        y# 1 sw Y   xY w# t
        $ r   |       t        j                  d        Y <w xY w# 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y)<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                     | | _         y r   )cyclerA   s    r"   r  zETestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__init__?  s	    !
r$   c                 <    d | _         j                  r         y y r   )r  r  )r   ReferenceCycleInDels    r"   __del__zDTestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__del__B  s     !
&11 () 2r$   N)rC   rD   rE   __doc__r  r  r  )r  s   r"   r  r  8  s     J"*r$   r  c                       y 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  s    	* 	*&	3/12A	"<0 6'56 .3*6 6 "  3?KK LM # .3*s?   B A" AA" AA" "&BB 
BB 	BN)
rC   rD   rE   r  r  r  rq   markslowr  rF   r$   r"   r  r    s-    $	&, [[(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     sd    
 	         +/ +/\x2\ x2v* *Z\) \)~_ < _ DT l T n(M (MVj$ j$Z0H 0HfV< V<rc* c*L5* 5*pA A(*.*8	%@+%\%8 %&P,&^%"' -& -
1 $-EFD3 D3 GD3r$   