o
    hX                     @   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   disable)	gc_statusstate r   Y/var/www/html/scripts/venv/lib/python3.10/site-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   	pre_state
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)selfarg0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$   
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$   pytestraisesr   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   	_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   r    test_assert_deallocated_circularR   s   
"r4   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   r0   r2   r   r   r   r   `   r   z5test_assert_deallocated_circular2.<locals>.C.__init__Nr    r   r   r   r   r$   _   r3   r$   r)   )r$   r   r   r   !test_assert_deallocated_circular2]   s   
"r5   )__doc__r
   scipy._lib._gcutilsr   r   r   r   r   numpy.testingr   r*   r   r   markskipifr(   r-   r4   r5   r   r   r   r   <module>   s    



