
    [hk                     d    d dl Z d dlZd dlZddlmZ ddlmZ ej        sJ  G d de          ZdS )    N   )TestCase)fails_leakcheckc                   6    e Zd Zd Zd Zd Zed             ZdS )GCTestsc                    t          j        t          j        t          j                                                            }t          j                      |            /dd l}t          d|	                     |                                 | 
                     |                       |                     t
          j        t
          j                   d S )Nr   zO IS NOT NONE.)weakrefrefgreenlet
getcurrentswitchgccollectsysprintgetrefcountassertIsNoneassertFalsegarbage)selfor   s      e/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/greenlet/tests/test_gc.pytest_dead_circular_refzGCTests.test_dead_circular_ref   s    K)(*=>>EEGGHH

133?JJJ"COOAACC$8$8999!!##RZ00000    c                 4    G d dt           j                   } |            }||_        t          j        |          }t	          j                     |                      |                       |                     t          j        t          j                   d S )Nc                       e Zd ZdZdS )9GCTests.test_circular_greenlet.<locals>.circular_greenletN)__name__
__module____qualname__r    r   r   circular_greenletr      s        DDDr   r"   )	r   r   r	   r
   r   r   r   r   r   )r   r"   r   s      r   test_circular_greenletzGCTests.test_circular_greenlet   s    	 	 	 	 	 1 	 	 	KNN

!!##RZ00000r   c                 &    G d dt           j                   } |            }t          j        |          }t          j                     |                      |                       |                     t          j        t          j                   d S )Nc                       e Zd Zd Zd ZdS )4GCTests.test_inactive_ref.<locals>.inactive_greenletc                 R    t           j                             | | j                   d S )N)run)r   __init__r(   r   s    r   r)   z=GCTests.test_inactive_ref.<locals>.inactive_greenlet.__init__$   s&    !**4TX*>>>>>r   c                     d S Nr!   r*   s    r   r(   z8GCTests.test_inactive_ref.<locals>.inactive_greenlet.run'       r   N)r   r   r    r)   r(   r!   r   r   inactive_greenletr&   #   s2        ? ? ?    r   r.   )r   r	   r
   r   r   r   r   r   )r   r.   r   s      r   test_inactive_refzGCTests.test_inactive_ref"   s    	 	 	 	 	 1 	 	 	 KNN

!!##RZ00000r   c                 >    G d dt                     g }t          j                    fd}t          j        |          }||_        |                    |           |                                 ~~t          j                     t          j                     d S )Nc                       e Zd Zd ZdS );GCTests.test_finalizer_crash.<locals>.object_with_finalizerc                     d S r,   r!   r*   s    r   __del__zCGCTests.test_finalizer_crash.<locals>.object_with_finalizer.__del__C   r-   r   N)r   r   r    r4   r!   r   r   object_with_finalizerr2   B   s#            r   r5   c                                   t          j                    _        	                                  n$# t           j        $ r t          d           Y nw xY wt          j                    `d S # t          j                    `w xY w)NzGot greenlet exit!)r   r   objectr   GreenletExitr   )r5   parents   r   greenlet_bodyz3GCTests.test_finalizer_crash.<locals>.greenlet_bodyG   s    +@+@+B+BH!!(1( , , ,*+++++, '))000H'))00000s&   8 A1 AA1 AA1 1B)r7   r   r   arrayappendr   r   r   )r   r;   r:   gr5   r9   s       @@r   test_finalizer_crashzGCTests.test_finalizer_crash/   s    &	 	 	 	 	F 	 	 	 $&&	1 	1 	1 	1 	1 	1 m,,Q	




r   N)r   r   r    r   r#   r/   r   r>   r!   r   r   r   r      s\        1 1 11 1 11 1 1 & & _& & &r   r   )	r   r	   r    r   	leakcheckr   GREENLET_USE_GCr   r!   r   r   <module>rB      s    				         & & & & & &    H H H H Hh H H H H Hr   