o
    h                     @   s   d Z ddlZddlmZ ddlmZmZmZmZm	Z	 ddl
mZ ddlZejdd 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Lock)set_gc_stategc_stateassert_deallocatedReferenceErrorIS_PYPY)assert_equalc                   C   s   t  S Nr    r   r   R/var/www/vscode/kcb/lib/python3.10/site-packages/scipy/_lib/tests/test__gcutils.pygc_lock   s   r   c              	   C   s   | A t  }z+dD ] }t   t| tt  | t   t| tt  | q
W |r2t   n|r:t   w w W d    d S 1 sFw   Y  d S NTF)gc	isenabledenabler   r	   disable)r   	gc_statusstater   r   r   test_set_gc_state   s&   
"r   c                 C   s  | u t  }z_d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 sQw   Y  tt  | qq
W |rft   n|rnt   w w W d    d S 1 szw   Y  d S r   )r   r   r   r   r	   r   )r   r   	pre_state
with_stater   r   r   test_gc_state#   s2   


"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 sDw   Y  tt | W d    n1 sZw   Y  qW d    d S 1 skw   Y  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 r
   name)selfarg0arg1r   r   r   r   __init__>      
z+test_assert_deallocated.<locals>.C.__init__N)r   __name__
__module____qualname__r!   r   r   r   r   C=   s    r'   r   r      zanother namez
third namer   )r   r   r	   r   r   r   )r   r'   
gc_currentcr   r   r   test_assert_deallocated:   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'   O   s    r'   pytestraisesr   r   )r'   _r   r   r   test_assert_deallocated_nodelM   s   
"r0   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!   ^   r"   z4test_assert_deallocated_circular.<locals>.C.__init__Nr#   r   r   r   r   r'   ]       r'   r,   )r'   r*   r   r   r    test_assert_deallocated_circular[   s   
"r7   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                   @   r1   )z,test_assert_deallocated_circular2.<locals>.Cc                 S   r2   r
   r3   r5   r   r   r   r!   i   r"   z5test_assert_deallocated_circular2.<locals>.C.__init__Nr#   r   r   r   r   r'   h   r6   r'   r,   )r'   r   r   r   !test_assert_deallocated_circular2f   s   
"r8   )__doc__r   	threadingr   scipy._lib._gcutilsr   r   r   r   r   numpy.testingr	   r-   fixturer   r   r   markskipifr+   r0   r7   r8   r   r   r   r   <module>   s$    




