o
    Ö­j‘  ã                   @   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   ú[/var/www/html/CropPilot/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   Ú	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$    




