U
    ¸mœdôÝ  ã                   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlm Z  G dd„ dƒZ!G dd„ de!ƒZ"G dd	„ d	ƒZ#G d
d„ de"ƒZ$G dd„ de!ƒZ%G dd„ de!ƒZ&G dd„ dƒZ'G dd„ dƒZ(ej)j*dd�G dd„ dƒƒZ+G dd„ dƒZ,G dd„ dƒZ-G dd„ dƒZ.G dd„ dƒZ/G d d!„ d!ƒZ0d"d#„ Z1d$d%„ Z2d&d'„ Z3d(d)„ Z4d*d+„ Z5d,d-„ Z6d.d/„ Z7d0d1„ Z8d2d3„ Z9d4d5„ Z:d6d7„ Z;G d8d9„ d9eƒZ<d:d;„ Z=ej)j>e d<d�G d=d>„ d>ƒƒZ?dS )?é    N)Úassert_equalÚassert_array_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_array_lessÚbuild_err_msgÚraisesÚassert_raisesÚassert_warnsÚassert_no_warningsÚassert_allcloseÚassert_approx_equalÚassert_array_almost_equal_nulpÚassert_array_max_ulpÚclear_and_catch_warningsÚsuppress_warningsÚassert_string_equalÚassert_ÚtempdirÚtemppathÚassert_no_gc_cyclesÚHAS_REFCOUNT)ÚARRAY_FUNCTION_ENABLEDc                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )Ú_GenericTestc                 C   s   |   ||¡ d S ©N©Ú_assert_func©ÚselfÚaÚb© r!   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numpy/testing/tests/test_utils.pyÚ_test_equal   s    z_GenericTest._test_equalc              	   C   s$   t tƒ� |  ||¡ W 5 Q R X 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   s    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$   s    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   |   dddgd¡ d S )Nr&   r'   r.   )r&   r'   r.   )r#   ©r   r!   r!   r"   Útest_array_likes>   s    z_GenericTest.test_array_likesN)Ú__name__Ú
__module__Ú__qualname__r#   r%   r+   r-   r0   r2   r7   r9   r!   r!   r!   r"   r      s   r   c                   @   sž   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zejje dd�dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#S )$ÚTestArrayEqualc                 C   s
   t | _d S r   )r   r   r8   r!   r!   r"   Úsetup_methodD   s    zTestArrayEqual.setup_methodc                    s4   ‡ fdd„}dD ]}||ƒ qdD ]}||ƒ q"dS )z!Test rank 1 array for all dtypes.c                    sL   t  d| ¡}| d¡ | ¡ }| ¡ }| d¡ ˆ  ||¡ ˆ  ||¡ d S )Nr'   r&   r   ©r)   ÚemptyÚfillÚcopyr#   r%   ©Útr   r    Úcr8   r!   r"   ÚfooI   s    

z.TestArrayEqual.test_generic_rank1.<locals>.fooú?bhilqpBHILQPfdgFDG©ZS1ZU1Nr!   ©r   rF   rD   r!   r8   r"   Útest_generic_rank1G   s
    

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                    s4   ‡ fdd„}dD ]}||ƒ qdD ]}||ƒ q"dS )z!Test rank 3 array for all dtypes.c                    sL   t  d| ¡}| d¡ | ¡ }| ¡ }| d¡ ˆ  ||¡ ˆ  ||¡ d S )N)r/   r'   r.   r&   r   r?   rC   r8   r!   r"   rF   k   s    

z.TestArrayEqual.test_generic_rank3.<locals>.foorG   rH   Nr!   rI   r!   r8   r"   Útest_generic_rank3i   s
    

z!TestArrayEqual.test_generic_rank3c                 C   sP   t  ddt jg¡}t  ddt jg¡}|  ||¡ t  dddg¡}|  ||¡ dS )z$Test arrays with nan values in them.r&   r'   r.   N)r)   r*   Únanr#   r%   ©r   r   r    rE   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 )r1   ÚfloupiÚfloupaÚfloupipiN)r)   r*   r#   r%   rS   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 5 Q R X dS )zTest record arrays.r'   rU   rV   r&   rW   N)	r)   r@   ÚfloatrB   r#   Úpytestr   Ú	TypeErrorr%   rS   r!   r!   r"   Útest_recarrays‘   s     ÿzTestArrayEqual.test_recarraysc                 C   s�   t jjdddgdddgd�}t  dt jdg¡}|  ||¡ |  ||¡ t jjdddgdddgd�}t  t jddg¡}|  ||¡ |  ||¡ d S )Nç      @ç      @ç      @FT©Úmask)r)   ÚmaÚMaskedArrayr*   rR   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                   @   s   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__³   s    zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__eq__c                 S   s
   | |k S r   r!   ri   r!   r!   r"   Ú__ne__¶   s    zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__ne__N)r:   r;   r<   rk   rl   r!   r!   r!   r"   ÚMyArray²   s   rm   ç      ð?ç       @r]   )	r)   Úndarrayr*   Úviewr   Útyperf   r#   r%   ©r   rm   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 5 Q R X |  ||¡ |  ||¡ |  ||¡ d S )Nc                   @   s   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__Æ   s    z^TestArrayEqual.test_subclass_that_does_not_implement_npall.<locals>.MyArray.__array_function__N)r:   r;   r<   r{   r!   r!   r!   r"   rm   Å   s   rm   rn   ro   r]   )	r)   rp   r*   rq   r	   r[   rh   r#   r%   rs   r!   r!   r"   Ú+test_subclass_that_does_not_implement_npallÂ   s    
z:TestArrayEqual.test_subclass_that_does_not_implement_npallc              
   C   s`   t  t¡�L tjdd��4 tj t dddgtj¡t dddgtj¡¡ W 5 Q R X W 5 Q R X d S )NÚraise)rh   r&   r'   r.   gœWw'&l¡7)	rZ   r   r$   r)   ZerrstateÚtestingr   r*   Úfloat32r8   r!   r!   r"   Útest_suppress_overflow_warningsÑ   s    þz.TestArrayEqual.test_suppress_overflow_warningsc                 C   s$   t  dddg¡}d}|  ||¡ dS )z@Test comparing an array with a scalar when all values are equal.rn   Nr(   r   r!   r!   r"   Útest_array_vs_scalar_is_equalÙ   s    z,TestArrayEqual.test_array_vs_scalar_is_equalc                 C   s$   t  dddg¡}d}|  ||¡ dS )z@Test comparing an array with a scalar when not all values equal.rn   ro   r]   Nr,   r   r!   r!   r"   Útest_array_vs_scalar_not_equalà   s    z-TestArrayEqual.test_array_vs_scalar_not_equalc              	   C   s<   t  dddg¡}d}t t¡� t||dd� W 5 Q R X dS )z9Test comparing an array with a scalar with strict option.rn   T©ÚstrictN©r)   r*   rZ   r   r$   r   r   r!   r!   r"   Útest_array_vs_scalar_strictç   s    z*TestArrayEqual.test_array_vs_scalar_strictc                 C   s2   t  dddg¡}t  dddg¡}t||dd� dS )ú-Test comparing two arrays with strict option.rn   Trƒ   N)r)   r*   r   r   r!   r!   r"   Útest_array_vs_array_strictï   s    z)TestArrayEqual.test_array_vs_array_strictc              	   C   sH   t  dddg¡}t  dddg¡}t t¡� t||dd� W 5 Q R X dS )r‡   r&   rn   Trƒ   Nr…   r   r!   r!   r"   Ú test_array_vs_float_array_strictö   s    z/TestArrayEqual.test_array_vs_float_array_strictN)r:   r;   r<   r>   rJ   rP   rQ   rT   rX   r\   re   rt   rZ   ÚmarkÚskipifr   r|   r€   r�   r‚   r†   rˆ   r‰   r!   r!   r!   r"   r=   B   s(   
 ÿ
r=   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestBuildErrorMessagec                 C   sD   t  dddg¡}t  dddg¡}d}t||g|ƒ}d}t||ƒ d S )	NçrÄZ|
 ð?çrÄZ|
  @ç«&ˆº @çãˆµø ð?ç«&ˆº  @çãˆµø @ú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   rN   rO   Úerr_msgr   r    r!   r!   r"   Útest_build_err_msg_defaults  s    z1TestBuildErrorMessage.test_build_err_msg_defaultsc                 C   sH   t  dddg¡}t  dddg¡}d}t||g|dd	�}d
}t||ƒ d S )Nr�   rŽ   r�   r�   r‘   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   sH   t  dddg¡}t  dddg¡}d}t||g|dd	�}d
}t||ƒ d S )Nr�   rŽ   r�   r�   r‘   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  s    z5TestBuildErrorMessage.test_build_err_msg_custom_namesc                 C   sH   t  dddg¡}t  dddg¡}d}t||g|dd	�}d
}t||ƒ d S )Ng0¸D   ð?rŽ   r�   g_p‰   ð?r‘   r’   r“   rL   )Ú	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   s    z9TestBuildErrorMessage.test_build_err_msg_custom_precisionN)r:   r;   r<   r—   r™   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d„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú	TestEqualc                 C   s
   t | _d S r   )r   r   r8   r!   r!   r"   r>   .  s    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)   rR   r%   r8   r!   r!   r"   Útest_nan_items1  s    zTestEqual.test_nan_itemsc                 C   s:   |   tjtj¡ |   tjgtjg¡ |  tjtjg¡ d S r   )r   r)   rd   r%   r8   r!   r!   r"   Útest_inf_items7  s    zTestEqual.test_inf_itemsc                 C   st   |   t dd¡t dd¡¡ |   t dd¡t dd¡¡ |  t dd¡t dd¡¡ |  t dd¡t dd¡¡ d S )Nú
2017-01-01ÚsÚmz
2017-01-02)r#   r)   Ú
datetime64r%   r8   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 ]2\}	}
|  |	|
¡ |  |	g|
g¡ |  |	g|
¡ qdt ||¡D ]2\}	}
|  |	|
¡ |  |	g|
g¡ |  |	g|
¡ q¤t ||¡D ]Š\}	}
|  |	|
¡ |  |	|
g¡ |  |	g|
g¡ |  |	gt  dd¡¡ |  |
gt  dd¡¡ |  |	gt  dd¡¡ |  |
gt  dd¡¡ qäd 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_dÚdtsZtdsr   r    r!   r!   r"   Útest_nat_itemsP  s0    



zTestEqual.test_nat_itemsc                 C   s   |   dd¡ |  dd¡ d S )NÚabZabb)r   r%   r8   r!   r!   r"   Útest_non_numerico  s    zTestEqual.test_non_numericc                 C   sŒ   |   tddƒtddƒ¡ |   tdtjƒtdtjƒ¡ |  tdtjƒtddƒ¡ |  ttjdƒtdtjƒ¡ |  ttjtjƒttjdƒ¡ d S ©Nr&   r'   )r   Úcomplexr)   rR   r%   rd   r8   r!   r!   r"   Útest_complex_items  s
    zTestEqual.test_complex_itemc                 C   s   |   tjtj¡ d S r   )r%   r)   ÚPZEROÚNZEROr8   r!   r!   r"   Útest_negative_zeroz  s    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±   rR   r   r%   rM   r!   r!   r"   Útest_complex}  s    zTestEqual.test_complexc                 C   sD   dd l }t |  ddd¡|  ddd¡g¡}|  ||d d d… ¡ d S )Nr   iÐ  r&   r'   éÿÿÿÿ)Údatetimer)   r*   r%   )r   r¹   r   r!   r!   r"   Útest_objectƒ  s
    ÿzTestEqual.test_objectN)r:   r;   r<   r>   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   s
   t | _d S r   )r   r   r8   r!   r!   r"   r>   �  s    z!TestArrayAlmostEqual.setup_methodc                    sL   ˆ 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                      s   ˆ j dddd�S ©Ng      ø?r½   r   r¾   r   r!   r8   r!   r"   Ú<lambda>š  ó    z5TestArrayAlmostEqual.test_closeness.<locals>.<lambda>c                      s   ˆ j dgdgdd�S rÀ   r   r!   r8   r!   r"   rÁ   Ÿ  rÂ   ©r   r	   r$   r8   r!   r8   r"   Útest_closeness�  s    
ÿ
ÿ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“@r.   r¾   r/   c                      s   ˆ j ˆˆdd�S )Né   r¾   r   r!   rM   r!   r"   rÁ   ¨  rÂ   z2TestArrayAlmostEqual.test_simple.<locals>.<lambda>©r)   r*   r   r	   r$   r8   r!   rM   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   ˆ  ˆ ˆ¡S r   r   r!   ©ÚananÚaoner   r!   r"   rÁ   °  rÂ   z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>c                      s   ˆ  ˆˆ ¡S r   r   r!   ©ÚainfrÉ   r   r!   r"   rÁ   ²  rÂ   c                      s   ˆ  ˆ ˆ¡S r   r   r!   rË   r!   r"   rÁ   ´  rÂ   ©r)   r*   rR   rd   r   r	   r$   r8   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 )	Nrn   ro   r]   r^   )r   r   c                      s   ˆ  ˆ ˆ¡S r   r   r!   ©r   r    r   r!   r"   rÁ   »  rÂ   z/TestArrayAlmostEqual.test_inf.<locals>.<lambda>c                      s   ˆ  ˆ ˆ¡S r   r   r!   rÐ   r!   r"   rÁ   ¾  rÂ   )r)   r*   rB   rd   r	   r$   r8   r!   rÐ   r"   Útest_inf¶  s    
ÿÿzTestArrayAlmostEqual.test_infc                 C   sN  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  ddd
g¡}|  ||¡ |  ||¡ t jj}t  ddd
g¡}|  ||¡ |  ||¡ t jjddd
gdddgd	�}t  dddg¡}|  ||¡ |  ||¡ t jjddd
gdddgd	�}t  d¡}|  ||¡ |  ||¡ d S )Nrn   ro   r]   r^   r½   FTg      @r`   r_   )r)   r*   rb   Zmasked_arrayr   rc   r#   Zmaskedr   r!   r!   r"   Útest_subclassÀ  s.    ÿ
z"TestArrayAlmostEqual.test_subclassc                 C   s6   G dd„ dt jƒ}t  ddg¡ |¡}|  ||¡ d S )Nc                       s0   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                    s   t ƒ  |¡ tj¡S r   ©Úsuperrk   rq   r)   rp   ri   ©Ú	__class__r!   r"   rk   à  s    zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    s   t ƒ  |¡ tj¡S r   ©rÔ   Ú__lt__rq   r)   rp   ri   rÕ   r!   r"   rØ   ã  s    zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   s   t ‚d S r   ©ÚNotImplementedErrorrx   r!   r!   r"   rh   æ  s    zKTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.all©r:   r;   r<   rk   rØ   rh   Ú__classcell__r!   r!   rÕ   r"   rm   ß  s   rm   rn   ro   ©r)   rp   r*   rq   r   ©r   rm   r   r!   r!   r"   Ú!test_subclass_that_cannot_be_boolÚ  s    
z6TestArrayAlmostEqual.test_subclass_that_cannot_be_boolN)
r:   r;   r<   r>   rÄ   rÇ   rÏ   rÑ   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d„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestAlmostEqualc                 C   s
   t | _d S r   )r   r   r8   r!   r!   r"   r>   ï  s    zTestAlmostEqual.setup_methodc                    sL   ˆ j dddd� tt‡ fdd„ƒ ˆ j dgdgdd� tt‡ fdd„ƒ d S )Nr¼   r½   r   r¾   c                      s   ˆ j dddd�S rÀ   r   r!   r8   r!   r"   rÁ   ü  rÂ   z0TestAlmostEqual.test_closeness.<locals>.<lambda>c                      s   ˆ j dgdgdd�S rÀ   r   r!   r8   r!   r"   rÁ     rÂ   rÃ   r8   r!   r8   r"   rÄ   ò  s    
ÿ
ÿ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                      s   ˆ   tjd¡S rŸ   )r   r)   rR   r!   r8   r!   r"   rÁ     rÂ   z/TestAlmostEqual.test_nan_item.<locals>.<lambda>c                      s   ˆ   tjtj¡S r   )r   r)   rR   rd   r!   r8   r!   r"   rÁ     rÂ   c                      s   ˆ   tjtj¡S r   )r   r)   rd   rR   r!   r8   r!   r"   rÁ   
  rÂ   )r   r)   rR   r	   r$   r8   r!   r8   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                      s   ˆ   tjd¡S rŸ   ©r   r)   rd   r!   r8   r!   r"   rÁ     rÂ   z/TestAlmostEqual.test_inf_item.<locals>.<lambda>c                      s   ˆ   tj tj¡S r   râ   r!   r8   r!   r"   rÁ     rÂ   )r   r)   rd   r	   r$   r8   r!   r8   r"   Útest_inf_item  s    
ÿ
ÿzTestAlmostEqual.test_inf_itemc                 C   s   |   dd¡ d S r°   )r%   r8   r!   r!   r"   Útest_simple_item  s    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)   rR   rd   r%   r8   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   rN   ÚzrO   r!   r!   r"   r·     s    zTestAlmostEqual.test_complexc              	   C   s(  t  dddg¡}t  dddg¡}t t¡�}| j||dd� W 5 Q R X t|jƒ d	¡}t	|d
 dƒ t	|d dƒ t	|d dƒ t	|d dƒ t	|d dƒ t t¡�}|  ||¡ W 5 Q R X 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 5 Q R X 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 5 Q R X 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¾   Ú
r.   z!Mismatched elements: 3 / 3 (100%)r/   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: infN)r)   r*   rZ   r   r$   r   ÚstrÚvalueÚsplitr   rd   ©r   rN   rO   Úexc_infoZmsgsr!   r!   r"   Útest_error_message'  sT    þþz"TestAlmostEqual.test_error_messagec              	   C   sØ   d}t  d¡}t t¡�}|  ||¡ W 5 Q R X t|jƒ d¡}t	|d dƒ t	|d dƒ t	|d d	ƒ d}t  d¡}t t¡�}|  ||¡ W 5 Q R X 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'   é   rç   r.   z#Mismatched elements: 20 / 20 (100%)r/   rê   rÅ   rë   úMax relative difference: 0.5N)
r)   ÚonesrZ   r   r$   r   rì   rí   rî   r   rï   r!   r!   r"   Útest_error_message_2]  s     

z$TestAlmostEqual.test_error_message_2c                 C   s6   G dd„ dt jƒ}t  ddg¡ |¡}|  ||¡ d S )Nc                       s0   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Z‡  ZS )zBTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                    s   t ƒ  |¡ tj¡S r   rÓ   ri   rÕ   r!   r"   rk   w  s    zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    s   t ƒ  |¡ tj¡S r   r×   ri   rÕ   r!   r"   rØ   z  s    zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   s   t ‚d S r   rÙ   rx   r!   r!   r"   rh   }  s    zFTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allrÛ   r!   r!   rÕ   r"   rm   v  s   rm   rn   ro   rÝ   rÞ   r!   r!   r"   rß   q  s    
z1TestAlmostEqual.test_subclass_that_cannot_be_boolN)r:   r;   r<   r>   rÄ   rá   rã   rä   r²   r·   rñ   rõ   rß   r!   r!   r!   r"   rà   í  s   	6rà   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestApproxEqualc                 C   s
   t | _d S r   )r   r   r8   r!   r!   r"   r>   †  s    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                      s   ˆ j ˆˆdd�S ©Nré   rù   r   r!   rM   r!   r"   rÁ   �  rÂ   z7TestApproxEqual.test_simple_0d_arrays.<locals>.<lambda>rÆ   r8   r!   rM   r"   Útest_simple_0d_arrays‰  s    

ÿz%TestApproxEqual.test_simple_0d_arraysc                    sR   d‰d‰ˆ j ˆˆdd� ˆ j ˆˆdd� ˆ j ˆˆdd� tt‡ ‡‡fdd„ƒ d S )	Nr÷   rø   r/   rù   rÅ   rè   c                      s   ˆ j ˆˆdd�S rú   r   r!   rM   r!   r"   rÁ   š  rÂ   z3TestApproxEqual.test_simple_items.<locals>.<lambda>rÃ   r8   r!   rM   r"   Útest_simple_items’  s    ÿz!TestApproxEqual.test_simple_itemsc                    st   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                      s   ˆ  ˆ ˆ¡S r   r   r!   rÈ   r!   r"   rÁ   ¡  rÂ   z0TestApproxEqual.test_nan_array.<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Í   r8   r!   rÎ   r"   rT   œ  s    
zTestApproxEqual.test_nan_arrayc                    st   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                      s   ˆ  ˆ ˆ¡S r   r   r!   rÈ   r!   r"   rÁ   ª  rÂ   z0TestApproxEqual.test_nan_items.<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Í   r8   r!   rÎ   r"   r    ¥  s    
zTestApproxEqual.test_nan_itemsN)r:   r;   r<   r>   rû   rü   rT   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   s
   t | _d S r   )r   r   r8   r!   r!   r"   r>   ±  s    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   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   ¹  rÂ   z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>rn   c                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   ½  rÂ   c                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   ¾  rÂ   rÆ   r8   r!   rM   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                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   Å  rÂ   z0TestArrayAssertLess.test_rank2.<locals>.<lambda>rn   c                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   É  rÂ   c                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   Ê  rÂ   rÆ   r8   r!   rM   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                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   Ñ  rÂ   z0TestArrayAssertLess.test_rank3.<locals>.<lambda>r   )r   r   r   c                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   Õ  rÂ   c                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   Ö  rÂ   )r)   rô   r   r	   r$   r8   r!   rM   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                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   Ý  rÂ   z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>r  c                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   â  rÂ   rn   c                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ   æ  rÂ   )r   r	   r$   r)   r*   r8   r!   rM   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                      s   ˆ  ˆˆ ¡S r   r   r!   rÈ   r!   r"   rÁ   í  rÂ   z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>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Í   r8   r!   rÎ   r"   Útest_nan_noncompareè  s    
z'TestArrayAssertLess.test_nan_noncomparec                    s¾   t  dddg¡‰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 )Nrþ   rÿ   r  c                      s   ˆ  ˆˆ ¡S r   r   r!   ©rÉ   r   rN   r!   r"   rÁ   ö  rÂ   z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>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Â   rn   ro   c                      s   ˆ   ˆˆ¡S r   r   r!   rM   r!   r"   rÁ     rÂ   )r)   r*   rR   r	   r$   r   r8   r!   )rÉ   r   rN   rO   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                      s   ˆ  ˆ ˆ¡S 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*   rd   r   r	   r$   r8   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                      s   ˆ  ˆˆ ¡S r   r   r!   ©rÌ   r   rN   r!   r"   rÁ     rÂ   z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>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Â   c                      s   ˆ  ˆ  ˆ ¡S r   r   r!   r  r!   r"   rÁ     rÂ   )r)   r*   rd   r	   r$   r   r8   r!   r  r"   Útest_inf_compare_array  s    z*TestArrayAssertLess.test_inf_compare_arrayN)r:   r;   r<   r>   r  r  r  rü   r  r	  r  r  r!   r!   r!   r"   rý   ¯  s   
rý   z$The raises decorator depends on Noseru   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                   @   s   e Zd ZdS )z,TestRaises.setup_method.<locals>.MyExceptionN©r:   r;   r<   r!   r!   r!   r"   ÚMyException   s   r  )Ú	ExceptionÚe)r   r  r!   r!   r"   r>     s    zTestRaises.setup_methodc                 C   s   |‚d S r   r!   )r   r  r!   r!   r"   Úraises_exception%  s    zTestRaises.raises_exceptionc                 C   s   d S r   r!   r8   r!   r!   r"   Údoes_not_raise_exception(  s    z#TestRaises.does_not_raise_exceptionc                 C   s   t | jƒ| jƒ| jƒ d S r   )r   r  r  r8   r!   r!   r"   Útest_correct_catch+  s    zTestRaises.test_correct_catchc                 C   s<   zt | jƒ| jƒtƒ W n tk
r.   Y d S X tdƒ‚d S )Nzshould have caught RuntimeError)r   r  r  ÚRuntimeErrorr$   r8   r!   r!   r"   Útest_wrong_exception.  s
    zTestRaises.test_wrong_exceptionc                 C   s:   zt | jƒ| jƒƒ  W n tk
r,   Y d S X tdƒ‚d S )Nz$should have raised an AssertionError)r   r  r  r$   r8   r!   r!   r"   Útest_catch_no_raise6  s
    zTestRaises.test_catch_no_raiseN)	r:   r;   r<   r>   r  r  r  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Úyor.   ©ÚwarningsÚwarnr!   r!   r!   r"   ÚfB  s    
zTestWarns.test_warn.<locals>.fr  r.   c                 S   s   | S r   r!   )rN   r!   r!   r"   rÁ   K  rÂ   z%TestWarns.test_warn.<locals>.<lambda>r&   ú.assert_warns does not preserver warnings state)	ÚsysÚmodulesÚfiltersr   r
   ÚUserWarningr	   r$   r   )r   r  Úbefore_filtersÚafter_filtersr!   r!   r"   Ú	test_warnA  s    ÿzTestWarns.test_warnc              	   C   s`   t jd jd d … }ttƒ� t d¡ W 5 Q R X t jd j}dd„ }tt|ƒ t	||dƒ d S )Nr  r  c                	   S   s    t ƒ � t d¡ W 5 Q R X d S ©Nr  )r   r  r  r!   r!   r!   r"   Úno_warningsX  s    z3TestWarns.test_context_manager.<locals>.no_warningsr   )
r!  r"  r#  r
   r$  r  r  r	   r$   r   )r   r%  r&  r)  r!   r!   r"   Útest_context_managerQ  s    

ÿzTestWarns.test_context_managerc              	   C   sd   dd„ }d}t  ¡ �: t  dt¡ ztt|ƒ d}W n tk
rH   Y nX W 5 Q R X |r`tdƒ‚d S )Nc                   S   s   t  dt¡ d S r(  )r  r  ÚDeprecationWarningr!   r!   r!   r"   r  a  s    z,TestWarns.test_warn_wrong_warning.<locals>.fFÚerrorTz#wrong warning caught by assert_warn)r  Úcatch_warningsÚsimplefilterr+  r
   r$  r$   )r   r  Úfailedr!   r!   r"   Útest_warn_wrong_warning`  s    

z!TestWarns.test_warn_wrong_warningN)r:   r;   r<   r'  r*  r0  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 )Ú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è   rL   g      à?)r   r	   r$   r)   r*   )r   rN   rO   r   r    r!   r!   r"   rÇ   t  s    
zTestAssertAllclose.test_simplec                 C   s*   t jt  t j¡jgt jd�}t||ƒ d S )Nr3   )r)   r*   ZiinfoÚint_Úminr   r6   r!   r!   r"   Útest_min_intˆ  s    zTestAssertAllclose.test_min_intc              	   C   s^   t  ddddg¡}t  ddddg¡}t t¡�}t||ƒ W 5 Q R X t|jƒ}td|kƒ d S )Nr&   r'   zXMismatched elements: 1 / 4 (25%)
Max absolute difference: 1
Max relative difference: 0.5©	r)   r*   rZ   r   r$   r   rì   rí   r   ©r   r   r    rð   Úmsgr!   r!   r"   Útest_report_fail_percentage�  s    
þz.TestAssertAllclose.test_report_fail_percentagec                 C   s.   t  t jg¡}t  t jg¡}t||dd� d S )NT©Z	equal_nan)r)   r*   rR   r   r   r!   r!   r"   Útest_equal_nan˜  s    z!TestAssertAllclose.test_equal_nanc                 C   s2   t  t jg¡}t  t jg¡}ttt||dd� d S )NFr:  )r)   r*   rR   r	   r$   r   r   r!   r!   r"   Útest_not_equal_nanž  s    z%TestAssertAllclose.test_not_equal_nanc                 C   sH   t  t jg¡}t  t jg¡}t||ƒ t||ƒ t||ƒ t||ƒ d S r   )r)   r*   rR   r   r   r   r   r   r!   r!   r"   Útest_equal_nan_default£  s    


z)TestAssertAllclose.test_equal_nan_defaultc              	   C   sV   t  ddg¡}t  ddg¡}t t¡�}t||ƒ W 5 Q R X t|jƒ}td|kƒ d S )Nr   r&   r'   ró   r6  r7  r!   r!   r"   Útest_report_max_relative_error®  s    
z1TestAssertAllclose.test_report_max_relative_errorc                 C   s&   t jddddggdd�}t||ƒ d S )Nr&   r'   r.   r§   zm8[ns]r3   )r)   r*   r   r6   r!   r!   r"   Útest_timedelta·  s    z!TestAssertAllclose.test_timedeltac              	   C   sn   t jdddgdd�}t jdddgdd�}t t¡�}t||dd� W 5 Q R X t|jƒ d	¡}t	|d d
ƒ dS )zYCheck the the message is formatted correctly when overflow can occur
           (gh21768)r   r&   é   Zuint8r3   r/   r.   r2  rç   zMax absolute difference: 4N)
r)   ZasarrayrZ   r   r$   r   rì   rí   rî   r   rï   r!   r!   r"   Útest_error_message_unsigned¼  s    z.TestAssertAllclose.test_error_message_unsignedN)r:   r;   r<   rÇ   r5  r9  r;  r<  r=  r>  r?  rA  r!   r!   r!   r"   r1  r  s   	r1  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   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Å   éìÿÿÿrò   é2   r3   rL   ro   ©	r)   ÚlinspaceÚfloat64Úr_Úfinfor4   Úepsr   Úepsneg©r   ÚnulprN   rK  rO   rL  r!   r!   r"   Útest_float64_passÍ  s    z*TestArrayAlmostEqualNulp.test_float64_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 rC  ©r)   rG  rH  rI  rJ  r4   rK  r	   r$   r   rL  rM  r!   r!   r"   Útest_float64_failß  s$      ÿ  ÿz*TestArrayAlmostEqualNulp.test_float64_failc                 C   sT   t  d¡}t jt jt jd� t j¡}||A }| t j¡}| t j¡}t||dƒ d S )Nl   ÿÿ r3   r   )r)   Zuint64r*   rR   rH  rq   r   )r   ÚoffsetZnan1_i64Znan2_i64Znan1_f64Znan2_f64r!   r!   r"   Útest_float64_ignore_nanï  s    
z0TestArrayAlmostEqualNulp.test_float64_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 rC  ©	r)   rG  r   rI  rJ  r4   rK  r   rL  rM  r!   r!   r"   Útest_float32_passú  s    z*TestArrayAlmostEqualNulp.test_float32_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 rC  ©r)   rG  r   rI  rJ  r4   rK  r	   r$   r   rL  rM  r!   r!   r"   Útest_float32_fail  s$      ÿ  ÿz*TestArrayAlmostEqualNulp.test_float32_failc                 C   sT   t  d¡}t jt jt jd� t j¡}||A }| t j¡}| t j¡}t||dƒ d S )Niÿÿ  r3   r   )r)   Zuint32r*   rR   r   rq   r   )r   rR  Znan1_i32Znan2_i32Znan1_f32Znan2_f32r!   r!   r"   Útest_float32_ignore_nan  s    
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Å   éüÿÿÿr/   rL   r3   ro   )	r)   rG  Úfloat16rI  rJ  r4   rK  r   rL  rM  r!   r!   r"   Útest_float16_pass#  s    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 rY  )r)   rG  r[  rI  rJ  r4   rK  r	   r$   r   rL  rM  r!   r!   r"   Útest_float16_fail1  s$      ÿ  ÿz*TestArrayAlmostEqualNulp.test_float16_failc                 C   sT   t  d¡}t jt jt jd� t j¡}||A }| t j¡}| t j¡}t||dƒ d S )Néÿ   r3   r   )r)   Zuint16r*   rR   r[  rq   r   )r   rR  Znan1_i16Znan2_i16Znan1_f16Znan2_f16r!   r!   r"   Útest_float16_ignore_nanA  s    
z0TestArrayAlmostEqualNulp.test_float16_ignore_nanc                 C   s$  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Å   rD  rò   rE  r3   rL   ù              ð?ro   r^   rF  ©r   rN  rN   ÚxirK  rO   rL  r!   r!   r"   Útest_complex128_passL  s"    z-TestArrayAlmostEqualNulp.test_complex128_passc                 C   s4  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Å   rD  rò   rE  r3   rL   ra  ro   rP  rb  r!   r!   r"   Útest_complex128_failc  sR     
 ÿ 
 ÿ 
 ÿ 
 ÿ 
 ÿ 
 ÿz-TestArrayAlmostEqualNulp.test_complex128_failc                 C   s$  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 r`  rT  rb  r!   r!   r"   Útest_complex64_pass€  s"    z,TestArrayAlmostEqualNulp.test_complex64_passc                 C   s4  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 re  rV  rb  r!   r!   r"   Útest_complex64_fail•  sR     
 ÿ 
 ÿ 
 ÿ 
 ÿ 
 ÿ 
 ÿz,TestArrayAlmostEqualNulp.test_complex64_failN)r:   r;   r<   rO  rQ  rS  rU  rW  rX  r\  r]  r_  rd  rf  rg  rh  r!   r!   r!   r"   rB  Ë  s   rB  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestULPc                 C   s   t j d¡}t||dd� d S )NrL   r   ©Úmaxulp)r)   ÚrandomÚrandnr   )r   rN   r!   r!   r"   Ú
test_equal³  s    zTestULP.test_equalc                 C   sR   t  d¡ t j¡}|dt j d¡ t j¡ 7 }t  t j¡j}t||| dd� d S )NrL   ç{®Gáz„?rò   rj  )	r)   rô   Úastyper   rl  rm  rJ  rK  r   ©r   rN   rK  r!   r!   r"   Útest_single·  s    zTestULP.test_singlec                 C   sR   t  d¡ t j¡}|dt j d¡ t j¡ 7 }t  t j¡j}t||| dd� d S )NrL   ro  éÈ   rj  )	r)   rô   rp  rH  rl  rm  rJ  rK  r   rq  r!   r!   r"   Útest_double¾  s    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 )Nrs  rj  )	r)   r   rH  r*   rd   rp  rJ  Úmaxr   )r   Údtrd   Ú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                      s   t ˆˆ ˆd�S ©Nrj  ©r   r!   )rd   rk  rR   r!   r"   rÁ   Ù  s   ÿz"TestULP.test_nan.<locals>.<lambda>c                      s   t ˆˆ ˆd�S rx  ry  r!   )rw  rk  rR   r!   r"   rÁ   Ü  s   ÿc                      s   t ˆˆˆ d�S rx  ry  r!   )rk  rR   Útinyr!   r"   rÁ   ß  s   ÿc                      s   t ˆˆˆ d�S rx  ry  r!   )rk  rR   Úzeror!   r"   rÁ   â  s   ÿc                      s   t ˆˆˆ d�S rx  ry  r!   )rk  rR   Únzeror!   r"   rÁ   å  s   ÿ)r)   r   rH  r*   rd   rp  rR   rJ  ru  rz  r³   r´   r	   r$   )r   rv  r!   )rw  rd   rk  rR   r|  rz  r{  r"   rÏ   Ë  s2    
ÿÿÿÿÿzTestULP.test_nanN)r:   r;   r<   rn  rr  rt  rÑ   rÏ   r!   r!   r!   r"   ri  ±  s
   ri  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestStringEqualc              	   C   sZ   t ddƒ t ddƒ t t¡�}t ddƒ W 5 Q R X t|jƒ}t|dƒ ttdd„ ƒ d S )NÚhellozhello
multilinezfoo
barz	hello
barz%Differences in strings:
- foo
+ helloc                   S   s
   t ddƒS )NrF   r~  ©r   r!   r!   r!   r"   rÁ   ô  rÂ   z-TestStringEqual.test_simple.<locals>.<lambda>)r   rZ   r   r$   rì   rí   r   r	   )r   rð   r8  r!   r!   r"   rÇ   ê  s    



ÿzTestStringEqual.test_simplec                 C   s   t ddƒ ttdd„ ƒ d S )Nza+*bc                   S   s
   t ddƒS )NZaaaza+br  r!   r!   r!   r"   rÁ   ú  rÂ   z,TestStringEqual.test_regex.<locals>.<lambda>)r   r	   r$   r8   r!   r!   r"   Ú
test_regexö  s    
ÿzTestStringEqual.test_regexN)r:   r;   r<   rÇ   r€  r!   r!   r!   r"   r}  é  s   r}  c                 C   sJ   z
| j }W n tk
r"   i }Y nX t|ƒ}d|k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                   @   s   e Zd ZdS )ú/test_warn_len_equal_call_scenarios.<locals>.modNr  r!   r!   r!   r"   r…    s   r…  r   )r…  r†  c                   @   s   e Zd Zdd„ ZdS )rˆ  c                 S   s   dddœ| _ d S )Nr&   r'   ©Zwarning1Zwarning2)r‚  r8   r!   r!   r"   Ú__init__'  s    ÿz8test_warn_len_equal_call_scenarios.<locals>.mod.__init__N)r:   r;   r<   rŠ  r!   r!   r!   r"   r…  &  s   r'   )r‡  )r…  Zmod_instr!   r!   r"   Ú"test_warn_len_equal_call_scenarios  s    ÿÿr‹  c                  C   s2   t jt } z| j ¡  W n tk
r,   Y nX | S r   )r!  r"  r:   r‚  Úclearrƒ  ©Úmy_modr!   r!   r"   Ú_get_fresh_mod0  s    
r�  c               	   C   sö   t ƒ } tt| di ƒi ƒ t| gd�� t d¡ t d¡ W 5 Q R X t| ji ƒ tƒ � t d¡ t d¡ W 5 Q R X t| dƒ dddœ| _t| gd�� t d¡ t d	¡ W 5 Q R X t| dƒ tƒ � t d¡ t d	¡ W 5 Q R X t| dƒ d S )
Nr‚  )r"  ÚignoreúSome warningr   r&   r'   r‰  zAnother warning)	r�  r   Úgetattrr   r  r.  r  r‚  r‡  r�  r!   r!   r"   Útest_clear_and_catch_warnings<  s*    


ÿ


r“  c               	   C   s2  t ƒ } tt| di ƒi ƒ dd„ }t| dƒ tƒ �0}| t¡ |jtj	j
d� t d¡ |ƒ  W 5 Q R X tt|jƒdƒ t|jd jjd dƒ t| dƒ tƒ }|j| d� |� t d¡ W 5 Q R X t| dƒ |j| d� |� t d¡ W 5 Q R X t| dƒ tƒ � t d¡ t d¡ W 5 Q R X t| dƒ d S )	Nr‚  c                  S   s   dd„ } t  | ddg¡ d S )Nc                 S   s   t jddd� | S )NzSome warning 2r'   ©Ú
stacklevelr  ©Zarrr!   r!   r"   r  d  s    zFtest_suppress_warnings_module.<locals>.warn_other_module.<locals>.warnr   ©r)   Zapply_along_axis©r  r!   r!   r"   Úwarn_other_modulea  s    z8test_suppress_warnings_module.<locals>.warn_other_moduler   ©Úmoduler‘  r&   r�  )r�  r   r’  r‡  r   Úrecordr$  Úfilterr)   ÚlibZ
shape_baser  r  r„  ÚlogÚmessagery   r.  )rŽ  r™  Úsupr!   r!   r"   Útest_suppress_warnings_module\  s2    	






r¢  c               	   C   sà   t ƒ } tt| di ƒi ƒ tƒ �}| t¡ t d¡ W 5 Q R X t| dƒ tƒ }| t¡ |� t d¡ W 5 Q R X t| dƒ |j| d� |� t d¡ W 5 Q R X t| dƒ tƒ � t 	d¡ t d¡ W 5 Q R X t| dƒ d S )Nr‚  r‘  r   rš  r�  )
r�  r   r’  r   r�  r$  r  r  r‡  r.  )rŽ  r¡  r!   r!   r"   Útest_suppress_warnings_typeŠ  s&    





r£  c               	   C   s`   t ƒ } |  t¡ | dd„ ƒ}tjdd��.}t d¡ |tƒ |tƒ tt|ƒdƒ W 5 Q R X d S )Nc                 S   s   t  d| ¡ d S )Nr‘  r  )Úcategoryr!   r!   r"   r  ª  s    z7test_suppress_warnings_decorate_no_record.<locals>.warnT)rœ  Úalwaysr&   )	r   r�  r$  r  r-  r.  ÚRuntimeWarningr   r„  )r¡  r  Úwr!   r!   r"   Ú)test_suppress_warnings_decorate_no_record¦  s    


r¨  c               
   C   sŽ  t ƒ } |  ¡ }| �~ | 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 5 Q R X | �~ | 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 5 Q R X t ƒ �`} |  ¡  t ƒ �6}|jdd� t d¡ t d¡ tt|jƒdƒ W 5 Q R X tt| jƒdƒ W 5 Q R X d S )NzSome other warning 2)r   r‘  úSome other warningr'   r&   r   )
r   rœ  r�  r  r  r   r„  rŸ  r   ry   )r¡  Zlog1Úlog2Úsup2r!   r!   r"   Útest_suppress_warnings_recordµ  s<    


 


 

r¬  c               
   C   s�  dd„ } t ƒ �J}| ¡  t dƒ� tdƒD ]}t d¡ q*W 5 Q R X tt|jƒdƒ W 5 Q R X t ƒ �T}| ¡  t dƒ�( tdƒD ]}t d¡ t d¡ q€W 5 Q R X tt|jƒdƒ W 5 Q R X t ƒ �Z}| ¡  t dƒ�. tdƒD ]}t d¡ t d¡ | ƒ  qàW 5 Q R X tt|jƒdƒ W 5 Q R X t ƒ �\}| ¡  t dƒ�0 tdƒD ] }t d¡ t d	¡ | ƒ  �qFW 5 Q R X tt|jƒdƒ W 5 Q R X d S )
Nc                  S   s   dd„ } t  | ddg¡ d S )Nc                 S   s   t jddd� | S )Nr‘  r'   r”  r  r–  r!   r!   r"   r  á  s    zJtest_suppress_warnings_forwarding.<locals>.warn_other_module.<locals>.warnr   r—  r˜  r!   r!   r"   r™  Þ  s    z<test_suppress_warnings_forwarding.<locals>.warn_other_moduler¥  r'   r‘  Úlocationr›  Úoncer©  )r   rœ  Úranger  r  r   r„  rŸ  )r™  r¡  Úir!   r!   r"   Ú!test_suppress_warnings_forwardingÝ  s<    








r±  c               
   C   s    t ƒ �*} tj | d¡}t|dƒ� W 5 Q R X W 5 Q R X ttj | ¡ ƒ d}zt ƒ �} tƒ ‚W 5 Q R X W n tk
r€   d}Y nX 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 5 Q R X W 5 Q R X ttj | ¡ ƒ d}zt ƒ �} tƒ ‚W 5 Q R X W n tk
rr   d}Y nX 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;   r<   r!  r"  Zclass_modulesr!   r!   r!   r"   r¾  -  s   r¾  c               	   C   s<   t ƒ } tƒ � t d¡ t d¡ W 5 Q R X t| ji ƒ d S )Nr�  r‘  )r�  r¾  r  r.  r  r   r‚  r�  r!   r!   r"   Ú%test_clear_and_catch_warnings_inherit2  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 5 Q R X 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   sT   dd„ }t tƒ� tƒ � |ƒ  W 5 Q R X W 5 Q R X t tƒ� t|ƒ W 5 Q R X d S )Nc                  S   s   g } |   | ¡ |   | ¡ | S r   rÁ  )r   r!   r!   r"   Ú
make_cycleJ  s    

z5TestAssertNoGcCycles.test_asserts.<locals>.make_cycle)r	   r$   r   )r   rÅ  r!   r!   r"   Útest_assertsI  s    

z!TestAssertNoGcCycles.test_assertsc              	      s€   G ‡ fdd„dƒ‰ z`t ˆ ƒ ¡}z$ttƒ� tdd„ ƒ W 5 Q R X W n* tk
rn   |ƒ dk	rjt d¡ ‚ Y nX W 5 dˆ _ X dS )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   )Úcycler8   r!   r!   r"   rŠ  e  s    zETestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__init__c                    s   d | _ ˆ jrˆ ƒ  d S r   )rÇ  rÅ  r8   ©ÚReferenceCycleInDelr!   r"   Ú__del__h  s    zDTestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__del__N)r:   r;   r<   Ú__doc__rÅ  rŠ  rÊ  r!   rÈ  r!   r"   rÉ  ^  s   rÉ  Fc                   S   s   d S r   r!   r!   r!   r!   r"   rÁ   v  rÂ   z1TestAssertNoGcCycles.test_fails.<locals>.<lambda>Nz*GC does not call __del__ on cyclic objects)	rÅ  ÚweakrefÚrefr	   r  r   r$   rZ   Úskip)r   r§  r!   rÈ  r"   Ú
test_failsW  s    


zTestAssertNoGcCycles.test_failsN)
r:   r;   r<   rË  rÄ  rÆ  rZ   rŠ   ZslowrÏ  r!   r!   r!   r"   rÀ  ;  s
   rÀ  )@r  r!  r³  rª   rZ   rÌ  Ú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   r=   rŒ   rž   r»   rà   rö   rý   rŠ   rÎ  r  r  r1  rB  ri  r}  r‡  r‹  r�  r“  r¢  r£  r¨  r¬  r±  r»  r½  r¾  r¿  r‹   rÀ  r!   r!   r!   r"   Ú<module>   sR   `. >-_b +m"3Y g8 .(/	