o
    V=ºioÝ  ã                   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlm Z  G dd„ dƒZ!G dd„ de!ƒZ"G dd	„ d	ƒZ#G d
d„ de"ƒZ$G dd„ de!ƒZ%G dd„ de!ƒZ&G dd„ dƒZ'G dd„ dƒZ(ej)j*dd�G dd„ dƒƒZ+G dd„ dƒZ,G dd„ dƒZ-G dd„ dƒZ.G dd„ dƒZ/G d d!„ d!ƒZ0d"d#„ Z1d$d%„ Z2d&d'„ Z3d(d)„ Z4d*d+„ Z5d,d-„ Z6d.d/„ Z7d0d1„ Z8d2d3„ Z9d4d5„ Z:d6d7„ Z;G d8d9„ d9eƒZ<d:d;„ Z=ej)j>e d<d�G d=d>„ d>ƒƒZ?dS )?é    N)Úassert_equalÚassert_array_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_array_lessÚbuild_err_msgÚraisesÚassert_raisesÚassert_warnsÚassert_no_warningsÚassert_allcloseÚassert_approx_equalÚassert_array_almost_equal_nulpÚassert_array_max_ulpÚclear_and_catch_warningsÚsuppress_warningsÚassert_string_equalÚassert_ÚtempdirÚtemppathÚassert_no_gc_cyclesÚHAS_REFCOUNT)ÚARRAY_FUNCTION_ENABLEDc                   @   óL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )Ú_GenericTestc                 C   s   |   ||¡ d S ©N©Ú_assert_func©ÚselfÚaÚb© r"   údC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\numpy/testing/tests/test_utils.pyÚ_test_equal   ó   z_GenericTest._test_equalc                 C   s:   t tƒ� |  ||¡ W d   ƒ d S 1 sw   Y  d S r   )r	   ÚAssertionErrorr   r   r"   r"   r#   Ú_test_not_equal   s   
"ÿz_GenericTest._test_not_equalc                 C   s,   t  ddg¡}t  ddg¡}|  ||¡ dS )z/Test two equal array of rank 1 are found equal.é   é   N©ÚnpÚarrayr$   r   r"   r"   r#   Útest_array_rank1_eq   ó   z _GenericTest.test_array_rank1_eqc                 C   s,   t  ddg¡}t  ddg¡}|  ||¡ dS )z7Test two different array of rank 1 are found not equal.r(   r)   N©r+   r,   r'   r   r"   r"   r#   Útest_array_rank1_noteq$   r.   z#_GenericTest.test_array_rank1_noteqc                 C   s<   t  ddgddgg¡}t  ddgddgg¡}|  ||¡ dS )z/Test two equal array of rank 2 are found equal.r(   r)   é   é   Nr*   r   r"   r"   r#   Útest_array_rank2_eq+   s   z _GenericTest.test_array_rank2_eqc                 C   s4   t  ddg¡}t  ddgddgg¡}|  ||¡ dS )ú:Test two arrays with different shapes are found not equal.r(   r)   Nr/   r   r"   r"   r#   Útest_array_diffshape2   s   z!_GenericTest.test_array_diffshapec                 C   s"   t jddgtd�}|  |d¡ dS )zTest object arrays.r(   ©ÚdtypeN)r+   r,   Úobjectr$   ©r   r    r"   r"   r#   Útest_objarray9   s   z_GenericTest.test_objarrayc                 C   s   |   g d¢d¡ d S )N©r(   r)   r1   )r$   ©r   r"   r"   r#   Útest_array_likes>   ó   z_GenericTest.test_array_likesN)Ú__name__Ú
__module__Ú__qualname__r$   r'   r-   r0   r3   r5   r:   r=   r"   r"   r"   r#   r      s    r   c                   @   sv   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zejje dd�dd„ ƒZdd„ ZdS )ÚTestArrayEqualc                 C   ó
   t | _d S r   )r   r   r<   r"   r"   r#   Úsetup_methodD   ó   
zTestArrayEqual.setup_methodc                    ó4   ‡ fdd„}dD ]}||ƒ qdD ]}||ƒ qdS )z!Test rank 1 array for all dtypes.c                    óL   t  d| ¡}| d¡ | ¡ }| ¡ }| d¡ ˆ  ||¡ ˆ  ||¡ d S )Nr)   r(   r   ©r+   ÚemptyÚfillÚcopyr$   r'   ©Útr    r!   Úcr<   r"   r#   ÚfooI   ó   

z.TestArrayEqual.test_generic_rank1.<locals>.fooú?bhilqpBHILQPfdgFDG©ZS1ZU1Nr"   ©r   rO   rM   r"   r<   r#   Útest_generic_rank1G   ó   


ÿz!TestArrayEqual.test_generic_rank1c                 C   sl   t  d¡}t  d¡}tt| j||ƒ |}|  ||¡ t  d¡}t  d¡}tt| j||ƒ |}|  ||¡ d S )Nl   Cj¬<T"3ÿËwÝ¤-l   (M$c7u£†vÈé+   é
   )r+   r,   r	   r&   r   ©r   ÚxÚyr"   r"   r#   Útest_0_ndim_arrayZ   s   



z TestArrayEqual.test_0_ndim_arrayc                    rF   )z!Test rank 3 array for all dtypes.c                    rG   )N)r2   r)   r1   r(   r   rH   rL   r<   r"   r#   rO   k   rP   z.TestArrayEqual.test_generic_rank3.<locals>.foorQ   rR   Nr"   rS   r"   r<   r#   Útest_generic_rank3i   rU   z!TestArrayEqual.test_generic_rank3c                 C   sN   t  ddt jg¡}t  ddt jg¡}|  ||¡ t  g d¢¡}|  ||¡ dS )z$Test arrays with nan values in them.r(   r)   r;   N)r+   r,   Únanr$   r'   ©r   r    r!   rN   r"   r"   r#   Útest_nan_array|   s
   zTestArrayEqual.test_nan_arrayc                 C   sF   t  ddg¡}t  ddg¡}|  ||¡ t  ddg¡}|  ||¡ dS )r4   ÚfloupiÚfloupaÚfloupipiN)r+   r,   r$   r'   r^   r"   r"   r#   Útest_string_arrays†   s
   z!TestArrayEqual.test_string_arraysc                 C   s¾   t  ddtfdtfg¡}ddg|d< ddg|d< | ¡ }|  ||¡ t  ddtfdtfdtfg¡}|d  ¡ |d< |d  ¡ |d< t t¡� |  ||¡ W d  ƒ dS 1 sXw   Y  dS )zTest record arrays.r)   r`   ra   r(   rb   N)	r+   rI   ÚfloatrK   r$   Úpytestr   Ú	TypeErrorr'   r^   r"   r"   r#   Útest_recarrays‘   s   ÿ"ÿzTestArrayEqual.test_recarraysc                 C   sˆ   t jjg d¢g d¢d�}t  dt jdg¡}|  ||¡ |  ||¡ t jjg d¢g d¢d�}t  t jddg¡}|  ||¡ |  ||¡ d S )N©ç      @ç      @ç      @)FTF©Úmaskri   rk   )TFFrj   )r+   ÚmaÚMaskedArrayr,   r]   r$   Úinfr   r"   r"   r#   Útest_masked_nan_inf¢   s   z"TestArrayEqual.test_masked_nan_infc                 C   sŒ   G dd„ dt jƒ}t  ddg¡ |¡}t  ddg¡ |¡}tt||kƒtƒ t||kƒ t||kƒ |  ||¡ |  ||¡ |  ||¡ d S )Nc                   @   ó   e Zd Zdd„ Zdd„ ZdS )z?TestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArrayc                 S   s   t t | |¡ ¡ ƒS r   )Úboolr+   ÚequalÚall©r   Úotherr"   r"   r#   Ú__eq__³   r>   zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__eq__c                 S   s
   | |k S r   r"   rv   r"   r"   r#   Ú__ne__¶   rE   zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__ne__N)r?   r@   rA   rx   ry   r"   r"   r"   r#   ÚMyArray²   s    rz   ç      ð?ç       @ri   )	r+   Úndarrayr,   Úviewr   Útypers   r$   r'   ©r   rz   r    r!   r"   r"   r#   Útest_subclass_that_overrides_eq­   s   z.TestArrayEqual.test_subclass_that_overrides_eqzrequires __array_function__©Úreasonc                 C   s”   G dd„ dt jƒ}t  ddg¡ |¡}t  ddg¡ |¡}ttƒ� t  |¡ W d   ƒ n1 s1w   Y  |  ||¡ |  ||¡ |  ||¡ d S )Nc                   @   ó   e Zd Zdd„ ZdS )zKTestArrayEqual.test_subclass_that_does_not_implement_npall.<locals>.MyArrayc                 _   s   t S r   )ÚNotImplemented©r   ÚargsÚkwargsr"   r"   r#   Ú__array_function__Æ   ó   z^TestArrayEqual.test_subclass_that_does_not_implement_npall.<locals>.MyArray.__array_function__N)r?   r@   rA   r‰   r"   r"   r"   r#   rz   Å   ó    rz   r{   r|   ri   )	r+   r}   r,   r~   r	   rf   ru   r$   r'   r€   r"   r"   r#   Ú+test_subclass_that_does_not_implement_npallÂ   s   
ÿz:TestArrayEqual.test_subclass_that_does_not_implement_npallc              	   C   s–   t  t¡�< tjdd�� tj t g d¢tj¡t g d¢tj¡¡ W d   ƒ n1 s,w   Y  W d   ƒ d S W d   ƒ d S 1 sDw   Y  d S )NÚraise)ru   r;   )r(   gœWw'&l¡7r1   )	re   r   r&   r+   ZerrstateZtestingr   r,   Úfloat32r<   r"   r"   r#   Útest_suppress_overflow_warningsÑ   s   þÿÿ"ÿz.TestArrayEqual.test_suppress_overflow_warningsN)r?   r@   rA   rD   rT   r[   r\   r_   rc   rg   rq   r�   re   ÚmarkÚskipifr   rŒ   r�   r"   r"   r"   r#   rB   B   s    
ÿ
rB   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestBuildErrorMessagec                 C   s@   t  g d¢¡}t  g d¢¡}d}t||g|ƒ}d}t||ƒ d S )N©grÄZ|
 ð?çrÄZ|
  @ç«&ˆº @©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   rY   rZ   Úerr_msgr    r!   r"   r"   r#   Útest_build_err_msg_defaultsÜ   s   z1TestBuildErrorMessage.test_build_err_msg_defaultsc                 C   óD   t  g d¢¡}t  g d¢¡}d}t||g|dd�}d}t||ƒ d S )Nr“   r–   r™   F)Úverbosez)
Items are not equal: There is a mismatchrš   r›   r"   r"   r#   Útest_build_err_msg_no_verboseç   s   z3TestBuildErrorMessage.test_build_err_msg_no_verbosec                 C   rž   )Nr“   r–   r™   )ZFOOZBAR)Únamesz{
Items are not equal: There is a mismatch
 FOO: array([1.00001, 2.00002, 3.00003])
 BAR: array([1.00002, 2.00003, 3.00004])rš   r›   r"   r"   r#   Útest_build_err_msg_custom_namesð   ó   z5TestBuildErrorMessage.test_build_err_msg_custom_namesc                 C   rž   )N)g0¸D   ð?r”   r•   )g_p‰   ð?r—   r˜   r™   rW   )Z	precisionzš
Items are not equal: There is a mismatch
 ACTUAL: array([1.000000001, 2.00002    , 3.00003    ])
 DESIRED: array([1.000000002, 2.00003    , 3.00004    ])rš   r›   r"   r"   r#   Ú#test_build_err_msg_custom_precisionû   r£   z9TestBuildErrorMessage.test_build_err_msg_custom_precisionN)r?   r@   rA   r�   r    r¢   r¤   r"   r"   r"   r#   r’   Ú   s
    	r’   c                   @   ó\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú	TestEqualc                 C   rC   r   )r   r   r<   r"   r"   r#   rD   	  rE   zTestEqual.setup_methodc                 C   sH   |   tjtj¡ |   tjgtjg¡ |  tjtjg¡ |  tjd¡ d S ©Nr(   )r   r+   r]   r'   r<   r"   r"   r#   Útest_nan_items  s   zTestEqual.test_nan_itemsc                 C   s:   |   tjtj¡ |   tjgtjg¡ |  tjtjg¡ d S r   )r   r+   rp   r'   r<   r"   r"   r#   Útest_inf_items  s   zTestEqual.test_inf_itemsc                 C   st   |   t dd¡t dd¡¡ |   t dd¡t dd¡¡ |  t dd¡t dd¡¡ |  t dd¡t dd¡¡ d S )Nú
2017-01-01ÚsÚmz
2017-01-02)r$   r+   Ú
datetime64r'   r<   r"   r"   r#   Útest_datetime  s    

þ

þ

þ

þzTestEqual.test_datetimec                 C   st  t  d¡}t  dd¡}t  dd¡}t  d¡}t  dd¡}t  dd¡}|||g}|||g}t ||¡D ]\}	}
|  |	|
¡ |  |	g|
g¡ |  |	g|
¡ q2t ||¡D ]\}	}
|  |	|
¡ |  |	g|
g¡ |  |	g|
¡ qRt ||¡D ]E\}	}
|  |	|
¡ |  |	|
g¡ |  |	g|
g¡ |  |	gt  dd¡¡ |  |
gt  dd¡¡ |  |	gt  dd¡¡ |  |
gt  dd¡¡ qrd S )NÚNaTr«   Únsrª   é{   )r+   r­   Ztimedelta64Ú	itertoolsÚproductr   r'   )r   Znadt_no_unitZnadt_sZnadt_dZnatd_no_unitZnatd_sZnatd_dZdtsZtdsr    r!   r"   r"   r#   Útest_nat_items+  s2   



ùzTestEqual.test_nat_itemsc                 C   s   |   dd¡ |  dd¡ d S )NÚabZabb)r   r'   r<   r"   r"   r#   Útest_non_numericJ  s   zTestEqual.test_non_numericc                 C   sŒ   |   tddƒtddƒ¡ |   tdtjƒtdtjƒ¡ |  tdtjƒtddƒ¡ |  ttjdƒtdtjƒ¡ |  ttjtjƒttjdƒ¡ d S ©Nr(   r)   )r   Úcomplexr+   r]   r'   rp   r<   r"   r"   r#   Útest_complex_itemN  s
   "zTestEqual.test_complex_itemc                 C   s   |   tjtj¡ d S r   )r'   r+   ÚPZEROÚNZEROr<   r"   r"   r#   Útest_negative_zeroU  r>   zTestEqual.test_negative_zeroc                 C   sR   t  tddƒtdt jƒg¡}t  tddƒtddƒg¡}|  ||¡ |  ||¡ d S r·   ©r+   r,   r¸   r]   r   r'   rX   r"   r"   r#   Útest_complexX  s   zTestEqual.test_complexc                 C   sD   dd l }t |  ddd¡|  ddd¡g¡}|  ||d d d… ¡ d S )Nr   iÐ  r(   r)   éÿÿÿÿ)Údatetimer+   r,   r'   )r   rÀ   r    r"   r"   r#   Útest_object^  s
   ÿzTestEqual.test_objectN)r?   r@   rA   rD   r¨   r©   r®   r´   r¶   r¹   r¼   r¾   rÁ   r"   r"   r"   r#   r¦     s    r¦   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚTestArrayAlmostEqualc                 C   rC   r   )r   r   r<   r"   r"   r#   rD   h  rE   z!TestArrayAlmostEqual.setup_methodc                    óL   ˆ j dddd� tt‡ fdd„ƒ ˆ j dgdgdd� tt‡ fdd„ƒ d S )Nçõ…�óþÿ÷?ç        r   ©Údecimalc                      ó   ˆ j dddd�S ©Ng      ø?rÅ   r   rÆ   r   r"   r<   r"   r#   Ú<lambda>u  ó    z5TestArrayAlmostEqual.test_closeness.<locals>.<lambda>c                      ó   ˆ j dgdgdd�S rÉ   r   r"   r<   r"   r#   rÊ   z  ó    ©r   r	   r&   r<   r"   r<   r#   Útest_closenessk  ó   
ÿ
ÿz#TestArrayAlmostEqual.test_closenessc                    sR   t  dg¡‰t  dg¡‰ˆ jˆˆdd� ˆ jˆˆdd� tt‡ ‡‡fdd„ƒ d S )Ng¯”eˆãH“@gšwœ¢ãH“@r1   rÆ   r2   c                      ó   ˆ j ˆˆdd�S )Né   rÆ   r   r"   rX   r"   r#   rÊ   ƒ  rË   z2TestArrayAlmostEqual.test_simple.<locals>.<lambda>©r+   r,   r   r	   r&   r<   r"   rX   r#   Útest_simple|  s   ÿz TestArrayAlmostEqual.test_simplec                    sz   t  t jg¡‰t  dg¡‰t  t jg¡‰ ˆ ˆˆ¡ tt‡‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ d S )Nr(   c                      ó   ˆ  ˆ ˆ¡S r   r   r"   ©ÚananÚaoner   r"   r#   rÊ   ‹  ó    z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>c                      ó   ˆ  ˆˆ ¡S r   r   r"   ©Úainfr×   r   r"   r#   rÊ   �  rÙ   c                      rÕ   r   r   r"   rÛ   r"   r#   rÊ   �  rÙ   ©r+   r,   r]   rp   r   r	   r&   r<   r"   ©rÜ   r×   rØ   r   r#   Útest_nan…  s   ÿÿÿzTestArrayAlmostEqual.test_nanc                    sd   t  ddgddgg¡‰ ˆ  ¡ ‰t jˆ d< tt‡ ‡‡fdd„ƒ t j ˆd< tt‡ ‡‡fdd„ƒ d S )	Nr{   r|   ri   rj   )r   r   c                      rÕ   r   r   r"   ©r    r!   r   r"   r#   rÊ   –  rÙ   z/TestArrayAlmostEqual.test_inf.<locals>.<lambda>c                      rÕ   r   r   r"   rà   r"   r#   rÊ   ™  rÙ   )r+   r,   rK   rp   r	   r&   r<   r"   rà   r#   Útest_inf‘  s   
ÿÿzTestArrayAlmostEqual.test_infc                 C   s@  t  ddgddgg¡}t j ddgddggddgddgg¡}|  ||¡ |  ||¡ |  ||¡ t jjddd	�}t  g d
¢¡}|  ||¡ |  ||¡ t jj}t  g d
¢¡}|  ||¡ |  ||¡ t jjg d
¢g d¢d	�}t  g d¢¡}|  ||¡ |  ||¡ t jjg d
¢g d¢d	�}t  d¡}|  ||¡ |  ||¡ d S )Nr{   r|   ri   rj   rÅ   FTg      @rl   rh   )TTT)r{   r|   ri   )r+   r,   rn   Zmasked_arrayr   ro   r$   Zmaskedr   r"   r"   r#   Útest_subclass›  s.   ÿ
z"TestArrayAlmostEqual.test_subclassc                 C   ó6   G dd„ dt jƒ}t  ddg¡ |¡}|  ||¡ d S )Nc                       ó0   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Z‡  ZS )zGTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                    ó   t ƒ  |¡ tj¡S r   ©Úsuperrx   r~   r+   r}   rv   ©Ú	__class__r"   r#   rx   »  r>   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    rå   r   ©rç   Ú__lt__r~   r+   r}   rv   rè   r"   r#   rë   ¾  r>   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   ó   t ‚r   ©ÚNotImplementedErrorr†   r"   r"   r#   ru   Á  rŠ   zKTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.all©r?   r@   rA   rx   rë   ru   Ú__classcell__r"   r"   rè   r#   rz   º  ó    rz   r{   r|   ©r+   r}   r,   r~   r   ©r   rz   r    r"   r"   r#   Ú!test_subclass_that_cannot_be_boolµ  ó   
z6TestArrayAlmostEqual.test_subclass_that_cannot_be_boolN)
r?   r@   rA   rD   rÏ   rÔ   rß   rá   râ   rô   r"   r"   r"   r#   rÂ   f  s    	
rÂ   c                   @   r¥   )ÚTestAlmostEqualc                 C   rC   r   )r   r   r<   r"   r"   r#   rD   Ê  rE   zTestAlmostEqual.setup_methodc                    rÃ   )NrÄ   rÅ   r   rÆ   c                      rÈ   rÉ   r   r"   r<   r"   r#   rÊ   ×  rË   z0TestAlmostEqual.test_closeness.<locals>.<lambda>c                      rÌ   rÉ   r   r"   r<   r"   r#   rÊ   Ü  rÍ   rÎ   r<   r"   r<   r#   rÏ   Í  rÐ   zTestAlmostEqual.test_closenessc                    sJ   ˆ   tjtj¡ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nc                      ó   ˆ   tjd¡S r§   )r   r+   r]   r"   r<   r"   r#   rÊ   á  ó    z/TestAlmostEqual.test_nan_item.<locals>.<lambda>c                      ó   ˆ   tjtj¡S r   )r   r+   r]   rp   r"   r<   r"   r#   rÊ   ã  rË   c                      rù   r   )r   r+   rp   r]   r"   r<   r"   r#   rÊ   å  rË   )r   r+   r]   r	   r&   r<   r"   r<   r#   Útest_nan_itemÞ  s   
ÿ
ÿ
ÿzTestAlmostEqual.test_nan_itemc                    sL   ˆ   tjtj¡ ˆ   tj tj ¡ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nc                      r÷   r§   ©r   r+   rp   r"   r<   r"   r#   rÊ   ë  rø   z/TestAlmostEqual.test_inf_item.<locals>.<lambda>c                      s   ˆ   tj tj¡S r   rû   r"   r<   r"   r#   rÊ   í  s    )r   r+   rp   r	   r&   r<   r"   r<   r#   Útest_inf_itemç  s   
ÿ
ÿzTestAlmostEqual.test_inf_itemc                 C   s   |   dd¡ d S r·   )r'   r<   r"   r"   r#   Útest_simple_itemï  r%   z TestAlmostEqual.test_simple_itemc                 C   s¬   |   tddƒtddƒ¡ |   tdtjƒtdtjƒ¡ |   ttjtjƒttjtjƒ¡ |  tdtjƒtddƒ¡ |  ttjdƒtdtjƒ¡ |  ttjtjƒttjdƒ¡ d S r·   )r   r¸   r+   r]   rp   r'   r<   r"   r"   r#   r¹   ò  s    "z!TestAlmostEqual.test_complex_itemc                 C   sz   t  tddƒtdt jƒg¡}t  tddƒtt jdƒg¡}t  tddƒtddƒg¡}|  ||¡ |  ||¡ |  ||¡ d S r·   r½   )r   rY   ÚzrZ   r"   r"   r#   r¾   ú  s   zTestAlmostEqual.test_complexc                 C   sv  t  g d¢¡}t  g d¢¡}t t¡�}| j||dd� W d  ƒ n1 s&w   Y  t|jƒ d¡}t	|d dƒ t	|d	 d
ƒ t	|d dƒ t	|d dƒ t	|d dƒ t t¡�}|  ||¡ W d  ƒ n1 slw   Y  t|jƒ d¡}t	|d dƒ t	|d	 d
ƒ t	|d dƒ t	|d dƒ t	|d dƒ t  t j
dg¡}t  t j
dg¡}t t¡�}|  ||¡ W d  ƒ n1 sÂw   Y  t|jƒ d¡}t	|d dƒ t	|d	 dƒ t	|d dƒ t	|d dƒ t	|d dƒ t  ddg¡}t  ddg¡}t t¡�}|  ||¡ W d  ƒ n	1 �sw   Y  t|jƒ d¡}t	|d dƒ t	|d	 dƒ t	|d dƒ dS )zŠCheck the message is formatted correctly for the decimal value.
           Also check the message when input includes inf or nan (gh12200))gì¯    ð?gì¯     @r•   )gØ_   ð?gâ    @r˜   é   rÆ   NÚ
r1   z!Mismatched elements: 3 / 3 (100%)r2   zMax absolute difference: 1.e-05rÒ   z'Max relative difference: 3.33328889e-06é   z8 x: array([1.00000000001, 2.00000000002, 3.00003      ])é   z8 y: array([1.00000000002, 2.00000000003, 3.00004      ])z"Mismatched elements: 1 / 3 (33.3%)z& x: array([1.     , 2.     , 3.00003])z& y: array([1.     , 2.     , 3.00004])r   r(   z Mismatched elements: 1 / 2 (50%)úMax absolute difference: 1.úMax relative difference: 1.z x: array([inf,  0.])z y: array([inf,  1.])r)   z!Mismatched elements: 2 / 2 (100%)zMax absolute difference: 2zMax relative difference: inf)r+   r,   re   r   r&   r   ÚstrÚvalueÚsplitr   rp   ©r   rY   rZ   Úexc_infoZmsgsr"   r"   r#   Útest_error_message  s\   ÿþþÿÿÿz"TestAlmostEqual.test_error_messagec                 C   s   d}t  d¡}t t¡�}|  ||¡ W d  ƒ n1 sw   Y  t|jƒ d¡}t	|d dƒ t	|d dƒ t	|d	 d
ƒ d}t  d¡}t t¡�}|  ||¡ W d  ƒ n1 s\w   Y  t|jƒ d¡}t	|d dƒ t	|d dƒ t	|d	 dƒ dS )zHCheck the message is formatted correctly when either x or y is a scalar.r)   é   Nr   r1   z#Mismatched elements: 20 / 20 (100%)r2   r  rÒ   r  úMax relative difference: 0.5)
r+   Úonesre   r   r&   r   r  r  r  r   r  r"   r"   r#   Útest_error_message_28  s$   
ÿ
ÿz$TestAlmostEqual.test_error_message_2c                 C   rã   )Nc                       rä   )zBTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                    rå   r   ræ   rv   rè   r"   r#   rx   R  r>   zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    rå   r   rê   rv   rè   r"   r#   rë   U  r>   zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   rì   r   rí   r†   r"   r"   r#   ru   X  rŠ   zFTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allrï   r"   r"   rè   r#   rz   Q  rñ   rz   r{   r|   rò   ró   r"   r"   r#   rô   L  rõ   z1TestAlmostEqual.test_subclass_that_cannot_be_boolN)r?   r@   rA   rD   rÏ   rú   rü   rý   r¹   r¾   r
  r  rô   r"   r"   r"   r#   rö   È  s    	6rö   c                   @   ó4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestApproxEqualc                 C   rC   r   )r   r   r<   r"   r"   r#   rD   a  rE   zTestApproxEqual.setup_methodc                    sN   t  d¡‰t  d¡‰ˆ jˆˆdd� ˆ jˆˆdd� tt‡ ‡‡fdd„ƒ d S )Nç{®GáH“@çR¸…ëH“@rÒ   ©Zsignificantr  c                      rÑ   ©Nr  r  r   r"   rX   r"   r#   rÊ   k  rË   z7TestApproxEqual.test_simple_0d_arrays.<locals>.<lambda>rÓ   r<   r"   rX   r#   Útest_simple_0d_arraysd  s   

ÿz%TestApproxEqual.test_simple_0d_arraysc                    sR   d‰d‰ˆ j ˆˆdd� ˆ j ˆˆdd� ˆ j ˆˆdd� tt‡ ‡‡fdd„ƒ d S )	Nr  r  r2   r  rÒ   r  c                      rÑ   r  r   r"   rX   r"   r#   rÊ   u  rË   z3TestApproxEqual.test_simple_items.<locals>.<lambda>rÎ   r<   r"   rX   r#   Útest_simple_itemsm  s   ÿz!TestApproxEqual.test_simple_itemsc                    ót   t  t j¡‰t  d¡‰t  t j¡‰ ˆ ˆˆ¡ tt‡‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ d S )Nr(   c                      rÕ   r   r   r"   rÖ   r"   r#   rÊ   |  rÙ   z0TestApproxEqual.test_nan_array.<locals>.<lambda>c                      rÚ   r   r   r"   rÛ   r"   r#   rÊ   }  rÙ   c                      rÕ   r   r   r"   rÛ   r"   r#   rÊ   ~  rÙ   rÝ   r<   r"   rÞ   r#   r_   w  ó   
zTestApproxEqual.test_nan_arrayc                    r  )Nr(   c                      rÕ   r   r   r"   rÖ   r"   r#   rÊ   …  rÙ   z0TestApproxEqual.test_nan_items.<locals>.<lambda>c                      rÚ   r   r   r"   rÛ   r"   r#   rÊ   †  rÙ   c                      rÕ   r   r   r"   rÛ   r"   r#   rÊ   ‡  rÙ   rÝ   r<   r"   rÞ   r#   r¨   €  r  zTestApproxEqual.test_nan_itemsN)r?   r@   rA   rD   r  r  r_   r¨   r"   r"   r"   r#   r  _  s    	
	r  c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestArrayAssertLessc                 C   rC   r   )r   r   r<   r"   r"   r#   rD   Œ  rE   z TestArrayAssertLess.setup_methodc                    s|   t  ddg¡‰t  ddg¡‰ˆ  ˆˆ¡ tt‡ ‡‡fdd„ƒ t  ddg¡‰tt‡ ‡‡fdd„ƒ tt‡ ‡‡fd	d„ƒ d S )
Nçš™™™™™ñ?çš™™™™™@ç333333ó?çffffff@c                      ó   ˆ   ˆˆ¡S r   r   r"   rX   r"   r#   rÊ   ”  rÙ   z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>r{   c                      ó   ˆ   ˆˆ¡S r   r   r"   rX   r"   r#   rÊ   ˜  rÙ   c                      r  r   r   r"   rX   r"   r#   rÊ   ™  rÙ   rÓ   r<   r"   rX   r#   Útest_simple_arrays�  s   z&TestArrayAssertLess.test_simple_arraysc                    s”   t  ddgddgg¡‰t  ddgddgg¡‰ˆ  ˆˆ¡ tt‡ ‡‡fd	d
„ƒ t  ddgddgg¡‰tt‡ ‡‡fdd
„ƒ tt‡ ‡‡fdd
„ƒ d S )Nr  r  çffffff
@gš™™™™™@r  r  g333333@g      @c                      r  r   r   r"   rX   r"   r#   rÊ      rÙ   z0TestArrayAssertLess.test_rank2.<locals>.<lambda>r{   c                      r  r   r   r"   rX   r"   r#   rÊ   ¤  rÙ   c                      r  r   r   r"   rX   r"   r#   rÊ   ¥  rÙ   rÓ   r<   r"   rX   r#   Ú
test_rank2›  s   zTestArrayAssertLess.test_rank2c                    sv   t jdd�‰t jdd�d ‰ˆ  ˆˆ¡ tt‡ ‡‡fdd„ƒ dˆd< tt‡ ‡‡fdd„ƒ tt‡ ‡‡fd	d„ƒ d S )
N)r)   r)   r)   )Úshaper(   c                      r  r   r   r"   rX   r"   r#   rÊ   ¬  rÙ   z0TestArrayAssertLess.test_rank3.<locals>.<lambda>r   )r   r   r   c                      r  r   r   r"   rX   r"   r#   rÊ   °  rÙ   c                      r  r   r   r"   rX   r"   r#   rÊ   ±  rÙ   )r+   r  r   r	   r&   r<   r"   rX   r#   Ú
test_rank3§  s   zTestArrayAssertLess.test_rank3c                    s‚   d‰d‰ˆ   ˆˆ¡ tt‡ ‡‡fdd„ƒ t ddg¡‰ˆ   ˆˆ¡ tt‡ ‡‡fdd„ƒ t ddg¡‰tt‡ ‡‡fdd„ƒ d S )	Nr  r  c                      r  r   r   r"   rX   r"   r#   rÊ   ¸  rÙ   z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>r!  c                      r  r   r   r"   rX   r"   r#   rÊ   ½  rÙ   r{   c                      r  r   r   r"   rX   r"   r#   rÊ   Á  rÙ   )r   r	   r&   r+   r,   r<   r"   rX   r#   r  ³  s   z%TestArrayAssertLess.test_simple_itemsc                    sŠ   t  t j¡‰t  d¡‰t  t j¡‰ ˆ ˆˆ¡ tt‡‡‡fdd„ƒ tt‡‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ d S )Nr(   c                      rÚ   r   r   r"   rÖ   r"   r#   rÊ   È  rÙ   z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>c                      rÕ   r   r   r"   rÖ   r"   r#   rÊ   É  rÙ   c                      rÚ   r   r   r"   rÛ   r"   r#   rÊ   Ê  rÙ   c                      rÕ   r   r   r"   rÛ   r"   r#   rÊ   Ë  rÙ   rÝ   r<   r"   rÞ   r#   Útest_nan_noncompareÃ  s   
z'TestArrayAssertLess.test_nan_noncomparec                    s¼   t  g d¢¡‰t  t j¡‰ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ t  ddt jg¡‰tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ t  d	d
t jg¡‰ˆ ˆˆ¡ tt‡‡‡fdd„ƒ d S )N)r  r  r!  c                      ó   ˆ  ˆˆ ¡S r   r   r"   ©r×   r   rY   r"   r#   rÊ   Ñ  rÙ   z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>c                      ó   ˆ  ˆ ˆ¡S r   r   r"   r'  r"   r#   rÊ   Ò  rÙ   r  r  c                      r&  r   r   r"   r'  r"   r#   rÊ   Ö  rÙ   c                      r(  r   r   r"   r'  r"   r#   rÊ   ×  rÙ   r{   r|   c                      r  r   r   r"   rX   r"   r#   rÊ   Ü  rÙ   )r+   r,   r]   r	   r&   r   r<   r"   )r×   r   rY   rZ   r#   Útest_nan_noncompare_arrayÍ  s   z-TestArrayAssertLess.test_nan_noncompare_arrayc                    sª   t  d¡‰t  t j¡‰ ˆ ˆˆ ¡ ˆ ˆ  ˆ¡ ˆ ˆ  ˆ ¡ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ d S )Nr(   c                      rÕ   r   r   r"   ©rÜ   rØ   r   r"   r#   rÊ   å  rÙ   z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>c                      s   ˆ  ˆˆ  ¡S r   r   r"   r*  r"   r#   rÊ   æ  rø   c                      s   ˆ  ˆ ˆ ¡S r   r   r"   ©rÜ   r   r"   r#   rÊ   ç  rÙ   c                      s   ˆ  ˆ ˆ  ¡S r   r   r"   r+  r"   r#   rÊ   è  rø   c                      s   ˆ  ˆ  ˆ  ¡S r   r   r"   r+  r"   r#   rÊ   é  rË   )r+   r,   rp   r   r	   r&   r<   r"   r*  r#   Útest_inf_compareÞ  s   
z$TestArrayAssertLess.test_inf_comparec                    sž   t  ddt jg¡‰t  t j¡‰ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ ˆ ˆ  ˆ¡ d S )	Nr  r  c                      r&  r   r   r"   ©rÜ   r   rY   r"   r#   rÊ   ï  rÙ   z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>c                      r(  r   r   r"   r-  r"   r#   rÊ   ð  rÙ   c                      s   ˆ  ˆˆ  ¡S r   r   r"   r-  r"   r#   rÊ   ñ  rø   c                      s   ˆ  ˆ ˆ  ¡S r   r   r"   r-  r"   r#   rÊ   ò  rË   c                      s   ˆ  ˆ  ˆ ¡S r   r   r"   r-  r"   r#   rÊ   ó  rË   )r+   r,   rp   r	   r&   r   r<   r"   r-  r#   Útest_inf_compare_arrayë  s   z*TestArrayAssertLess.test_inf_compare_arrayN)r?   r@   rA   rD   r   r"  r$  r  r%  r)  r,  r.  r"   r"   r"   r#   r  Š  s    
r  z$The raises decorator depends on Noser‚   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú
TestRaisesc                 C   s   G dd„ dt ƒ}|| _d S )Nc                   @   ó   e Zd ZdS )z,TestRaises.setup_method.<locals>.MyExceptionN©r?   r@   rA   r"   r"   r"   r#   ÚMyExceptionû  ó    r2  )Ú	ExceptionÚe)r   r2  r"   r"   r#   rD   ú  s   
zTestRaises.setup_methodc                 C   s   |‚r   r"   )r   r5  r"   r"   r#   Úraises_exception   rŠ   zTestRaises.raises_exceptionc                 C   ó   d S r   r"   r<   r"   r"   r#   Údoes_not_raise_exception  rŠ   z#TestRaises.does_not_raise_exceptionc                 C   s   t | jƒ| jƒ| jƒ d S r   )r   r5  r6  r<   r"   r"   r#   Útest_correct_catch  s   zTestRaises.test_correct_catchc                 C   s4   zt | jƒ| jƒtƒ W tdƒ‚ ty   Y d S w )Nzshould have caught RuntimeError)r   r5  r6  ÚRuntimeErrorr&   r<   r"   r"   r#   Útest_wrong_exception	  s   ýÿzTestRaises.test_wrong_exceptionc                 C   s2   zt | jƒ| jƒƒ  W tdƒ‚ ty   Y d S w )Nz$should have raised an AssertionError)r   r5  r8  r&   r<   r"   r"   r#   Útest_catch_no_raise  s   ýÿzTestRaises.test_catch_no_raiseN)	r?   r@   rA   rD   r6  r8  r9  r;  r<  r"   r"   r"   r#   r/  ÷  s    r/  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	TestWarnsc                 C   sh   dd„ }t jd jd d … }ttt|ƒdƒ t jd j}ttt|ƒ ttdd„ dƒdƒ t||dƒ d S )	Nc                   S   s   t  d¡ dS )NÚyor1   ©ÚwarningsÚwarnr"   r"   r"   r#   Úf  s   
zTestWarns.test_warn.<locals>.fr@  r1   c                 S   s   | S r   r"   )rY   r"   r"   r#   rÊ   &  ó    z%TestWarns.test_warn.<locals>.<lambda>r(   ú.assert_warns does not preserver warnings state)	ÚsysÚmodulesÚfiltersr   r
   ÚUserWarningr	   r&   r   )r   rB  Úbefore_filtersÚafter_filtersr"   r"   r#   Ú	test_warn  s   ÿzTestWarns.test_warnc                 C   st   t jd jd d … }ttƒ� t d¡ W d   ƒ n1 sw   Y  t jd j}dd„ }tt|ƒ t	||dƒ d S )Nr@  r>  c                   S   s6   t ƒ � t d¡ W d   ƒ d S 1 sw   Y  d S ©Nr>  )r   r@  rA  r"   r"   r"   r#   Úno_warnings3  s   "ÿz3TestWarns.test_context_manager.<locals>.no_warningsrD  )
rE  rF  rG  r
   rH  r@  rA  r	   r&   r   )r   rI  rJ  rM  r"   r"   r#   Útest_context_manager,  s   
ÿ
ÿzTestWarns.test_context_managerc              	   C   sv   dd„ }d}t  ¡ �! t  dt¡ z	tt|ƒ d}W n	 ty#   Y nw W d   ƒ n1 s.w   Y  |r9tdƒ‚d S )Nc                   S   s   t  dt¡ d S rL  )r@  rA  ÚDeprecationWarningr"   r"   r"   r#   rB  <  r%   z,TestWarns.test_warn_wrong_warning.<locals>.fFÚerrorTz#wrong warning caught by assert_warn)r@  Úcatch_warningsÚsimplefilterrO  r
   rH  r&   )r   rB  Úfailedr"   r"   r#   Útest_warn_wrong_warning;  s   

ÿ€ú	ÿz!TestWarns.test_warn_wrong_warningN)r?   r@   rA   rK  rN  rT  r"   r"   r"   r#   r=    s    r=  c                   @   r   )ÚTestAssertAllclosec                 C   s°   d}d}t ||dd� ttt ||ƒ t ||||g¡}t ||||g¡}t ||dd� ttt ||ƒ |d |d< t ||ƒ ttt ||dd� t dd	d
d� ttt d	dd
d� d S )Ngü©ñÒMbP?g•Ö&è.>r(   )ZatolgÜ1¯  ð?r¿   )Zrtolr  rW   g      à?)r   r	   r&   r+   r,   )r   rY   rZ   r    r!   r"   r"   r#   rÔ   O  s   
zTestAssertAllclose.test_simplec                 C   s*   t jt  t j¡jgt jd�}t||ƒ d S )Nr6   )r+   r,   ZiinfoÚint_Úminr   r9   r"   r"   r#   Útest_min_intc  s   zTestAssertAllclose.test_min_intc                 C   sj   t  g d¢¡}t  g d¢¡}t t¡�}t||ƒ W d   ƒ n1 s#w   Y  t|jƒ}td|v ƒ d S )N)r(   r(   r(   r(   )r(   r(   r(   r)   zXMismatched elements: 1 / 4 (25%)
Max absolute difference: 1
Max relative difference: 0.5©	r+   r,   re   r   r&   r   r  r  r   ©r   r    r!   r	  Úmsgr"   r"   r#   Útest_report_fail_percentageh  s   ÿ

þz.TestAssertAllclose.test_report_fail_percentagec                 C   s.   t  t jg¡}t  t jg¡}t||dd� d S )NT©Z	equal_nan)r+   r,   r]   r   r   r"   r"   r#   Útest_equal_nans  s   z!TestAssertAllclose.test_equal_nanc                 C   s2   t  t jg¡}t  t jg¡}ttt||dd� d S )NFr]  )r+   r,   r]   r	   r&   r   r   r"   r"   r#   Útest_not_equal_nany  s   z%TestAssertAllclose.test_not_equal_nanc                 C   sH   t  t jg¡}t  t jg¡}t||ƒ t||ƒ t||ƒ t||ƒ d S r   )r+   r,   r]   r   r   r   r   r   r"   r"   r#   Útest_equal_nan_default~  s   


z)TestAssertAllclose.test_equal_nan_defaultc                 C   sj   t  ddg¡}t  ddg¡}t t¡�}t||ƒ W d   ƒ n1 s#w   Y  t|jƒ}td|v ƒ d S )Nr   r(   r)   r  rY  rZ  r"   r"   r#   Útest_report_max_relative_error‰  s   ÿ
z1TestAssertAllclose.test_report_max_relative_errorc                 C   s"   t jg d¢gdd�}t||ƒ d S )N)r(   r)   r1   r¯   zm8[ns]r6   )r+   r,   r   r9   r"   r"   r#   Útest_timedelta’  s   z!TestAssertAllclose.test_timedeltaN)r?   r@   rA   rÔ   rX  r\  r^  r_  r`  ra  rb  r"   r"   r"   r#   rU  M  s    	rU  c                   @   st   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestArrayAlmostEqualNulpc                 C   ó�   d}t jdddt jd�}d| }t j| |f }t  |j¡j}||| | d  }t|||ƒ t  |j¡j}||| | d  }t|||ƒ d S ©NrÒ   éìÿÿÿr  é2   r6   rW   r|   ©	r+   ÚlinspaceÚfloat64Úr_Úfinfor7   Úepsr   Úepsneg©r   ÚnulprY   rm  rZ   rn  r"   r"   r#   Útest_float64_passš  s   z*TestArrayAlmostEqualNulp.test_float64_passc                 C   ó˜   d}t jdddt jd�}d| }t j| |f }t  |j¡j}||| | d  }ttt	|||ƒ t  |j¡j
}||| | d  }ttt	|||ƒ d S re  ©r+   ri  rj  rk  rl  r7   rm  r	   r&   r   rn  ro  r"   r"   r#   Útest_float64_fail¬  ó   ÿÿz*TestArrayAlmostEqualNulp.test_float64_failc                 C   óT   t  d¡}t jt jt jd� t j¡}||A }| t j¡}| t j¡}t||dƒ d S )Nl   ÿÿ r6   r   )r+   Zuint64r,   r]   rj  r~   r   )r   ÚoffsetZnan1_i64Znan2_i64Znan1_f64Znan2_f64r"   r"   r#   Útest_float64_ignore_nan¼  ó   
z0TestArrayAlmostEqualNulp.test_float64_ignore_nanc                 C   rd  re  ©	r+   ri  rŽ   rk  rl  r7   rm  r   rn  ro  r"   r"   r#   Útest_float32_passÇ  ó   z*TestArrayAlmostEqualNulp.test_float32_passc                 C   rr  re  ©r+   ri  rŽ   rk  rl  r7   rm  r	   r&   r   rn  ro  r"   r"   r#   Útest_float32_failÕ  ru  z*TestArrayAlmostEqualNulp.test_float32_failc                 C   rv  )Niÿÿ  r6   r   )r+   Zuint32r,   r]   rŽ   r~   r   )r   rw  Znan1_i32Znan2_i32Znan1_f32Znan2_f32r"   r"   r#   Útest_float32_ignore_nanå  ry  z0TestArrayAlmostEqualNulp.test_float32_ignore_nanc                 C   s�   d}t jdddt jd�}d| }t j| |f }t  |j¡j}||| | d  }t|||ƒ t  |j¡j}||| | d  }t|||ƒ d S ©NrÒ   éüÿÿÿr2   rW   r6   r|   )	r+   ri  Úfloat16rk  rl  r7   rm  r   rn  ro  r"   r"   r#   Útest_float16_passð  r|  z*TestArrayAlmostEqualNulp.test_float16_passc                 C   s˜   d}t jdddt jd�}d| }t j| |f }t  |j¡j}||| | d  }ttt	|||ƒ t  |j¡j
}||| | d  }ttt	|||ƒ d S r€  )r+   ri  r‚  rk  rl  r7   rm  r	   r&   r   rn  ro  r"   r"   r#   Útest_float16_failþ  ru  z*TestArrayAlmostEqualNulp.test_float16_failc                 C   rv  )Néÿ   r6   r   )r+   Zuint16r,   r]   r‚  r~   r   )r   rw  Znan1_i16Znan2_i16Znan1_f16Znan2_f16r"   r"   r#   Útest_float16_ignore_nan  ry  z0TestArrayAlmostEqualNulp.test_float16_ignore_nanc                 C   ó$  d}t jdddt jd�}d| }t j| |f }||d  }t  |j¡j}||| | d  }t|||d  |ƒ t|||d  |ƒ ||| | d	  }t|||d  |ƒ t  |j¡j}||| | d  }t|||d  |ƒ t|||d  |ƒ ||| | d	  }t|||d  |ƒ d S ©
NrÒ   rf  r  rg  r6   rW   ù              ð?r|   rj   rh  ©r   rp  rY   Úxirm  rZ   rn  r"   r"   r#   Útest_complex128_pass  s"   z-TestArrayAlmostEqualNulp.test_complex128_passc                 C   ó4  d}t jdddt jd�}d| }t j| |f }||d  }t  |j¡j}||| | d  }ttt	|||d  |ƒ ttt	|||d  |ƒ ||| |  }ttt	|||d  |ƒ t  |j¡j
}||| | d  }ttt	|||d  |ƒ ttt	|||d  |ƒ ||| |  }ttt	|||d  |ƒ d S ©	NrÒ   rf  r  rg  r6   rW   r‰  r|   rs  rŠ  r"   r"   r#   Útest_complex128_fail0  s:   ÿÿÿÿÿÿz-TestArrayAlmostEqualNulp.test_complex128_failc                 C   r‡  rˆ  rz  rŠ  r"   r"   r#   Útest_complex64_passM  s"   z,TestArrayAlmostEqualNulp.test_complex64_passc                 C   r�  rŽ  r}  rŠ  r"   r"   r#   Útest_complex64_failb  s:   ÿÿÿÿÿÿz,TestArrayAlmostEqualNulp.test_complex64_failN)r?   r@   rA   rq  rt  rx  r{  r~  r  rƒ  r„  r†  rŒ  r�  r�  r‘  r"   r"   r"   r#   rc  ˜  s    rc  c                   @   r  )ÚTestULPc                 C   s   t j d¡}t||dd� d S )NrW   r   ©Úmaxulp)r+   ÚrandomÚrandnr   )r   rY   r"   r"   r#   Ú
test_equal€  s   zTestULP.test_equalc                 C   óR   t  d¡ t j¡}|dt j d¡ t j¡ 7 }t  t j¡j}t||| dd� d S )NrW   ç{®Gáz„?r  r“  )	r+   r  ÚastyperŽ   r•  r–  rl  rm  r   ©r   rY   rm  r"   r"   r#   Útest_single„  ó   zTestULP.test_singlec                 C   r˜  )NrW   r™  éÈ   r“  )	r+   r  rš  rj  r•  r–  rl  rm  r   r›  r"   r"   r#   Útest_double‹  r�  zTestULP.test_doublec                 C   sL   t jt jfD ]}t  t jg¡ |¡}t  t  |¡jg¡}t||dd� qd S )Nrž  r“  )	r+   rŽ   rj  r,   rp   rš  rl  Úmaxr   )r   Údtrp   Úbigr"   r"   r#   rá   ’  s
   ýzTestULP.test_infc                    s  t jt jfD ]}|t jkrd‰nd‰t  t jg¡ |¡‰t  t jg¡ |¡‰t  t  |¡jg¡‰ t  t  |¡j	g¡‰t  t j
g¡ |¡‰t  t jg¡ |¡‰tt‡‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡‡‡fdd„ƒ tt‡‡‡fdd„ƒ tt‡‡‡fdd„ƒ qd S )	Ng    €„.Ag   ¢”mBc                      ó   t ˆˆ ˆd�S ©Nr“  ©r   r"   )rp   r”  r]   r"   r#   rÊ   ¦  ó    ÿz"TestULP.test_nan.<locals>.<lambda>c                      r£  r¤  r¥  r"   )r¢  r”  r]   r"   r#   rÊ   ©  r¦  c                      ó   t ˆˆˆ d�S r¤  r¥  r"   )r”  r]   Útinyr"   r#   rÊ   ¬  r¦  c                      r§  r¤  r¥  r"   )r”  r]   Úzeror"   r#   rÊ   ¯  r¦  c                      r§  r¤  r¥  r"   )r”  r]   Únzeror"   r#   rÊ   ²  r¦  )r+   rŽ   rj  r,   rp   rš  r]   rl  r   r¨  rº   r»   r	   r&   )r   r¡  r"   )r¢  rp   r”  r]   rª  r¨  r©  r#   rß   ˜  s4   
ÿÿÿÿÿézTestULP.test_nanN)r?   r@   rA   r—  rœ  rŸ  rá   rß   r"   r"   r"   r#   r’  ~  s    r’  c                   @   rr   )ÚTestStringEqualc                 C   sn   t ddƒ t ddƒ t t¡�}t ddƒ W d   ƒ n1 sw   Y  t|jƒ}t|dƒ ttdd„ ƒ d S )NÚhellozhello
multilinezfoo
barz	hello
barz%Differences in strings:
- foo
+ helloc                   S   ó
   t ddƒS )NrO   r¬  ©r   r"   r"   r"   r#   rÊ   Á  ó   
 z-TestStringEqual.test_simple.<locals>.<lambda>)r   re   r   r&   r  r  r   r	   )r   r	  r[  r"   r"   r#   rÔ   ·  s   

ÿ

ÿzTestStringEqual.test_simplec                 C   s   t ddƒ ttdd„ ƒ d S )Nza+*bc                   S   r­  )NZaaaza+br®  r"   r"   r"   r#   rÊ   Ç  r¯  z,TestStringEqual.test_regex.<locals>.<lambda>)r   r	   r&   r<   r"   r"   r#   Ú
test_regexÃ  s   
ÿzTestStringEqual.test_regexN)r?   r@   rA   rÔ   r°  r"   r"   r"   r#   r«  ¶  s    r«  c                 C   sH   z| j }W n ty   i }Y nw t|ƒ}d|v r|d8 }t||ƒ d S )NÚversionr(   )Ú__warningregistry__ÚAttributeErrorÚlenr   )ÚmodÚn_in_contextZ	mod_warnsZ	num_warnsr"   r"   r#   Úassert_warn_len_equalÊ  s   
ø
r·  c                  C   sD   G dd„ dƒ} | ƒ }t |dd� G dd„ dƒ} | ƒ }t |dd� d S )Nc                   @   r0  )ú/test_warn_len_equal_call_scenarios.<locals>.modNr1  r"   r"   r"   r#   rµ  é  r3  rµ  r   )rµ  r¶  c                   @   r„   )r¸  c                 S   s   dddœ| _ d S )Nr(   r)   ©Zwarning1Zwarning2)r²  r<   r"   r"   r#   Ú__init__ô  s   ÿz8test_warn_len_equal_call_scenarios.<locals>.mod.__init__N)r?   r@   rA   rº  r"   r"   r"   r#   rµ  ó  r‹   r)   )r·  )rµ  Zmod_instr"   r"   r#   Ú"test_warn_len_equal_call_scenariosá  s   ÿ
ÿr»  c                  C   s0   t jt } z| j ¡  W | S  ty   Y | S w r   )rE  rF  r?   r²  Úclearr³  ©Úmy_modr"   r"   r#   Ú_get_fresh_modý  s   
üür¿  c                  C   sF  t ƒ } tt| di ƒi ƒ t| gd�� t d¡ t d¡ W d   ƒ n1 s'w   Y  t| ji ƒ tƒ � t d¡ t d¡ W d   ƒ n1 sJw   Y  t| dƒ dddœ| _t| gd�� t d¡ t d	¡ W d   ƒ n1 suw   Y  t| dƒ tƒ � t d¡ t d	¡ W d   ƒ n1 s—w   Y  t| dƒ d S )
Nr²  )rF  ÚignoreúSome warningr   r(   r)   r¹  zAnother warning)	r¿  r   Úgetattrr   r@  rR  rA  r²  r·  r½  r"   r"   r#   Útest_clear_and_catch_warnings	  s2   
þ
þ
ÿ
þ

þrÃ  c                  C   s‚  t ƒ } tt| di ƒi ƒ dd„ }t| dƒ tƒ �}| t¡ |jtj	j
d� t d¡ |ƒ  W d   ƒ n1 s8w   Y  tt|jƒdƒ t|jd jjd dƒ t| dƒ tƒ }|j| d� |� t d¡ W d   ƒ n1 sqw   Y  t| dƒ |j| d� |� t d¡ W d   ƒ n1 s“w   Y  t| dƒ tƒ � t d¡ t d¡ W d   ƒ n1 sµw   Y  t| dƒ d S )	Nr²  c                  S   ó   dd„ } t  | ddg¡ d S )Nc                 S   ó   t jddd� | S )NzSome warning 2r)   ©Ú
stacklevelr?  ©Zarrr"   r"   r#   rA  1  ó   zFtest_suppress_warnings_module.<locals>.warn_other_module.<locals>.warnr   ©r+   Zapply_along_axis©rA  r"   r"   r#   Úwarn_other_module.  ó   z8test_suppress_warnings_module.<locals>.warn_other_moduler   ©ÚmodulerÁ  r(   rÀ  )r¿  r   rÂ  r·  r   ÚrecordrH  Úfilterr+   ÚlibZ
shape_baser@  rA  r´  ÚlogÚmessager‡   rR  )r¾  rÌ  Úsupr"   r"   r#   Útest_suppress_warnings_module)  s:   
	

ú	
ÿ
ÿ

þrÖ  c                  C   s0  t ƒ } tt| di ƒi ƒ tƒ �}| t¡ t d¡ W d   ƒ n1 s$w   Y  t| dƒ tƒ }| t¡ |� t d¡ W d   ƒ n1 sHw   Y  t| dƒ |j| d� |� t d¡ W d   ƒ n1 sjw   Y  t| dƒ tƒ � t 	d¡ t d¡ W d   ƒ n1 sŒw   Y  t| dƒ d S )Nr²  rÁ  r   rÎ  rÀ  )
r¿  r   rÂ  r   rÑ  rH  r@  rA  r·  rR  )r¾  rÕ  r"   r"   r#   Útest_suppress_warnings_typeW  s.   
þ

ÿ
ÿ

þr×  c                  C   sv   t ƒ } |  t¡ | dd„ ƒ}tjdd��}t d¡ |tƒ |tƒ tt|ƒdƒ W d   ƒ d S 1 s4w   Y  d S )Nc                 S   s   t  d| ¡ d S )NrÁ  r?  )Úcategoryr"   r"   r#   rA  w  s   z7test_suppress_warnings_decorate_no_record.<locals>.warnT)rÐ  Úalwaysr(   )	r   rÑ  rH  r@  rQ  rR  ÚRuntimeWarningr   r´  )rÕ  rA  Úwr"   r"   r#   Ú)test_suppress_warnings_decorate_no_records  s   


"ürÜ  c               	   C   sà  t ƒ } |  ¡ }| �D | jdd�}| jdd� t d¡ t d¡ t d¡ tt| jƒdƒ tt|ƒdƒ tt|ƒdƒ t|d jj	d dƒ W d   ƒ n1 sPw   Y  | �D | jdd�}| jdd� t d¡ t d¡ t d¡ tt| jƒdƒ tt|ƒdƒ tt|ƒdƒ t|d jj	d dƒ W d   ƒ n1 sžw   Y  t ƒ �@} |  ¡  t ƒ � }|jdd� t d¡ t d¡ tt|jƒdƒ W d   ƒ n1 sÑw   Y  tt| jƒdƒ W d   ƒ d S 1 séw   Y  d S )NzSome other warning 2)rÔ  rÁ  úSome other warningr)   r(   r   )
r   rÐ  rÑ  r@  rA  r   r´  rÓ  rÔ  r‡   )rÕ  Zlog1Úlog2Úsup2r"   r"   r#   Útest_suppress_warnings_record‚  sD   


ö


ö

ü"ùrà  c               	   C   s2  dd„ } t ƒ �4}| ¡  t dƒ� tdƒD ]}t d¡ qW d   ƒ n1 s'w   Y  tt|jƒdƒ W d   ƒ n1 s>w   Y  t ƒ �9}| ¡  t dƒ� tdƒD ]}t d¡ t d¡ qTW d   ƒ n1 skw   Y  tt|jƒdƒ W d   ƒ n1 s‚w   Y  t ƒ �<}| ¡  t dƒ� tdƒD ]}t d¡ t d¡ | ƒ  q˜W d   ƒ n1 s²w   Y  tt|jƒdƒ W d   ƒ n1 sÉw   Y  t ƒ �=}| ¡  t dƒ� tdƒD ]}t d¡ t d	¡ | ƒ  qßW d   ƒ n1 sùw   Y  tt|jƒdƒ W d   ƒ d S 1 �sw   Y  d S )
Nc                  S   rÄ  )Nc                 S   rÅ  )NrÁ  r)   rÆ  r?  rÈ  r"   r"   r#   rA  ®  rÉ  zJtest_suppress_warnings_forwarding.<locals>.warn_other_module.<locals>.warnr   rÊ  rË  r"   r"   r#   rÌ  «  rÍ  z<test_suppress_warnings_forwarding.<locals>.warn_other_modulerÙ  r)   rÁ  ÚlocationrÏ  ÚoncerÝ  )r   rÐ  Úranger@  rA  r   r´  rÓ  )rÌ  rÕ  Úir"   r"   r#   Ú!test_suppress_warnings_forwardingª  sT   
ÿÿú

þÿù	


ýÿø



ýÿ$ørå  c               	   C   sÌ   t ƒ �$} tj | d¡}t|dƒ� W d   ƒ n1 sw   Y  W d   ƒ n1 s*w   Y  ttj | ¡ ƒ d}zt ƒ �} tƒ ‚1 sEw   Y  W n tyV   d}Y nw t|ƒ ttj | ¡ ƒ d S )NÚtmprÛ  FT)r   ÚosÚpathÚjoinÚopenr   ÚisdirÚ
ValueError)ZtdirÚfpathÚraisedr"   r"   r#   Útest_tempdirÙ  s$   ÿ€þÿÿrï  c               	   C   s¾   t ƒ �} t| dƒ� W d   ƒ n1 sw   Y  W d   ƒ n1 s#w   Y  ttj | ¡ ƒ d}zt ƒ �} tƒ ‚1 s>w   Y  W n tyO   d}Y nw t|ƒ ttj | ¡ ƒ d S )NrÛ  FT)r   rê  r   rç  rè  Úisfilerì  )rí  rî  r"   r"   r#   Útest_temppathê  s"   ÿ€ÿÿÿrñ  c                   @   s   e Zd Zeje  fZdS )Úmy_cacwN)r?   r@   rA   rE  rF  Zclass_modulesr"   r"   r"   r#   rò  ú  s    rò  c                  C   sP   t ƒ } tƒ � t d¡ t d¡ W d   ƒ n1 sw   Y  t| ji ƒ d S )NrÀ  rÁ  )r¿  rò  r@  rR  rA  r   r²  r½  r"   r"   r#   Ú%test_clear_and_catch_warnings_inheritÿ  s   
þró  zPython lacks refcountsc                   @   s0   e Zd ZdZdd„ Zdd„ Zejjdd„ ƒZ	dS )	ÚTestAssertNoGcCyclesz Test assert_no_gc_cycles c                 C   s@   dd„ }t ƒ � |ƒ  W d   ƒ n1 sw   Y  t |ƒ d S )Nc                  S   s   g } |   g ¡ | S r   ©Úappend)r!   r"   r"   r#   Úno_cycle  s   
z2TestAssertNoGcCycles.test_passes.<locals>.no_cycle)r   )r   r÷  r"   r"   r#   Útest_passes  s
   ÿz TestAssertNoGcCycles.test_passesc              	   C   s’   dd„ }t tƒ� tƒ � |ƒ  W d   ƒ n1 sw   Y  W d   ƒ n1 s)w   Y  t tƒ� t|ƒ W d   ƒ d S 1 sBw   Y  d S )Nc                  S   s   g } |   | ¡ |   | ¡ | S r   rõ  )r    r"   r"   r#   Ú
make_cycle  s   

z5TestAssertNoGcCycles.test_asserts.<locals>.make_cycle)r	   r&   r   )r   rù  r"   r"   r#   Útest_asserts  s   
ÿ€ÿ

"ÿz!TestAssertNoGcCycles.test_assertsc                    s¢   G ‡ fdd„dƒ‰ zCt  ˆ ƒ ¡}zttƒ� tdd„ ƒ W d  ƒ n1 s&w   Y  W n ty@   |ƒ dur>t d¡ ‚ Y nw W dˆ _dS W dˆ _dS dˆ _w )z•
        Test that in cases where the garbage cannot be collected, we raise an
        error, instead of hanging forever trying to clear it.
        c                       s(   e Zd ZdZdZdd„ Z‡ fdd„ZdS )z<TestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDelz¥
            An object that not only contains a reference cycle, but creates new
            cycles whenever it's garbage-collected and its __del__ runs
            Tc                 S   s
   | | _ d S r   )Úcycler<   r"   r"   r#   rº  2  rE   zETestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__init__c                    s   d | _ ˆ jrˆ ƒ  d S d S r   )rû  rù  r<   ©ÚReferenceCycleInDelr"   r#   Ú__del__5  s   
ýzDTestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__del__N)r?   r@   rA   Ú__doc__rù  rº  rþ  r"   rü  r"   r#   rý  +  s
    rý  c                   S   r7  r   r"   r"   r"   r"   r#   rÊ   C  rC  z1TestAssertNoGcCycles.test_fails.<locals>.<lambda>Nz*GC does not call __del__ on cyclic objectsF)	ÚweakrefÚrefr	   r:  r   r&   re   Úskiprù  )r   rÛ  r"   rü  r#   Ú
test_fails$  s$   
þ€

þý€
	úzTestAssertNoGcCycles.test_failsN)
r?   r@   rA   rÿ  rø  rú  re   r�   Zslowr  r"   r"   r"   r#   rô    s    rô  )@r@  rE  rç  r²   re   r   Znumpyr+   Znumpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Znumpy.core.overridesr   r   rB   r’   r¦   rÂ   rö   r  r  r�   r  r/  r=  rU  rc  r’  r«  r·  r»  r¿  rÃ  rÖ  r×  rÜ  rà  rå  rï  rñ  rò  ró  r‘   rô  r"   r"   r"   r#   Ú<module>   sT    `. -_b +m"3K g8 .(/	