
    ^Mh                        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             Zd Zd Zej                            e	d	
          d             Zej                            e	d	
          d             Zej                            e	d	
          d             Zej                            e	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                      t                      S Nr        ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/_lib/tests/test__gcutils.pygc_lockr      s    66Mr   c                    | 5  t          j                    }	 dD ]}t          j                     t          |           t	          t          j                    |           t          j                     t          |           t	          t          j                    |           	 |rt          j                     n# |rt          j                     w w xY wd d d            d S # 1 swxY w Y   d S NTF)gc	isenabledenabler   r
   disable)r   	gc_statusstates      r   test_set_gc_stater      s'   	  LNN	
	& 4 4	U###R\^^U333
U###R\^^U33334  	  	                 s)   C"BB:$C":CC""C&)C&c           	         | 5  t          j                    }	 dD ]}t          |           dD ]}t          |          5  t	          t          j                    |           d d d            n# 1 swxY w Y   t	          t          j                    |           t          |          5  t	          t          j                    |           t          |            d d d            n# 1 swxY w Y   t	          t          j                    |           	 |rt          j                     n# |rt          j                     w w xY wd d d            d S # 1 swxY w Y   d S r   )r   r   r   r   r
   r   )r   r   	pre_state
with_states       r   test_gc_stater   #   s.   	  LNN		* < <	Y'''"/ 
< 
<J!*-- A A$R\^^Z@@@A A A A A A A A A A A A A A A !;;;!*-- 5 5$R\^^Z@@@$^4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 !;;;;
<<  	  	#                 so   E&D*"A,	 D*,A00D*3A043D*'2C%	D*%C))D*,C)-&D*E*EEEEzTest not meaningful on PyPy)reasonc           	          G d d          }| 5  dD ]}t          |          5  t          |ddd          5 }t          |j        d           ~d d d            n# 1 swxY w Y   t          |ddd          5  	 d d d            n# 1 swxY w Y   t          t	          j                    |           d d d            n# 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )	Nc                       e Zd ZddZdS )"test_assert_deallocated.<locals>.Cmynamec                     || _         d S r   name)selfarg0arg1r&   s       r   __init__z+test_assert_deallocated.<locals>.C.__init__>   s    DIIIr   N)r#   __name__
__module____qualname__r*   r   r   r   Cr"   =   s(        	 	 	 	 	 	r   r/   r   r      zanother namez
third namer%   )r   r   r
   r&   r   r   )r   r/   
gc_currentcs       r   test_assert_deallocatedr3   :   s           
 
9 
9' 		9 		9J*%% 9 9'1a@@ A 888               (1alCCC                R\^^Z8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9		9
9 
9 
9 
9 
9 
9 
9 
9 
9 
9 
9 
9 
9 
9 
9 
9 
9 
9s{   CB>A	B>AB>!A"B>8B	:B>B

B>B
$B>2C>CCCCCCc                       G d d          } t          j        t                    5  t          |           5 }	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )(test_assert_deallocated_nodel.<locals>.CN)r,   r-   r.   r   r   r   r/   r6   O   s        r   r/   pytestraisesr   r   )r/   _s     r   test_assert_deallocated_nodelr;   M   s          	~	&	&    "" 	a	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 3   AAAA			AA		AA!$A!c                       G d d          } t          j        t                    5  t          |           5 }~d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZdS )+test_assert_deallocated_circular.<locals>.Cc                     | | _         d S r   	_circularr'   s    r   r*   z4test_assert_deallocated_circular.<locals>.C.__init__^       !DNNNr   Nr+   r   r   r   r/   r?   ]   #        	" 	" 	" 	" 	"r   r/   r7   )r/   r2   s     r    test_assert_deallocated_circularrF   [   s   " " " " " " " " 
~	&	&  "" 	a	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s3   AAAA			AA		AA!$A!c                       G d d          } t          j        t                    5  t          |           5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                       e Zd Zd ZdS ),test_assert_deallocated_circular2.<locals>.Cc                     | | _         d S r   rA   rC   s    r   r*   z5test_assert_deallocated_circular2.<locals>.C.__init__i   rD   r   Nr+   r   r   r   r/   rI   h   rE   r   r/   r7   )r/   s    r   !test_assert_deallocated_circular2rK   f   s   " " " " " " " " 
~	&	&  "" 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 r<   )__doc__r   	threadingr   scipy._lib._gcutilsr   r   r   r   r	   numpy.testingr
   r8   fixturer   r   r   markskipifr3   r;   rF   rK   r   r   r   <module>rS      s    				      : : : : : : : : : : : : : : ' & & & & &         . G$ABB9 9 CB9$ G$ABB
 
 CB
 G$ABB  CB G$ABB  CB  r   