
    wgl                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
c mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"  G d d      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 Z0d Z1d Z2d  Z3d! Z4d" Z5d# Z6d$ Z7d% Z8d& Z9d' Z: G d( d)e      Z;d* Z<ejz                  j}                  e" d+,       G d- d.             Z?ejz                  j                  d/eeg      d0        ZAy)1    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      c/home/mcse/projects/flask/flask-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_diffshape3   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_objarray:   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_methodE   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>.fooJ   s^    AAFF1IAAFF1IQ"  A&r$   ?bhilqpBHILQPfdgFDGS1U1NrF   r   rT   rR   s   `  r"   test_generic_rank1z!TestArrayEqual.test_generic_rank1H   8    	' ' 	AF	  	AF	r$   c                 n   t        j                  d      }t        j                  d      }t        j                  t              5 }| j                  ||       d d d        t        j                        }t        d|v        |}| j                  ||       t        j                  d      }t        j                  d      }d}t        j                  t        t        j                  |            5  | j                  ||       d d d        |}| j                  ||       y # 1 sw Y   xY w# 1 sw Y   *xY w)Nl   Cj<T"3w-l   (M$c7uvz"Mismatched elements: 1 / 1 (100%)
gLxrBr   zMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 4.39506535e+12
Max relative difference among violations: inf
match)r,   r-   pytestraisesr&   r   strvaluer   reescape)r   xyexc_infomsgexpected_msgs         r"   test_0_ndim_arrayz TestArrayEqual.test_0_ndim_array[   s   HH9:HH89]]>* 	$ha#	$(..!5 	 !QHH34HHQKJ ]]><1HI 	$a#	$ !Q'	$ 	$	$ 	$s   D/D+D(+D4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>.foov   s_    A&AFF1IAAFF1IQ"  A&r$   rU   rV   NrF   rY   s   `  r"   test_generic_rank3z!TestArrayEqual.test_generic_rank3t   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'   rp   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*   rs   rt   r)   ru   N)	r,   rN   floatrP   r#   r_   r`   	TypeErrorr'   rp   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maskr}   r   )TFFr~   )r,   maMaskedArrayr-   ro   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                 R    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                  ||       d}t        j                  t        t        j                  |            5  | j                  ||       d d d        t        j                  dd	g      j                  |      }d
}t        j                  t        t        j                  |            5  | j                  ||       d d d        y # 1 sw Y   {xY w# 1 sw Y   y xY w)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         ?       @r}   z{Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 1.
Max relative difference among violations: 0.5r]           g333333@z{Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 2.
Max relative difference among violations: inf)r,   ndarrayr-   viewr   typer   r#   r'   r_   r`   r&   rc   rd   )r   r   r    r!   ri   rS   s         r"   test_subclass_that_overrides_eqz.TestArrayEqual.test_subclass_that_overrides_eq   sV   
	)bjj 	) HHb"X##G,HHb"X##G,Q!Vd#QQAQ"Q"H ]]><1HI 	#Q"	# HHb#Y$$W-H ]]><1HI 	#Q"	# 	#	# 	#	# 	#s   F5FFF&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   r}   )	r,   r   r-   r   r	   ry   r   r#   r'   )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   )	r_   r`   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                    t        j                  g d      }t        j                  g d      }d}t        j                  t        t        j                  |            5  | j                  ||       ddd       t        j                  g d      }d}t        j                  t        t        j                  |            5  | j                  ||       ddd       y# 1 sw Y   lxY w# 1 sw Y   yxY w)z@Test comparing an array with a scalar when not all values equal.)骈  S g 6 )r   r   r   r   zMismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 563766
Max relative difference among violations: infr]   N)r   r   g̜Ar   zMismatched elements: 2 / 4 (50%)
Max absolute difference among violations: 563766.
Max relative difference among violations: 4.54902139e-07r,   r-   r_   r`   r&   rc   rd   r   r   r    r!   ri   s       r"   test_array_vs_array_not_equalz,TestArrayEqual.test_array_vs_array_not_equal   s    HH45HH/0H ]]><1HI 	$a#	$ HH67)
 ]]><1HI 	$a#	$ 	$	$ 	$	$ 	$s   CC)C&)C2c                     t        j                  g d      }d}t        j                  t              5  | j                  ||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-   r_   r`   r&   r   r   s      r"   test_array_vs_scalar_strictz*TestArrayEqual.test_array_vs_scalar_strict
  sK    HH\"]]>* 	1a40	1 	1 	1s   AAc                     t        j                  g d      }t        j                  g d      }| j                  ||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  s3    HH\"HH\"!Qt,r$   c                     t        j                  g d      }t        j                  g d      }t        j                  t              5  | j                  ||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  sT    HHYHH\"]]>* 	1a40	1 	1 	1s   A&&A/N)rC   rD   rE   rJ   rZ   rj   rm   rq   rv   rz   r   r   r   r   r   r   r   r   r   rF   r$   r"   rH   rH   C   sS    /& 2&#	#'"	 #D#9$(1-1r$   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   re   rf   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_names8  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   
   )	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_precisionC  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_methodQ  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,   ro   r'   rA   s    r"   test_nan_itemszTestEqual.test_nan_itemsT  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_itemsZ  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_datetime_  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_itemss  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_numeric  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,   ro   r'   r   rA   s    r"   test_complex_itemzTestEqual.test_complex_item  s    '!Q-A7'!RVV,ga.@AWQ/A?WRVVQ/BFF1CDWRVVRVV4gbffa6HIr$   c                 `    | j                  t        j                  t        j                         y r   )r'   ncuPZERONZEROrA   s    r"   test_negative_zerozTestEqual.test_negative_zero  s    SYY		2r$   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   ro   r   r'   r   re   rf   s      r"   test_complexzTestEqual.test_complex  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   O  s6    )(/

(@>*J3#)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
)TestArrayAlmostEqualc                     t         | _        y r   )r   r   rA   s    r"   rJ   z!TestArrayAlmostEqual.setup_method  s
    5r$   c                    d}t        j                  t        t        j                  |            5  | j                  ddd       d d d        | j                  dgdgd       d}t        j                  t        t        j                  |            5  | j                  dgdgd       d d d        dd	g}d
dg}d}t        j                  t        t        j                  |            5  | j                  ||d       d d d        d}t        j                  t        t        j                  |            5  | j                  ||d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)Nz}Mismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.5
Max relative difference among violations: infr]         ?r   r   decimal?ge(?giUMu>gB??zMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 3.e-05
Max relative difference among violations: inf   z~Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 3.e-05
Max relative difference among violations: 1.r_   r`   r&   rc   rd   r   )r   ri   r    r!   s       r"   test_closenessz#TestArrayAlmostEqual.test_closeness  sg   H ]]><1HI 	3c32	3 	8*seQ7H ]]><1HI 	7secUA6	7  OH ]]><1HI 	/aA.	/G ]]><1HI 	/aA.	/ 	//	3 	3	7 	7	/ 	/	/ 	/s/   EE#+E/8E;E #E,/E8;Fc                 ^   t        j                  dg      }t        j                  dg      }| j                  ||d       | j                  ||d       d}t        j                  t
        t        j                  |            5  | j                  ||d       d d d        y # 1 sw Y   y xY w)	NgeH@gwH@r3   r  r4   zMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.e-04
Max relative difference among violations: 8.10226812e-08r]      r,   r-   r   r_   r`   r&   rc   rd   r   re   rf   ri   s       r"   test_simplez TestArrayAlmostEqual.test_simple  s    HHi[!HHi[!!Q*!Q*)
 ]]><1HI 	/aA.	/ 	/ 	/s   B##B,c                    g d}d}d}t        j                  t        t        j                  |            5  | j                  ||d       d d d        d}t        j                  t        t        j                  |            5  | j                  ||d       d d d        ddg}d	}t        j                  t        t        j                  |            5  | j                  ||d
       d d d        d}d	}t        j                  t        t        j                  |            5  | j                  ||d
       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)N)mlz@gHPX@r   r  zMismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: 1.r]   	   r  zMismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: 5.4722099r   zMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: infr  r   r  r   s       r"   test_array_vs_scalarz)TestArrayAlmostEqual.test_array_vs_scalar  sP   )G ]]><1HI 	/aA.	/N ]]><1HI 	/aA.	/ H ]]><1HI 	/aA.	/ H ]]><1HI 	/aA.	/ 	//	/ 	/	/ 	/	/ 	/	/ 	/s/   EEE$E&EEE#&E/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"   <lambda>z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>      d//d; 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-   ro   r   r   r	   r&   r   r*  r$  r%  s   `@@@r"   test_nanzTestArrayAlmostEqual.test_nan  sq    xx!xx}xx!$%n;	=n;	=n;	=r$   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   r}   r~   )r   r   c                  (    j                         S r   r   r    r!   r   s   r"   r&  z/TestArrayAlmostEqual.test_inf.<locals>.<lambda>      d//15 r$   c                  (    j                         S r   r   r1  s   r"   r&  z/TestArrayAlmostEqual.test_inf.<locals>.<lambda>  r2  r$   )r,   r-   rP   r   r	   r&   r   s   `@@r"   test_infzTestArrayAlmostEqual.test_inf  s_    HHr2hR)*FFH&&$n5	766'$n5	7r$   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   r}   r~   r   FTg      @r   r|   )TTT)r   r   r}   )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	                  ||       t        j                  ddg      j                  |      }t        |       t        j                  ddg      j                  |      }d}t        j                  t        t        j                  |            5  | j	                  ||       d d d        y # 1 sw Y   y xY w)	Nc                   .     e Zd Z fdZ fdZd Z xZS )5TestArrayAlmostEqual.test_subclass_2.<locals>.MyArrayc                 \    t         |   |      j                  t        j                        S r   superr   r   r,   r   r   r   	__class__s     r"   r   z<TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.__eq__>  !    w~e,11"**==r$   c                 \    t         |   |      j                  t        j                        S r   r>  __lt__r   r,   r   r?  s     r"   rD  z<TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.__lt__A  rA  r$   c                     t        |       S r   r   r   s      r"   r   z9TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.allD  s    4y r$   rC   rD   rE   r   rD  r   __classcell__r@  s   @r"   r   r;  =  s    >>!r$   r   r   r   T   zMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 200.
Max relative difference among violations: 0.99009r]   )r,   r   r-   r   r   r   r_   r`   r&   rc   rd   )r   r   r    zr!   ri   s         r"   test_subclass_2z$TestArrayAlmostEqual.test_subclass_28  s    
	!bjj 	! HHb"X##G,!QHHdD\"''0AHHb#Y$$W-L ]]><1HI 	$a#	$ 	$ 	$s   C55C>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   r=  r?  s     r"   r   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__Y  rA  r$   c                 \    t         |   |      j                  t        j                        S r   rC  r?  s     r"   rD  zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__\  rA  r$   c                     t         r   NotImplementedErrorr   s      r"   r   zKTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.all_      ))r$   rF  rH  s   @r"   r   rN  X      >>*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_boolS  A    
	*bjj 	* HHb"X##G,!Qr$   N)rC   rD   rE   rJ   r  r  r   r.  r4  r8  rK  rX  rF   r$   r"   r  r    s1    6#/J//B
=74$6 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_methodh  
    /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 Nr  r   r   r  r   rA   s   r"   r&  z0TestAlmostEqual.test_closeness.<locals>.<lambda>u  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>z  s    d//ua/H r$   r   r	   r&   rA   s   `r"   r  zTestAlmostEqual.test_closenessk  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,   ro   rA   s   r"   r&  z/TestAlmostEqual.test_nan_item.<locals>.<lambda>      d//: r$   c                  `     j                  t        j                  t        j                        S r   )r   r,   ro   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   ro   rA   s   r"   r&  z/TestAlmostEqual.test_nan_item.<locals>.<lambda>  rg  r$   )r   r,   ro   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>  re  r$   c                  b     j                  t        j                   t        j                        S r   rl  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,   ro   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   re   rJ  rf   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      }d}t        j                  t        t        j                  |            5  | j                  ||d       ddd       d}t        j                  t        t        j                  |            5  | j                  ||       ddd       t        j                  t         j                  d	g      }t        j                  t         j                  d
g      }d}t        j                  t        t        j                  |            5  | j                  ||       ddd       t        j                  d
dg      }t        j                  d	d	g      }d}t        j                  t        t        j                  |            5  | j                  ||       ddd       y# 1 sw Y   dxY w# 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   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   a  Mismatched elements: 3 / 3 (100%)
Max absolute difference among violations: 1.e-05
Max relative difference among violations: 3.33328889e-06
 ACTUAL: array([1.00000000001, 2.00000000002, 3.00003      ])
 DESIRED: array([1.00000000002, 2.00000000003, 3.00004      ])r]      r  NzMismatched elements: 1 / 3 (33.3%)
Max absolute difference among violations: 1.e-05
Max relative difference among violations: 3.33328889e-06
 ACTUAL: array([1.     , 2.     , 3.00003])
 DESIRED: array([1.     , 2.     , 3.00004])r   r)   zMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 1.
Max relative difference among violations: 1.
 ACTUAL: array([inf,  0.])
 DESIRED: array([inf,  1.])r*   z{Mismatched elements: 2 / 2 (100%)
Max absolute difference among violations: 2
Max relative difference among violations: inf)	r,   r-   r_   r`   r&   rc   rd   r   r   r  s       r"   test_error_messagez"TestAlmostEqual.test_error_message  s    HH<=HH<=* ]]><1HI 	0aB/	0G ]]><1HI 	$a#	$ HHbffa[!HHbffa[!6
 ]]><1HI 	$a#	$ HHaVHHaVH ]]><1HI 	$a#	$ 	$A	0 	0	$ 	$	$ 	$	$ 	$s0   G,G#G0:G<G #G-0G9<Hc                    	 d}t        j                  d      }d}t        j                  t        t        j                  |            5  | j                  ||       ddd       d}t        j                  d      }d}t        j                  t        t        j                  |            5  | j                  ||       ddd       y# 1 sw Y   lxY w# 1 sw Y   yxY w)z)Check the message is formatted correctly r*      z}Mismatched elements: 20 / 20 (100%)
Max absolute difference among violations: 1.
Max relative difference among violations: 1.r]   Nz~Mismatched elements: 20 / 20 (100%)
Max absolute difference among violations: 1.
Max relative difference among violations: 0.5)r,   onesr_   r`   r&   rc   rd   r   r  s       r"   test_error_message_2z$TestAlmostEqual.test_error_message_2  s    -GGBKG ]]><1HI 	$a#	$ GGBKH ]]><1HI 	$a#	$ 	$	$ 	$	$ 	$s   	C+CCC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__  rA  r$   c                 \    t         |   |      j                  t        j                        S r   rC  r?  s     r"   rD  zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__  rA  r$   c                     t         r   rR  r   s      r"   r   zFTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.all  rT  r$   rF  rH  s   @r"   r   r|    rU  r$   r   r   r   rV  rW  s      r"   rX  z1TestAlmostEqual.test_subclass_that_cannot_be_bool  rY  r$   N)rC   rD   rE   rJ   r  ri  rn  rp  r   r  ru  ry  rX  rF   r$   r"   r[  r[  f  s9    0J"AB#J#1$f$& r$   r[  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  r]  r$   c                      t        j                  d      t        j                  d       j                  d        j                  d       t        t         fd       y )N{GH@RH@r  significant   c                  ,     j                  d      S Nr  r  r   r  s   r"   r&  z7TestApproxEqual.test_simple_0d_arrays.<locals>.<lambda>      d//1!/D r$   )r,   r-   r   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 )Nr  r  r4   r  r  r  c                  ,     j                  d      S r  r   r  s   r"   r&  z3TestApproxEqual.test_simple_items.<locals>.<lambda>  r  r$   rb  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"   rq   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  rq   r   rF   r$   r"   r  r    s    0FFMMr$   r  c                   T    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y)TestArrayAssertLessc                     t         | _        y r   )r   r   rA   s    r"   rJ   z TestArrayAssertLess.setup_method&  s
    -r$   c                 @    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       t        j                  g d	      }t        j                  g d
      }d}t        j                  t        t        j                  |            5   j                  ||       d d d        y # 1 sw Y   y xY w)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>2  r  r$   c                  (     j                        S r   r   r  s   r"   r&  z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>3  r  r$   )r)   r3   r  rw  )r*   r4   r     z{Mismatched elements: 2 / 4 (50%)
Max absolute difference among violations: 12
Max relative difference among violations: 1.5r]   )	r,   r-   r   r	   r&   r_   r`   rc   rd   )r   r    r!   ri   re   rf   s   `   @@r"   test_simple_arraysz&TestArrayAssertLess.test_simple_arrays)  s    HHc3Z HHc3Z !Qn&EFHHc3Z n&EFn&EFHH]#HH\"H ]]><1HI 	$a#	$ 	$ 	$s   8DDc                     t        j                  ddgddgg      t        j                  ddgddgg       j                         d	}t        j                  t
        t        j                  |      
      5   j                         d d d        t        j                  ddgddgg      t        t
         fd       t        t
         fd       y # 1 sw Y   OxY w)Nr  r  ffffff
@g@r  r  g333333@g      @zMismatched elements: 4 / 4 (100%)
Max absolute difference among violations: 0.1
Max relative difference among violations: 0.09090909r]   r   c                  (     j                        S r   r   r  s   r"   r&  z0TestArrayAssertLess.test_rank2.<locals>.<lambda>J  r  r$   c                  (     j                        S r   r   r  s   r"   r&  z0TestArrayAssertLess.test_rank2.<locals>.<lambda>K  r  r$   )	r,   r-   r   r_   r`   r&   rc   rd   r	   r   ri   re   rf   s   ` @@r"   
test_rank2zTestArrayAssertLess.test_rank2>  s    HHsCj3*-.HHsCj3*-.!QO ]]><1HI 	$a#	$ HHsCj3*-.n&EFn&EF	$ 	$s   <CC&c                     t        j                  d      t        j                  d      dz    j                         t        t         fd       dd<   d}t        j                  t        t        j                  |            5   j                         d d d        t        t         fd	       y # 1 sw Y   xY w)
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   r   z}Mismatched elements: 1 / 8 (12.5%)
Max absolute difference among violations: 1.
Max relative difference among violations: infr]   c                  (     j                        S r   r   r  s   r"   r&  z0TestArrayAssertLess.test_rank3.<locals>.<lambda>[  r  r$   )	r,   rx  r   r	   r&   r_   r`   rc   rd   r  s   ` @@r"   
test_rank3zTestArrayAssertLess.test_rank3M  s    GG)$GG)$Q&!Qn&EF'
H ]]><1HI 	$a#	$ 	n&EF	$ 	$s   C  C	c                     dd j                         d}t        j                  t        t	        j
                  |            5   j                         d d d        t        j                  ddg       j                         t        t         fd       t        j                  ddg      t        t         fd       y # 1 sw Y   txY w)	Nr  r  z|Mismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.1
Max relative difference among violations: 1.r]   r  c                  (     j                        S r   r   r  s   r"   r&  z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>k  r  r$   r   c                  (     j                        S r   r   r  s   r"   r&  z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>o  r  r$   )	r   r_   r`   r&   rc   rd   r,   r-   r	   r  s   ` @@r"   r  z%TestArrayAssertLess.test_simple_items]  s    !QG ]]><1HI 	$a#	$ HHc3Z !Qn&EFHHc3Z n&EF	$ 	$s   
CCc                 ,   t        j                  g dg dg dg      }d}| j                  ||       d}| j                  ||       t        j                  g dg dg dg      }d	}d
}t        j                  t
        t        j                  |            5  | j                  ||       d d d        d}t        j                  t
        t        j                  |            5  | j                  ||       d d d        y # 1 sw Y   UxY w# 1 sw Y   y xY w)N)g.c}j@g镲hx@g|yE@g㥛Ġ@)gQEK@gH}@g      *@V-Xy@)(\@Gz @nV@gt@gQ@gmXSY @)gk	@g6<R@g//8{@gMbеA)gףp=I@Hze}.Ag=
ף@r  )r  r  r  gye}.Ar  z}Mismatched elements: 1 / 12 (8.33%)
Max absolute difference among violations: 0.
Max relative difference among violations: 0.r]   zMismatched elements: 12 / 12 (100%)
Max absolute difference among violations: 999087.0864
Max relative difference among violations: 289288.5934676r  r  s       r"   test_simple_items_and_arrayz/TestArrayAssertLess.test_simple_items_and_arrayq  s    HH@646 7 !Q!QHHA?;= > G ]]><1HI 	$a#	$)
 ]]><1HI 	$a#	$ 	$	$ 	$	$ 	$s   C>"D
>D
Dc                    t        j                  g d      }t        j                  d      }d}t        j                  t        t        j                  |            5  | j                  ||       d d d        d}t        j                  t        t        j                  |            5  | j                  ||       d d d        d}d}t        j                  t        t        j                  |            5  | j                  ||       d d d        d}t        j                  t        t        j                  |            5  | j                  ||       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   mxY w# 1 sw Y   y xY w)	N)g    0 Ar   g)\.@g    `f@zMismatched elements: 1 / 3 (33.3%)
Max absolute difference among violations: 458802.
Max relative difference among violations: 5.23423917r]   zMismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 87654.
Max relative difference among violations: 5670.5626011r   zMismatched elements: 3 / 3 (100%)
Max absolute difference among violations: 546456.
Max relative difference among violations: infz}Mismatched elements: 1 / 3 (33.3%)
Max absolute difference among violations: 0.
Max relative difference among violations: infr   r  s       r"   test_zeroeszTestArrayAssertLess.test_zeroes  sB   HH)*HHVO ]]><1HI 	$a#	$' ]]><1HI 	$a#	$ H ]]><1HI 	$a#	$H ]]><1HI 	$a#	$ 	$+	$ 	$	$ 	$	$ 	$	$ 	$s0   E(E(5E4 F E%(E14E= F	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   re   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-   ro   r	   r&   r   )r   r$  re   rf   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   re   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*  re   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$   c                 "   t        j                  d      }t        j                  d      }| j                  ||       t	        j
                  t              5  | j                  ||d       ddd       t        j                  ||j                        }| j                  ||       t	        j
                  t              5  | j                  ||j                  t         j                        d       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY wz)Test the behavior of the `strict` option.r3   rF   Tr   N)r,   zerosrx  r   r_   r`   r&   broadcast_tor  astyper   r  s      r"   test_strictzTestArrayAssertLess.test_strict  s    HHQKGGBK!Q]]>* 	1a40	1OOAqww'!Q]]>* 	Da"**!5dC	D 	D		1 	1	D 	Ds   C9>2D9DDN)rC   rD   rE   rJ   r  r  r  r  r  r  r  r  r  r  r  rF   r$   r"   r  r  $  sE    .$*GG G($:$>MG"O	$
Dr$   r  c                   $    e Zd 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   re   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_warnings  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                 j   d
d}t        t        |d      dk(  sJ t        j                  t              5 }t        t        d      5  t        j                  dt               d d d        d d d        dt              v sJ dt        |      v sJ t        j                  t              5 }t        t        d	      5  t        j                  dt               d d d        d d d        dt        |      v sJ dt        |      vsJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   HxY w# 1 sw Y   LxY w)Nc                 6    t        j                  d       | |z   S r  r  )r    r!   s     r"   r  zTestWarns.test_args.<locals>.f  s    MM$q5Lr$   rw  r!   Ar]   Br
   zpytest.warns)wrong)r   r)   )r
   r  r_   r`   RuntimeErrorr  r  ra   )r   r  excs      r"   	test_argszTestWarns.test_args  s   	 Kb1R777]]<( 	0Ck5 0c;/0	0 S)))S)))]]<( 	0Ck5 0c;/0	0 S)))SX---0 0	0 	00 0	0 	0sG   DD"D)D);DD)D	
DDD&	"D))D2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  r  rF   r$   r"   r  r    s    G G.*H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)TestAssertAllclosec                 <   d}d}t        ||d       t        t        t         ||       d}t        j                  t        t        j                  |            5  t        ||       d d d        d}d}t        j                  t        t        j                  |            5  t        ||       d d d        d	}t        j                  t        t        j                  |            5  t        ||       d d d        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       t        j                  ||||g      }t        j                  ||||g      }d}t        j                  t        t        j                  |            5  t        ||       d d d        d}t        j                  t        t        j                  |            5  t        ||       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   vxY w# 1 sw Y   y xY w)NgMbP?g&.>r)   atolzMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 0.001
Max relative difference among violations: 999999.r]   r   zMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.e-09
Max relative difference among violations: infzMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.e-09
Max relative difference among violations: 1.g1  ?r
  )rtolr  r   g      ?z~Mismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 0.001
Max relative difference among violations: infz}Mismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 0.001
Max relative difference among violations: 1.)	r   r	   r&   r_   r`   rc   rd   r,   r-   )r   re   rf   ri   rJ  r    r!   rS   s           r"   r  zTestAssertAllclose.test_simple7  s*   11%noq!<L ]]><1HI 	"Aq!	" H ]]><1HI 	"Aq!	"G ]]><1HI 	"Aq!	" HHaAq\"HHaAq\"11%noq!<X"1noq!$G2C(nor13GHHaAq\"HHaAq\"H ]]><1HI 	"Aq!	"G ]]><1HI 	"Aq!	" 	"Q	" 	"	" 	"	" 	"*	" 	"	" 	"s<   I I,%I9J	JI),I69JJJ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_intl  s6    HHbhhrww'++,BGG<1r$   c                    t        j                  g d      }t        j                  g d      }d}t        j                  t        t        j                  |            5  t        ||       d d d        y # 1 sw Y   y xY w)N)r)   r)   r)   r)   )r)   r)   r)   r*   zzMismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 1
Max relative difference among violations: 0.5r]   r,   r-   r_   r`   r&   rc   rd   r   r   s       r"   test_report_fail_percentagez.TestAssertAllclose.test_report_fail_percentageq  s^    HH\"HH\"H ]]><1HI 	"Aq!	" 	" 	"   A55A>c                     t        j                  t         j                  g      }t        j                  t         j                  g      }t        ||d       y )NT	equal_nan)r,   r-   ro   r   r   s      r"   test_equal_nanz!TestAssertAllclose.test_equal_nan{  s6    HHbffXHHbffX1-r$   c                     t        j                  t         j                  g      }t        j                  t         j                  g      }t        t        t
        ||d       y )NFr   )r,   r-   ro   r	   r&   r   r   s      r"   test_not_equal_nanz%TestAssertAllclose.test_not_equal_nan  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-   ro   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      }d}t        j                  t        t        j                  |            5  t        ||       d d d        y # 1 sw Y   y xY w)Nr   r)   r*   z-Max relative difference among violations: 0.5r]   r  r   s       r"   test_report_max_relative_errorz1TestAssertAllclose.test_report_max_relative_error  sa    HHaVHHaVF]]><1HI 	"Aq!	" 	" 	"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                    t        j                  g dd      }t        j                  g dd      }d}t        j                  t        t        j                  |            5  t        ||d       d	d	d	       y	# 1 sw Y   y	xY w)
zUCheck the message is formatted correctly when overflow can occur
           (gh21768))r   r)   r  uint8r:   )r4   r4   r4   z+Max absolute difference among violations: 4r]   r3   r  N)r,   asarrayr_   r`   r&   rc   rd   r   r  s       r"   test_error_message_unsignedz.TestAssertAllclose.test_error_message_unsigned  sa     JJy0JJy0D]]><1HI 	*Aqq)	* 	* 	*s   #A;;Bc                    t        j                  d      }t        j                  d      }t        ||       t        j                  t
              5  t        ||d       ddd       t        ||       t        j                  t
              5  t        ||j                  t         j                        d       ddd       y# 1 sw Y   cxY w# 1 sw Y   yxY wr  )r,   rx  r   r_   r`   r&   r  r   r  s      r"   r  zTestAssertAllclose.test_strict  s    GGAJGGBK1]]>* 	/Aq.	/1]]>* 	BAqxx

3DA	B 	B	/ 	/	B 	Bs   C,CC
CN)rC   rD   rE   r  r  r  r"  r$  r&  r(  r*  r.  r  rF   r$   r"   r  r  5  s7    3"j
".N
	"
*	B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  rw  2   r:   r   r   	r,   linspacefloat64r_finfor;   epsr   epsnegr   nulpre   r;  rf   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 r3  r,   r7  r8  r9  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-   ro   r8  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 r3  	r,   r7  r   r9  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 r3  r,   r7  r   r9  r:  r;   r;  r	   r&   r   r<  r=  s         r"   test_float32_failz*TestArrayAlmostEqualNulp.test_float32_fail  rC  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-   ro   r   r   r   )r   rF  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,   r7  float16r9  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 rZ  )r,   r7  r\  r9  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-   ro   r\  r   r   )r   rF  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  r4  rw  r5  r:   r                 ?r   r~   r6  r   r>  re   xir;  rf   r<  s          r"   test_complex128_passz-TestArrayAlmostEqualNulp.test_complex128_pass8  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  r4  rw  r5  r:   r   rj  r   rA  rk  s          r"   test_complex128_failz-TestArrayAlmostEqualNulp.test_complex128_failO  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 ri  rM  rk  s          r"   test_complex64_passz,TestArrayAlmostEqualNulp.test_complex64_passl  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 ro  rP  rk  s          r"   test_complex64_failz,TestArrayAlmostEqualNulp.test_complex64_fail  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?  rB  rK  rN  rQ  rX  r]  r_  rg  rm  rp  rr  rt  rF   r$   r"   r1  r1    sC    3$" 	43" 	43" 	4;.*:;**r$   r1  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   re   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?rw  rx  )	r,   rx  r  r   rz  r{  r:  r;  r   r   re   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   r~     rx  )	r,   rx  r  r8  rz  r{  r:  r;  r   r  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  rx  )	r,   r   r8  r-   r   r  r:  maxr   )r   dtr   bigs       r"   r4  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                  dg      j                  |      t        j                  d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   mBr   g       c                       t               S Nrx  r   )r   ry  ro   s   r"   r&  z"TestULP.test_nan.<locals>.<lambda>      "6sC>D#F r$   c                       t               S r  r  )r  ry  ro   s   r"   r&  z"TestULP.test_nan.<locals>.<lambda>  r  r$   c                       t               S r  r  )ry  ro   tinys   r"   r&  z"TestULP.test_nan.<locals>.<lambda>      "6sD>D#F r$   c                       t               S r  r  )ry  ro   zeros   r"   r&  z"TestULP.test_nan.<locals>.<lambda>  r  r$   c                       t               S r  r  )ry  ro   nzeros   r"   r&  z"TestULP.test_nan.<locals>.<lambda>  s    "6sE>D#F r$   )r,   r   r8  r-   r   r  ro   r:  r  r  r	   r&   )	r   r  r  r   ry  ro   r  r  r  s	     @@@@@@@r"   r.  zTestULP.test_nan  sE   ::rzz* 	GBRZZ((BFF8$++B/C((BFF8$++B/C((BHHRL,,-.C88RXXb\../0D88SE?))"-DHHdV$++B/E.FG .FG .FG .FG .FG/	Gr$   N)rC   rD   rE   r|  r  r  r4  r.  rF   r$   r"   rv  rv    s    -237Gr$   rv  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   r  r   rF   r$   r"   r&  z-TestStringEqual.test_simple.<locals>.<lambda>  s    1%A r$   )r   r_   r`   r&   ra   rb   r   r	   )r   rg   rh   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+br  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  r  rF   r$   r"   r  r    s    
CAr$   r  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    4545(7D$r$   N)rC   rD   rE   r  rF   r$   r"   r  z/test_warn_len_equal_call_scenarios.<locals>.mod  s    	7r$   r*   )r  )r  mod_insts     r"   "test_warn_len_equal_call_scenariosr     sB      uHh'(*
7 7
 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>.warnP  s    MM*q9Jr$   r   r,   apply_along_axisr  s    r"   warn_other_modulez8test_suppress_warnings_module.<locals>.warn_other_moduleM      	 	D!aS)r$   r   moduler  r)   r  )r  r   r  r  r   recordr  filterr,   lib_shape_base_implr  r  r  logmessager   r  )r  r  sups      r"   test_suppress_warnings_moduler  H  s   F!6;R@* &!$		 

; 	

"&&11
2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  v  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Y"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   appendr  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_cycle7  s"    AHHQKHHQKHr$   )r	   r&   r   )r   r
  s     r"   test_assertsz!TestAssertNoGcCycles.test_asserts6  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__R  s	    !
r$   c                 <    d | _         j                  r         y y r   )r  r
  )r   ReferenceCycleInDels    r"   __del__zDTestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__del__U  s     !
&11 () 2r$   N)rC   rD   rE   __doc__r
  r  r  )r  s   r"   r  r  K  s     J"*r$   r  c                       y r   rF   rF   r$   r"   r&  z1TestAssertNoGcCycles.test_fails.<locals>.<lambda>c  s    r$   Nz*GC does not call __del__ on cyclic objectsF)	weakrefrefr	   r  r   r&   r_   skipr
  )r   r  r  s     @r"   
test_failszTestAssertNoGcCycles.test_failsD  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  r_   markslowr  rF   r$   r"   r  r  '  s-    $	&, [[(3 (3r$   r  assert_funcc                     | dd        | dd       d}t        j                  t        |      5   | dd       d d d        t        j                  t        |      5   | dd       d d d        d}t        j                  t        |      5   | dd       d d d        t        j                  t        |      5   | dd       d d d        d	}t        j                  t        |      5  t        j                  t
        |      5   | dd
        | ddd       d d 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   xY w# 1 sw Y   BxY w# 1 sw Y   y xY w)Nr)   )actualdesiredzArrays are not...r]   r*   zUse of keyword argument...)re   r  )rf   z#...got multiple values for argumentr  )r_   r`   r&   warnsr
  ry   )r  assert_messagedep_messagetype_messages       r"   test_xy_renamer$  p  sC    1q!$(N	~^	< Aq	~^	< )1a() /K	(	< $a#$	(	< A 9L	(	< 
--	
6AAqA   ) )$ $ 
   sS   
D/D;E<E,E+EE+/D8;EEEE(	$E++E4)Br  r  r  r   r_   r  rc   numpyr,   numpy._core._multiarray_umath_core_multiarray_umathr  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  r[  r  r  r  r  r1  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  skipifr  parametrizer$  rF   r$   r"   <module>r,     s    
 	    	  + +     +/ +/\\1\ \1~* *Z\) \)~u < u pP l P f(M (MVFD FDREH EHPB BDc* c*L5G 5GpA A(*.*8	%@+%\%8 %&P,&^%"' -& -
1 $-EFE3 E3 GE3P );)B)D EEr$   