o
    ðT·j8 ã                   @   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Zd dl	m
  mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z" G dd„ 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*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/dd„ Z0dd „ Z1d!d"„ Z2d#d$„ Z3d%d&„ Z4d'd(„ Z5d)d*„ Z6d+d,„ Z7d-d.„ Z8d/d0„ Z9d1d2„ Z:G d3d4„ d4eƒZ;d5d6„ Z<ej=j>e" d7d8�G d9d:„ d:ƒƒZ?ej= @d;eeg¡d<d=„ ƒZAdS )>é    N)Úassert_equalÚassert_array_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_array_lessÚbuild_err_msgÚassert_raisesÚassert_warnsÚassert_no_warningsÚassert_allcloseÚassert_approx_equalÚassert_array_almost_equal_nulpÚassert_array_max_ulpÚclear_and_catch_warningsÚsuppress_warningsÚassert_string_equalÚassert_ÚtempdirÚtemppathÚassert_no_gc_cyclesÚHAS_REFCOUNTc                   @   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   úa/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/numpy/testing/tests/test_utils.pyÚ_test_equal   ó   z_GenericTest._test_equalc                 C   s:   t tƒ� |  ||¡ W d   ƒ d S 1 sw   Y  d S r   )r   ÚAssertionErrorr   r   r   r   r    Ú_test_not_equal   s   
"ÿz_GenericTest._test_not_equalc                 C   s,   t  ddg¡}t  ddg¡}|  ||¡ dS )z/Test two equal array of rank 1 are found equal.é   é   N©ÚnpÚarrayr!   r   r   r   r    Útest_array_rank1_eq   ó   z _GenericTest.test_array_rank1_eqc                 C   s,   t  ddg¡}t  ddg¡}|  ||¡ dS )z7Test two different array of rank 1 are found not equal.r%   r&   N©r(   r)   r$   r   r   r   r    Útest_array_rank1_noteq%   r+   z#_GenericTest.test_array_rank1_noteqc                 C   s<   t  ddgddgg¡}t  ddgddgg¡}|  ||¡ dS )z/Test two equal array of rank 2 are found equal.r%   r&   é   é   Nr'   r   r   r   r    Útest_array_rank2_eq,   s   z _GenericTest.test_array_rank2_eqc                 C   s4   t  ddg¡}t  ddgddgg¡}|  ||¡ dS )ú:Test two arrays with different shapes are found not equal.r%   r&   Nr,   r   r   r   r    Útest_array_diffshape3   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_objarray:   s   z_GenericTest.test_objarrayc                 C   s   |   g d¢d¡ d S )N©r%   r&   r.   )r!   ©r   r   r   r    Útest_array_likes?   ó   z_GenericTest.test_array_likesN)Ú__name__Ú
__module__Ú__qualname__r!   r$   r*   r-   r0   r2   r7   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d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"ÚTestArrayEqualc                 C   ó
   t | _d S r   )r   r   r9   r   r   r    Úsetup_methodE   ó   
zTestArrayEqual.setup_methodc                    ó4   ‡ fdd„}dD ]}||ƒ qdD ]}||ƒ qdS )z!Test rank 1 array for all dtypes.c                    óL   t  d| ¡}| d¡ | ¡ }| ¡ }| d¡ ˆ  ||¡ ˆ  ||¡ d S )Nr&   r%   r   ©r(   ÚemptyÚfillÚcopyr!   r$   ©Útr   r   Úcr9   r   r    ÚfooJ   ó   

z.TestArrayEqual.test_generic_rank1.<locals>.fooú?bhilqpBHILQPfdgFDG©ÚS1ÚU1Nr   ©r   rL   rJ   r   r9   r    Útest_generic_rank1H   ó   


ÿz!TestArrayEqual.test_generic_rank1c                 C   sÜ   t  d¡}t  d¡}t t¡�}|  ||¡ W d   ƒ n1 s w   Y  t|jƒ}td|v ƒ |}|  ||¡ t  d¡}t  d¡}d}tjtt	 
|¡d�� |  ||¡ W d   ƒ n1 s_w   Y  |}|  ||¡ d S )Nl   Cj¬<T"3ÿËwÝ¤-l   (M$c7u£†vÈz"Mismatched elements: 1 / 1 (100%)
g„L”xrú�Br   z‰Mismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 4.39506535e+12
Max relative difference among violations: inf
©Úmatch)r(   r)   ÚpytestÚraisesr#   r   ÚstrÚvaluer   ÚreÚescape)r   ÚxÚyÚexc_infoÚmsgÚexpected_msgr   r   r    Útest_0_ndim_array[   s&   

ÿ
ÿ

ÿz TestArrayEqual.test_0_ndim_arrayc                    rC   )z!Test rank 3 array for all dtypes.c                    rD   )N)r/   r&   r.   r%   r   rE   rI   r9   r   r    rL   v   rM   z.TestArrayEqual.test_generic_rank3.<locals>.foorN   rO   Nr   rR   r   r9   r    Útest_generic_rank3t   rT   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   rK   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$   re   r   r   r    Útest_string_arrays‘   s
   z!TestArrayEqual.test_string_arraysc                 C   s¾   t  ddtfdtfg¡}ddg|d< ddg|d< | ¡ }|  ||¡ t  ddtfdtfdtfg¡}|d  ¡ |d< |d  ¡ |d< t t¡� |  ||¡ W d  ƒ dS 1 sXw   Y  dS )zTest record arrays.r&   rg   rh   r%   ri   N)	r(   rF   ÚfloatrH   r!   rW   rX   Ú	TypeErrorr$   re   r   r   r    Útest_recarraysœ   s   ÿ"ÿzTestArrayEqual.test_recarraysc                 C   sˆ   t jjg d¢g d¢d�}t  dt jdg¡}|  ||¡ |  ||¡ t jjg d¢g d¢d�}t  t jddg¡}|  ||¡ |  ||¡ d S )N©ç      @ç      @ç      @)FTF©Úmaskro   rq   )TFFrp   )r(   ÚmaÚMaskedArrayr)   rd   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}t	j
tt |¡d�� |  ||¡ W d   ƒ n1 saw   Y  t  dd	g¡ |¡}d
}t	j
tt |¡d�� |  ||¡ W d   ƒ d S 1 sŽw   Y  d S )Nc                   @   ó   e Zd Zdd„ Zdd„ ZdS )z?TestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArrayc                 S   s   t t | |¡ ¡ ƒS r   )Úboolr(   ÚequalÚall©r   Úotherr   r   r    Ú__eq__¾   r;   zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__eq__c                 S   s
   | |k S r   r   r|   r   r   r    Ú__ne__Á   rB   zFTestArrayEqual.test_subclass_that_overrides_eq.<locals>.MyArray.__ne__N)r<   r=   r>   r~   r   r   r   r   r    ÚMyArray½   s    r€   ç      ð?ç       @ro   z{Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 1.
Max relative difference among violations: 0.5rU   ç        g333333@z{Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 2.
Max relative difference among violations: inf)r(   Úndarrayr)   Úviewr   Útypery   r!   r$   rW   rX   r#   r[   r\   )r   r€   r   r   ra   rK   r   r   r    Útest_subclass_that_overrides_eq¸   s$   ÿ"ÿz.TestArrayEqual.test_subclass_that_overrides_eqc                 C   s”   G dd„ dt jƒ}t  ddg¡ |¡}t  ddg¡ |¡}ttƒ� t  |¡ W d   ƒ n1 s1w   Y  |  ||¡ |  ||¡ |  ||¡ d S )Nc                   @   ó   e Zd Zdd„ ZdS )zKTestArrayEqual.test_subclass_that_does_not_implement_npall.<locals>.MyArrayc                 _   s   t S r   )ÚNotImplemented©r   ÚargsÚkwargsr   r   r    Ú__array_function__Ü   ó   z^TestArrayEqual.test_subclass_that_does_not_implement_npall.<locals>.MyArray.__array_function__N)r<   r=   r>   r�   r   r   r   r    r€   Û   ó    r€   r�   r‚   ro   )	r(   r„   r)   r…   r   rl   r{   r!   r$   )r   r€   r   r   r   r   r    Ú+test_subclass_that_does_not_implement_npallÚ   s   
ÿz:TestArrayEqual.test_subclass_that_does_not_implement_npallc              	   C   s–   t  t¡�< tjdd�� tj t g d¢tj¡t g d¢tj¡¡ W d   ƒ n1 s,w   Y  W d   ƒ d S W d   ƒ d S 1 sDw   Y  d S )NÚraise©r{   r8   )r%   gœWw'&l¡7r.   )	rW   rX   r#   r(   ÚerrstateÚtestingr   r)   Úfloat32r9   r   r   r    Útest_suppress_overflow_warningsç   s   þÿÿ"ÿz.TestArrayEqual.test_suppress_overflow_warningsc                 C   s"   t  g d¢¡}d}|  ||¡ dS )z@Test comparing an array with a scalar when all values are equal.©r�   r�   r�   r�   Nr'   r   r   r   r    Útest_array_vs_scalar_is_equalï   s   z,TestArrayEqual.test_array_vs_scalar_is_equalc                 C   s¸   t  g d¢¡}t  g d¢¡}d}tjtt |¡d�� |  ||¡ W d  ƒ n1 s+w   Y  t  g d¢¡}d}tjtt |¡d�� |  ||¡ W d  ƒ dS 1 sUw   Y  dS )z@Test comparing an array with a scalar when not all values equal.)éªˆ  éŒS égµ é6š )r™   rš   r›   r   zMismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 563766
Max relative difference among violations: infrU   N)r™   rš   gÍÌÌÌœÕArœ   z‹Mismatched elements: 2 / 4 (50%)
Max absolute difference among violations: 563766.
Max relative difference among violations: 4.54902139e-07©r(   r)   rW   rX   r#   r[   r\   r   ©r   r   r   ra   r   r   r    Útest_array_vs_array_not_equalö   s   ÿ"ÿz,TestArrayEqual.test_array_vs_array_not_equalc                 C   sR   t  g d¢¡}d}t t¡� | j||dd� W d  ƒ dS 1 s"w   Y  dS )z9Test comparing an array with a scalar with strict option.r—   r�   T©ÚstrictN©r(   r)   rW   rX   r#   r   r   r   r   r    Útest_array_vs_scalar_strict
  s
   "ÿz*TestArrayEqual.test_array_vs_scalar_strictc                 C   s0   t  g d¢¡}t  g d¢¡}| j||dd� dS )ú-Test comparing two arrays with strict option.r—   Tr    N)r(   r)   r   r   r   r   r    Útest_array_vs_array_strict  s   z)TestArrayEqual.test_array_vs_array_strictc                 C   s\   t  g d¢¡}t  g d¢¡}t t¡� | j||dd� W d  ƒ dS 1 s'w   Y  dS )r¤   )r%   r%   r%   r—   Tr    Nr¢   r   r   r   r    Ú test_array_vs_float_array_strict  s
   "ÿz/TestArrayEqual.test_array_vs_float_array_strictN)r<   r=   r>   rA   rS   rb   rc   rf   rj   rm   rw   r‡   r�   r–   r˜   rŸ   r£   r¥   r¦   r   r   r   r    r?   C   s"    
"r?   c                   @   ó,   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   r]   r^   Úerr_msgr   r   r   r   r    Útest_build_err_msg_defaults$  s   z1TestBuildErrorMessage.test_build_err_msg_defaultsc                 C   óD   t  g d¢¡}t  g d¢¡}d}t||g|dd�}d}t||ƒ d S )Nr©   r¬   r¯   F)Úverbosez)
Items are not equal: There is a mismatchr°   r±   r   r   r    Útest_build_err_msg_no_verbose/  s   z3TestBuildErrorMessage.test_build_err_msg_no_verbosec                 C   r´   )Nr©   r¬   r¯   )ÚFOOÚBAR)Únamesz{
Items are not equal: There is a mismatch
 FOO: array([1.00001, 2.00002, 3.00003])
 BAR: array([1.00002, 2.00003, 3.00004])r°   r±   r   r   r    Útest_build_err_msg_custom_names8  ó   z5TestBuildErrorMessage.test_build_err_msg_custom_namesc                 C   r´   )N)g0¸D   ð?rª   r«   )g_p‰   ð?r­   r®   r¯   é
   )Ú	precisionzš
Items are not equal: There is a mismatch
 ACTUAL: array([1.000000001, 2.00002    , 3.00003    ])
 DESIRED: array([1.000000002, 2.00003    , 3.00004    ])r°   r±   r   r   r    Ú#test_build_err_msg_custom_precisionC  r»   z9TestBuildErrorMessage.test_build_err_msg_custom_precisionN)r<   r=   r>   r³   r¶   rº   r¾   r   r   r   r    r¨   "  s
    	r¨   c                   @   ó\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú	TestEqualc                 C   r@   r   )r   r   r9   r   r   r    rA   Q  rB   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(   rd   r$   r9   r   r   r    Útest_nan_itemsT  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(   rv   r$   r9   r   r   r    Útest_inf_itemsZ  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 ]\}	}
|  |	|
¡ |  |	g|
g¡ |  |	g|
¡ q2t ||¡D ]\}	}
|  |	|
¡ |  |	g|
g¡ |  |	g|
¡ qRt ||¡D ]E\}	}
|  |	|
¡ |  |	|
g¡ |  |	g|
g¡ |  |	gt  dd¡¡ |  |
gt  dd¡¡ |  |	gt  dd¡¡ |  |
gt  dd¡¡ qrd S )NÚNaTrÅ   ÚnsrÄ   é{   )r(   rÇ   Útimedelta64Ú	itertoolsÚproductr   r$   )r   Únadt_no_unitÚnadt_sÚnadt_dÚnatd_no_unitÚnatd_sÚnatd_dÚdtsÚtdsr   r   r   r   r    Útest_nat_itemss  s2   



ùzTestEqual.test_nat_itemsc                 C   s   |   dd¡ |  dd¡ d S )NÚabÚabb)r   r$   r9   r   r   r    Útest_non_numeric’  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(   rd   r$   rv   r9   r   r   r    Útest_complex_item–  s
   "zTestEqual.test_complex_itemc                 C   s   |   tjtj¡ d S r   )r$   ÚncuÚPZEROÚNZEROr9   r   r   r    Útest_negative_zero�  r;   zTestEqual.test_negative_zeroc                 C   sR   t  tddƒtdt jƒg¡}t  tddƒtddƒg¡}|  ||¡ |  ||¡ d S rÛ   ©r(   r)   rÜ   rd   r   r$   ©r   r]   r^   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>   rA   rÂ   rÃ   rÈ   r×   rÚ   rÝ   rá   rä   rç   r   r   r   r    rÀ   O  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 )ÚTestArrayAlmostEqualc                 C   r@   r   )r   r   r9   r   r   r    rA   °  rB   z!TestArrayAlmostEqual.setup_methodc                 C   sN  d}t jtt |¡d�� | jdddd� W d   ƒ n1 sw   Y  | jdgdgdd� d}t jtt |¡d�� | jdgdgdd� W d   ƒ n1 sOw   Y  dd	g}d
dg}d}t jtt |¡d�� | j||dd� W d   ƒ n1 s{w   Y  d}t jtt |¡d�� | j||dd� W d   ƒ d S 1 s w   Y  d S )Nz}Mismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.5
Max relative difference among violations: infrU   ç      ø?rƒ   r   ©Údecimalçõ…�óþÿ÷?ge(åÿÿ÷?giUMuÿ>gB?×çÿÿ÷?zMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 3.e-05
Max relative difference among violations: infé   z~Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 3.e-05
Max relative difference among violations: 1.©rW   rX   r#   r[   r\   r   )r   ra   r   r   r   r   r    Útest_closeness³  s&   ÿÿÿ"ÿz#TestArrayAlmostEqual.test_closenessc                 C   s†   t  dg¡}t  dg¡}| j||dd� | j||dd� d}tjtt |¡d�� | j||dd� W d   ƒ d S 1 s<w   Y  d S )	Ng¯”eˆãH“@gšwœ¢ãH“@r.   rê   r/   z‹Mismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.e-04
Max relative difference among violations: 8.10226812e-08rU   é   ©r(   r)   r   rW   rX   r#   r[   r\   ©r   r]   r^   ra   r   r   r    Útest_simpleØ  s   "ÿz TestArrayAlmostEqual.test_simplec                 C   s>  g d¢}d}d}t jtt |¡d�� | j||dd� W d   ƒ n1 s%w   Y  d}t jtt |¡d�� | j||dd� W d   ƒ n1 sIw   Y  ddg}d	}t jtt |¡d�� | j||d
d� W d   ƒ n1 sqw   Y  d}d	}t jtt |¡d�� | j||d
d� W d   ƒ d S 1 s˜w   Y  d S )N)çŒmlzµ@gHPüXŒŠ@rƒ   rô   z„Mismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: 1.rU   é	   rê   z‹Mismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: 5.4722099rƒ   zƒMismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 5498.42354
Max relative difference among violations: infrí   r   rî   rž   r   r   r    Útest_array_vs_scalarç  s(   ÿÿÿ"ÿz)TestArrayAlmostEqual.test_array_vs_scalarc                    sz   t  t jg¡‰t  dg¡‰t  t jg¡‰ ˆ ˆˆ¡ tt‡‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ d S )Nr%   c                      ó   ˆ  ˆ ˆ¡S r   r   r   ©ÚananÚaoner   r   r    Ú<lambda>  ó    z/TestArrayAlmostEqual.test_nan.<locals>.<lambda>c                      ó   ˆ  ˆˆ ¡S r   r   r   ©Úainfrù   r   r   r    rû     rü   c                      r÷   r   r   r   rþ   r   r    rû     rü   ©r(   r)   rd   rv   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 )	Nr�   r‚   ro   rp   )r   r   c                      r÷   r   r   r   ©r   r   r   r   r    rû     rü   z/TestArrayAlmostEqual.test_inf.<locals>.<lambda>c                      r÷   r   r   r   r  r   r    rû     rü   )r(   r)   rH   rv   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 )Nr�   r‚   ro   rp   rƒ   FTg      @rr   rn   )TTT)r�   r‚   ro   )r(   r)   rt   Úmasked_arrayr   ru   r!   Úmaskedr   r   r   r    Útest_subclass  s.   ÿ
z"TestArrayAlmostEqual.test_subclassc                 C   s¬   G dd„ dt jƒ}t  ddg¡ |¡}|  ||¡ t  ddg¡ |¡}t|ƒ t  ddg¡ |¡}d}tjtt	 
|¡d�� |  ||¡ W d   ƒ d S 1 sOw   Y  d S )	Nc                       ó0   e Zd Z‡ fdd„Z‡ fdd„Zdd„ Z‡  ZS )z5TestArrayAlmostEqual.test_subclass_2.<locals>.MyArrayc                    ó   t ƒ  |¡ tj¡S r   ©Úsuperr~   r…   r(   r„   r|   ©Ú	__class__r   r    r~   >  r;   z<TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.__eq__c                    r	  r   ©r  Ú__lt__r…   r(   r„   r|   r  r   r    r  A  r;   z<TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.__lt__c                 _   s   t | ƒS r   r’   rŠ   r   r   r    r{   D  s   z9TestArrayAlmostEqual.test_subclass_2.<locals>.MyArray.all©r<   r=   r>   r~   r  r{   Ú__classcell__r   r   r  r    r€   =  ó    r€   r�   r‚   TéÊ   z�Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 200.
Max relative difference among violations: 0.99009rU   )r(   r„   r)   r…   r   r{   rW   rX   r#   r[   r\   )r   r€   r   Úzr   ra   r   r   r    Útest_subclass_28  s   
"ÿz$TestArrayAlmostEqual.test_subclass_2c                 C   ó6   G dd„ dt jƒ}t  ddg¡ |¡}|  ||¡ d S )Nc                       r  )zGTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                    r	  r   r
  r|   r  r   r    r~   Y  r;   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    r	  r   r  r|   r  r   r    r  \  r;   zNTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   ó   t ‚r   ©ÚNotImplementedErrorrŠ   r   r   r    r{   _  rŽ   zKTestArrayAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allr  r   r   r  r    r€   X  r  r€   r�   r‚   ©r(   r„   r)   r…   r   ©r   r€   r   r   r   r    Ú!test_subclass_that_cannot_be_boolS  ó   
z6TestArrayAlmostEqual.test_subclass_that_cannot_be_boolN)r<   r=   r>   rA   rï   ró   rö   r  r  r  r  r  r   r   r   r    rè   ®  s    %!
rè   c                   @   r¿   )ÚTestAlmostEqualc                 C   r@   r   )r   r   r9   r   r   r    rA   h  rB   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 ©Nré   rƒ   r   rê   r   r   r9   r   r    rû   u  ó    z0TestAlmostEqual.test_closeness.<locals>.<lambda>c                      s   ˆ j dgdgdd�S r  r   r   r9   r   r    rû   z  s    ©r   r   r#   r9   r   r9   r    rï   k  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                      ó   ˆ   tjd¡S rÁ   )r   r(   rd   r   r9   r   r    rû     ó    z/TestAlmostEqual.test_nan_item.<locals>.<lambda>c                      ó   ˆ   tjtj¡S r   )r   r(   rd   rv   r   r9   r   r    rû   �  r   c                      r$  r   )r   r(   rv   rd   r   r9   r   r    rû   ƒ  r   )r   r(   rd   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                      r"  rÁ   ©r   r(   rv   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û   ‹  s    )r   r(   rv   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�  r"   z TestAlmostEqual.test_simple_itemc                 C   s¬   |   tddƒtddƒ¡ |   tdtjƒtdtjƒ¡ |   ttjtjƒttjtjƒ¡ |  tdtjƒtddƒ¡ |  ttjdƒtdtjƒ¡ |  ttjtjƒttjdƒ¡ d S rÛ   )r   rÜ   r(   rd   rv   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   r]   r  r^   r   r   r    rä   ˜  s   zTestAlmostEqual.test_complexc                 C   sr  t  g d¢¡}t  g d¢¡}d}tjtt |¡d�� | j||dd� W d  ƒ n1 s-w   Y  d}tjtt |¡d�� |  ||¡ W d  ƒ n1 sOw   Y  t  t jd	g¡}t  t jd
g¡}d}tjtt |¡d�� |  ||¡ W d  ƒ n1 s�w   Y  t  d
dg¡}t  d	d	g¡}d}tjtt |¡d�� |  ||¡ W d  ƒ dS 1 s²w   Y  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®   a  Mismatched elements: 3 / 3 (100%)
Max absolute difference among violations: 1.e-05
Max relative difference among violations: 3.33328889e-06
 ACTUAL: array([1.00000000001, 2.00000000002, 3.00003      ])
 DESIRED: array([1.00000000002, 2.00000000003, 3.00004      ])rU   é   rê   NzåMismatched elements: 1 / 3 (33.3%)
Max absolute difference among violations: 1.e-05
Max relative difference among violations: 3.33328889e-06
 ACTUAL: array([1.     , 2.     , 3.00003])
 DESIRED: array([1.     , 2.     , 3.00004])r   r%   z±Mismatched elements: 1 / 2 (50%)
Max absolute difference among violations: 1.
Max relative difference among violations: 1.
 ACTUAL: array([inf,  0.])
 DESIRED: array([inf,  1.])r&   z{Mismatched elements: 2 / 2 (100%)
Max absolute difference among violations: 2
Max relative difference among violations: inf)	r(   r)   rW   rX   r#   r[   r\   r   rv   rò   r   r   r    Útest_error_message   s,   	ÿÿÿ"ÿz"TestAlmostEqual.test_error_messagec                 C   s¬   	 d}t  d¡}d}tjtt |¡d�� |  ||¡ W d  ƒ n1 s%w   Y  d}t  d¡}d}tjtt |¡d�� |  ||¡ W d  ƒ dS 1 sOw   Y  dS )z)Check the message is formatted correctly r&   é   z}Mismatched elements: 20 / 20 (100%)
Max absolute difference among violations: 1.
Max relative difference among violations: 1.rU   Nz~Mismatched elements: 20 / 20 (100%)
Max absolute difference among violations: 1.
Max relative difference among violations: 0.5)r(   ÚonesrW   rX   r#   r[   r\   r   rò   r   r   r    Útest_error_message_2Ó  s   
ÿ
"ÿz$TestAlmostEqual.test_error_message_2c                 C   r  )Nc                       r  )zBTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArrayc                    r	  r   r
  r|   r  r   r    r~   ì  r;   zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__eq__c                    r	  r   r  r|   r  r   r    r  ï  r;   zITestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.__lt__c                 _   r  r   r  rŠ   r   r   r    r{   ò  rŽ   zFTestAlmostEqual.test_subclass_that_cannot_be_bool.<locals>.MyArray.allr  r   r   r  r    r€   ë  r  r€   r�   r‚   r  r  r   r   r    r  æ  r  z1TestAlmostEqual.test_subclass_that_cannot_be_boolN)r<   r=   r>   rA   rï   r%  r'  r(  rÝ   rä   r*  r-  r  r   r   r   r    r  f  s    	3r  c                   @   ó4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestApproxEqualc                 C   r@   r   )r   r   r9   r   r   r    rA   û  rB   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ð   ©Úsignificanté   c                      ó   ˆ j ˆˆdd�S ©Nrí   r2  r   r   rã   r   r    rû     r   z7TestApproxEqual.test_simple_0d_arrays.<locals>.<lambda>)r(   r)   r   r   r#   r9   r   rã   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 )	Nr0  r1  r/   r2  rð   r4  c                      r5  r6  r   r   rã   r   r    rû     r   z3TestApproxEqual.test_simple_items.<locals>.<lambda>r!  r9   r   rã   r    Útest_simple_items  s   ÿz!TestApproxEqual.test_simple_itemsc                    ót   t  t j¡‰t  d¡‰t  t j¡‰ ˆ ˆˆ¡ tt‡‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ d S )Nr%   c                      r÷   r   r   r   rø   r   r    rû     rü   z0TestApproxEqual.test_nan_array.<locals>.<lambda>c                      rý   r   r   r   rþ   r   r    rû     rü   c                      r÷   r   r   r   rþ   r   r    rû     rü   r   r9   r   r  r    rf     ó   
zTestApproxEqual.test_nan_arrayc                    r9  )Nr%   c                      r÷   r   r   r   rø   r   r    rû     rü   z0TestApproxEqual.test_nan_items.<locals>.<lambda>c                      rý   r   r   r   rþ   r   r    rû      rü   c                      r÷   r   r   r   rþ   r   r    rû   !  rü   r   r9   r   r  r    rÂ     r:  zTestApproxEqual.test_nan_itemsN)r<   r=   r>   rA   r7  r8  rf   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d„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestArrayAssertLessc                 C   r@   r   )r   r   r9   r   r   r    rA   &  rB   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„ƒ t  g d
¢¡}t  g d¢¡}d}tjtt |¡d�� ˆ  ||¡ W d   ƒ d S 1 shw   Y  d S )Nçš™™™™™ñ?çš™™™™™@ç333333ó?çffffff@c                      ó   ˆ   ˆˆ¡S r   r   r   rã   r   r    rû   .  rü   z8TestArrayAssertLess.test_simple_arrays.<locals>.<lambda>r�   c                      ó   ˆ   ˆˆ¡S r   r   r   rã   r   r    rû   2  rü   c                      r@  r   r   r   rã   r   r    rû   3  rü   )r%   r.   r4  r+  )r&   r/   r4  é   z{Mismatched elements: 2 / 4 (50%)
Max absolute difference among violations: 12
Max relative difference among violations: 1.5rU   )	r(   r)   r   r   r#   rW   rX   r[   r\   rž   r   rã   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¡‰ˆ  ˆˆ¡ d	}tjtt |¡d
�� ˆ  ˆˆ¡ W d   ƒ n1 s9w   Y  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      @z„Mismatched elements: 4 / 4 (100%)
Max absolute difference among violations: 0.1
Max relative difference among violations: 0.09090909rU   r�   c                      rA  r   r   r   rã   r   r    rû   J  rü   z0TestArrayAssertLess.test_rank2.<locals>.<lambda>c                      r@  r   r   r   rã   r   r    rû   K  rü   )	r(   r)   r   rW   rX   r#   r[   r\   r   ©r   ra   r   rã   r    Ú
test_rank2>  s   ÿzTestArrayAssertLess.test_rank2c                    s¤   t jdd�‰t jdd�d ‰ˆ  ˆˆ¡ tt‡ ‡‡fdd„ƒ dˆd< d}tjtt |¡d	�� ˆ  ˆˆ¡ W d   ƒ n1 s@w   Y  tt‡ ‡‡fd
d„ƒ d S )N)r&   r&   r&   )Úshaper%   c                      r@  r   r   r   rã   r   r    rû   R  rü   z0TestArrayAssertLess.test_rank3.<locals>.<lambda>r   )r   r   r   z}Mismatched elements: 1 / 8 (12.5%)
Max absolute difference among violations: 1.
Max relative difference among violations: infrU   c                      r@  r   r   r   rã   r   r    rû   [  rü   )	r(   r,  r   r   r#   rW   rX   r[   r\   rE  r   rã   r    Ú
test_rank3M  s   ÿzTestArrayAssertLess.test_rank3c                    s°   d‰d‰ˆ   ˆˆ¡ d}tjtt |¡d�� ˆ   ˆˆ¡ W d   ƒ n1 s'w   Y  t ddg¡‰ˆ   ˆˆ¡ tt‡ ‡‡fdd„ƒ t ddg¡‰tt‡ ‡‡fd	d„ƒ d S )
Nr<  r=  z|Mismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.1
Max relative difference among violations: 1.rU   rD  c                      r@  r   r   r   rã   r   r    rû   k  rü   z7TestArrayAssertLess.test_simple_items.<locals>.<lambda>r�   c                      rA  r   r   r   rã   r   r    rû   o  rü   )	r   rW   rX   r#   r[   r\   r(   r)   r   rE  r   rã   r    r8  ]  s   ÿz%TestArrayAssertLess.test_simple_itemsc                 C   sê   t  g d¢g d¢g d¢g¡}d}|  ||¡ d}|  ||¡ t  g d¢g d¢g d¢g¡}d	}d
}tjtt |¡d�� |  ||¡ W d   ƒ n1 sKw   Y  d}tjtt |¡d�� |  ||¡ W d   ƒ d S 1 snw   Y  d S )N)g.c}Ãjƒ@g±áé•²hx@gÄ|yöÅE@gã¥›Ä “ƒ@)g…ëQ¸EK@gH¿}¸šƒ@g      *@çV-²Xy@)ç�Âõ(\ü€@ç®Gáz® @ç˜nƒÀâV@gÍÌÌÌÌÔt@g…ëQ¸šƒ@gmXSY® @)gŒ¹k	ù @g6<½R­¢@g˜//À¾8{@gÓMbÐµÎA)g×£p=ŠIµ@çHáze}.Ag=
×£øÏÿ@rI  )rJ  rK  rL  g¼‘ye}.ArM  z}Mismatched elements: 1 / 12 (8.33%)
Max absolute difference among violations: 0.
Max relative difference among violations: 0.rU   z’Mismatched elements: 12 / 12 (100%)
Max absolute difference among violations: 999087.0864
Max relative difference among violations: 289288.5934676rñ   rò   r   r   r    Útest_simple_items_and_arrayq  s*   
þ
þÿ"ÿz/TestArrayAssertLess.test_simple_items_and_arrayc                 C   s2  t  g d¢¡}t  d¡}d}tjtt |¡d�� |  ||¡ W d   ƒ n1 s)w   Y  d}tjtt |¡d�� |  ||¡ W d   ƒ n1 sKw   Y  d}d}tjtt |¡d�� |  ||¡ W d   ƒ n1 sow   Y  d}tjtt |¡d�� |  ||¡ W d   ƒ d S 1 s’w   Y  d S )	N)g    0­ Ar   g)\�Âõè.@g    `fõ@z‰Mismatched elements: 1 / 3 (33.3%)
Max absolute difference among violations: 458802.
Max relative difference among violations: 5.23423917rU   zŠMismatched elements: 2 / 3 (66.7%)
Max absolute difference among violations: 87654.
Max relative difference among violations: 5670.5626011r   z�Mismatched elements: 3 / 3 (100%)
Max absolute difference among violations: 546456.
Max relative difference among violations: infz}Mismatched elements: 1 / 3 (33.3%)
Max absolute difference among violations: 0.
Max relative difference among violations: infr�   rò   r   r   r    Útest_zeroesŽ  s&   
ÿÿÿ"ÿzTestArrayAssertLess.test_zeroesc                    sŠ   t  t j¡‰t  d¡‰t  t j¡‰ ˆ ˆˆ¡ tt‡‡‡fdd„ƒ tt‡‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ d S )Nr%   c                      rý   r   r   r   rø   r   r    rû   ²  rü   z9TestArrayAssertLess.test_nan_noncompare.<locals>.<lambda>c                      r÷   r   r   r   rø   r   r    rû   ³  rü   c                      rý   r   r   r   rþ   r   r    rû   ´  rü   c                      r÷   r   r   r   rþ   r   r    rû   µ  rü   r   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=  rD  c                      ó   ˆ  ˆˆ ¡S r   r   r   ©rù   r   r]   r   r    rû   »  rü   z?TestArrayAssertLess.test_nan_noncompare_array.<locals>.<lambda>c                      ó   ˆ  ˆ ˆ¡S r   r   r   rR  r   r    rû   ¼  rü   r<  r=  c                      rQ  r   r   r   rR  r   r    rû   À  rü   c                      rS  r   r   r   rR  r   r    rû   Á  rü   r�   r‚   c                      rA  r   r   r   rã   r   r    rû   Æ  rü   )r(   r)   rd   r   r#   r   r9   r   )rù   r   r]   r^   r    Útest_nan_noncompare_array·  s   z-TestArrayAssertLess.test_nan_noncompare_arrayc                    sª   t  d¡‰t  t j¡‰ ˆ ˆˆ ¡ ˆ ˆ  ˆ¡ ˆ ˆ  ˆ ¡ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ d S )Nr%   c                      r÷   r   r   r   ©rÿ   rú   r   r   r    rû   Ï  rü   z6TestArrayAssertLess.test_inf_compare.<locals>.<lambda>c                      s   ˆ  ˆˆ  ¡S r   r   r   rU  r   r    rû   Ð  r#  c                      s   ˆ  ˆ ˆ ¡S r   r   r   ©rÿ   r   r   r    rû   Ñ  rü   c                      s   ˆ  ˆ ˆ  ¡S r   r   r   rV  r   r    rû   Ò  r#  c                      s   ˆ  ˆ  ˆ  ¡S r   r   r   rV  r   r    rû   Ó  r   )r(   r)   rv   r   r   r#   r9   r   rU  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                      rQ  r   r   r   ©rÿ   r   r]   r   r    rû   Ù  rü   z<TestArrayAssertLess.test_inf_compare_array.<locals>.<lambda>c                      rS  r   r   r   rX  r   r    rû   Ú  rü   c                      s   ˆ  ˆˆ  ¡S r   r   r   rX  r   r    rû   Û  r#  c                      s   ˆ  ˆ ˆ  ¡S r   r   r   rX  r   r    rû   Ü  r   c                      s   ˆ  ˆ  ˆ ¡S r   r   r   rX  r   r    rû   Ý  r   )r(   r)   rv   r   r#   r   r9   r   rX  r    Útest_inf_compare_arrayÕ  s   z*TestArrayAssertLess.test_inf_compare_arrayc                 C   s¼   t  d¡}t  d¡}|  ||¡ t t¡� | j||dd� W d  ƒ n1 s(w   Y  t  ||j¡}|  ||¡ t t¡� | j|| 	t j
¡dd� W d  ƒ dS 1 sWw   Y  dS ©z)Test the behavior of the `strict` option.r.   r   Tr    N)r(   Úzerosr,  r   rW   rX   r#   Úbroadcast_torG  Úastyper•   rã   r   r   r    Útest_strictà  s   

ÿ"ÿzTestArrayAssertLess.test_strictN)r<   r=   r>   rA   rC  rF  rH  r8  rN  rO  rP  rT  rW  rY  r^  r   r   r   r    r;  $  s    
r;  c                   @   r§   )
Ú	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>.frb  r.   c                 S   s   | S r   r   ©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   rd  Úbefore_filtersÚafter_filtersr   r   r    Ú	test_warnï  s   ÿzTestWarns.test_warnc                 C   st   t jd jd d … }ttƒ� t d¡ W d   ƒ n1 sw   Y  t jd j}dd„ }tt|ƒ t	||dƒ d S )Nrb  r`  c                   S   s6   t ƒ � t d¡ W d   ƒ d S 1 sw   Y  d S ©Nr`  )r
   rb  rc  r   r   r   r    Úno_warnings  s   "ÿz3TestWarns.test_context_manager.<locals>.no_warningsrg  )
rh  ri  rj  r	   rk  rb  rc  r   r#   r   )r   rl  rm  rp  r   r   r    Útest_context_managerÿ  s   
ÿ
ÿzTestWarns.test_context_managerc              	   C   s(  ddd„}t t|dd�dksJ ‚t t¡�$}t tdd�� t d	t¡ W d   ƒ n1 s-w   Y  W d   ƒ n1 s<w   Y  d
t|ƒv sIJ ‚dt|ƒv sQJ ‚t t¡�$}t tdd�� t d	t¡ W d   ƒ n1 snw   Y  W d   ƒ n1 s}w   Y  d
t|ƒv sŠJ ‚dt|ƒvs’J ‚d S )Nr   r%   c                 S   s   t  d¡ | | S ro  ra  )r   r   r   r   r    rd    s   
zTestWarns.test_args.<locals>.fr+  ©r   ÚArU   ÚBr	   zpytest.warns)Úwrong)r   r%   )r	   rk  rW   rX   ÚRuntimeErrorrb  rc  rY   )r   rd  Úexcr   r   r    Ú	test_args  s$   
ÿ€þÿ€þzTestWarns.test_argsc              	   C   sv   dd„ }d}t  ¡ �! t  dt¡ z	tt|ƒ d}W n	 ty#   Y nw W d   ƒ n1 s.w   Y  |r9tdƒ‚d S )Nc                   S   s   t  dt¡ d S ro  )rb  rc  ÚDeprecationWarningr   r   r   r    rd  $  r"   z,TestWarns.test_warn_wrong_warning.<locals>.fFÚerrorTz#wrong warning caught by assert_warn)rb  Úcatch_warningsÚsimplefilterry  r	   rk  r#   )r   rd  Úfailedr   r   r    Útest_warn_wrong_warning#  s   

ÿ€ú	ÿz!TestWarns.test_warn_wrong_warningN)r<   r=   r>   rn  rq  rx  r~  r   r   r   r    r_  í  s
    r_  c                   @   r¿   )ÚTestAssertAllclosec                 C   s&  d}d}t ||dd� ttt ||ƒ d}tjtt |¡d�� t ||ƒ W d   ƒ n1 s.w   Y  d}d}tjtt |¡d�� t ||ƒ W d   ƒ n1 sQw   Y  d	}tjtt |¡d�� t ||ƒ W d   ƒ n1 srw   Y  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� t ||||g¡}t ||||g¡}d}tjtt |¡d�� t ||ƒ W d   ƒ n1 séw   Y  d}tjtt |¡d�� t ||ƒ W d   ƒ d S 1 �sw   Y  d S )Ngü©ñÒMbP?g•Ö&è.>r%   ©ÚatolzƒMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 0.001
Max relative difference among violations: 999999.rU   r   z€Mismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.e-09
Max relative difference among violations: infzMismatched elements: 1 / 1 (100%)
Max absolute difference among violations: 1.e-09
Max relative difference among violations: 1.gÜ1¯  ð?rå   )Úrtolr4  r¼   g      à?z~Mismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 0.001
Max relative difference among violations: infz}Mismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 0.001
Max relative difference among violations: 1.)	r   r   r#   rW   rX   r[   r\   r(   r)   )r   r]   r^   ra   r  r   r   rK   r   r   r    ró   7  sH   ÿÿÿ
ÿ$ÿzTestAssertAllclose.test_simplec                 C   s*   t jt  t j¡jgt jd�}t||ƒ d S )Nr3   )r(   r)   ÚiinfoÚint_Úminr   r6   r   r   r    Útest_min_intl  s   zTestAssertAllclose.test_min_intc                 C   sd   t  g d¢¡}t  g d¢¡}d}tjtt |¡d�� t||ƒ W d   ƒ d S 1 s+w   Y  d S )N)r%   r%   r%   r%   )r%   r%   r%   r&   zzMismatched elements: 1 / 4 (25%)
Max absolute difference among violations: 1
Max relative difference among violations: 0.5rU   ©r(   r)   rW   rX   r#   r[   r\   r   rž   r   r   r    Útest_report_fail_percentageq  s   "ÿz.TestAssertAllclose.test_report_fail_percentagec                 C   s.   t  t jg¡}t  t jg¡}t||dd� d S )NT©Ú	equal_nan)r(   r)   rd   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)   rd   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)   rd   r   r   r   r   r   r   r   r    Útest_equal_nan_default†  s   


z)TestAssertAllclose.test_equal_nan_defaultc                 C   sd   t  ddg¡}t  ddg¡}d}tjtt |¡d�� t||ƒ W d   ƒ d S 1 s+w   Y  d S )Nr   r%   r&   z-Max relative difference among violations: 0.5rU   r‡  rž   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_timedeltac                 C   sp   t jg d¢dd�}t jg d¢dd�}d}tjtt |¡d�� t||dd� W d	  ƒ d	S 1 s1w   Y  d	S )
zUCheck the message is formatted correctly when overflow can occur
           (gh21768))r   r%   rB  Úuint8r3   )r/   r/   r/   z+Max absolute difference among violations: 4rU   r.   r€  N)r(   ÚasarrayrW   rX   r#   r[   r\   r   rò   r   r   r    Útest_error_message_unsignedž  s   "ÿz.TestAssertAllclose.test_error_message_unsignedc                 C   s¦   t  d¡}t  d¡}t||ƒ t t¡� t||dd� W d  ƒ n1 s&w   Y  t||ƒ t t¡� t|| t j¡dd� W d  ƒ dS 1 sLw   Y  dS rZ  )r(   r,  r   rW   rX   r#   r]  r•   rã   r   r   r    r^  «  s   


ÿ
"ÿzTestAssertAllclose.test_strictN)r<   r=   r>   ró   r†  rˆ  r‹  rŒ  r�  rŽ  r�  r’  r^  r   r   r   r    r  5  s    5
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   ó�   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   r¼   r‚   ©	r(   ÚlinspaceÚfloat64Úr_Úfinfor4   Úepsr   Úepsneg©r   Únulpr]   r�  r^   rž  r   r   r    Útest_float64_pass¹  s   z*TestArrayAlmostEqualNulp.test_float64_passc                 C   ó˜   d}t jdddt jd�}d| }t j| |f }t  |j¡j}||| | d  }ttt	|||ƒ t  |j¡j
}||| | d  }ttt	|||ƒ d S r•  ©r(   r™  rš  r›  rœ  r4   r�  r   r#   r   rž  rŸ  r   r   r    Útest_float64_failË  ó   ÿÿz*TestArrayAlmostEqualNulp.test_float64_failc                 C   óT   t  d¡}t jt jt jd� t j¡}||A }| t j¡}| t j¡}t||dƒ d S )Nl   ÿÿ r3   r   )r(   Úuint64r)   rd   rš  r…   r   )r   ÚoffsetÚnan1_i64Únan2_i64Únan1_f64Únan2_f64r   r   r    Útest_float64_ignore_nanÛ  ó   
z0TestArrayAlmostEqualNulp.test_float64_ignore_nanc                 C   r”  r•  ©	r(   r™  r•   r›  rœ  r4   r�  r   rž  rŸ  r   r   r    Útest_float32_passæ  ó   z*TestArrayAlmostEqualNulp.test_float32_passc                 C   r¢  r•  ©r(   r™  r•   r›  rœ  r4   r�  r   r#   r   rž  rŸ  r   r   r    Útest_float32_failô  r¥  z*TestArrayAlmostEqualNulp.test_float32_failc                 C   r¦  )Niÿÿ  r3   r   )r(   Úuint32r)   rd   r•   r…   r   )r   r¨  Únan1_i32Únan2_i32Únan1_f32Únan2_f32r   r   r    Útest_float32_ignore_nan  r®  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/   r¼   r3   r‚   )	r(   r™  Úfloat16r›  rœ  r4   r�  r   rž  rŸ  r   r   r    Útest_float16_pass  r±  z*TestArrayAlmostEqualNulp.test_float16_passc                 C   s˜   d}t jdddt jd�}d| }t j| |f }t  |j¡j}||| | d  }ttt	|||ƒ t  |j¡j
}||| | d  }ttt	|||ƒ d S rº  )r(   r™  r¼  r›  rœ  r4   r�  r   r#   r   rž  rŸ  r   r   r    Útest_float16_fail  r¥  z*TestArrayAlmostEqualNulp.test_float16_failc                 C   r¦  )Néÿ   r3   r   )r(   Úuint16r)   rd   r¼  r…   r   )r   r¨  Únan1_i16Únan2_i16Únan1_f16Únan2_f16r   r   r    Útest_float16_ignore_nan-  r®  z0TestArrayAlmostEqualNulp.test_float16_ignore_nanc                 C   ó$  d}t jdddt jd�}d| }t j| |f }||d  }t  |j¡j}||| | d  }t|||d  |ƒ t|||d  |ƒ ||| | d	  }t|||d  |ƒ t  |j¡j}||| | d  }t|||d  |ƒ t|||d  |ƒ ||| | d	  }t|||d  |ƒ d S ©
Nrð   r–  r+  r—  r3   r¼   ù              ð?r‚   rp   r˜  ©r   r   r]   Úxir�  r^   rž  r   r   r    Útest_complex128_pass8  s"   z-TestArrayAlmostEqualNulp.test_complex128_passc                 C   ó4  d}t jdddt jd�}d| }t j| |f }||d  }t  |j¡j}||| | d  }ttt	|||d  |ƒ ttt	|||d  |ƒ ||| |  }ttt	|||d  |ƒ t  |j¡j
}||| | d  }ttt	|||d  |ƒ ttt	|||d  |ƒ ||| |  }ttt	|||d  |ƒ d S ©	Nrð   r–  r+  r—  r3   r¼   rÈ  r‚   r£  rÉ  r   r   r    Útest_complex128_failO  s:   ÿÿÿÿÿÿz-TestArrayAlmostEqualNulp.test_complex128_failc                 C   rÆ  rÇ  r¯  rÉ  r   r   r    Útest_complex64_passl  s"   z,TestArrayAlmostEqualNulp.test_complex64_passc                 C   rÌ  rÍ  r²  rÉ  r   r   r    Útest_complex64_fail�  s:   ÿÿÿÿÿÿz,TestArrayAlmostEqualNulp.test_complex64_failN)r<   r=   r>   r¡  r¤  r­  r°  r³  r¹  r½  r¾  rÅ  rË  rÎ  rÏ  rÐ  r   r   r   r    r“  ·  s    r“  c                   @   r.  )ÚTestULPc                 C   s   t j d¡}t||dd� d S )Nr¼   r   ©Úmaxulp)r(   ÚrandomÚrandnr   )r   r]   r   r   r    Ú
test_equalŸ  s   zTestULP.test_equalc                 C   óR   t  d¡ t j¡}|dt j d¡ t j¡ 7 }t  t j¡j}t||| dd� d S )Nr¼   ç{®Gáz„?r+  rÒ  )	r(   r,  r]  r•   rÔ  rÕ  rœ  r�  r   ©r   r]   r�  r   r   r    Útest_single£  ó   zTestULP.test_singlec                 C   r×  )Nr¼   rØ  éÈ   rÒ  )	r(   r,  r]  rš  rÔ  rÕ  rœ  r�  r   rÙ  r   r   r    Útest_doubleª  rÛ  zTestULP.test_doublec                 C   sL   t jt jfD ]}t  t jg¡ |¡}t  t  |¡jg¡}t||dd� qd S )NrÜ  rÒ  )	r(   r•   rš  r)   rv   r]  rœ  Úmaxr   )r   Údtrv   Ú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  dg¡ |¡‰t  d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   ¢”mBrƒ   g       €c                      ó   t ˆˆ ˆd�S ©NrÒ  ©r   r   )rv   rÓ  rd   r   r    rû   Å  ó    ÿz"TestULP.test_nan.<locals>.<lambda>c                      rá  râ  rã  r   )rà  rÓ  rd   r   r    rû   È  rä  c                      ó   t ˆˆˆ d�S râ  rã  r   )rÓ  rd   Útinyr   r    rû   Ë  rä  c                      rå  râ  rã  r   )rÓ  rd   Úzeror   r    rû   Î  rä  c                      rå  râ  rã  r   )rÓ  rd   Únzeror   r    rû   Ñ  rä  )r(   r•   rš  r)   rv   r]  rd   rœ  rÞ  ræ  r   r#   )r   rß  r   )rà  rv   rÓ  rd   rè  ræ  rç  r    r  ·  s4   
ÿÿÿÿÿézTestULP.test_nanN)r<   r=   r>   rÖ  rÚ  rÝ  r  r  r   r   r   r    rÑ  �  s    rÑ  c                   @   rx   )ÚTestStringEqualc                 C   sn   t ddƒ t ddƒ t t¡�}t ddƒ W d   ƒ n1 sw   Y  t|jƒ}t|dƒ ttdd„ ƒ d S )NÚhellozhello
multilinezfoo
barz	hello
barz%Differences in strings:
- foo
+ helloc                   S   ó
   t ddƒS )NrL   rê  ©r   r   r   r   r    rû   à  ó   
 z-TestStringEqual.test_simple.<locals>.<lambda>)r   rW   rX   r#   rY   rZ   r   r   )r   r_   r`   r   r   r    ró   Ö  s   

ÿ

ÿzTestStringEqual.test_simplec                 C   s   t ddƒ ttdd„ ƒ d S )Nza+*bc                   S   rë  )NÚaaaza+brì  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ó   rï  r   r   r   r    ré  Õ  s    ré  c                 C   sH   z| j }W n ty   i }Y nw t|ƒ}d|v r|d8 }t||ƒ d S )NÚversionr%   )Ú__warningregistry__ÚAttributeErrorÚlenr   )ÚmodÚn_in_contextÚ	mod_warnsÚ	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>.modN)r<   r=   r>   r   r   r   r    rô    s    rô  r   )rô  rõ  c                   @   rˆ   )rù  c                 S   s   dddœ| _ d S )Nr%   r&   ©Úwarning1Ú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ô    r�   r&   )rø  )rô  Úmod_instr   r   r    Ú"test_warn_len_equal_call_scenarios   s   ÿ
ÿrÿ  c                  C   s0   t jt } z| j ¡  W | S  ty   Y | S w r   )rh  ri  r<   rñ  Úclearrò  ©Úmy_modr   r   r    Ú_get_fresh_mod  s   
üür  c                  C   sF  t ƒ } tt| di ƒi ƒ t| gd�� t d¡ t d¡ W d   ƒ n1 s'w   Y  t| ji ƒ tƒ � t d¡ t d¡ W d   ƒ n1 sJw   Y  t| dƒ dddœ| _t| gd�� t d¡ t d	¡ W d   ƒ n1 suw   Y  t| dƒ tƒ � t d¡ t d	¡ W d   ƒ n1 s—w   Y  t| dƒ d S )
Nrñ  )ri  ÚignoreúSome warningr   r%   r&   rú  zAnother warning)	r  r   Úgetattrr   rb  r|  rc  rñ  rø  r  r   r   r    Útest_clear_and_catch_warnings(  s2   
þ
þ
ÿ
þ

þr  c                  C   s‚  t ƒ } tt| di ƒi ƒ dd„ }t| dƒ tƒ �}| t¡ |jtj	j
d� t d¡ |ƒ  W d   ƒ n1 s8w   Y  tt|jƒdƒ t|jd jjd dƒ t| dƒ tƒ }|j| d� |� t d¡ W d   ƒ n1 sqw   Y  t| dƒ |j| d� |� t d¡ W d   ƒ n1 s“w   Y  t| dƒ tƒ � t d¡ t d¡ W d   ƒ n1 sµw   Y  t| dƒ d S )	Nrñ  c                  S   ó   dd„ } t  | ddg¡ d S )Nc                 S   ó   t jddd� | S )NzSome warning 2r&   ©Ú
stacklevelra  ©Úarrr   r   r    rc  P  ó   zFtest_suppress_warnings_module.<locals>.warn_other_module.<locals>.warnr   ©r(   Úapply_along_axis©rc  r   r   r    Úwarn_other_moduleM  ó   z8test_suppress_warnings_module.<locals>.warn_other_moduler   ©Úmoduler  r%   r  )r  r   r  rø  r   Úrecordrk  Úfilterr(   ÚlibÚ_shape_base_implrb  rc  ró  ÚlogÚmessager‹   r|  )r  r  Úsupr   r   r    Útest_suppress_warnings_moduleH  s:   
	

ú	
ÿ
ÿ

þr  c                  C   s0  t ƒ } tt| di ƒi ƒ tƒ �}| t¡ t d¡ W d   ƒ n1 s$w   Y  t| dƒ tƒ }| t¡ |� t d¡ W d   ƒ n1 sHw   Y  t| dƒ |j| d� |� t d¡ W d   ƒ n1 sjw   Y  t| dƒ tƒ � t 	d¡ t d¡ W d   ƒ n1 sŒw   Y  t| dƒ d S )Nrñ  r  r   r  r  )
r  r   r  r   r  rk  rb  rc  rø  r|  )r  r  r   r   r    Útest_suppress_warnings_typev  s.   
þ

ÿ
ÿ

þr  c                  C   sv   t ƒ } |  t¡ | dd„ ƒ}tjdd��}t d¡ |tƒ |tƒ tt|ƒdƒ W d   ƒ d S 1 s4w   Y  d S )Nc                 S   s   t  d| ¡ d S )Nr  ra  )Úcategoryr   r   r    rc  –  s   z7test_suppress_warnings_decorate_no_record.<locals>.warnT)r  Úalwaysr%   )	r   r  rk  rb  r{  r|  ÚRuntimeWarningr   ró  )r  rc  Úwr   r   r    Ú)test_suppress_warnings_decorate_no_record’  s   


"ür#  c               	   C   sà  t ƒ } |  ¡ }| �D | jdd�}| jdd� t d¡ t d¡ t d¡ tt| jƒdƒ tt|ƒdƒ tt|ƒdƒ t|d jj	d dƒ W d   ƒ n1 sPw   Y  | �D | jdd�}| jdd� t d¡ t d¡ t d¡ tt| jƒdƒ tt|ƒdƒ tt|ƒdƒ t|d jj	d dƒ W d   ƒ n1 sžw   Y  t ƒ �@} |  ¡  t ƒ � }|jdd� t d¡ t d¡ tt|jƒdƒ W d   ƒ n1 sÑw   Y  tt| jƒdƒ W d   ƒ d S 1 séw   Y  d S )NzSome other warning 2)r  r  úSome other warningr&   r%   r   )
r   r  r  rb  rc  r   ró  r  r  r‹   )r  Úlog1Úlog2Úsup2r   r   r    Útest_suppress_warnings_record¡  sD   


ö


ö

ü"ùr(  c               	   C   s2  dd„ } t ƒ �4}| ¡  t dƒ� tdƒD ]}t d¡ qW d   ƒ n1 s'w   Y  tt|jƒdƒ W d   ƒ n1 s>w   Y  t ƒ �9}| ¡  t dƒ� tdƒD ]}t d¡ t d¡ qTW d   ƒ n1 skw   Y  tt|jƒdƒ W d   ƒ n1 s‚w   Y  t ƒ �<}| ¡  t dƒ� tdƒD ]}t d¡ t d¡ | ƒ  q˜W d   ƒ n1 s²w   Y  tt|jƒdƒ W d   ƒ n1 sÉw   Y  t ƒ �=}| ¡  t dƒ� tdƒD ]}t d¡ t d	¡ | ƒ  qßW d   ƒ n1 sùw   Y  tt|jƒdƒ W d   ƒ d S 1 �sw   Y  d S )
Nc                  S   r  )Nc                 S   r	  )Nr  r&   r
  ra  r  r   r   r    rc  Í  r  zJtest_suppress_warnings_forwarding.<locals>.warn_other_module.<locals>.warnr   r  r  r   r   r    r  Ê  r  z<test_suppress_warnings_forwarding.<locals>.warn_other_moduler   r&   r  Úlocationr  Úoncer$  )r   r  Úrangerb  rc  r   ró  r  )r  r  Úir   r   r    Ú!test_suppress_warnings_forwardingÉ  sT   
ÿÿú

þÿù	


ýÿø



ýÿ$ør-  c               	   C   sÊ   t ƒ �$} tj | d¡}t|dƒ� W d   ƒ n1 sw   Y  W d   ƒ n1 s*w   Y  ttj | ¡ ƒ d}zt ƒ �} t‚1 sDw   Y  W n tyU   d}Y nw t|ƒ ttj | ¡ ƒ d S )NÚtmpr"  FT)r   ÚosÚpathÚjoinÚopenr   ÚisdirÚ
ValueError)ÚtdirÚfpathÚraisedr   r   r    Útest_tempdirø  s$   ÿ€þÿÿr8  c               	   C   s¼   t ƒ �} t| dƒ� W d   ƒ n1 sw   Y  W d   ƒ n1 s#w   Y  ttj | ¡ ƒ d}zt ƒ �} t‚1 s=w   Y  W n tyN   d}Y nw t|ƒ ttj | ¡ ƒ d S )Nr"  FT)r   r2  r   r/  r0  Úisfiler4  )r6  r7  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>   rh  ri  Úclass_modulesr   r   r   r    r;    s    r;  c                  C   sP   t ƒ } tƒ � t d¡ t d¡ W d   ƒ n1 sw   Y  t| ji ƒ d S )Nr  r  )r  r;  rb  r|  rc  r   rñ  r  r   r   r    Ú%test_clear_and_catch_warnings_inherit  s   
þr=  zPython lacks refcounts)Úreasonc                   @   s0   e Zd ZdZdd„ Zdd„ Zejjdd„ ƒZ	dS )	ÚTestAssertNoGcCyclesz Test assert_no_gc_cycles c                 C   s@   dd„ }t ƒ � |ƒ  W d   ƒ n1 sw   Y  t |ƒ d S )Nc                  S   s   g } |   g ¡ | S r   ©Úappendrr  r   r   r    Úno_cycle,  s   
z2TestAssertNoGcCycles.test_passes.<locals>.no_cycle)r   )r   rB  r   r   r    Útest_passes+  s
   ÿz TestAssertNoGcCycles.test_passesc              	   C   s’   dd„ }t tƒ� tƒ � |ƒ  W d   ƒ n1 sw   Y  W d   ƒ n1 s)w   Y  t tƒ� t|ƒ W d   ƒ d S 1 sBw   Y  d S )Nc                  S   s   g } |   | ¡ |   | ¡ | S r   r@  )r   r   r   r    Ú
make_cycle7  s   

z5TestAssertNoGcCycles.test_asserts.<locals>.make_cycle)r   r#   r   )r   rD  r   r   r    Útest_asserts6  s   
ÿ€ÿ

"ÿz!TestAssertNoGcCycles.test_assertsc                    s¢   G ‡ fdd„dƒ‰ zCt  ˆ ƒ ¡}zttƒ� tdd„ ƒ W d  ƒ n1 s&w   Y  W n ty@   |ƒ dur>t d¡ ‚ Y nw W dˆ _dS W dˆ _dS dˆ _w )z•
        Test that in cases where the garbage cannot be collected, we raise an
        error, instead of hanging forever trying to clear it.
        c                       s(   e Zd ZdZdZdd„ Z‡ fdd„ZdS )z<TestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDelz¥
            An object that not only contains a reference cycle, but creates new
            cycles whenever it's garbage-collected and its __del__ runs
            Tc                 S   s
   | | _ d S r   )Úcycler9   r   r   r    rý  R  rB   zETestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__init__c                    s   d | _ ˆ jrˆ ƒ  d S d S r   )rF  rD  r9   ©ÚReferenceCycleInDelr   r    Ú__del__U  s   
ýzDTestAssertNoGcCycles.test_fails.<locals>.ReferenceCycleInDel.__del__N)r<   r=   r>   Ú__doc__rD  rý  rI  r   rG  r   r    rH  K  s
    rH  c                   S   s   d S r   r   r   r   r   r    rû   c  rf  z1TestAssertNoGcCycles.test_fails.<locals>.<lambda>Nz*GC does not call __del__ on cyclic objectsF)	ÚweakrefÚrefr   rv  r   r#   rW   ÚskiprD  )r   r"  r   rG  r    Ú
test_failsD  s$   
þ€

þý€
	úzTestAssertNoGcCycles.test_failsN)
r<   r=   r>   rJ  rC  rE  rW   ÚmarkÚslowrN  r   r   r   r    r?  '  s    r?  Úassert_funcc              	   C   s”  | ddƒ | ddd� d}t jt|d�� | ddƒ W d   ƒ n1 s$w   Y  t jt|d�� | ddd� W d   ƒ n1 sAw   Y  d}t jt|d�� | ddd� W d   ƒ n1 s`w   Y  t jt|d�� | ddd� W d   ƒ n1 s}w   Y  d	}t jt|d��5 t jt|d�� | ddd
� | dddd� W d   ƒ n1 s«w   Y  W d   ƒ d S W d   ƒ d S 1 sÃw   Y  d S )Nr%   )ÚactualÚdesiredzArrays are not...rU   r&   zUse of keyword argument...)r]   rS  )r^   z#...got multiple values for argumentre  )rW   rX   r#   Úwarnsry  rl   )rQ  Úassert_messageÚdep_messageÚtype_messager   r   r    Útest_xy_renamep  s.   
ÿÿÿÿÿPýrX  )Brb  rh  r/  rÍ   rW   rK  r[   Únumpyr(   Únumpy._core._multiarray_umathÚ_coreÚ_multiarray_umathrÞ   Únumpy.testingr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r?   r¨   rÀ   rè   r  r/  r;  r_  r  r“  rÑ  ré  rø  rÿ  r  r  r  r  r#  r(  r-  r8  r:  r;  r=  rO  Úskipifr?  ÚparametrizerX  r   r   r   r    Ú<module>   s`    \
. `-_ 9 + JH  g8 .(/	
Hÿ