
    tKgX                     d   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 Zd Ze
j                  j                  ed      d	        Ze
j                  j                  ed      d
        Ze
j                  j                  ed      d        Ze
j                  j                  ed      d        Zy)z> Test for assert_deallocated context manager and gc utilities
    N)set_gc_stategc_stateassert_deallocatedReferenceErrorIS_PYPY)assert_equalc                     t        j                         } 	 dD ]|  }t        j                          t        |       t	        t        j                         |       t        j
                          t        |       t	        t        j                         |       ~ 	 | rt        j                          y y # | rt        j                          w w xY wNTF)gc	isenabledenabler   r   disable)	gc_statusstates     b/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/_lib/tests/test__gcutils.pytest_set_gc_stater      s    I
"EIIK/JJL/ # IIK 9IIK s   BB0 0C	c                  P   t        j                         } 	 dD ]  }t        |       dD ]  }t        |      5  t	        t        j                         |       d d d        t	        t        j                         |       t        |      5  t	        t        j                         |       t        |        d d d        t	        t        j                         |         	 | rt        j
                          y y # 1 sw Y   xY w# 1 sw Y   PxY w# | rt        j
                          w w xY wr
   )r   r   r   r   r   r   )r   	pre_state
with_states      r   test_gc_stater      s    I&I#+
j) < * R\\^Y7j) < Z0 * R\\^Y7 , ' IIK  *)
 *)
 IIK s:    D C41D +D 1*D 4C=9D  D	D D%zTest not meaningful on PyPy)reasonc                  `    G d d      } dD ]{  }t        |      5  t        | ddd      5 }t        |j                  d       ~d d d        t        | ddd      5  	 d d d        t        t	        j
                         |       d d d        } y # 1 sw Y   KxY w# 1 sw Y   >xY w# 1 sw Y   xY w)	Nc                       e Zd ZddZy)"test_assert_deallocated.<locals>.Cc                     || _         y Nname)selfarg0arg1r   s       r   __init__z+test_assert_deallocated.<locals>.C.__init__6   s	    DI    N)myname__name__
__module____qualname__r#    r$   r   Cr   5   s    	r$   r+   r   r      zanother namez
third namer   )r   r   r   r   r   r   )r+   
gc_currentcs      r   test_assert_deallocatedr/   2   s      $
j!#Aq!^<QVV^4 = $Aq!,? @4 "! $ =< @? "!s:   B$BB$B&B$BB$B!B$$B-	c                       G d d      } t        j                  t              5  t        |       5 }	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zy)(test_assert_deallocated_nodel.<locals>.CN)r'   r(   r)   r*   r$   r   r+   r2   F   s    r$   r+   pytestraisesr   r   )r+   _s     r   test_assert_deallocated_nodelr7   D   sF     	~	&  "a # 
'	& #" 
'	&!   AAAA	AAc                       G d d      } t        j                  t              5  t        |       5 }~d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)+test_assert_deallocated_circular.<locals>.Cc                     | | _         y r   	_circularr    s    r   r#   z4test_assert_deallocated_circular.<locals>.C.__init__U   	    !DNr$   Nr&   r*   r$   r   r+   r;   T       	"r$   r+   r3   )r+   r.   s     r    test_assert_deallocated_circularrB   R   sD    " " 
~	&"a # 
'	&"" 
'	&s!   AAAA	AAc                       G d d      } t        j                  t              5  t        |       5  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zy),test_assert_deallocated_circular2.<locals>.Cc                     | | _         y r   r=   r?   s    r   r#   z5test_assert_deallocated_circular2.<locals>.C.__init__`   r@   r$   Nr&   r*   r$   r   r+   rE   _   rA   r$   r+   r3   )r+   s    r   !test_assert_deallocated_circular2rG   ]   sB    " " 
~	&" # 
'	&"" 
'	&r8   )__doc__r   scipy._lib._gcutilsr   r   r   r   r   numpy.testingr   r4   r   r   markskipifr/   r7   rB   rG   r*   r$   r   <module>rM      s    	: : ' , G$AB5 C5" G$AB
 C
 G$AB C G$AB Cr$   