o
    i                     @   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   X/home/kim/smarthome/.venv/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   Z	pre_stateZ
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)selfZarg0Z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#   Z
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#   pytestZraisesr   r   )r#   _r   r   r   test_assert_deallocated_nodelM   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   ^   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   
"r0   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   i   r   z5test_assert_deallocated_circular2.<locals>.C.__init__Nr   r   r   r   r   r#   h   r/   r#   r'   )r#   r   r   r   !test_assert_deallocated_circular2f   s   
"r1   )__doc__r   	threadingr   Zscipy._lib._gcutilsr   r   r   r   r   Znumpy.testingr	   r(   Zfixturer   r   r   markZskipifr&   r*   r0   r1   r   r   r   r   <module>   s$    




