
    (ph                     |   S r SSKrSSKJr  SSKJrJrJrJrJ	r	  SSK
Jr  SSKr\R                  S 5       rS rS r\R"                  R%                  \	S	S
9S 5       r\R"                  R%                  \	S	S
9S 5       r\R"                  R%                  \	S	S
9S 5       r\R"                  R%                  \	S	S
9S 5       rg)z=Test for assert_deallocated context manager and gc utilities
    NLock)set_gc_stategc_stateassert_deallocatedReferenceErrorIS_PYPY)assert_equalc                      [        5       $ Nr        Q/var/www/html/venv/lib/python3.13/site-packages/scipy/_lib/tests/test__gcutils.pygc_lockr      s	    6Mr   c                    U    [         R                  " 5       n S H  n[         R                  " 5         [        U5        [	        [         R                  " 5       U5        [         R
                  " 5         [        U5        [	        [         R                  " 5       U5        M     U(       a  [         R                  " 5         S S S 5        g ! U(       a  [         R                  " 5         f f = f! , (       d  f       g = fNTF)gc	isenabledenabler   r
   disable)r   	gc_statusstates      r   test_set_gc_stater      s    	LLN	
	&		U#R\\^U3

U#R\\^U3 ' 		 
 		  
s#   C(BC!C(C%%C((
C6c           	         U    [         R                  " 5       n S H  n[        U5        S H  n[        U5         [	        [         R                  " 5       U5        S S S 5        [	        [         R                  " 5       U5        [        U5         [	        [         R                  " 5       U5        [        U(       + 5        S S S 5        [	        [         R                  " 5       U5        M     M     U(       a  [         R
                  " 5         S S S 5        g ! , (       d  f       N= f! , (       d  f       Nk= f! U(       a  [         R
                  " 5         f f = f! , (       d  f       g = fr   )r   r   r   r   r
   r   )r   r   	pre_state
with_states       r   test_gc_stater   #   s    	LLN		*	Y'"/J!*-$R\\^Z@ . !;!*-$R\\^Z@$^4 . !; #0 + 		% 
 .-
 .-
 		 # 
sQ   E D2 D	2D20D!	</D2+E
DD2!
D/+D22EE
E"zTest not meaningful on PyPy)reasonc           
          " S S5      nU    S Hz  n[        U5         [        USSS5       n[        UR                  S5        AS S S 5        [        USSSS9    S S S 5        [        [        R
                  " 5       U5        S S S 5        M|     S S S 5        g ! , (       d  f       NX= f! , (       d  f       NS= f! , (       d  f       M  = f! , (       d  f       g = f)	Nc                       \ rS rSrSS jrSrg)"test_assert_deallocated.<locals>.C=   c                     X0l         g r   name)selfarg0arg1r&   s       r   __init__+test_assert_deallocated.<locals>.C.__init__>   s    Ir   r%   N)myname__name__
__module____qualname____firstlineno__r*   __static_attributes__r   r   r   Cr"   =   s    	r   r3   r   r      zanother namez
third namer%   )r   r   r
   r&   r   r   )r   r3   
gc_currentcs       r   test_assert_deallocatedr7   :   s      
'J*%'1a@A 8 A (1alC DR\\^Z8 &% ( 
 A@ DC &% 
sQ   CB9B	B9B(	'B9C
B%!B9(
B62B99
CC
Cc                       " S S5      n [         R                  " [        5         [        U 5       n S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                       \ rS rSrSrg)(test_assert_deallocated_nodel.<locals>.CO   r   N)r.   r/   r0   r1   r2   r   r   r   r3   r:   O   s    r   r3   pytestraisesr   r   )r3   _s     r   test_assert_deallocated_nodelr@   M   sF     	~	&  "a # 
'	& #" 
'	&!   AAA
A	A
A#c                       " S S5      n [         R                  " [        5         [        U 5       nAS S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg)+test_assert_deallocated_circular.<locals>.C]   c                     X l         g r   	_circularr'   s    r   r*   4test_assert_deallocated_circular.<locals>.C.__init__^       !Nr   rG   Nr-   r   r   r   r3   rD   ]       	"r   r3   r<   )r3   r6   s     r    test_assert_deallocated_circularrM   [   sD    " " 
~	&"a # 
'	&"" 
'	&s!   AAA
A	A
A#c                       " S S5      n [         R                  " [        5         [        U 5          S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                       \ rS rSrS rSrg),test_assert_deallocated_circular2.<locals>.Ch   c                     X l         g r   rG   rI   s    r   r*   5test_assert_deallocated_circular2.<locals>.C.__init__i   rK   r   rG   Nr-   r   r   r   r3   rP   h   rL   r   r3   r<   )r3   s    r   !test_assert_deallocated_circular2rT   f   sB    " " 
~	&" # 
'	&"" 
'	&rA   )__doc__r   	threadingr   scipy._lib._gcutilsr   r   r   r   r	   numpy.testingr
   r=   fixturer   r   r   markskipifr7   r@   rM   rT   r   r   r   <module>r\      s    	 : : '    . G$AB9 C9$ G$AB
 C
 G$AB C G$AB Cr   