a
    hÝEb]Ù  ã                   @   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"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!   ú^/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/testing/tests/test_utils.pyÚ_test_equal   s    z_GenericTest._test_equalc                 C   s8   t tƒ� |  ||¡ W d   ƒ n1 s*0    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   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   |   g d¢d¡ d S )N©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   r:   r!   r!   r!   r"   r      s   r   c                   @   sn   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S )ÚTestArrayEqualc                 C   s
   t | _d S r   )r   r   r9   r!   r!   r"   ÚsetupD   s    zTestArrayEqual.setupc                    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    Úcr9   r!   r"   ÚfooI   s    

z.TestArrayEqual.test_generic_rank1.<locals>.fooú?bhilqpBHILQPfdgFDG©ZS1ZU1Nr!   ©r   rG   rE   r!   r9   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@   rD   r9   r!   r"   rG   k   s    

z.TestArrayEqual.test_generic_rank3.<locals>.foorH   rI   Nr!   rJ   r!   r9   r"   Útest_generic_rank3i   s
    

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'   r8   N)r)   r*   Únanr#   r%   ©r   r   r    rF   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%   rT   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g¡}|d  ¡ |d< |d  ¡ |d< tƒ �8}|jtdd�}|  ||¡ t	t
|ƒdƒ W d  ƒ n1 sÀ0    Y  dS )	zTest record arrays.r'   rV   rW   r&   rX   zelementwise == ©ÚmessageN)r)   rA   ÚfloatrC   r#   r   ÚrecordÚFutureWarningr%   r   Úlen)r   r   r    rF   ÚsupÚlr!   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©Úmaskrd   rf   )TFFre   )r)   ÚmaÚMaskedArrayr*   rS   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!   rp   r!   r!   r"   Ú__ne__·   s    zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__ne__N)r;   r<   r=   rr   rs   r!   r!   r!   r"   ÚMyArray³   s   rt   ç      ð?ç       @rd   )	r)   Úndarrayr*   Úviewr   Útyperm   r#   r%   ©r   rt   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 sb0    Y  |  ||¡ |  ||¡ |  ||¡ 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"   rt   Æ   s   rt   ru   rv   rd   )	r)   rw   r*   rx   r	   Ú	TypeErrorro   r#   r%   rz   r!   r!   r"   Ú+test_subclass_that_does_not_implement_npallÃ   s    
(z:TestArrayEqual.test_subclass_that_does_not_implement_npallN)r;   r<   r=   r?   rK   rQ   rR   rU   rY   rb   rl   r{   ÚpytestÚmarkÚskipifr   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   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   rO   rP   Úerr_msgr   r    r!   r!   r"   Útest_build_err_msg_defaultsÕ   s    z1TestBuildErrorMessage.test_build_err_msg_defaultsc                 C   sD   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   sD   t  g d¢¡}t  g d¢¡}d}t||g|dd�}d}t||ƒ d S )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é   s    z5TestBuildErrorMessage.test_build_err_msg_custom_namesc                 C   sD   t  g d¢¡}t  g d¢¡}d}t||g|dd�}d}t||ƒ d S )N)g0¸D   ð?rŠ   r‹   )g_p‰   ð?r�   rŽ   r�   rM   )Ú	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   r9   r!   r!   r"   r?     s    zTestEqual.setupc                 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)   rS   r%   r9   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)   rk   r%   r9   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%   r9   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_items$  s0    



zTestEqual.test_nat_itemsc                 C   s   |   dd¡ |  dd¡ d S )NÚabZabb)r   r%   r9   r!   r!   r"   Útest_non_numericC  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)   rS   r%   rk   r9   r!   r!   r"   Útest_complex_itemG  s
    zTestEqual.test_complex_itemc                 C   s   |   tjtj¡ d S r   )r%   r)   ÚPZEROÚNZEROr9   r!   r!   r"   Útest_negative_zeroN  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­   rS   r   r%   rN   r!   r!   r"   Útest_complexQ  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_objectW  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   r9   r!   r!   r"   r?   a  s    zTestArrayAlmostEqual.setupc                    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!   r9   r!   r"   Ú<lambda>n  ó    z5TestArrayAlmostEqual.test_closeness.<locals>.<lambda>c                      s   ˆ j dgdgdd�S r¼   r   r!   r9   r!   r"   r½   s  r¾   ©r   r	   r$   r9   r!   r9   r"   Útest_closenessd  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!   rN   r!   r"   r½   |  r¾   z2TestArrayAlmostEqual.test_simple.<locals>.<lambda>©r)   r*   r   r	   r$   r9   r!   rN   r"   Útest_simpleu  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*   rS   rk   r   r	   r$   r9   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 )	Nru   rv   rd   re   )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*   rC   rk   r	   r$   r9   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 )Nru   rv   rd   re   r¹   FTg      @rg   rc   )TTT)ru   rv   rd   )r)   r*   ri   Zmasked_arrayr   rj   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   ©Úsuperrr   rx   r)   rw   rp   ©Ú	__class__r!   r"   rr   ´  s    zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    s   t ƒ  |¡ tj¡S r   ©rÐ   Ú__lt__rx   r)   rw   rp   rÑ   r!   r"   rÔ   ·  s    zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   s   t ‚d S r   ©ÚNotImplementedErrorr   r!   r!   r"   ro   º  s    zKTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.all©r;   r<   r=   rr   rÔ   ro   Ú__classcell__r!   r!   rÑ   r"   rt   ³  s   rt   ru   rv   ©r)   rw   r*   rx   r   ©r   rt   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   r9   r!   r!   r"   r?   Ã  s    zTestAlmostEqual.setupc                    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!   r9   r!   r"   r½   Ð  r¾   z0TestAlmostEqual.test_closeness.<locals>.<lambda>c                      s   ˆ j dgdgdd�S r¼   r   r!   r9   r!   r"   r½   Õ  r¾   r¿   r9   r!   r9   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)   rS   r!   r9   r!   r"   r½   Ú  r¾   z/TestAlmostEqual.test_nan_item.<locals>.<lambda>c                      s   ˆ   tjtj¡S r   )r   r)   rS   rk   r!   r9   r!   r"   r½   Ü  r¾   c                      s   ˆ   tjtj¡S r   )r   r)   rk   rS   r!   r9   r!   r"   r½   Þ  r¾   )r   r)   rS   r	   r$   r9   r!   r9   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)   rk   r!   r9   r!   r"   r½   ä  r¾   z/TestAlmostEqual.test_inf_item.<locals>.<lambda>c                      s   ˆ   tj tj¡S r   rÞ   r!   r9   r!   r"   r½   æ  r¾   )r   r)   rk   r	   r$   r9   r!   r9   r"   Útest_inf_itemà  s    
ÿ
ÿzTestAlmostEqual.test_inf_itemc                 C   s   |   dd¡ d S r¬   )r%   r9   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)   rS   rk   r%   r9   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   rO   ÚzrP   r!   r!   r"   r³   ó  s    zTestAlmostEqual.test_complexc                 C   sx  t  g d¢¡}t  g d¢¡}t t¡� }| j||dd� W d  ƒ n1 sL0    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 sØ0    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†0    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 �s00    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Ú
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: inf)r)   r*   r…   r   r$   r   ÚstrÚvalueÚsplitr   rk   ©r   rO   rP   Úexc_infoZmsgsr!   r!   r"   Útest_error_messageû  sT    .þþ*,,z"TestAlmostEqual.test_error_messagec                 C   s   d}t  d¡}t t¡�}|  ||¡ W d  ƒ n1 s:0    Y  t|jƒ d¡}t	|d dƒ t	|d dƒ t	|d	 d
ƒ d}t  d¡}t t¡�}|  ||¡ W d  ƒ n1 s¸0    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ã   r.   z#Mismatched elements: 20 / 20 (100%)r/   ræ   rÁ   rç   úMax relative difference: 0.5)
r)   Úonesr…   r   r$   r   rè   ré   rê   r   rë   r!   r!   r"   Útest_error_message_21  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Ï   rp   rÑ   r!   r"   rr   K  s    zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    s   t ƒ  |¡ tj¡S r   rÓ   rp   rÑ   r!   r"   rÔ   N  s    zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   s   t ‚d S r   rÕ   r   r!   r!   r"   ro   Q  s    zFTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allr×   r!   r!   rÑ   r"   rt   J  s   rt   ru   rv   rÙ   rÚ   r!   r!   r"   rÛ   E  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   r9   r!   r!   r"   r?   Z  s    zTestApproxEqual.setupc                    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!   rN   r!   r"   r½   d  r¾   z7TestApproxEqual.test_simple_0d_arrays.<locals>.<lambda>rÂ   r9   r!   rN   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!   rN   r!   r"   r½   n  r¾   z3TestApproxEqual.test_simple_items.<locals>.<lambda>r¿   r9   r!   rN   r"   Útest_simple_itemsf  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½   u  r¾   z0TestApproxEqual.test_nan_array.<locals>.<lambda>c                      s   ˆ  ˆˆ ¡S r   r   r!   rÇ   r!   r"   r½   v  r¾   c                      s   ˆ  ˆ ˆ¡S r   r   r!   rÇ   r!   r"   r½   w  r¾   rÉ   r9   r!   rÊ   r"   rU   p  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É   r9   r!   rÊ   r"   rœ   y  s    
zTestApproxEqual.test_nan_itemsN)r;   r<   r=   r?   r÷   rø   rU   rœ   r!   r!   r!   r"   rò   X  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   r9   r!   r!   r"   r?   …  s    zTestArrayAssertLess.setupc                    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!   rN   r!   r"   r½   �  r¾   z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>ru   c                      s   ˆ   ˆˆ¡S r   r   r!   rN   r!   r"   r½   ‘  r¾   c                      s   ˆ   ˆˆ¡S r   r   r!   rN   r!   r"   r½   ’  r¾   rÂ   r9   r!   rN   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!   rN   r!   r"   r½   ™  r¾   z0TestArrayAssertLess.test_rank2.<locals>.<lambda>ru   c                      s   ˆ   ˆˆ¡S r   r   r!   rN   r!   r"   r½   �  r¾   c                      s   ˆ   ˆˆ¡S r   r   r!   rN   r!   r"   r½   ž  r¾   rÂ   r9   r!   rN   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!   rN   r!   r"   r½   ¥  r¾   z0TestArrayAssertLess.test_rank3.<locals>.<lambda>r   )r   r   r   c                      s   ˆ   ˆˆ¡S r   r   r!   rN   r!   r"   r½   ©  r¾   c                      s   ˆ   ˆˆ¡S r   r   r!   rN   r!   r"   r½   ª  r¾   )r)   rð   r   r	   r$   r9   r!   rN   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!   rN   r!   r"   r½   ±  r¾   z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>rÿ   c                      s   ˆ   ˆˆ¡S r   r   r!   rN   r!   r"   r½   ¶  r¾   ru   c                      s   ˆ   ˆˆ¡S r   r   r!   rN   r!   r"   r½   º  r¾   )r   r	   r$   r)   r*   r9   r!   rN   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É   r9   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   ˆ  ˆˆ ¡S r   r   r!   ©rÅ   r   rO   r!   r"   r½   Ê  r¾   z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>c                      s   ˆ  ˆ ˆ¡S r   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¾   ru   rv   c                      s   ˆ   ˆˆ¡S r   r   r!   rN   r!   r"   r½   Õ  r¾   )r)   r*   rS   r	   r$   r   r9   r!   )rÅ   r   rO   rP   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*   rk   r   r	   r$   r9   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   rO   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*   rk   r	   r$   r   r9   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 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                   @   s   e Zd ZdS )z%TestRaises.setup.<locals>.MyExceptionN©r;   r<   r=   r!   r!   r!   r"   ÚMyExceptionô  s   r  )Ú	ExceptionÚe)r   r  r!   r!   r"   r?   ó  s    zTestRaises.setupc                 C   s   |‚d S r   r!   )r   r  r!   r!   r"   Úraises_exceptionù  s    zTestRaises.raises_exceptionc                 C   s   d S r   r!   r9   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  r9   r!   r!   r"   Útest_correct_catchÿ  s    zTestRaises.test_correct_catchc                 C   s:   zt | jƒ| jƒtƒ W n ty,   Y d S 0 tdƒ‚d S )Nzshould have caught RuntimeError)r   r  r  ÚRuntimeErrorr$   r9   r!   r!   r"   Útest_wrong_exception  s
    zTestRaises.test_wrong_exceptionc                 C   s8   zt | jƒ| jƒƒ  W n ty*   Y d S 0 tdƒ‚d S )Nz$should have raised an AssertionError)r   r  r  r$   r9   r!   r!   r"   Útest_catch_no_raise
  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"   Úf  s    
zTestWarns.test_warn.<locals>.fr  r.   c                 S   s   | S r   r!   )rO   r!   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   r  Ú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<0    Y  t jd j}dd„ }tt|ƒ t	||dƒ d S )Nr  r  c                   S   s4   t ƒ � t d¡ W d   ƒ n1 s&0    Y  d S ©Nr  )r   r  r  r!   r!   r!   r"   Úno_warnings,  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_manager%  s    
(
ÿzTestWarns.test_context_managerc              	   C   sv   dd„ }d}t  ¡ �B t  dt¡ ztt|ƒ d}W n tyF   Y n0 W d   ƒ n1 s\0    Y  |rrtdƒ‚d S )Nc                   S   s   t  dt¡ d S r$  )r  r  ÚDeprecationWarningr!   r!   r!   r"   r  5  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_warning4  s    

$z!TestWarns.test_warn_wrong_warningN)r;   r<   r=   r#  r&  r,  r!   r!   r!   r"   r    s   r  c                   @   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 )Ú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ä   rM   g      à?)r   r	   r$   r)   r*   )r   rO   rP   r   r    r!   r!   r"   rÃ   H  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   sj   t  g d¢¡}t  g d¢¡}t t¡�}t||ƒ W d   ƒ n1 sF0    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*   r…   r   r$   r   rè   ré   r   ©r   r   r    rì   Úmsgr!   r!   r"   Útest_report_fail_percentagea  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*   rS   r   r   r!   r!   r"   Útest_equal_nanl  s    z!TestAssertAllclose.test_equal_nanc                 C   s2   t  t jg¡}t  t jg¡}ttt||dd� d S )NFr5  )r)   r*   rS   r	   r$   r   r   r!   r!   r"   Útest_not_equal_nanr  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*   rS   r   r   r   r   r   r!   r!   r"   Útest_equal_nan_defaultw  s    


z)TestAssertAllclose.test_equal_nan_defaultc                 C   sj   t  ddg¡}t  ddg¡}t t¡�}t||ƒ W d   ƒ n1 sF0    Y  t|jƒ}td|v ƒ d S )Nr   r&   r'   rï   r1  r2  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'   r.   r£   zm8[ns]r3   )r)   r*   r   r6   r!   r!   r"   Útest_timedelta‹  s    z!TestAssertAllclose.test_timedeltaN)r;   r<   r=   rÃ   r0  r4  r6  r7  r8  r9  r:  r!   r!   r!   r"   r-  F  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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   rM   rv   ©	r)   ÚlinspaceÚfloat64Úr_Úfinfor4   Úepsr   Úepsneg©r   ÚnulprO   rD  rP   rE  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 r<  ©r)   r@  rA  rB  rC  r4   rD  r	   r$   r   rE  rF  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*   rS   rA  rx   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 r<  ©	r)   r@  Úfloat32rB  rC  r4   rD  r   rE  rF  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 r<  ©r)   r@  rN  rB  rC  r4   rD  r	   r$   r   rE  rF  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*   rS   rN  rx   r   )r   rK  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/   rM   r3   rv   )	r)   r@  Úfloat16rB  rC  r4   rD  r   rE  rF  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 rS  )r)   r@  rU  rB  rC  r4   rD  r	   r$   r   rE  rF  r!   r!   r"   Útest_float16_fail÷  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*   rS   rU  rx   r   )r   rK  Znan1_i16Znan2_i16Znan1_f16Znan2_f16r!   r!   r"   Útest_float16_ignore_nan  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Á   r=  rî   r>  r3   rM   ù              ð?rv   re   r?  ©r   rG  rO   ÚxirD  rP   rE  r!   r!   r"   Útest_complex128_pass  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Á   r=  rî   r>  r3   rM   r[  rv   rI  r\  r!   r!   r"   Útest_complex128_fail)  s:    ÿÿÿÿÿÿ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 rZ  rM  r\  r!   r!   r"   Útest_complex64_passF  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 r_  rP  r\  r!   r!   r"   Útest_complex64_fail[  s:    ÿÿÿÿÿÿz,TestArrayAlmostEqualNulp.test_complex64_failN)r;   r<   r=   rH  rJ  rL  rO  rQ  rR  rV  rW  rY  r^  r`  ra  rb  r!   r!   r!   r"   r;  ‘  s   r;  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 )NrM   r   ©Úmaxulp)r)   ÚrandomÚrandnr   )r   rO   r!   r!   r"   Ú
test_equaly  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 )NrM   ç{®Gáz„?rî   rd  )	r)   rð   ÚastyperN  rf  rg  rC  rD  r   ©r   rO   rD  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 )NrM   ri  éÈ   rd  )	r)   rð   rj  rA  rf  rg  rC  rD  r   rk  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 )Nrm  rd  )	r)   rN  rA  r*   rk   rj  rC  Úmaxr   )r   Údtrk   Ú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 ©Nrd  ©r   r!   )rk   re  rS   r!   r"   r½   Ÿ  s   ÿz"TestULP.test_nan.<locals>.<lambda>c                      s   t ˆˆ ˆd�S rr  rs  r!   )rq  re  rS   r!   r"   r½   ¢  s   ÿc                      s   t ˆˆˆ d�S rr  rs  r!   )re  rS   Útinyr!   r"   r½   ¥  s   ÿc                      s   t ˆˆˆ d�S rr  rs  r!   )re  rS   Úzeror!   r"   r½   ¨  s   ÿc                      s   t ˆˆˆ d�S rr  rs  r!   )re  rS   Únzeror!   r"   r½   «  s   ÿ)r)   rN  rA  r*   rk   rj  rS   rC  ro  rt  r¯   r°   r	   r$   )r   rp  r!   )rq  rk   re  rS   rv  rt  ru  r"   rË   ‘  s2    
ÿÿÿÿÿzTestULP.test_nanN)r;   r<   r=   rh  rl  rn  rÍ   rË   r!   r!   r!   r"   rc  w  s
   rc  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestStringEqualc                 C   sn   t ddƒ t ddƒ t t¡�}t ddƒ W d   ƒ n1 s>0    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   s
   t ddƒS )NrG   rx  ©r   r!   r!   r!   r"   r½   º  r¾   z-TestStringEqual.test_simple.<locals>.<lambda>)r   r…   r   r$   rè   ré   r   r	   )r   rì   r3  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+bry  r!   r!   r!   r"   r½   À  r¾   z,TestStringEqual.test_regex.<locals>.<lambda>)r   r	   r$   r9   r!   r!   r"   Ú
test_regex¼  s    
ÿzTestStringEqual.test_regexN)r;   r<   r=   rÃ   rz  r!   r!   r!   r"   rw  ¯  s   rw  c                 C   st   z
| j }W n ty    i }Y n0 t|ƒ}d|v rf|d8 }tjd d… dkrZ|d urf|}n|d urf|}t||ƒ d S )NÚversionr&   r'   )r.   rå   )Ú__warningregistry__ÚAttributeErrorr_   r  Úversion_infor   )ÚmodÚn_in_contextÚpy34Úpy37Z	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|  r9   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   s0   t jt } z| j ¡  W n ty*   Y n0 | S r   )r  r  r;   r|  Úclearr}  ©Úmy_modr!   r!   r"   Ú_get_fresh_mod  s    
rŠ  c                  C   sJ  t ƒ } tt| di ƒi ƒ t| gd��$ t d¡ t d¡ W d   ƒ n1 sN0    Y  t| ji ƒ tƒ �$ t d¡ t d¡ W d   ƒ n1 s”0    Y  t| ddd� t| gd��$ t d¡ t d¡ W d   ƒ n1 sâ0    Y  t| ddd� tƒ �$ t d¡ t d¡ W d   ƒ n1 �s,0    Y  t| d	ddd
� d S )Nr|  )r  ÚignoreúSome warningr&   r   ©r‚  zAnother warningr'   )r�  r‚  )	rŠ  r   Úgetattrr   r  r*  r  r|  rƒ  rˆ  r!   r!   r"   Útest_clear_and_catch_warnings  s$    
(
(
(
*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 sp0    Y  tt|jƒdƒ t|jd jjd dƒ t| ddd� tƒ }|j| d� |� t d¡ W d   ƒ n1 sæ0    Y  t| dƒ |j| d� |� t d¡ W d   ƒ n1 �s,0    Y  t| dƒ tƒ �$ t d	¡ t d¡ W d   ƒ n1 �sr0    Y  t| dd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  1  s    zFtest_suppress_warnings_module.<locals>.warn_other_module.<locals>.warnr   ©r)   Zapply_along_axis©r  r!   r!   r"   Úwarn_other_module.  s    z8test_suppress_warnings_module.<locals>.warn_other_moduler   ©ÚmodulerŒ  r&   r�  r‹  )rŠ  r   rŽ  rƒ  r   r]   r   Úfilterr)   ÚlibZ
shape_baser  r  r_   Úlogr[   r€   r*  )r‰  r•  r`   r!   r!   r"   Útest_suppress_warnings_module)  s2    	


$(
*

*r›  c                  C   s6  t ƒ } tt| di ƒi ƒ tƒ �$}| t¡ t d¡ W d   ƒ n1 sH0    Y  t| dƒ tƒ }| t¡ |� t d¡ W d   ƒ n1 s�0    Y  t| dƒ |j| d� |� t d¡ W d   ƒ n1 sÔ0    Y  t| dƒ tƒ �$ t 	d¡ t d¡ W d   ƒ n1 �s0    Y  t| ddd� d S )Nr|  rŒ  r   r–  r‹  r&   r�  )
rŠ  r   rŽ  r   r˜  r   r  r  rƒ  r*  )r‰  r`   r!   r!   r"   Útest_suppress_warnings_typeW  s&    
(

(
(

*rœ  c                  C   st   t ƒ } |  t¡ | dd„ ƒ}tjdd��8}t d¡ |tƒ |tƒ tt|ƒdƒ W d   ƒ n1 sf0    Y  d S )Nc                 S   s   t  d| ¡ d S )NrŒ  r  )Úcategoryr!   r!   r"   r  x  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_recordt  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 d   ƒ n1 s 0    Y  | �ˆ | 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>0    Y  t ƒ �€} |  ¡  t ƒ �@}|jdd� t d¡ t d¡ tt|jƒdƒ W d   ƒ n1 �s¦0    Y  tt| jƒdƒ W d   ƒ n1 �sÖ0    Y  d S )NzSome other warning 2rZ   rŒ  úSome other warningr'   r&   r   )
r   r]   r˜  r  r  r   r_   rš  r[   r€   )r`   Zlog1Úlog2Úsup2r!   r!   r"   Útest_suppress_warnings_recordƒ  s<    


4


6

0r¥  c               	   C   s<  dd„ } t ƒ �h}| ¡  t dƒ�( tdƒD ]}t d¡ q*W d   ƒ n1 sN0    Y  tt|jƒdƒ W d   ƒ n1 s|0    Y  t ƒ �r}| ¡  t dƒ�2 tdƒD ]}t d¡ t d¡ q¨W d   ƒ n1 sÖ0    Y  tt|jƒdƒ W d   ƒ n1 �s0    Y  t ƒ �|}| ¡  t dƒ�: tdƒD ] }t d¡ t d¡ | ƒ  �q2W d   ƒ n1 �sj0    Y  tt|jƒdƒ W d   ƒ n1 �sš0    Y  t ƒ �|}| ¡  t dƒ�: tdƒD ] }t d¡ t d	¡ | ƒ  �qÆW d   ƒ n1 �sþ0    Y  tt|jƒdƒ W d   ƒ n1 �s.0    Y  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<    
*.

*0


*0


*rª  c               	   C   sÚ   t ƒ �H} tj | d¡}t|dƒ� W d   ƒ n1 s60    Y  W d   ƒ n1 sT0    Y  ttj | ¡ ƒ d}z0t ƒ �} tƒ ‚W d   ƒ n1 s˜0    Y  W n tyº   d}Y n0 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(0    Y  W d   ƒ n1 sF0    Y  ttj | ¡ ƒ d}z0t ƒ �} tƒ ‚W d   ƒ n1 sŠ0    Y  W n ty¬   d}Y n0 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   sP   t ƒ } tƒ �$ t d¡ t d¡ W d   ƒ n1 s60    Y  t| ji ƒ d S )Nr‹  rŒ  )rŠ  r·  r  r*  r  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*0    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 s40    Y  W d   ƒ n1 sR0    Y  t tƒ� t|ƒ W d   ƒ n1 s‚0    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    
B
z!TestAssertNoGcCycles.test_assertsc                    s˜   G ‡ fdd„dƒ‰ zxt  ˆ ƒ ¡}z8ttƒ� tdd„ ƒ W d  ƒ n1 sL0    Y  W n( ty€   |ƒ dur|t d¡ ‚ Y n0 W dˆ _ndˆ _0 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   )Úcycler9   r!   r!   r"   r…  3  s    zETestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__init__c                    s   d | _ ˆ jrˆ ƒ  d S r   )rÀ  r¾  r9   ©ÚReferenceCycleInDelr!   r"   Ú__del__6  s    zDTestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__del__N)r;   r<   r=   Ú__doc__r¾  r…  rÃ  r!   rÁ  r!   r"   rÂ  ,  s   rÂ  c                   S   s   d S r   r!   r!   r!   r!   r"   r½   D  r¾   z1TestAssertNoGcCycles.test_fails.<locals>.<lambda>Nz*GC does not call __del__ on cyclic objectsF)	ÚweakrefÚrefr	   r  r   r$   r…   Úskipr¾  )r   r   r!   rÁ  r"   Ú
test_fails%  s    
.


zTestAssertNoGcCycles.test_failsN)
r;   r<   r=   rÄ  r½  r¿  r…   r†   ZslowrÈ  r!   r!   r!   r"   r¹  	  s
   r¹  )NN)@r  r  r¬  r¦   r…   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  r-  r;  rc  rw  rƒ  r†  rŠ  r�  r›  rœ  r¡  r¥  rª  r´  r¶  r·  r¸  r‡   r¹  r!   r!   r!   r"   Ú<module>   sR   `. -_b +m"3K g8
".(/	