U
    »mœdX  ã                   @   s°   d Z ddlZddlmZmZmZmZmZ ddlm	Z	 ddl
Z
dd„ Zdd„ Ze
jjed	d
�dd„ ƒZe
jjed	d
�dd„ ƒZe
jjed	d
�dd„ ƒZe
jjed	d
�dd„ ƒZdS )z> Test for assert_deallocated context manager and gc utilities
é    N)Úset_gc_stateÚgc_stateÚassert_deallocatedÚReferenceErrorÚIS_PYPY)Úassert_equalc                  C   sf   t  ¡ } zJdD ]@}t  ¡  t|ƒ tt  ¡ |ƒ t  ¡  t|ƒ tt  ¡ |ƒ qW 5 | r`t  ¡  X d S ©N©TF)ÚgcÚ	isenabledÚenabler   r   Údisable)Ú	gc_statusÚstate© r   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/_lib/tests/test__gcutils.pyÚtest_set_gc_state   s    r   c                  C   s¦   t  ¡ } zŠdD ]€}t|ƒ dD ]n}t|ƒ� tt  ¡ |ƒ W 5 Q R X tt  ¡ |ƒ t|ƒ� tt  ¡ |ƒ t| ƒ W 5 Q R X tt  ¡ |ƒ qqW 5 | r t  ¡  X d S r   )r
   r   r   r   r   r   )r   Z	pre_stateZ
with_stater   r   r   Útest_gc_state   s    

r   zTest not meaningful on PyPy)Úreasonc                  C   s‚   G dd„ dƒ} dD ]j}t |ƒ�X t| dddƒ�}t|jdƒ ~W 5 Q R X t| dddd�� W 5 Q R X tt ¡ |ƒ W 5 Q R X qd S )	Nc                   @   s   e Zd Zddd„ZdS )z"test_assert_deallocated.<locals>.CÚmynamec                 S   s
   || _ d S ©N©Úname)ÚselfZarg0Zarg1r   r   r   r   Ú__init__6   s    z+test_assert_deallocated.<locals>.C.__init__N)r   ©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   ÚC5   s   r   r	   r   é   zanother namez
third namer   )r   r   r   r   r
   r   )r   Z
gc_currentÚcr   r   r   Útest_assert_deallocated2   s    

r"   c               
   C   s<   G dd„ dƒ} t  t¡� t| ƒ�}W 5 Q R X W 5 Q R X d S )Nc                   @   s   e Zd ZdS )z(test_assert_deallocated_nodel.<locals>.CN)r   r   r   r   r   r   r   r   F   s   r   ©ÚpytestZraisesr   r   ©r   r!   r   r   r   Útest_assert_deallocated_nodelD   s    
r&   c               
   C   s>   G dd„ dƒ} t  t¡� t| ƒ�}~W 5 Q R X W 5 Q R X d S )Nc                   @   s   e Zd Zdd„ ZdS )z+test_assert_deallocated_circular.<locals>.Cc                 S   s
   | | _ d S r   ©Z	_circular©r   r   r   r   r   U   s    z4test_assert_deallocated_circular.<locals>.C.__init__Nr   r   r   r   r   r   T   s   r   r#   r%   r   r   r   Ú test_assert_deallocated_circularR   s    
r)   c               
   C   s<   G dd„ dƒ} t  t¡� t| ƒ� W 5 Q R X W 5 Q R X d S )Nc                   @   s   e Zd Zdd„ ZdS )z,test_assert_deallocated_circular2.<locals>.Cc                 S   s
   | | _ d S r   r'   r(   r   r   r   r   `   s    z5test_assert_deallocated_circular2.<locals>.C.__init__Nr   r   r   r   r   r   _   s   r   r#   )r   r   r   r   Ú!test_assert_deallocated_circular2]   s    
r*   )Ú__doc__r
   Zscipy._lib._gcutilsr   r   r   r   r   Znumpy.testingr   r$   r   r   ÚmarkZskipifr"   r&   r)   r*   r   r   r   r   Ú<module>   s   



