o
    EbX                     @   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   sv   t  } z.dD ] }t   t| tt  | t   t| tt  | qW | r1t   d S d S | r:t   w w NTF)gc	isenabledenabler   r   Zdisable)	gc_statusstate r   @/usr/lib/python3/dist-packages/scipy/_lib/tests/test__gcutils.pytest_set_gc_state   s   
r   c               
   C   s   t  } zbdD ]T}t| dD ]K}t| tt  | W d    n1 s'w   Y  tt  | t| tt  | t|  W d    n1 sNw   Y  tt  | qqW | ret   d S d S | rnt   w w 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 ]S}t |E t| ddd}t|jd ~W d    n1 s)w   Y  t| dddd W d    n1 sAw   Y  tt | W d    n1 sWw   Y  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      
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   sv   G dd d} t t% t| }W d    n1 sw   Y  W d    d S W d    d S 1 s4w   Y  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   sx   G dd d} t t& t| 	}~W d    n1 sw   Y  W d    d S W d    d S 1 s5w   Y  d S )Nc                   @      e Zd Zdd ZdS )z+test_assert_deallocated_circular.<locals>.Cc                 S   
   | | _ d S r   Z	_circularr   r   r   r   r   U   r   z4test_assert_deallocated_circular.<locals>.C.__init__Nr   r   r   r   r   r   T       r   r#   r%   r   r   r    test_assert_deallocated_circularR   s   
"r,   c               	   C   sv   G dd d} t t% t|  W d    n1 sw   Y  W d    d S W d    d S 1 s4w   Y  d S )Nc                   @   r'   )z,test_assert_deallocated_circular2.<locals>.Cc                 S   r(   r   r)   r*   r   r   r   r   `   r   z5test_assert_deallocated_circular2.<locals>.C.__init__Nr   r   r   r   r   r   _   r+   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   ZmarkZskipifr"   r&   r,   r-   r   r   r   r   <module>   s    



