§
    ïyIf*±  ã                   óp  — d dl mZ d dl mZ d dl mZ d dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlZd dlmZ ddlmZ dd	lmZ  G d
„ de¦  «        Zd„ Zd„ Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zedk    rd dlZ ej        ¦   «          dS dS )é    )Úabsolute_import)Údivision)Úprint_functionN)ÚABCMetaÚabstractmethod)Úgreenleté   )ÚTestCase)Úfails_leakcheckc                   ó   — e Zd ZdS )Ú	SomeErrorN©Ú__name__Ú
__module__Ú__qualname__© ó    úP/var/www/piapp/venv/lib/python3.11/site-packages/greenlet/tests/test_greenlet.pyr   r      s   € € € € € Ø€Dr   r   c                 óÌ   — 	 t          j        ¦   «         j                             ¦   «          n2#  |                      t          j        ¦   «         d         ¦  «         ‚ xY wt          ‚©Nr   )r   Ú
getcurrentÚparentÚswitchÚappendÚsysÚexc_infor   ©Úseens    r   Úfmainr       sV   € ðÝÔÑÔÔ$×+Ò+Ñ-Ô-Ð-Ð-øðØ�Š•C”L‘N”N 1Ô%Ñ&Ô&Ð&ØøøøÝ
€Os	   ‚*- ­/Ac                 óX   — d„ }t          || ¬¦  «        }|                     |¦  «         d S )Nc                 ó   — | ‚©Nr   )Úexcs    r   Úcrasherzsend_exception.<locals>.crasher,   s   € Øˆ	r   ©r   ©ÚRawGreenletr   )Úgr#   r$   Úg1s       r   Úsend_exceptionr*   )   s6   € ðð ð å	�W QÐ	'Ñ	'Ô	'€BØ‡I‚Iˆc�N„N€N€N€Nr   c                   óH  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed/d„¦   «         Zed„ ¦   «         Zd„ Z ed„ ¦   «         Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.S )0ÚTestGreenletc                 ób  ‡— g Šˆfd„}t          |¦  «        }‰                     d¦  «         |                     ¦   «          ‰                     d¦  «         |                     ¦   «          ‰                     d¦  «         |                      ‰t	          t          d¦  «        ¦  «        ¦  «         d S )Nc                  ó°   •— ‰                       d¦  «         t          j        ¦   «         j                             ¦   «          ‰                       d¦  «         d S )Nr	   é   ©r   r   r   r   r   ©Úlsts   €r   Úfz'TestGreenlet._do_simple_test.<locals>.f7   sC   ø€ Ø�JŠJ�q‰MŒMˆMÝÔÑ!Ô!Ô(×/Ò/Ñ1Ô1Ð1Ø�JŠJ�q‰MŒMˆMˆMˆMr   r   é   é   é   )r'   r   r   ÚassertEqualÚlistÚrange)Úselfr3   r(   r2   s      @r   Ú_do_simple_testzTestGreenlet._do_simple_test4   s�   ø€ Øˆð	ð 	ð 	ð 	ð 	õ ˜‰NŒNˆØ�
Š
�1‰ŒˆØ	�Š‰
Œ
ˆ
Ø�
Š
�1‰ŒˆØ	�Š‰
Œ
ˆ
Ø�
Š
�1‰ŒˆØ×Ò˜�d¥5¨¡8¤8™nœnÑ-Ô-Ð-Ð-Ð-r   c                 ó.   — |                       ¦   «          d S r"   )r;   ©r:   s    r   Útest_simplezTestGreenlet.test_simpleC   s   € Ø×ÒÑÔÐÐÐr   c                 óþ   — t          ¦   «         }|                      t          ¦  «        5 }|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S ©NÚrun)r'   ÚassertRaisesÚAttributeErrorr   ÚassertInÚstrÚ	exception©r:   r(   r#   s      r   Ú(test_switch_no_run_raises_AttributeErrorz5TestGreenlet.test_switch_no_run_raises_AttributeErrorF   s¤   € Ý‰MŒMˆØ×Ò�~Ñ.Ô.ð 	°#Ø�HŠH‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	�Š�e�S ¤Ñ/Ô/Ñ0Ô0Ð0Ð0Ð0s   ©A
Á
AÁAc                 ó
  — t          ¦   «         }|                      t          ¦  «        5 }|                     t          ¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S r@   )r'   rB   rC   Úthrowr   rD   rE   rF   rG   s      r   Ú'test_throw_no_run_raises_AttributeErrorz4TestGreenlet.test_throw_no_run_raises_AttributeErrorM   s©   € Ý‰MŒMˆØ×Ò�~Ñ.Ô.ð 	°#Ø�GŠG•IÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	�Š�e�S ¤Ñ/Ô/Ñ0Ô0Ð0Ð0Ð0s   ©AÁAÁAc                 ó¨   — t          d ¬¦  «        }|                      |¦  «         |                      |j        t	          j        ¦   «         ¦  «         d S )Nr%   )r'   ÚassertIsNotNoneÚassertIsr   r   r   ©r:   r(   s     r   Útest_parent_equals_Nonez$TestGreenlet.test_parent_equals_NoneT   sK   € Ý˜tÐ$Ñ$Ô$ˆØ×Ò˜QÑÔÐØ�Š�a”h¥Ô 3Ñ 5Ô 5Ñ6Ô6Ð6Ð6Ð6r   c                 ó„   — t          d ¬¦  «        }|                      |¦  «         |                      |j        ¦  «         d S )N)rA   )r'   rM   ÚassertIsNonerA   rO   s     r   Útest_run_equals_Nonez!TestGreenlet.test_run_equals_NoneY   sB   € Ý˜DÐ!Ñ!Ô!ˆØ×Ò˜QÑÔÐØ×Ò˜!œ%Ñ Ô Ð Ð Ð r   c                 óv  ‡— g Šˆfd„}t          |¦  «        }t          |¦  «        }|                     ¦   «          |                      t          ‰¦  «        d¦  «         |                     ¦   «          |                      t          ‰¦  «        d¦  «         |                     ¦   «          |                      t          ‰¦  «        d¦  «         |                      |j        d¦  «         |                     ¦   «          |                      t          ‰¦  «        d¦  «         |                      |j        d¦  «         d S )Nc                  ó´   •— ‰                       d¦  «         t          j        ¦   «         j                             ¦   «          ‰                      ddg¦  «         d S )Nr	   )r   r   r   r   r   Úextendr1   s   €r   r3   z)TestGreenlet.test_two_children.<locals>.fa   sL   ø€ Ø�JŠJ�q‰MŒMˆMÝÔÑ!Ô!Ô(×/Ò/Ñ1Ô1Ð1Ø�JŠJ˜˜1�vÑÔÐÐÐr   r	   r4   r5   Té   )r'   r   r7   ÚlenÚdead)r:   r3   r(   Úhr2   s       @r   Útest_two_childrenzTestGreenlet.test_two_children^   s  ø€ Øˆð	ð 	ð 	ð 	ð 	õ ˜‰NŒNˆÝ˜‰NŒNˆØ	�Š‰
Œ
ˆ
Ø×Ò�˜S™œ 1Ñ%Ô%Ð%Ø	�Š‰
Œ
ˆ
Ø×Ò�˜S™œ 1Ñ%Ô%Ð%Ø	�Š‰
Œ
ˆ
Ø×Ò�˜S™œ 1Ñ%Ô%Ð%Ø×Ò˜œ Ñ&Ô&Ð&Ø	�Š‰
Œ
ˆ
Ø×Ò�˜S™œ 1Ñ%Ô%Ð%Ø×Ò˜œ Ñ&Ô&Ð&Ð&Ð&r   c                 ó:  ‡‡— g Šˆfd„Šˆˆfd„}t          |¦  «        }|                      t          j        |¦  «        d¦  «         |                     ¦   «          |                      ‰g d¢¦  «         |                      t          j        |¦  «        d¦  «         d S )Nc                  ó†   •— ‰                       d¦  «         t          j        ¦   «         j                             ¦   «          d S )NÚbr0   r1   s   €r   r3   z3TestGreenlet.test_two_recursive_children.<locals>.fu   s6   ø€ Ø�JŠJ�s‰OŒOˆOÝÔÑ!Ô!Ô(×/Ò/Ñ1Ô1Ð1Ð1Ð1r   c                  ó¢   •— ‰                      d¦  «         t          ‰¦  «        } |                      ¦   «          ‰                      d¦  «         d S )NÚaÚc)r   r'   r   )r(   r3   r2   s    €€r   r(   z3TestGreenlet.test_two_recursive_children.<locals>.gy   s=   ø€ Ø�JŠJ�s‰OŒOˆOÝ˜A‘”ˆAØ�HŠH‰JŒJˆJØ�JŠJ�s‰OŒOˆOˆOˆOr   r4   )r`   r^   ra   )r'   r7   r   Úgetrefcountr   )r:   r(   r3   r2   s     @@r   Útest_two_recursive_childrenz(TestGreenlet.test_two_recursive_childrenr   sº   øø€ Øˆð	2ð 	2ð 	2ð 	2ð 	2ð	ð 	ð 	ð 	ð 	ð 	õ ˜‰NŒNˆØ×Ò�œ¨Ñ+Ô+¨QÑ/Ô/Ð/Ø	�Š‰
Œ
ˆ
Ø×Ò˜˜o˜o˜oÑ.Ô.Ð.à×Ò�œ¨Ñ+Ô+¨QÑ/Ô/Ð/Ð/Ð/r   c                 ó  ‡ ‡‡— g Šˆ ˆfd„Šˆfd„t          d¦  «        D ¦   «         }|D ]}|                     ¦   «          Œ|D ]}|                     d¦  «         Œ‰                      t	          ‰¦  «        t	          |¦  «        ¦  «         d S )Nc                  óZ   •— ‰                       ¦   «          ‰                     d¦  «         d S ©NT)r;   r   )r:   Úsuccesss   €€r   r3   z$TestGreenlet.test_threads.<locals>.f‰   s-   ø€ Ø× Ò Ñ"Ô"Ð"Ø�NŠN˜4Ñ Ô Ð Ð Ð r   c                 ó:   •— g | ]}t          j        ‰¬ ¦  «        ‘ŒS )©Útarget)Ú	threadingÚThread)Ú.0Úir3   s     €r   ú
<listcomp>z-TestGreenlet.test_threads.<locals>.<listcomp>Œ   s'   ø€ Ð=Ð=Ð=¨a�yÔ qÐ)Ñ)Ô)Ð=Ð=Ð=r   é
   )r9   ÚstartÚjoinr7   rX   )r:   ÚthsÚthr3   rg   s   `  @@r   Útest_threadszTestGreenlet.test_threads†   s¯   øøø€ Øˆð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð >Ð=Ð=Ð=µ5¸±9´9Ð=Ñ=Ô=ˆØð 	ð 	ˆBØ�HŠH‰JŒJˆJˆJØð 	ð 	ˆBØ�GŠG�B‰KŒKˆKˆKØ×Ò�˜W™œ¥s¨3¡x¤xÑ0Ô0Ð0Ð0Ð0r   c                 óz  — g }t          t          ¦  «        }t          t          ¦  «        }|                     |¦  «         |                     |¦  «         ||_        |                      |g ¦  «         |                      t          |j        ¦  «         |                      |t          g¦  «         |                     ¦   «         }|                      |d¦  «         |                      |t          g¦  «         |                     d¦  «        }|                      |d¦  «         |                      |t          g¦  «         d S )Nr   é   )r'   r   r   r   r7   rB   r   )r:   r   r)   Úg2Úvalues        r   Útest_exceptionzTestGreenlet.test_exception“   s  € ØˆÝ�ÑÔˆÝ�ÑÔˆØ
�	Š	�$‰ŒˆØ
�	Š	�$‰ŒˆØˆŒ	à×Ò˜˜rÑ"Ô"Ð"ð 	×Ò�) R¤YÑ/Ô/Ð/Ø×Ò˜¥	˜{Ñ+Ô+Ð+à—	’	‘”ˆØ×Ò˜ Ñ#Ô#Ð#Ø×Ò˜¥	˜{Ñ+Ô+Ð+à—	’	˜"‘”ˆØ×Ò˜ Ñ#Ô#Ð#Ø×Ò˜¥	˜{Ñ+Ô+Ð+Ð+Ð+r   c                 óâ   — g }t          t          ¦  «        }|                     |¦  «         |                      t          t
          |t          ¦  «         |                      |t          g¦  «         d S r"   )r'   r   r   rB   ÚKeyErrorr*   r7   )r:   r   r)   s      r   Útest_send_exceptionz TestGreenlet.test_send_exception¯   s[   € ØˆÝ�ÑÔˆØ
�	Š	�$‰ŒˆØ×Ò�(¥N°B½ÑAÔAÐAØ×Ò˜¥˜zÑ*Ô*Ð*Ð*Ð*r   c                 óÄ  — g }t          t          ¦  «        }t          t          ¦  «        }|                     |¦  «         |                     |¦  «         |                      |g ¦  «         ~t	          j        ¦   «          |                      |t          j        g¦  «         ~t	          j        ¦   «          |                      |t          j        t          j        g¦  «         d S r"   )r'   r   r   r7   ÚgcÚcollectr   ÚGreenletExit)r:   r   r)   rx   s       r   Útest_dealloczTestGreenlet.test_dealloc¶   s´   € ØˆÝ�ÑÔˆÝ�ÑÔˆØ
�	Š	�$‰ŒˆØ
�	Š	�$‰ŒˆØ×Ò˜˜rÑ"Ô"Ð"ØÝ
Œ
‰ŒˆØ×Ò˜¥Ô 5Ð6Ñ7Ô7Ð7ØÝ
Œ
‰ŒˆØ×Ò˜¥Ô 5µxÔ7LÐMÑNÔNÐNÐNÐNr   c                 ó¾  — d„ }t          |¦  «        }|                     ¦   «          t          j        }	 ddlm} n# t          $ r	 ddlm} Y nw xY w |¦   «         x}t          _        	 ~|t          _        n# |t          _        w xY w|                     ¦   «         }|  	                    d|¦  «         |  	                    d|¦  «         |  	                    d|¦  «         d S )Nc                  ó’   — 	 t          j        ¦   «         j                             ¦   «          d S # t           j        $ r	 t
          d ‚w xY wr"   )r   r   r   r   r�   r   r   r   r   rA   zHTestGreenlet.test_dealloc_catches_GreenletExit_throws_other.<locals>.runÅ   sQ   € ð*ÝÔ#Ñ%Ô%Ô,×3Ò3Ñ5Ô5Ð5Ð5Ð5øÝÔ(ð *ð *ð *Ý TÐ)ð*øøøs	   ‚*. ®Ar   )ÚStringIOÚ	ExceptionÚignoredr   )
r'   r   r   ÚstderrÚ	cStringIOr…   ÚImportErrorÚioÚgetvaluerD   )r:   rA   r(   Ú	oldstderrr…   rˆ   Úvs          r   Ú.test_dealloc_catches_GreenletExit_throws_otherz;TestGreenlet.test_dealloc_catches_GreenletExit_throws_otherÄ   s
  € ð	*ð 	*ð 	*õ ˜ÑÔˆØ	�Š‰
Œ
ˆ
õ
 ”Jˆ	ð	$Ø*Ð*Ð*Ð*Ð*Ð*Ð*øÝð 	$ð 	$ð 	$Ø#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ð	$øøøà&˜h™jœjÐ(ˆ•”ð	#Øà"�CŒJˆJø˜�CŒJÐ"Ð"Ð"Ð"à�OŠOÑÔˆØ�Š�k 1Ñ%Ô%Ð%Ø�Š�i Ñ#Ô#Ð#Ø�Š�k 1Ñ%Ô%Ð%Ð%Ð%s   ´; »AÁAÁ(A6 Á6Bc                 ó|  ‡‡‡‡‡‡— g Šg Št          j        ¦   «         Št          j        ¦   «         Št          j        ¦   «         Št          j        ¦   «         Šˆˆˆˆˆˆfd„}t          j        |¬¦  «        }|                     ¦   «          ‰                     d¦  «         |                      ‰g ¦  «         |                      t          ‰¦  «        d¦  «         ‰d d …= t          j        ¦   «          |                      ‰g ¦  «         ‰ 	                    ¦   «          ‰                     d¦  «         	 |                      ‰t          j        g¦  «         ‰ 	                    ¦   «          |                     d¦  «         ‰d d …= ‰d d …= d S # ‰ 	                    ¦   «          |                     d¦  «         ‰d d …= ‰d d …= w xY w)Nc                  óˆ  •— t          t          ¦  «        } |                      ‰¦  «         ‰                     | ¦  «         ~ t	          j        ¦   «          ‰                     ¦   «          ‰                     d¦  «         t          ¦   «          ‰                     ¦   «          ‰                     d¦  «         t          ¦   «          d S )Nr/   )r'   r   r   r   r   r€   ÚsetÚwait)r)   Ú/bg_glet_created_running_and_no_longer_ref_in_bgÚbg_should_be_clearÚfg_ref_releasedÚok_to_exit_bg_threadr   Úsomerefs    €€€€€€r   r3   z1TestGreenlet.test_dealloc_other_thread.<locals>.fë   s¡   ø€ Ý�UÑ#Ô#ˆBØ�IŠI�d‰OŒOˆOØ�NŠN˜2ÑÔÐØÝŒJ‰LŒLˆLà;×?Ò?ÑAÔAÐAØ× Ò  Ñ#Ô#Ð#å‰MŒMˆMØ×"Ò"Ñ$Ô$Ð$Ø ×%Ò% aÑ(Ô(Ð(Ý‰MŒMˆMˆMˆMr   ri   rp   r	   r/   )rk   ÚEventrl   rq   r“   r7   rX   r   r€   r’   r   r�   rr   )	r:   r3   Útr”   r•   r–   r—   r   r˜   s	      @@@@@@r   Útest_dealloc_other_threadz&TestGreenlet.test_dealloc_other_threadâ   sÓ  øøøøøø€ ØˆØˆå:C¼/Ñ:KÔ:KÐ7Ý#œ/Ñ+Ô+ˆÝ&œ_Ñ.Ô.ÐÝ(œÑ0Ô0Ðð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	õ Ô AÐ&Ñ&Ô&ˆØ	�Š‰	Œ	ˆ	Ø7×<Ò<¸RÑ@Ô@Ð@à×Ò˜˜rÑ"Ô"Ð"Ø×Ò�˜W™œ qÑ)Ô)Ð)Ø�A�A�AˆJÝ
Œ
‰Œˆà×Ò˜˜rÑ"Ô"Ð"Ø×ÒÑÔÐØ×Ò Ñ"Ô"Ð"ð	Ø×Ò˜T¥HÔ$9Ð#:Ñ;Ô;Ð;à ×$Ò$Ñ&Ô&Ð&Ø�FŠF�2‰JŒJˆJØ�Q�Q�Q�Ø˜˜˜�
�
�
øð !×$Ò$Ñ&Ô&Ð&Ø�FŠF�2‰JŒJˆJØ�Q�Q�Q�Ø˜˜˜�
ˆNˆNˆNˆNs   Ä0!F Æ5F;c                 ón  ‡ — ˆ fd„}t          |¦  «        }|                     ¦   «         }‰                      ||j        u ¦  «         ‰                      |¦  «         |                     ¦   «         }‰                      |¦  «         ‰                      |d¦  «         ‰                      |j        d ¦  «         d S )Nc                  ó¼   •— t          j        d¦  «        } ‰                     | j        d ¦  «         t	          j        ¦   «         j                             | ¦  «         dS )Nr   úmeaning of life)r   Ú	_getframer7   Úf_backr   r   r   r   )r3   r:   s    €r   Úf1z#TestGreenlet.test_frame.<locals>.f1  sP   ø€ Ý”˜aÑ Ô ˆAØ×Ò˜QœX tÑ,Ô,Ð,ÝÔÑ!Ô!Ô(×/Ò/°Ñ2Ô2Ð2Ø$Ð$r   rž   )r'   r   Ú
assertTrueÚgr_frameÚassertFalser7   )r:   r¡   r(   ÚframeÚfrom_gs   `    r   Ú
test_framezTestGreenlet.test_frame  s·   ø€ ð	%ð 	%ð 	%ð 	%ð 	%õ
 ˜‰OŒOˆØ—’‘
”
ˆØ�Š˜ ¤Ð+Ñ,Ô,Ð,Ø�Š˜ÑÔÐà—’‘”ˆØ×Ò˜ÑÔÐØ×Ò˜Ð!2Ñ3Ô3Ð3Ø×Ò˜œ TÑ*Ô*Ð*Ð*Ð*r   c                 ó  — d„ }t          j        |d¬¦  «        }t          j        |d¬¦  «        }|                     ¦   «          |                     ¦   «          |                     d¦  «         |                     d¦  «         d S )Nc                 óT   ‡ — t          ˆ fd„¦  «        }|                     ¦   «          d S )Nc                  ó,   •— t          j        ‰ ¦  «        S r"   )ÚtimeÚsleep©Úxs   €r   ú<lambda>z>TestGreenlet.test_thread_bug.<locals>.runner.<locals>.<lambda>   s   ø€ ¥D¤J¨q¡M¤M€ r   r&   )r®   r(   s   ` r   Úrunnerz,TestGreenlet.test_thread_bug.<locals>.runner  s+   ø€ ÝÐ1Ð1Ð1Ð1Ñ2Ô2ˆAØ�HŠH‰JŒJˆJˆJˆJr   )gš™™™™™É?©rj   Úargs)g333333Ó?rp   )rk   rl   rq   rr   )r:   r°   Út1Út2s       r   Útest_thread_bugzTestGreenlet.test_thread_bug  sy   € ð	ð 	ð 	õ Ô V°&Ð9Ñ9Ô9ˆÝÔ V°&Ð9Ñ9Ô9ˆØ
�Š‰
Œ
ˆ
Ø
�Š‰
Œ
ˆ
Ø
�Š�‰ŒˆØ
�Š�‰Œˆˆˆr   c                 ó†   ‡ — ˆ fd„}t          |¦  «                             dd¬¦  «        }‰                      |d¦  «         d S )Nc                 ó`   •— ‰                      | d¦  «         ‰                      |d¦  «         dS )Nr5   r4   é*   )r7   )r`   r^   r:   s     €r   rA   z,TestGreenlet.test_switch_kwargs.<locals>.run*  s4   ø€ Ø×Ò˜Q Ñ"Ô"Ð"Ø×Ò˜Q Ñ"Ô"Ð"Ø�2r   r5   r4   )r`   r^   r¸   ©r'   r   r7   )r:   rA   r®   s   `  r   Útest_switch_kwargszTestGreenlet.test_switch_kwargs)  sZ   ø€ ð	ð 	ð 	ð 	ð 	õ ˜ÑÔ×#Ò# a¨1Ð#Ñ-Ô-ˆØ×Ò˜˜BÑÔÐÐÐr   c                 ó(  — d„ }t          |¦  «        }|                      ddi|                     d¦  «        ¦  «         |                      dddif|                     ¦   «         ¦  «         |                      d|                     ¦   «         ¦  «         d S )Nc                 óÂ   — t          j        ¦   «         j                             | ¬¦  «         t          j        ¦   «         j                             dd¬¦  «         | | dz  fS )Nr­   r4   r/   ©r   r   r   r   r­   s    r   rA   z6TestGreenlet.test_switch_kwargs_to_parent.<locals>.run2  sX   € ÝÔÑ!Ô!Ô(×/Ò/°!Ð/Ñ4Ô4Ð4ÝÔÑ!Ô!Ô(×/Ò/°°QÐ/Ñ7Ô7Ð7Ø�a˜1‘f�9Ðr   r®   r/   )r4   )r/   é	   )r'   r7   r   )r:   rA   r(   s      r   Útest_switch_kwargs_to_parentz)TestGreenlet.test_switch_kwargs_to_parent1  s�   € ð	ð 	ð 	õ ˜ÑÔˆØ×Ò˜#˜q˜ 1§8¢8¨A¡;¤;Ñ/Ô/Ð/Ø×Ò˜$  a Ð)¨1¯8ª8©:¬:Ñ6Ô6Ð6Ø×Ò˜ §¢¡¤Ñ,Ô,Ð,Ð,Ð,r   c                 ó  ‡‡‡— i Št          j        ¦   «         Št          j        ¦   «         Šˆˆˆfd„}t          j        |¬¦  «        }|                     ¦   «          ‰                     d¦  «         |                      t          j        ¦  «        5  ‰d                              ¦   «          d d d ¦  «         n# 1 swxY w Y   ‰ 	                    ¦   «          | 
                    d¦  «         ‰                     ¦   «          d S )Nc                  ó€   •— t          d„ ¦  «        ‰d<   ‰                      ¦   «          ‰                     d¦  «         d S )Nc                  ó   — d S r"   r   r   r   r   r¯   zITestGreenlet.test_switch_to_another_thread.<locals>.run.<locals>.<lambda>A  ó   € ¨D€ r   r(   rp   ©r'   r’   r“   ©Úcreated_eventÚdataÚ
done_events   €€€r   rA   z7TestGreenlet.test_switch_to_another_thread.<locals>.run@  ó@   ø€ Ý# L LÑ1Ô1ˆD�‰IØ×ÒÑÔÐØ�OŠO˜BÑÔÐÐÐr   ri   rp   r(   )rk   r™   rl   rq   r“   rB   r   Úerrorr   r’   rr   Úclear)r:   rA   ÚthreadrÆ   rÇ   rÈ   s      @@@r   Útest_switch_to_another_threadz*TestGreenlet.test_switch_to_another_thread;  s.  øøø€ ØˆÝ!œÑ)Ô)ˆÝ”_Ñ&Ô&ˆ
ð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 õ Ô!¨Ð-Ñ-Ô-ˆØ�Š‰ŒˆØ×Ò˜2ÑÔÐØ×Ò�xœ~Ñ.Ô.ð 	ð 	Ø�ŒI×ÒÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à�ŠÑÔÐØ�Š�B‰Œˆà�
Š
‰Œˆˆˆs   ÂB7Â7B;Â>B;c                 ób   ‡ ‡— ˆˆ fd„}ˆ fd„Št          |¦  «                             ¦   «          d S )Nc                  óê   •— 	 t          d¦  «        ‚#  t          j        ¦   «         } t          ‰¦  «                             ¦   «          ‰                     | t          j        ¦   «         ¦  «         Y d S xY w)NÚfun)Ú
ValueErrorr   r   r'   r   r7   )r   rZ   r:   s    €€r   r3   z&TestGreenlet.test_exc_state.<locals>.fO  sg   ø€ ð;Ý  Ñ'Ô'Ð'øð;Ýœ<™>œ>�Ý˜A‘”×%Ò%Ñ'Ô'Ð'Ø× Ò  ­3¬<©>¬>Ñ:Ô:Ð:Ð:Ð:Ð:øøøs
   ƒ ’AA2c                  óV   •— ‰                       t          j        ¦   «         d¦  «         d S )N)NNN)r7   r   r   r=   s   €r   rZ   z&TestGreenlet.test_exc_state.<locals>.hW  s&   ø€ Ø×Ò�Sœ\™^œ^Ð-?Ñ@Ô@Ð@Ð@Ð@r   r&   )r:   r3   rZ   s   ` @r   Útest_exc_statezTestGreenlet.test_exc_stateN  s`   øø€ ð	;ð 	;ð 	;ð 	;ð 	;ð 	;ð	Að 	Að 	Að 	Að 	Aõ 	�A‰Œ×ÒÑÔÐÐÐr   c                 óÈ  — d„ }d„ }d„ }t          |¦  «        }|                      |j        i ¦  «         |                     ¦   «          |                      |j        d¦  «         |                      |j        ddi¦  «         |j        |_        |                      |j        ddi¦  «         |                      t          ||¦  «         |                      t          ||d¦  «         d S )Nc                  ó6   — dt          j        ¦   «         _        d S ©Nr¸   )r   r   Útestr   r   r   r3   z*TestGreenlet.test_instance_dict.<locals>.f]  s   € Ø)+�HÔÑ!Ô!Ô&Ð&Ð&r   c                 ó
   — | ` d S r"   ©Ú__dict__)r(   s    r   Údeldictz0TestGreenlet.test_instance_dict.<locals>.deldict_  s   € Ø�
�
�
r   c                 ó   — || _         d S r"   rÙ   )r(   ry   s     r   Úsetdictz0TestGreenlet.test_instance_dict.<locals>.setdicta  s   € ØˆAŒJˆJˆJr   r¸   r×   )r'   r7   rÚ   r   r×   rB   Ú	TypeError)r:   r3   rÛ   rÝ   r(   s        r   Útest_instance_dictzTestGreenlet.test_instance_dict\  sð   € ð	,ð 	,ð 	,ð	ð 	ð 	ð	ð 	ð 	å˜‰NŒNˆØ×Ò˜œ RÑ(Ô(Ð(Ø	�Š‰
Œ
ˆ
Ø×Ò˜œ Ñ$Ô$Ð$Ø×Ò˜œ f¨b \Ñ2Ô2Ð2Ø”ZˆŒ
Ø×Ò˜œ f¨b \Ñ2Ô2Ð2Ø×Ò�) W¨aÑ0Ô0Ð0Ø×Ò�) W¨a°Ñ4Ô4Ð4Ð4Ð4r   c                 óŠ   ‡— g Šˆfd„}t          |¦  «        }|                     ¦   «          |                      ‰dg¦  «         d S )Nc                  óp   •— ‰                       t          t          j        ¦   «         d¦  «        ¦  «         d S r@   )r   Úhasattrr   r   )Úhas_runs   €r   Úfuncz;TestGreenlet.test_running_greenlet_has_no_run.<locals>.funco  s9   ø€ Ø�NŠNÝ�Ô+Ñ-Ô-¨uÑ5Ô5ñô ð ð ð r   Fr¹   )r:   rä   r(   rã   s      @r   Ú test_running_greenlet_has_no_runz-TestGreenlet.test_running_greenlet_has_no_runm  s[   ø€ Øˆð	ð 	ð 	ð 	ð 	õ
 ˜ÑÔˆØ	�Š‰
Œ
ˆ
Ø×Ò˜ 5 'Ñ*Ô*Ð*Ð*Ð*r   c                 óÂ   — dd l }|                      t          |j         t          ¦   «         ¦  «         |                      t          |j        t          ¦   «         ¦  «         d S r   )ÚcopyrB   rÞ   r'   Údeepcopy)r:   rç   s     r   Útest_deepcopyzTestGreenlet.test_deepcopyx  sM   € ØˆˆˆØ×Ò�) T¤Yµ±´Ñ>Ô>Ð>Ø×Ò�) T¤]µK±M´MÑBÔBÐBÐBÐBr   c                 óf  ‡‡‡— t          d„ ¦  «        Št          j        ¦   «         Šg Šˆˆˆfd„}t          |‰¬¦  «        }|                     ¦   «          ~|                      ‰¦  «         |                      ‰d         ‰¦  «         |                      ‰d         j        ‰¦  «         ‰d d …= d Šd Šd S )Nc                  ó   — d S r"   r   r   r   r   r¯   z;TestGreenlet.test_parent_restored_on_kill.<locals>.<lambda>~  s   €  $€ r   c                  ó(  •— 	 ‰                      ¦   «          d S # t          j        $ ri ‰                     t          j        ¦   «         j        ¦  «         ‰                     t          j        ¦   «         ¦  «         ‰                       ¦   «          Y d S w xY wr"   )r   r   r�   r   r   r   )ÚhubÚmainÚresults   €€€r   Úworkerz9TestGreenlet.test_parent_restored_on_kill.<locals>.worker�  sƒ   ø€ ðà—’‘”���øÝÔ(ð ð ð à—’�hÔ1Ñ3Ô3Ô:Ñ;Ô;Ð;Ø—’�hÔ1Ñ3Ô3Ñ4Ô4Ð4Ø—
’
‘”����ð	øøøs   ƒ ™A4BÂBr%   r   r	   )r'   r   r   r   r¢   rN   r   )r:   rð   r(   rí   rî   rï   s      @@@r   Útest_parent_restored_on_killz)TestGreenlet.test_parent_restored_on_kill}  sÎ   øøø€ Ý˜,˜,Ñ'Ô'ˆÝÔ"Ñ$Ô$ˆØˆð	ð 	ð 	ð 	ð 	ð 	ð 	õ ˜ sÐ+Ñ+Ô+ˆØ	�Š‰
Œ
ˆ
àØ�Š˜ÑÔÐØ�Š�f˜Q”i Ñ&Ô&Ð&Ø�Š�f˜Q”iÔ&¨Ñ,Ô,Ð,ð �1�1�1ˆIØˆØˆˆˆr   c                 óÔ   — t          ¦   «         }t          d„ |¬¦  «        }|                      t          ¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nc                  ó   — d S r"   r   r   r   r   r¯   z9TestGreenlet.test_parent_return_failure.<locals>.<lambda>œ  ó   €  € r   r%   )r'   rB   rC   r   )r:   r)   rx   s      r   Útest_parent_return_failurez'TestGreenlet.test_parent_return_failure˜  s¤   € å‰]Œ]ˆå˜˜¨bÐ1Ñ1Ô1ˆà×Ò�~Ñ.Ô.ð 	ð 	Ø�IŠI‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   »AÁA!Á$A!c                 óž   —  G d„ dt           ¦  «        } |d„ ¦  «        }|                      t          |j        t          ¦   «         ¦  «         d S )Nc                   ó   — e Zd Zd„ ZdS )ú>TestGreenlet.test_throw_exception_not_lost.<locals>.mygreenletc                 óJ   — 	 t           ‚#  Y nxY wt          j        | |¦  «        S r"   )r†   r'   Ú__getattribute__©r:   Únames     r   rú   zOTestGreenlet.test_throw_exception_not_lost.<locals>.mygreenlet.__getattribute__£  s-   € ðÝ#�OøðØ�DøøøÝ"Ô3°D¸$Ñ?Ô?Ð?s   ‚	 ‰N©r   r   r   rú   r   r   r   Ú
mygreenletrø   ¢  s(   € € € € € ð@ð @ð @ð @ð @r   rþ   c                  ó   — d S r"   r   r   r   r   r¯   z<TestGreenlet.test_throw_exception_not_lost.<locals>.<lambda>©  ó   € ˜t€ r   )r'   rB   r   rJ   )r:   rþ   r(   s      r   Útest_throw_exception_not_lostz*TestGreenlet.test_throw_exception_not_lost¡  sk   € ð	@ð 	@ð 	@ð 	@ð 	@�ñ 	@ô 	@ð 	@ð ˆJ�|�|Ñ$Ô$ˆØ×Ò�) Q¤W­i©k¬kÑ:Ô:Ð:Ð:Ð:r   Fc                 óª  ‡‡‡— g Šd„ Šˆˆˆfd„}t          j        |¬¦  «        }|                     ¦   «          |                     d¦  «         ~‰r|                      ¦   «          |                      t          j        ¦  «        5 }‰d                              t          ¦  «         d d d ¦  «         n# 1 swxY w Y   ‰s+|  
                    t          |j        ¦  «        ddg¦  «         n(|                      t          |j        ¦  «        d¦  «         t          ‰d         j        d¦  «        rQ|                      t           ¦  «        5  ‰d         j                             ¦   «          d d d ¦  «         n# 1 swxY w Y   ‰s%‰d         j        j                             ¦   «          n |                      ‰d         j        ¦  «         ~d Š‰d d …= d	| _        d S )
Nc                  óZ   — t          j        ¦   «         j                             ¦   «          d S r"   r½   r   r   r   rð   zGTestGreenlet._do_test_throw_to_dead_thread_doesnt_crash.<locals>.worker¯  ó&   € ÝÔÑ!Ô!Ô(×/Ò/Ñ1Ô1Ð1Ð1Ð1r   c                  óÎ   •— t          ‰¦  «        } |                      ¦   «          ‰                     | ¦  «         ‰r)|                      ¦   «          t          j        ¦   «          d S d S r"   )r'   r   r   r   r   )r(   rï   Úwait_for_cleanuprð   s    €€€r   ÚcreatorzHTestGreenlet._do_test_throw_to_dead_thread_doesnt_crash.<locals>.creator²  sc   ø€ Ý˜FÑ#Ô#ˆAØ�HŠH‰JŒJˆJØ�MŠM˜!ÑÔÐØð &à—’‘
”
�
ÝÔ#Ñ%Ô%Ð%Ð%Ð%ð&ð &r   ri   rp   r   úBcannot switch to a different thread (which happens to have exited)ú#cannot switch to a different threadrË   T)rk   rl   rq   rr   Úwait_for_pending_cleanupsrB   r   rÊ   rJ   r   rD   rE   rF   r7   râ   r£   ÚRuntimeErrorrË   Úf_localsrR   Úexpect_greenlet_leak)r:   r  r  rš   r#   rï   rð   s    `   @@r   Ú*_do_test_throw_to_dead_thread_doesnt_crashz7TestGreenlet._do_test_throw_to_dead_thread_doesnt_crash¬  su  øøø€ àˆð	2ð 	2ð 	2ð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&õ Ô GÐ,Ñ,Ô,ˆØ	�Š‰	Œ	ˆ	Ø	�Šˆr‰
Œ
ˆ
Øð ð 	-Ø×*Ò*Ñ,Ô,Ð,Ø×Ò�xœ~Ñ.Ô.ð 	'°#Ø�1ŒI�OŠO�IÑ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð  ð 	Ø�MŠMÝ�C”MÑ"Ô"ØXØ9ð%ñô ð ð ð ×ÒÝ�C”MÑ"Ô"ØTñô ð õ
 �6˜!”9Ô% wÑ/Ô/ð 	+à×"Ò"¥<Ñ0Ô0ð +ð +Ø�q”	Ô"×(Ò(Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð  ð 	2Ø�1ŒIÔÔ'×-Ò-Ñ/Ô/Ð/Ð/à×Ò˜f QœiÔ0Ñ1Ô1Ð1àØˆØ�1�1�1ˆIð %)ˆÔ!Ð!Ð!s$   Â!B1Â1B5Â8B5Å E2Å2E6Å9E6c                 ó.   — |                       ¦   «          d S r"   ©r  r=   s    r   Ú&test_throw_to_dead_thread_doesnt_crashz3TestGreenlet.test_throw_to_dead_thread_doesnt_crashå  s   € à×7Ò7Ñ9Ô9Ð9Ð9Ð9r   c                 ó0   — |                       d¦  «         d S rf   r  r=   s    r   Ú+test_throw_to_dead_thread_doesnt_crash_waitz8TestGreenlet.test_throw_to_dead_thread_doesnt_crash_waité  s   € Ø×7Ò7¸Ñ=Ô=Ð=Ð=Ð=r   c                 ó    —  G d„ dt           ¦  «        } |¦   «         }|                      |                     d¦  «        d¦  «         d| _        d S )Nc                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ú7TestGreenlet.test_recursive_startup.<locals>.convolutedc                 ó<   — t          j        | ¦  «         d| _        d S r   )r'   Ú__init__Úcountr=   s    r   r  z@TestGreenlet.test_recursive_startup.<locals>.convoluted.__init__ï  s   € ÝÔ$ TÑ*Ô*Ð*Ø�”
�
�
r   c                 ó†   — |dk    r'| j         dk    rd| _         |                      d¦  «         t          j        | |¦  «        S )NrA   r   r	   é+   )r  r   r'   rú   rû   s     r   rú   zHTestGreenlet.test_recursive_startup.<locals>.convoluted.__getattribute__ò  s>   € Ø˜5’=�= T¤Z°1¢_ _Ø!"�D”JØ—K’K ‘O”O�OÝ"Ô3°D¸$Ñ?Ô?Ð?r   c                 ó:   — 	 | j                              |¦  «         Œr"   ©r   r   )r:   ry   s     r   rA   z;TestGreenlet.test_recursive_startup.<locals>.convoluted.run÷  s"   € ð.Ø”K×&Ò& uÑ-Ô-Ð-ð.r   N)r   r   r   r  rú   rA   r   r   r   Ú
convolutedr  î  sD   € € € € € ðð ð ð@ð @ð @ð
.ð .ð .ð .ð .r   r  r¸   r  T)r'   r7   r   r  )r:   r  r(   s      r   Útest_recursive_startupz#TestGreenlet.test_recursive_startupì  si   € ð	.ð 	.ð 	.ð 	.ð 	.�ñ 	.ô 	.ð 	.ð ˆJ‰LŒLˆØ×Ò˜Ÿš "™œ rÑ*Ô*Ð*ð
 %)ˆÔ!Ð!Ð!r   c                 ó¦  ‡‡‡— t          j        ¦   «         Š‰                     ¦   «          t          j        ¦   «         Š‰                     ¦   «           G ˆˆfd„dt          ¦  «        }d„ }ˆˆˆfd„}t	          j        ¦   «         }t          |¦  «        gŠ |¦   «         ‰d         _        ‰d                              ¦   «          t          j	        |¬¦  «        }| 
                    ¦   «          ‰                     ¦   «          ‰                     ¦   «          |                      t	          j        ¦   «         |¦  «         |                     d¦  «         d S )Nc                   ó   •— e Zd Zˆ ˆfd„ZdS )ú;TestGreenlet.test_threaded_updatecurrent.<locals>.finalizedc                 óX   •— ‰                      ¦   «          ‰                     ¦   «          d S r"   ©ÚreleaseÚacquire)r:   Úlock1Úlock2s    €€r   Ú__del__zCTestGreenlet.test_threaded_updatecurrent.<locals>.finalized.__del__
  s#   ø€ ð —’‘”�Ø—’‘”���r   N©r   r   r   r)  ©r'  r(  s   €€r   Ú	finalizedr"  	  s3   ø€ € € € € ð ð  ð  ð  ð  ð  ð  ð  r   r,  c                  óZ   — t          j        ¦   «         j                             ¦   «          d S r"   r½   r   r   r   Údeallocatorz=TestGreenlet.test_threaded_updatecurrent.<locals>.deallocator  r  r   c                  óú   •— ‰                      ¦   «          t          j        ¦   «          ‰ d= ‰                     ¦   «          ‰                      ¦   «          t          j        ¦   «          ‰                     ¦   «          d S r   ©r&  r   r   r%  )r(   r'  r(  s   €€€r   Úfthreadz9TestGreenlet.test_threaded_updatecurrent.<locals>.fthread  s`   ø€ Ø�MŠM‰OŒOˆOÝÔÑ!Ô!Ð!Ø�!�Ø�MŠM‰OŒOˆOØ�MŠM‰OŒOˆOÝÔÑ!Ô!Ð!Ø�MŠM‰OŒOˆOˆOˆOr   r   ri   rp   )rk   ÚLockr&  Úobjectr   r   r'   Úbombr   rl   rq   r%  r7   rr   )	r:   r,  r.  r1  rî   rš   r(   r'  r(  s	         @@@r   Útest_threaded_updatecurrentz(TestGreenlet.test_threaded_updatecurrent  sT  øøø€ å”Ñ Ô ˆØ�Š‰Œˆå”Ñ Ô ˆØ�Š‰Œˆð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 �ñ 	 ô 	 ð 	 ð	2ð 	2ð 	2ð	ð 	ð 	ð 	ð 	ð 	ð 	õ Ô"Ñ$Ô$ˆÝ˜Ñ%Ô%Ð&ˆØ�I‘K”Kˆˆ!ŒŒ	Ø	ˆ!Œ�Š‰ŒˆÝÔ GÐ,Ñ,Ô,ˆØ	�Š‰	Œ	ˆ	à�Š‰ŒˆØ�Š‰Œˆð 	×Ò�Ô,Ñ.Ô.°Ñ5Ô5Ð5à	�Šˆr‰
Œ
ˆ
ˆ
ˆ
r   c                 ó"  ‡‡‡— g Šˆˆˆfd„Šd„ Št          ‰¦  «        gŠ‰d                              ¦   «          t          ‰‰d         ¦  «        Š‰                     ¦   «         }|                      ‰¦  «         |                      |d¦  «         d S )Nc                  ó–  •— t          j        ¦   «         j                             ¦   «         } ‰d= t          j        ¦   «         j        ‰_        	 t          j        ¦   «         j                             | ¦  «         ‰                     t          j        ¦   «         ¦  «         d S # ‰                     t          j        ¦   «         ¦  «         w xY wr   )r   r   r   r   r   )ry   Ú	initiatorr   rð   s    €€€r   rð   z>TestGreenlet.test_dealloc_switch_args_not_lost.<locals>.worker3  s¢   ø€ åÔ'Ñ)Ô)Ô0×7Ò7Ñ9Ô9ˆEà�q�	Ý'Ô2Ñ4Ô4Ô;ˆIÔð3ÝÔ#Ñ%Ô%Ô,×3Ò3°EÑ:Ô:Ð:à—’�HÔ/Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2ø�—’�HÔ/Ñ1Ô1Ñ2Ô2Ð2Ð2øøøs   Á+B  Â (Cc                  ó   — dS rÖ   r   r   r   r   r8  zATestGreenlet.test_dealloc_switch_args_not_lost.<locals>.initiator@  ó   € Ø�2r   r   r¸   )r'   r   r¢   r7   )r:   ry   r8  r   rð   s     @@@r   Ú!test_dealloc_switch_args_not_lostz.TestGreenlet.test_dealloc_switch_args_not_lost1  s¶   øøø€ Øˆð	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð	ð 	ð 	õ ˜fÑ%Ô%Ð&ˆàˆqŒ	×ÒÑÔÐÝ 	¨6°!¬9Ñ5Ô5ˆ	Ø× Ò Ñ"Ô"ˆØ�Š˜ÑÔÐØ×Ò˜ Ñ#Ô#Ð#Ð#Ð#r   c                 óè   ‡‡‡— d„ Š G d„ dt           ¦  «        } |¦   «         Št          d¬¦  «        Šˆˆˆfd„}t          |¦  «        }|                      |                     ¦   «         ‰¦  «         d S )Nc                 ó   —  | |i |¤Ž d S r"   r   )rä   r`   Úks      r   Ú_applyz0TestGreenlet.test_tuple_subclass.<locals>._applyY  s   € ØˆD�!ˆM�qˆMˆMˆMˆMˆMr   c                   ó   — e Zd Zd„ ZdS )ú1TestGreenlet.test_tuple_subclass.<locals>.mytuplec                 ó€   — t          j        ¦   «                              ¦   «          t                               | ¦  «        S r"   )r   r   r   ÚtupleÚ__len__r=   s    r   rD  z9TestGreenlet.test_tuple_subclass.<locals>.mytuple.__len__]  s/   € ÝÔ#Ñ%Ô%×,Ò,Ñ.Ô.Ð.Ý—}’} TÑ*Ô*Ð*r   N)r   r   r   rD  r   r   r   ÚmytuplerA  \  s#   € € € € € ð+ð +ð +ð +ð +r   rE  r¸   )r`   c                  óX   •—  ‰ t          j        ¦   «         j        j        ‰‰¦  «         d S r"   r½   )r?  r²   Úkwargss   €€€r   Úswitchapplyz5TestGreenlet.test_tuple_subclass.<locals>.switchapplyb  s,   ø€ ØˆF•8Ô&Ñ(Ô(Ô/Ô6¸¸fÑEÔEÐEÐEÐEr   )rC  Údictr'   r7   r   )r:   rE  rH  r(   r?  r²   rG  s       @@@r   Útest_tuple_subclassz TestGreenlet.test_tuple_subclassK  s³   øøø€ ð	ð 	ð 	ð	+ð 	+ð 	+ð 	+ð 	+•eñ 	+ô 	+ð 	+ð ˆw‰yŒyˆÝ˜�‘”ˆð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Få˜Ñ$Ô$ˆØ×Ò˜Ÿš™œ VÑ,Ô,Ð,Ð,Ð,r   c                 óÖ   — t          dt          fdt          d„ ¦  «        i¦  «        } G d„ d|¦  «        } G d„ d|¦  «        } |¦   «          |                      t          |¦  «         d S )NÚAbstractSubclassrA   c                 ó   — d S r"   r   r=   s    r   r¯   z7TestGreenlet.test_abstract_subclasses.<locals>.<lambda>k  s   € °€ r   c                   ó   — e Zd ZdS )ú:TestGreenlet.test_abstract_subclasses.<locals>.BadSubclassNr   r   r   r   ÚBadSubclassrO  m  ó   € € € € € ØˆDr   rP  c                   ó   — e Zd Zd„ ZdS )ú;TestGreenlet.test_abstract_subclasses.<locals>.GoodSubclassc                 ó   — d S r"   r   r=   s    r   rA   z?TestGreenlet.test_abstract_subclasses.<locals>.GoodSubclass.runq  s   € Ø�r   N)r   r   r   rA   r   r   r   ÚGoodSubclassrS  p  s#   € € € € € ðð ð ð ð r   rU  )r   r'   r   rB   rÞ   )r:   rL  rP  rU  s       r   Útest_abstract_subclassesz%TestGreenlet.test_abstract_subclassesg  s­   € Ý"ØÝˆNØ•NÐ#4Ð#4Ñ5Ô5Ð6ñ8ô 8Ðð
	ð 	ð 	ð 	ð 	Ð*ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð+ñ 	ô 	ð 	ð 	ˆ‰ŒˆØ×Ò�) [Ñ1Ô1Ð1Ð1Ð1r   c                 óÀ   ‡ ‡— t          j        ¦   «         sd S t          j        ¦   «         d         Š‰dk     rd S ˆˆ fd„}t          d¦  «        D ]} |¦   «         r d S Œd S )Nr   é2   c                  óL  •‡	‡
‡‡— t          j        ¦   «         Š
‰
                     ¦   «          t          j        ¦   «         Š‰                     ¦   «          dgŠˆ
ˆfd„} t          j        | ¬¦  «        }|                     ¦   «           G ˆ
ˆˆfd„dt
          ¦  «        Š	 G ˆ	fd„dt
          ¦  «        }g }t          ‰dz  ¦  «        }t          j        ¦   «         } |¦   «         }|D ]Q}d }‰d	         r| 	                    d
¦  «          dS t          ¦   «         }‰d	         r nH|                     |¦  «         ŒRt          j        ¦   «          ‰d	         r| 	                    d
¦  «         dS ‰                     |j        |¦  «         |D ]}‰                     |j        |¦  «         ŒdS )NFc                  ó~   •— ‰                       ¦   «          t          j        ¦   «          ‰                     ¦   «          d S r"   r0  r+  s   €€r   Úanother_threadzWTestGreenlet.test_implicit_parent_with_threads.<locals>.attempt.<locals>.another_threadƒ  s0   ø€ Ø—’‘”�ÝÔ#Ñ%Ô%Ð%Ø—’‘”���r   ri   c                   ó   •— e Zd Zˆ ˆˆfd„ZdS )úTTestGreenlet.test_implicit_parent_with_threads.<locals>.attempt.<locals>.gc_callbackc                 ób   •— ‰                      ¦   «          ‰                     ¦   «          d‰d<   d S )NTr   r$  )r:   r'  r(  Úrecycleds    €€€r   r)  z\TestGreenlet.test_implicit_parent_with_threads.<locals>.attempt.<locals>.gc_callback.__del__Š  s*   ø€ Ø—M’M‘O”O�OØ—M’M‘O”O�OØ"&�H˜Q‘K�K�Kr   Nr*  )r'  r(  r_  s   €€€r   Úgc_callbackr]  ‰  s8   ø€ € € € € ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'r   r`  c                   ó   •— e Zd Zˆ fd„ZdS )úPTestGreenlet.test_implicit_parent_with_threads.<locals>.attempt.<locals>.garbagec                 ó4   •— | | _          ‰¦   «         | _        d S r"   )ÚcycleÚcallback)r:   r`  s    €r   r  zYTestGreenlet.test_implicit_parent_with_threads.<locals>.attempt.<locals>.garbage.__init__�  s   ø€ Ø!%�D”JØ$/ K¡M¤M�D”M�M�Mr   N)r   r   r   r  )r`  s   €r   Úgarbagerb  Ž  s.   ø€ € € € € ð2ð 2ð 2ð 2ð 2ð 2ð 2r   rf  r4   r   rp   T)rk   r2  r&  rl   rq   r3  r9   r   r   rr   r'   r   r   r€   r7   r   )r[  rš   rf  Úlr®   Úcurrentr(   Ú_Úlastr`  r'  r(  r_  ÚNr:   s            @@@@€€r   Úattemptz?TestGreenlet.test_implicit_parent_with_threads.<locals>.attempt}  sø  øøøøø€ Ý”NÑ$Ô$ˆEØ�MŠM‰OŒOˆOÝ”NÑ$Ô$ˆEØ�MŠM‰OŒOˆOØ�wˆHð ð  ð  ð  ð  ð  õ Ô ¨Ð7Ñ7Ô7ˆAØ�GŠG‰IŒIˆIð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð '�fñ 'ô 'ð 'ð
2ð 2ð 2ð 2ð 2ð 2ð 2�&ñ 2ô 2ð 2ð ˆAÝ�a˜‘c‘
”
ˆAÝÔ)Ñ+Ô+ˆGØ�‘	”	ˆAØð ð �Ø�Ø˜A”;ð !à—F’F˜2‘J”J�JØ ˜5˜5Ý"‘}”}�Ø˜A”;ð Ø�EØ—’˜‘”��õ ”
‘”�Ø˜A”;ð Ø—F’F˜2‘J”J�JØ�uØ×Ò˜Tœ[¨'Ñ2Ô2Ð2Øð 4ð 4�Ø× Ò  ¤¨7Ñ3Ô3Ð3Ð3Ø�4r   r6   )r   Ú	isenabledÚget_thresholdr9   )r:   rl  ri  rk  s   `  @r   Ú!test_implicit_parent_with_threadsz.TestGreenlet.test_implicit_parent_with_threadsw  s’   øø€ ÝŒ|‰~Œ~ð 	ØˆFÝÔÑÔ˜qÔ!ˆØˆrŠ6ˆ6ØˆFð,	ð ,	ð ,	ð ,	ð ,	ð ,	õZ �q‘”ð 	ð 	ˆAØˆw‰yŒyð Ø��ðð	ð 	r   c                 ó@  ‡ ‡‡— ddl mŠ ddl mŠ  G d„ dt          ¦  «        }t	          j        |¦  «        }g ‰ _        ˆˆˆ fd„}t          d¦  «        D ]} ||¦  «                             ¦   «          Œ ‰ `‰  	                    t	          j        |¦  «        |¦  «         d S )Nr   ©r   )r�   c                   ó   — e Zd ZdS )úTTestGreenlet.test_issue_245_reference_counting_subclass_no_threads.<locals>.GreenletNr   r   r   r   ÚGreenletrs  ·  rQ  r   rt  c                  ó¨   •— 	  ‰¦   «         j                              ¦   «          d S # ‰ $ r& ‰j                              ‰¦   «         ¦  «         Y d S w xY wr"   )r   r   Úgletsr   )r�   r   r:   s   €€€r   Úgreenlet_mainzYTestGreenlet.test_issue_245_reference_counting_subclass_no_threads.<locals>.greenlet_mainÀ  si   ø€ ð0Ø�
‘”Ô#×*Ò*Ñ,Ô,Ð,Ð,Ð,øØð 0ð 0ð 0Ø”
×!Ò! * *¡,¤,Ñ/Ô/Ð/Ð/Ð/Ð/ð0øøøs   ƒ!& ¦'AÁArp   )
r   r   r�   r'   r   rb   rv  r9   r   r7   )r:   rt  Úinitial_refsrw  ri  r�   r   s   `    @@r   Ú5test_issue_245_reference_counting_subclass_no_threadszBTestGreenlet.test_issue_245_reference_counting_subclass_no_threads®  só   øøø€ ð 	(Ð'Ð'Ð'Ð'Ð'Ø)Ð)Ð)Ð)Ð)Ð)ð	ð 	ð 	ð 	ð 	•{ñ 	ô 	ð 	õ ” xÑ0Ô0ˆð ˆŒ
ð	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0õ �r‘”ð 	-ð 	-ˆAØˆH�]Ñ#Ô#×*Ò*Ñ,Ô,Ð,Ð,àˆJØ×Ò�œ¨Ñ2Ô2°LÑAÔAÐAÐAÐAr   c                 óD  ‡
‡‡‡‡— ddl m} ddl m} ddlmŠ  G d„ dt
          ¦  «        Š
g Š |¦   «         Šˆfd„Šˆ
ˆˆˆˆfd„}t          j        ‰
¦  «        }g }t          |d	z   ¦  «        D ]C} |¦   «         } |||f¬
¦  «        }| 	                    |¦  «         | 
                    ¦   «          ŒD|D ]}	|	                     d¦  «         Œ‰d d …= ‰                     ¦   «          |                      ¦   «          |                      t          j        ‰
¦  «        |¦  «         d S )Nr   )rl   )r™   rq  c                   ó   — e Zd ZdS )úSTestGreenlet.test_issue_245_reference_counting_subclass_threads.<locals>.MyGreenletNr   r   r   r   Ú
MyGreenletr|  Ô  rQ  r   r}  c                  óJ   •—  ‰ ¦   «         j                              ¦   «          d S r"   r  rq  s   €r   rw  zVTestGreenlet.test_issue_245_reference_counting_subclass_threads.<locals>.greenlet_mainÚ  s$   ø€ ØˆJ‰LŒLÔ×&Ò&Ñ(Ô(Ð(Ð(Ð(r   c                 óØ   •—  ‰‰¦  «        }‰                      |¦  «         |                     ¦   «          ~|                      ¦   «          ‰                     d¦  «          ‰¦   «          d S )Nrp   )r   r   r’   r“   )Úgreenlet_running_eventÚminer}  r   rv  rw  Úref_cleareds     €€€€€r   Úthread_mainzTTestGreenlet.test_issue_245_reference_counting_subclass_threads.<locals>.thread_mainÝ  sm   ø€ Ø�:˜mÑ,Ô,ˆDØ�LŠL˜ÑÔÐà�KŠK‰MŒMˆMàà"×&Ò&Ñ(Ô(Ð(ð ×Ò˜RÑ Ô Ð ð ˆJ‰LŒLˆLˆLˆLr   é-   r±   rp   )rk   rl   r™   r   r   r'   r   rb   r9   r   rq   r“   r’   r
  r7   )r:   rl   r™   rƒ  rx  Úthread_ready_eventsri  ÚeventrÌ   rÈ   r}  r   rv  rw  r‚  s             @@@@@r   Ú2test_issue_245_reference_counting_subclass_threadsz?TestGreenlet.test_issue_245_reference_counting_subclass_threadsÍ  sº  øøøøø€ à$Ð$Ð$Ð$Ð$Ð$Ø#Ð#Ð#Ð#Ð#Ð#à'Ð'Ð'Ð'Ð'Ð'ð	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð ˆØ�e‘g”gˆð	)ð 	)ð 	)ð 	)ð 	)ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	õ8 ” zÑ2Ô2ˆØ ÐÝØ˜rÑ!ñ
ô 
ð 	ð 	ˆAð �E‘G”GˆEØ�V ;°e°XÐ>Ñ>Ô>ˆFØ×&Ò& uÑ-Ô-Ð-Ø�LŠL‰NŒNˆNˆNð .ð 	 ð 	 ˆJØ�OŠO˜BÑÔÐÐð �!�!�!ˆHØ�ŠÑÔÐð 	×&Ò&Ñ(Ô(Ð(Ø×Ò�œ¨Ñ4Ô4°lÑCÔCÐCÐCÐCr   c                 óÞ   — d„ }t          |¦  «        }d„ }t          ||¦  «        }|                      t          ¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nc                  ó   — dS )Né   r   r   r   r   Úno_argsz\TestGreenlet.test_falling_off_end_switches_to_unstarted_parent_raises_error.<locals>.no_args  r:  r   c                  ó   — dS rÖ   r   r   r   r   ÚleafzYTestGreenlet.test_falling_off_end_switches_to_unstarted_parent_raises_error.<locals>.leaf  r:  r   )r'   rB   rÞ   r   )r:   r‹  Úparent_never_startedr�  Úchilds        r   Ú>test_falling_off_end_switches_to_unstarted_parent_raises_errorzKTestGreenlet.test_falling_off_end_switches_to_unstarted_parent_raises_error  sÉ   € ð	ð 	ð 	õ  +¨7Ñ3Ô3Ðð	ð 	ð 	õ ˜DÐ"6Ñ7Ô7ˆð ×Ò�yÑ)Ô)ð 	ð 	Ø�LŠL‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á A"Á"A&Á)A&c                 ó¤   — d„ }t          |¦  «        }d„ }t          ||¦  «        }|                     ¦   «         }|                      |d¦  «         d S )Nc                 ó
   — | dfS ©Né   r   r­   s    r   Úone_argzUTestGreenlet.test_falling_off_end_switches_to_unstarted_parent_works.<locals>.one_arg   s   € Ø�r�7ˆNr   c                  ó   — dS rÖ   r   r   r   r   r�  zRTestGreenlet.test_falling_off_end_switches_to_unstarted_parent_works.<locals>.leaf%  r:  r   )r¸   r”  r¹   )r:   r•  rŽ  r�  r�  rï   s         r   Ú7test_falling_off_end_switches_to_unstarted_parent_workszDTestGreenlet.test_falling_off_end_switches_to_unstarted_parent_works  sk   € ð	ð 	ð 	õ  +¨7Ñ3Ô3Ðð	ð 	ð 	õ ˜DÐ"6Ñ7Ô7ˆà—’‘”ˆØ×Ò˜ Ñ*Ô*Ð*Ð*Ð*r   c                 óà  ‡—  G d„ dt           ¦  «        } |¦   «         }g Št          ˆfd„|¦  «        }|                      t          ¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      ‰dg¦  «         |                      t          ¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      ‰dg¦  «         d S )Nc                   ó   — e Zd Zd„ ZdS )úXTestGreenlet.test_switch_to_dead_greenlet_with_unstarted_perverse_parent.<locals>.Parentc                 ó    — |dk    rt           ‚d S r@   )r   rû   s     r   rú   ziTestGreenlet.test_switch_to_dead_greenlet_with_unstarted_perverse_parent.<locals>.Parent.__getattribute__/  s   € Ø˜5’=�=Ý#�Oð !�=r   Nrý   r   r   r   ÚParentrš  .  s#   € € € € € ð$ð $ð $ð $ð $r   rœ  c                  ó.   •— ‰                       d¦  «        S rÖ   ©r   r   s   €r   r¯   zZTestGreenlet.test_switch_to_dead_greenlet_with_unstarted_perverse_parent.<locals>.<lambda>6  ó   ø€  D§K¢K°¡O¤O€ r   r¸   )r'   rB   r   r   r7   )r:   rœ  rŽ  r�  r   s       @r   Ú;test_switch_to_dead_greenlet_with_unstarted_perverse_parentzHTestGreenlet.test_switch_to_dead_greenlet_with_unstarted_perverse_parent-  s€  ø€ ð	$ð 	$ð 	$ð 	$ð 	$•[ñ 	$ô 	$ð 	$ð  &˜v™xœxÐØˆÝÐ3Ð3Ð3Ð3Ð5IÑJÔJˆð ×Ò�yÑ)Ô)ð 	ð 	Ø�LŠL‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	×Ò˜ ˜tÑ$Ô$Ð$à×Ò�yÑ)Ô)ð 	ð 	Ø�LŠL‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à×Ò˜ ˜tÑ$Ô$Ð$Ð$Ð$s$   ÁA/Á/A3Á6A3Â+CÃCÃCc                 ó:  ‡— g Št          ˆfd„¦  «        }t          ˆfd„¦  «        }|                     ¦   «          |                      ‰dg¦  «         ||_        |                     ¦   «         }|                      |¦  «         |                      ‰ddg¦  «         d S )Nc                  ó.   •— ‰                       d¦  «        S r“  rž  r   s   €r   r¯   zDTestGreenlet.test_switch_to_dead_greenlet_reparent.<locals>.<lambda>D  s   ø€ °4·;²;¸r±?´?€ r   c                  ó.   •— ‰                       d¦  «        S rÖ   rž  r   s   €r   r¯   zDTestGreenlet.test_switch_to_dead_greenlet_reparent.<locals>.<lambda>E  rŸ  r   r¸   r”  )r'   r   r7   r   rR   )r:   rŽ  r�  rï   r   s       @r   Ú%test_switch_to_dead_greenlet_reparentz2TestGreenlet.test_switch_to_dead_greenlet_reparentB  s¤   ø€ ØˆÝ*Ð+BÐ+BÐ+BÐ+BÑCÔCÐÝÐ3Ð3Ð3Ð3Ñ4Ô4ˆà�Š‰ŒˆØ×Ò˜ ˜tÑ$Ô$Ð$à+ˆŒà—’‘”ˆØ×Ò˜&Ñ!Ô!Ð!Ø×Ò˜  B˜xÑ(Ô(Ð(Ð(Ð(r   c                 ó*  ‡‡— t          j        ¦   «         Šˆfd„}ˆfd„Št          |¦  «        }|                     ¦   «          t          d„ ¦  «        }|                     ¦   «          |                      |j        ¦  «         |                      |j        j        j        d¦  «         |                      |j        j	        ¦  «         |                      |j        j	        j        j        d¦  «         |  
                    |j        j	        j	        ¦  «         d S )Nc                  ó   •—  ‰ ¦   «          d S r"   r   ©Úinners   €r   ÚouterzHTestGreenlet.test_can_access_f_back_of_suspended_greenlet.<locals>.outerV  s   ø€ ØˆE‰GŒGˆGˆGˆGr   c                  óV   •— ‰                       t          j        d¦  «        ¦  «         d S r   )r   r   rŸ   ©rî   s   €r   r¨  zHTestGreenlet.test_can_access_f_back_of_suspended_greenlet.<locals>.innerY  s%   ø€ Ø�KŠK�œ aÑ(Ô(Ñ)Ô)Ð)Ð)Ð)r   c                  ó   — d S r"   r   r   r   r   r¯   zKTestGreenlet.test_can_access_f_back_of_suspended_greenlet.<locals>.<lambda>b  ó   € ¨€ r   r¨  r©  )r   r   r'   r   rM   r£   r7   Úf_codeÚco_namer    rR   )r:   r©  rí   Ú	unrelatedr¨  rî   s       @@r   Ú,test_can_access_f_back_of_suspended_greenletz9TestGreenlet.test_can_access_f_back_of_suspended_greenletP  s  øø€ õ Ô"Ñ$Ô$ˆð	ð 	ð 	ð 	ð 	ð	*ð 	*ð 	*ð 	*ð 	*õ ˜%Ñ Ô ˆà�
Š
‰Œˆõ    Ñ-Ô-ˆ	Ø×ÒÑÔÐð 	×Ò˜Sœ\Ñ*Ô*Ð*Ø×Ò˜œÔ,Ô4°gÑ>Ô>Ð>Ø×Ò˜Sœ\Ô0Ñ1Ô1Ð1Ø×Ò˜œÔ,Ô3Ô;¸WÑEÔEÐEà×Ò˜#œ,Ô-Ô4Ñ5Ô5Ð5Ð5Ð5r   c                 óÄ  ‡‡‡— ddl mŠ ddlmŠ ˆˆˆfd„Št	          ‰¦  «        }|                     d¦  «         |j        }t          d¦  «        D ]*}|                      |j	        d         |¦  «         |j
        }Œ+|                      |j	        d         d¦  «         |                      |j
        ¦  «         |                      |                     d¦  «        d	¦  «         d S )
Nr   )Úpartialr	   )Ú_test_extension_cppc                 ó®   •— | dk    r%| ‰                       ‰‰| dz
  ¦  «        ¦  «        z  S t          j        ¦   «         j                             ¦   «         S )Nr   r	   )Ú	test_callr   r   r   r   )rŽ   r´  r³  Úrecurses    €€€r   r·  z@TestGreenlet.test_get_stack_with_nested_c_calls.<locals>.recurseq  sT   ø€ Ø�1ŠuˆuØÐ.×8Ò8¸¸ÀÈ!ÈaÉ%Ñ9PÔ9PÑQÔQÑQÐQÝÔ&Ñ(Ô(Ô/×6Ò6Ñ8Ô8Ð8r   r6   rŽ   rp   i°  )Ú	functoolsr³  Ú r´  r'   r   r£   r9   r7   r  r    rR   )r:   Úgrr¥   rn   r´  r³  r·  s       @@@r   Ú"test_get_stack_with_nested_c_callsz/TestGreenlet.test_get_stack_with_nested_c_callsm  s  øøø€ Ø%Ð%Ð%Ð%Ð%Ð%Ø)Ð)Ð)Ð)Ð)Ð)ð	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9õ
 ˜Ñ!Ô!ˆØ
�	Š	�!‰ŒˆØ”ˆÝ�q‘”ð 	!ð 	!ˆAØ×Ò˜Uœ^¨CÔ0°!Ñ4Ô4Ð4Ø”LˆEˆEØ×Ò˜œ¨Ô,¨aÑ0Ô0Ð0Ø×Ò˜%œ,Ñ'Ô'Ð'Ø×Ò˜Ÿš 2™œ¨Ñ-Ô-Ð-Ð-Ð-r   c                 óF  ‡‡— t          j        ¦   «         Šˆfd„}ˆfd„Št          |¦  «        }|                     ¦   «         }t          d„ ¦  «        }|                     ¦   «          |                      |j        j        d¦  «         |                      |j        ¦  «         d S )Nc                  óB   •—  ‰ t          j        d¦  «        ¦  «         d S r   )r   rŸ   r§  s   €r   r©  z6TestGreenlet.test_frames_always_exposed.<locals>.outer†  s#   ø€ ØˆE•#”- Ñ"Ô"Ñ#Ô#Ð#Ð#Ð#r   c                 ó2   •— ‰                      | ¦  «         d S r"   )r   )r¥   rî   s    €r   r¨  z6TestGreenlet.test_frames_always_exposed.<locals>.inner‰  s   ø€ Ø�KŠK˜ÑÔÐÐÐr   c                  ó   — d S r"   r   r   r   r   r¯   z9TestGreenlet.test_frames_always_exposed.<locals>.<lambda>‘  r­  r   r©  )	r   r   r'   r   r7   r®  r¯  rR   r    )r:   r©  rº  r¥   r°  r¨  rî   s        @@r   Útest_frames_always_exposedz'TestGreenlet.test_frames_always_exposed€  s¼   øø€ õ Ô"Ñ$Ô$ˆð	$ð 	$ð 	$ð 	$ð 	$ð	ð 	ð 	ð 	ð 	õ ˜ÑÔˆØ—	’	‘”ˆõ    Ñ-Ô-ˆ	Ø×ÒÑÔÐà×Ò˜œÔ-¨wÑ7Ô7Ð7à×Ò˜%œ,Ñ'Ô'Ð'Ð'Ð'r   N)F)0r   r   r   r;   r>   rH   rK   rP   rS   r[   rc   ru   rz   r}   r‚   r�   r›   r§   rµ   rº   r¿   rÍ   rÓ   rß   rå   ré   rñ   rõ   r  r   r  r  r  r  r5  r;  rJ  rV  ro  ry  r‡  r�  r—  r   r¤  r±  r»  rÀ  r   r   r   r,   r,   2   så  € € € € € ð.ð .ð .ðð ð ð1ð 1ð 1ð1ð 1ð 1ð7ð 7ð 7ð
!ð !ð !ð
'ð 'ð 'ð(0ð 0ð 0ð(1ð 1ð 1ð,ð ,ð ,ð8+ð +ð +ðOð Oð Oð&ð &ð &ð<*ð *ð *ðX+ð +ð +ð 	ð 	ð 	ð ð  ð  ð-ð -ð -ðð ð ð& ð  ð  ð5ð 5ð 5ð"	+ð 	+ð 	+ðCð Cð Cð
ð ð ð6ð ð ð	;ð 	;ð 	;ð ð6)ð 6)ð 6)ñ „_ð6)ðp ð:ð :ñ „_ð:ð>ð >ð >ð ð)ð )ñ „_ð)ð*-ð -ð -ð^$ð $ð $ð4-ð -ð -ð82ð 2ð 2ð 5ð 5ð 5ðnBð Bð Bð>ADð ADð ADðFð ð ð+ð +ð +ð%ð %ð %ð*)ð )ð )ð6ð 6ð 6ð:.ð .ð .ð&(ð (ð (ð (ð (r   r,   c                   óJ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )ÚTestGreenletSetParentErrorsc                 óR  ‡‡‡— i Št          j        ¦   «         Št          j        ¦   «         Šˆˆˆfd„}d„ }t          j        |¬¦  «        }|                     ¦   «          ‰                     d¦  «         t          |¦  «        }|                     ¦   «          |                      t          ¦  «        5 }‰d         |_	        d d d ¦  «         n# 1 swxY w Y   ‰ 
                    ¦   «          |                     d¦  «         |                      t          |j        ¦  «        d¦  «         d S )Nc                  ó€   •— t          d„ ¦  «        ‰d<   ‰                      ¦   «          ‰                     d¦  «         d S )Nc                  ó   — d S r"   r   r   r   r   r¯   zQTestGreenletSetParentErrors.test_threaded_reparent.<locals>.run.<locals>.<lambda>   rÃ   r   r(   rp   rÄ   rÅ   s   €€€r   rA   z?TestGreenletSetParentErrors.test_threaded_reparent.<locals>.runŸ  rÉ   r   c                  óZ   — t          j        ¦   «         j                             ¦   «          d S r"   r½   r   r   r   ÚblankzATestGreenletSetParentErrors.test_threaded_reparent.<locals>.blank¤  r  r   ri   rp   r(   z&parent cannot be on a different thread)rk   r™   rl   rq   r“   r'   r   rB   rÑ   r   r’   rr   r7   rE   rF   )	r:   rA   rÇ  rÌ   r(   r#   rÆ   rÇ   rÈ   s	         @@@r   Útest_threaded_reparentz2TestGreenletSetParentErrors.test_threaded_reparentš  s]  øøø€ ØˆÝ!œÑ)Ô)ˆÝ”_Ñ&Ô&ˆ
ð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð
	2ð 	2ð 	2õ Ô!¨Ð-Ñ-Ô-ˆØ�Š‰ŒˆØ×Ò˜2ÑÔÐÝ˜ÑÔˆØ	�Š‰
Œ
ˆ
Ø×Ò�zÑ*Ô*ð 	!¨cØ˜C”yˆAŒHð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!à�ŠÑÔÐØ�Š�B‰Œˆà×Ò�˜Sœ]Ñ+Ô+Ð-UÑVÔVÐVÐVÐVs   Â1CÃCÃCc                 ó   ‡— g Šˆfd„}t          j        |¬¦  «        }|                     ¦   «          |                     d¦  «         |                      | j        dz   ¬¦  «          G ˆfd„dt          ¦  «        } |d„ ¦  «        }|                      t          j	        ¦  «        5 }| 
                    ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d	¦  «         ‰d d …= d S )
Nc                  óz   •— t          d„ ¦  «        } ‰                     | ¦  «         |                      ¦   «          d S )Nc                  ó   — d S r"   r   r   r   r   r¯   zYTestGreenletSetParentErrors.test_unexpected_reparenting.<locals>.worker.<locals>.<lambda>¶  ó   €  D€ r   )r'   r   r   )r(   Úanothers    €r   rð   zGTestGreenletSetParentErrors.test_unexpected_reparenting.<locals>.workerµ  s5   ø€ Ý˜L˜LÑ)Ô)ˆAØ�NŠN˜1ÑÔÐØ�HŠH‰JŒJˆJˆJˆJr   ri   rp   r	   )Úinitial_main_greenletsc                   ó   •— e Zd Zˆ fd„ZdS )úKTestGreenletSetParentErrors.test_unexpected_reparenting.<locals>.convolutedc                 óT   •— |dk    r‰d         | _         t          j        | |¦  «        S ©NrA   r   ©r   r'   rú   ©r:   rü   rÍ  s     €r   rú   z\TestGreenletSetParentErrors.test_unexpected_reparenting.<locals>.convoluted.__getattribute__Ñ  ó*   ø€ Ø˜5’=�=Ø")¨!¤*�D”KÝ"Ô3°D¸$Ñ?Ô?Ð?r   Nrý   ©rÍ  s   €r   r  rÐ  Ð  ó5   ø€ € € € € ð@ð @ð @ð @ð @ð @ð @r   r  c                  ó   — d S r"   r   r   r   r   r¯   zITestGreenletSetParentErrors.test_unexpected_reparenting.<locals>.<lambda>Õ  r   r   r  )rk   rl   rq   rr   r
  Úmain_greenlets_before_testr'   rB   r   rÊ   r   r7   rE   rF   )r:   rð   rš   r  r(   r#   rÍ  s         @r   Útest_unexpected_reparentingz7TestGreenletSetParentErrors.test_unexpected_reparenting³  ss  ø€ Øˆð	ð 	ð 	ð 	ð 	õ Ô FÐ+Ñ+Ô+ˆØ	�Š‰	Œ	ˆ	Ø	�Šˆr‰
Œ
ˆ
ð& 	×&Ò&¸dÔ>]Ð`aÑ>aÐ&ÑbÔbÐbð	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@�ñ 	@ô 	@ð 	@ð
 ˆJ�|�|Ñ$Ô$ˆØ×Ò�xœ~Ñ.Ô.ð 	°#Ø�HŠH‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à×Ò�˜Sœ]Ñ+Ô+Ø]ñ	_ô 	_ð 	_à�A�A�AˆJˆJˆJs   Â%CÃC
ÃC
c                 óÒ  ‡‡‡— g Št          j        ¦   «         Št          j        ¦   «         Šˆˆˆfd„} G ˆfd„dt          ¦  «        }t          j        |¬¦  «        }|                     ¦   «          ‰                     d¦  «         	  |d„ ¦  «        }|                      t          j        ¦  «        5 }| 	                    ¦   «          d d d ¦  «         n# 1 swxY w Y   |  
                    t          |j        ¦  «        d¦  «         ‰                     ¦   «          |                     d¦  «         ‰d d …= d S # ‰                     ¦   «          |                     d¦  «         ‰d d …= w xY w)Nc                  óÌ   •— t          d„ ¦  «        } ‰                     | ¦  «         |                      ¦   «          ‰                     ¦   «          ‰                     d¦  «         d S )Nc                  ó   — d S r"   r   r   r   r   r¯   zhTestGreenletSetParentErrors.test_unexpected_reparenting_thread_running.<locals>.worker.<locals>.<lambda>ã  rÌ  r   rp   )r'   r   r   r’   r“   )r(   rÍ  Úkeep_main_aliveÚswitched_to_greenlets    €€€r   rð   zVTestGreenletSetParentErrors.test_unexpected_reparenting_thread_running.<locals>.workerâ  s]   ø€ Ý˜L˜LÑ)Ô)ˆAØ�NŠN˜1ÑÔÐØ�HŠH‰JŒJˆJØ ×$Ò$Ñ&Ô&Ð&Ø× Ò  Ñ$Ô$Ð$Ð$Ð$r   c                   ó   •— e Zd Zˆ fd„ZdS )úZTestGreenletSetParentErrors.test_unexpected_reparenting_thread_running.<locals>.convolutedc                 óT   •— |dk    r‰d         | _         t          j        | |¦  «        S rÒ  rÓ  rÔ  s     €r   rú   zkTestGreenletSetParentErrors.test_unexpected_reparenting_thread_running.<locals>.convoluted.__getattribute__é  rÕ  r   Nrý   rÖ  s   €r   r  rá  è  r×  r   r  ri   rp   c                  ó   — d S r"   r   r   r   r   r¯   zXTestGreenletSetParentErrors.test_unexpected_reparenting_thread_running.<locals>.<lambda>ó  ó   €  4€ r   r	  )rk   r™   r'   rl   rq   r“   rB   r   rÊ   r   r7   rE   rF   r’   rr   )	r:   rð   r  rš   r(   r#   rÍ  rÞ  rß  s	         @@@r   Ú*test_unexpected_reparenting_thread_runningzFTestGreenletSetParentErrors.test_unexpected_reparenting_thread_runningÜ  sÑ  øøø€ ð ˆÝ(œÑ0Ô0ÐÝ#œ/Ñ+Ô+ˆð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@�ñ 	@ô 	@ð 	@õ Ô FÐ+Ñ+Ô+ˆØ	�Š‰	Œ	ˆ	à×!Ò! "Ñ%Ô%Ð%ð
	Ø�
˜<˜<Ñ(Ô(ˆAà×"Ò"¥8¤>Ñ2Ô2ð °cØ—’‘
”
�
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à×Ò�S ¤Ñ/Ô/Ð1VÑWÔWÐWà×ÒÑ!Ô!Ð!Ø�FŠF�2‰JŒJˆJà˜˜˜�
�
�
øð ×ÒÑ!Ô!Ð!Ø�FŠF�2‰JŒJˆJà˜˜˜�
ˆNˆNˆNˆNs0   Â+D6 Â2CÃD6 ÃCÃD6 ÃCÃ+D6 Ä60E&c                 ó6  — t          d„ ¦  «        }|                      |j        t          j        ¦   «         ¦  «         |                      t          ¦  «        5 }|`d d d ¦  «         n# 1 swxY w Y   |                      t          |j	        ¦  «        d¦  «         d S )Nc                  ó   — d S r"   r   r   r   r   r¯   zGTestGreenletSetParentErrors.test_cannot_delete_parent.<locals>.<lambda>ÿ  ó   €  T€ r   úcan't delete attribute)
r'   rN   r   r   r   rB   rC   r7   rE   rF   )r:   rð   r#   s      r   Útest_cannot_delete_parentz5TestGreenletSetParentErrors.test_cannot_delete_parentþ  sÂ   € Ý˜\˜\Ñ*Ô*ˆØ�Š�f”m¥XÔ%8Ñ%:Ô%:Ñ;Ô;Ð;à×Ò�~Ñ.Ô.ð 	°#Ø�ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à×Ò�˜Sœ]Ñ+Ô+Ð-EÑFÔFÐFÐFÐFs   ÁA&Á&A*Á-A*c                 óà   — |                       t          ¦  «        5 }t          j        ¦   «         `d d d ¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         d S )Nré  ©rB   rC   r   r   r   r7   rE   rF   ©r:   r#   s     r   Ú!test_cannot_delete_parent_of_mainz=TestGreenletSetParentErrors.test_cannot_delete_parent_of_main  sž   € Ø×Ò�~Ñ.Ô.ð 	-°#ÝÔ#Ñ%Ô%Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-à×Ò�˜Sœ]Ñ+Ô+Ð-EÑFÔFÐFÐFÐFs   ›;»?Á?c                 ó\   — |                       t          j        ¦   «         j        ¦  «         d S r"   )rR   r   r   r   r=   s    r   Ú!test_main_greenlet_parent_is_nonez=TestGreenletSetParentErrors.test_main_greenlet_parent_is_none  s(   € à×Ò�(Ô-Ñ/Ô/Ô6Ñ7Ô7Ð7Ð7Ð7r   c                 ó  ‡ — d„ }ˆ fd„}t          |¦  «        }‰                      |¦  «          ||¦  «         |                     ¦   «          ‰                      |¦  «          ||¦  «         |                     ¦   «          d S )Nc                  óZ   — t          j        ¦   «         j                             ¦   «          d S r"   r½   r   r   r   ÚbgzCTestGreenletSetParentErrors.test_set_parent_wrong_types.<locals>.bg  s&   € åÔÑ!Ô!Ô(×/Ò/Ñ1Ô1Ð1Ð1Ð1r   c                 ó  •— d d‰dfD ]x}‰                      t          ¦  «        5 }|| _        d d d ¦  «         n# 1 swxY w Y   ‰                     t	          |j        ¦  «        dt          |¦  «        j        z   ¦  «         Œyd S )Nr	   Ú42z4GreenletChecker: Expected any type of greenlet, not )rB   rÞ   r   r7   rE   rF   Útyper   )ÚgletÚpr#   r:   s      €r   ÚcheckzFTestGreenletSetParentErrors.test_set_parent_wrong_types.<locals>.check  sØ   ø€ Ø˜1˜d DÐ(ð _ð _�Ø×&Ò&¥yÑ1Ô1ð $°SØ"#�D”Kð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð × Ò Ý˜œÑ&Ô&ØJÍTÐRSÉWÌWÔM]Ñ]ñ_ô _ð _ð _ð	_ð _s   ¤8¸<	¿<	)r'   r¤   r   r¢   )r:   ró  rù  r(   s   `   r   Útest_set_parent_wrong_typesz7TestGreenletSetParentErrors.test_set_parent_wrong_types  sŸ   ø€ ð	2ð 	2ð 	2ð	_ð 	_ð 	_ð 	_ð 	_õ ˜‰OŒOˆØ×Ò˜ÑÔÐØˆˆa‰Œˆð 	
�Š‰
Œ
ˆ
Ø�Š˜ÑÔÐØˆˆa‰Œˆð 	
�Š‰
Œ
ˆ
ˆ
ˆ
r   c                 óè   — t          d„ ¦  «        }|                      t          ¦  «        5 }||_        d d d ¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         d S )Nc                  ó   — d S r"   r   r   r   r   r¯   z@TestGreenletSetParentErrors.test_trivial_cycle.<locals>.<lambda>-  rä  r   úcyclic parent chain)r'   rB   rÑ   r   r7   rE   rF   )r:   r÷  r#   s      r   Útest_trivial_cyclez.TestGreenletSetParentErrors.test_trivial_cycle,  s¥   € Ý˜<˜<Ñ(Ô(ˆØ×Ò�zÑ*Ô*ð 	¨cØˆDŒKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à×Ò�˜Sœ]Ñ+Ô+Ð-BÑCÔCÐCÐCÐCs   «?¿AÁAc                 ó  — |                       t          ¦  «        5 }t          j        ¦   «         t          j        ¦   «         _        d d d ¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         d S )Nz(cannot set the parent of a main greenletrì  rí  s     r   Útest_trivial_cycle_mainz3TestGreenletSetParentErrors.test_trivial_cycle_main2  s¹   € à×Ò�~Ñ.Ô.ð 	A°#Ý+3Ô+>Ñ+@Ô+@�HÔÑ!Ô!Ô(ð	Að 	Að 	Añ 	Aô 	Að 	Að 	Að 	Að 	Að 	Að 	Aøøøð 	Að 	Að 	Að 	Aà×Ò�˜Sœ]Ñ+Ô+Ð-WÑXÔXÐXÐXÐXs   ›*AÁAÁAc                 óD  — t          d„ ¦  «        }t          d„ ¦  «        }t          d„ ¦  «        }||_        ||_        |                      t          ¦  «        5 }||_        d d d ¦  «         n# 1 swxY w Y   |                      t          |j        ¦  «        d¦  «         d S )Nc                  ó   — d S r"   r   r   r   r   r¯   z?TestGreenletSetParentErrors.test_deeper_cycle.<locals>.<lambda>9  rô   r   c                  ó   — d S r"   r   r   r   r   r¯   z?TestGreenletSetParentErrors.test_deeper_cycle.<locals>.<lambda>:  rô   r   c                  ó   — d S r"   r   r   r   r   r¯   z?TestGreenletSetParentErrors.test_deeper_cycle.<locals>.<lambda>;  rô   r   rý  )r'   r   rB   rÑ   r7   rE   rF   )r:   r)   rx   Úg3r#   s        r   Útest_deeper_cyclez-TestGreenletSetParentErrors.test_deeper_cycle8  sÑ   € Ý˜˜Ñ&Ô&ˆÝ˜˜Ñ&Ô&ˆÝ˜˜Ñ&Ô&ˆàˆŒ	ØˆŒ	Ø×Ò�zÑ*Ô*ð 	¨cØˆBŒIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à×Ò�˜Sœ]Ñ+Ô+Ð-BÑCÔCÐCÐCÐCs   ÁA-Á-A1Á4A1N)r   r   r   rÈ  rÚ  rå  rê  rî  rð  rú  rþ  r   r  r   r   r   rÂ  rÂ  ™  sÀ   € € € € € ðWð Wð Wð2'ð 'ð 'ðR ð  ð  ðDGð Gð GðGð Gð Gð8ð 8ð 8ðð ð ð8Dð Dð DðYð Yð Yð	Dð 	Dð 	Dð 	Dð 	Dr   rÂ  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestReprc                 ó\   — |                       |                     |¦  «        ||f¦  «         d S r"   )r¢   Úendswith)r:   ÚgotÚsuffixs      r   ÚassertEndsWithzTestRepr.assertEndsWithF  s,   € Ø�Š˜Ÿš VÑ,Ô,¨s°F¨mÑ<Ô<Ð<Ð<Ð<r   c                 ór   — t          t          j        ¦   «         ¦  «        }|                      |d¦  «         d S )Nú current active started main>)Úreprr   r   r  ©r:   Úrs     r   Útest_main_while_runningz TestRepr.test_main_while_runningI  s5   € Ý•Ô$Ñ&Ô&Ñ'Ô'ˆØ×Ò˜AÐ>Ñ?Ô?Ð?Ð?Ð?r   c                 óª   ‡— t          j        ¦   «         Šˆfd„}t          |¦  «        }|                     ¦   «         }|                      |d¦  «         d S )Nc                  ó"   •— t          ‰ ¦  «        S r"   )r  r«  s   €r   rA   z-TestRepr.test_main_in_background.<locals>.runO  s   ø€ Ý˜‘:”:Ðr   ú suspended active started main>)r   r   r'   r   r  )r:   rA   r(   r  rî   s       @r   Útest_main_in_backgroundz TestRepr.test_main_in_backgroundM  sc   ø€ ÝÔ"Ñ$Ô$ˆð	ð 	ð 	ð 	ð 	õ ˜ÑÔˆØ�HŠH‰JŒJˆØ×Ò˜AÐ@ÑAÔAÐAÐAÐAr   c                 óh   — t          t          ¦   «         ¦  «        }|                      |d¦  «         d S )Nz	 pending>)r  r'   r  r  s     r   Útest_initialzTestRepr.test_initialV  s/   € Ý•‘”ÑÔˆØ×Ò˜A˜{Ñ+Ô+Ð+Ð+Ð+r   c                 ó6  ‡— t          j        ¦   «         Š G ˆfd„dt          j        ¦  «        } |¦   «         }|                     ¦   «          |                     d¦  «         |                      |j        d¦  «         |                      |j        d¦  «         t          d¦  «        D ]}t          j        d¦  «         Œt          d¦  «        D ]K}|                      |j        j        ¦  «         t          |j        ¦  «        }|                      |d¦  «         ŒLd S )	Nc                   ó&   •— e Zd ZdxZZdZˆ fd„ZdS )ú/TestRepr.test_main_from_other_thread.<locals>.TNc                 ó’   •— t          ‰¦  «        | _        t          j        ¦   «         | _        t          | j        ¦  «        | _        d S r"   )r  Úoriginal_mainr   r   Ú	main_gletrƒ  )r:   rî   s    €r   rA   z3TestRepr.test_main_from_other_thread.<locals>.T.run`  s9   ø€ Ý%)¨$¡Z¤Z�Ô"Ý!)Ô!4Ñ!6Ô!6�”Ý#'¨¬Ñ#7Ô#7�Ô Ð Ð r   )r   r   r   r  rƒ  r  rA   r«  s   €r   ÚTr  ]  s=   ø€ € € € € Ø*.Ð.ˆM˜KØˆIð8ð 8ð 8ð 8ð 8ð 8ð 8r   r   rp   r  r  r/   gü©ñÒMbP?z (thread exited) dead>)r   r   rk   rl   rq   rr   r  r  rƒ  r9   r«   r¬   r¢   r  rY   r  )r:   r   rš   ri  r  rî   s        @r   Útest_main_from_other_threadz$TestRepr.test_main_from_other_threadZ  s.  ø€ ÝÔ"Ñ$Ô$ˆð	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8•	Ô ñ 	8ô 	8ð 	8ð ˆA‰CŒCˆØ	�Š‰	Œ	ˆ	Ø	�Šˆr‰
Œ
ˆ
à×Ò˜AœOÐ-NÑOÔOÐOØ×Ò˜AœMÐ+JÑKÔKÐKõ �q‘”ð 	ð 	ˆAÝŒJ�uÑÔÐÐõ �q‘”ð 	=ð 	=ˆAØ�OŠO˜AœKÔ,Ñ-Ô-Ð-Ý�Q”[Ñ!Ô!ˆAØ×Ò Ð#;Ñ<Ô<Ð<Ð<ð	=ð 	=r   c                 óf  — t          d„ ¦  «        }|                     ¦   «          |                      t          |¦  «        d¦  «         |                      dt          |¦  «        ¦  «         |                      dt          |¦  «        ¦  «         |                      dt          |¦  «        ¦  «         d S )Nc                  ó   — d S r"   r   r   r   r   r¯   z$TestRepr.test_dead.<locals>.<lambda>~  s   €  € r   z dead>Ú	suspendedÚstartedÚactive)r'   r   r  r  ÚassertNotInrO   s     r   Ú	test_deadzTestRepr.test_dead}  s”   € Ý˜˜Ñ%Ô%ˆØ	�Š‰
Œ
ˆ
Ø×Ò�D ™GœG XÑ.Ô.Ð.Ø×Ò˜¥d¨1¡g¤gÑ.Ô.Ð.Ø×Ò˜¥D¨¡G¤GÑ,Ô,Ð,Ø×Ò˜¥4¨¡7¤7Ñ+Ô+Ð+Ð+Ð+r   c                 óì   — t          d„ ¦  «        }t          d„ ¦  «        }t          j        ¦   «         }|||fD ]:}|                      |›t          ¦  «         |                      |›t          ¦  «         Œ;d S )Nc                  ó   — d S r"   r   r   r   r   r¯   z>TestRepr.test_formatting_produces_native_str.<locals>.<lambda>‰  rè  r   c                  ó   — d S r"   r   r   r   r   r¯   z>TestRepr.test_formatting_produces_native_str.<locals>.<lambda>Š  rÃ   r   )r'   r   r   ÚassertIsInstancerE   )r:   Úg_deadÚg_not_startedÚg_curr(   s        r   Ú#test_formatting_produces_native_strz,TestRepr.test_formatting_produces_native_str…  s—   € õ ˜\˜\Ñ*Ô*ˆÝ# L LÑ1Ô1ˆÝÔ#Ñ%Ô%ˆà˜¨Ð-ð 		ð 		ˆAà×!Ò!Ø˜Ýñô ð ð ×!Ò!Ø˜Ýñô ð ð ð		ð 		r   N)
r   r   r   r  r  r  r  r!  r(  r0  r   r   r   r  r  D  s„   € € € € € ð=ð =ð =ð@ð @ð @ðBð Bð Bð,ð ,ð ,ð!=ð !=ð !=ðF,ð ,ð ,ðð ð ð ð r   r  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestMainGreenletc                 ó´   — dt          t          j        ¦   «         ¦  «        v sJ ‚t          t          j        ¦   «         ¦  «        }dt          |¦  «        vsJ ‚|S )Nrî   )r  r   r   rö  )r:   rš   s     r   Ú_check_current_is_mainz'TestMainGreenlet._check_current_is_main�  sV   € à��hÔ1Ñ3Ô3Ñ4Ô4Ð4Ð4Ð4Ð4å•Ô$Ñ&Ô&Ñ'Ô'ˆØ�T !™WœWÐ$Ð$Ð$Ð$Øˆr   c                 ó|   — |                       ¦   «         }t          d|fi ¦  «        }|                      |¦  «         d S )NÚsubclass)r4  rö  rM   )r:   Ú	main_typer6  s      r   Ú)test_main_greenlet_type_can_be_subclassedz:TestMainGreenlet.test_main_greenlet_type_can_be_subclassed¥  s@   € Ø×/Ò/Ñ1Ô1ˆ	Ý˜
 Y L°"Ñ5Ô5ˆØ×Ò˜XÑ&Ô&Ð&Ð&Ð&r   c                 ó†   — |                       ¦   «          |                      t          j        ¦   «         t          ¦  «         d S r"   )r4  r,  r   r   r'   r=   s    r   Útest_main_greenlet_is_greenletz/TestMainGreenlet.test_main_greenlet_is_greenletª  s9   € Ø×#Ò#Ñ%Ô%Ð%Ø×Ò�hÔ1Ñ3Ô3µ[ÑAÔAÐAÐAÐAr   N)r   r   r   r4  r8  r:  r   r   r   r2  r2  ™  sF   € € € € € ðð ð ð'ð 'ð 'ð
Bð Bð Bð Bð Br   r2  c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚTestBrokenGreenletsc                 óè   — d„ }t           j                             |¦  «        }d|_        |                      t
          d¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nc                  ó    — t          d¦  «        ‚)NzNever get here)ÚAssertionErrorr   r   r   rä   z<TestBrokenGreenlets.test_failed_to_initialstub.<locals>.funcµ  s   € Ý Ð!1Ñ2Ô2Ð2r   Tz;Failed to switch stacks into a greenlet for the first time.)r   Ú	_greenletÚUnswitchableGreenletÚforce_switch_errorÚassertRaisesRegexÚSystemErrorr   )r:   rä   r(   s      r   Útest_failed_to_initialstubz.TestBrokenGreenlets.test_failed_to_initialstub´  s¿   € ð	3ð 	3ð 	3õ Ô×3Ò3°DÑ9Ô9ˆØ#ˆÔà×#Ò#¥KØ$añcô cð 	ð 	à�HŠH‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁA'Á'A+Á.A+c                 ó  ‡— g Šˆfd„}t           j                             |¦  «        }|                     ¦   «          |                      ‰dg¦  «         |                     ¦   «          |                      ‰ddg¦  «         d|_        |                      t          d¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d|_        |                     ¦   «          |                      ‰g d¢¦  «         d S )Nc                  ó.  •— ‰                       d¦  «         t          j        ¦   «         j                             ¦   «          ‰                       d¦  «         t          j        ¦   «         j                             ¦   «          ‰                       d¦  «         d S )Nr	   r4   r/   r0   )Úrunss   €r   rä   zDTestBrokenGreenlets.test_failed_to_switch_into_running.<locals>.funcÂ  sp   ø€ Ø�KŠK˜‰NŒNˆNÝÔÑ!Ô!Ô(×/Ò/Ñ1Ô1Ð1Ø�KŠK˜‰NŒNˆNÝÔÑ!Ô!Ô(×/Ò/Ñ1Ô1Ð1Ø�KŠK˜‰NŒNˆNˆNˆNr   r	   r4   Tz0Failed to switch stacks into a running greenlet.F)r	   r4   r/   )r   r@  rA  r   r7   rB  rC  rD  )r:   rä   r(   rH  s      @r   Ú"test_failed_to_switch_into_runningz6TestBrokenGreenlets.test_failed_to_switch_into_runningÀ  sC  ø€ Øˆð	ð 	ð 	ð 	ð 	õ Ô×3Ò3°DÑ9Ô9ˆØ	�Š‰
Œ
ˆ
Ø×Ò˜ ˜sÑ#Ô#Ð#Ø	�Š‰
Œ
ˆ
Ø×Ò˜  1˜vÑ&Ô&Ð&Ø#ˆÔà×#Ò#¥KØ$VñXô Xð 	ð 	à�HŠH‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð  %ˆÔØ	�Š‰
Œ
ˆ
Ø×Ò˜˜y˜y˜yÑ)Ô)Ð)Ð)Ð)s   Â!CÃCÃ	Cc                 óÀ   — |                       d¦  «        }|                      d|j        ¦  «         |                      |j        |                      ¦   «         ¦  «         d S )Nzfail_slp_switch.pyzfail_slp_switch is running)ÚassertScriptRaisesrD   ÚoutputÚ
returncodeÚ,get_expected_returncodes_for_aborted_process©r:   Úexs     r   Ú&test_failed_to_slp_switch_into_runningz:TestBrokenGreenlets.test_failed_to_slp_switch_into_runningÜ  sU   € Ø×$Ò$Ð%9Ñ:Ô:ˆà�ŠÐ2°B´IÑ>Ô>Ð>Ø�Š�b”m T×%VÒ%VÑ%XÔ%XÑYÔYÐYÐYÐYr   c                 ó8  — |                       d¦  «        }|                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         |                      d|¦  «         d S )Nzfail_switch_two_greenlets.pyz	In g1_runÚTRACEzLEAVE TRACEzFalling off end of mainzFalling off end of g1_runzFalling off end of g2©Ú
run_scriptrD   ©r:   rL  s     r   Ú#test_reentrant_switch_two_greenletsz7TestBrokenGreenlets.test_reentrant_switch_two_greenletsâ  s•   € à—’Ð!?Ñ@Ô@ˆØ�Š�k 6Ñ*Ô*Ð*Ø�Š�g˜vÑ&Ô&Ð&Ø�Š�m VÑ,Ô,Ð,Ø�ŠÐ/°Ñ8Ô8Ð8Ø�ŠÐ1°6Ñ:Ô:Ð:Ø�ŠÐ-¨vÑ6Ô6Ð6Ð6Ð6r   c                 ó    — |                       dd¬¦  «        }|                      d|j        ¦  «         |                      d|j        ¦  «         d S )Nzfail_switch_three_greenlets.py)r	   )Ú	exitcodesrÞ   zpositional arguments)rK  rD   rL  rO  s     r   Ú%test_reentrant_switch_three_greenletsz9TestBrokenGreenlets.test_reentrant_switch_three_greenletsì  sQ   € ð ×$Ò$Ð%EÐQUÐ$ÑVÔVˆà�Š�k 2¤9Ñ-Ô-Ð-Ø�ŠÐ,¨b¬iÑ8Ô8Ð8Ð8Ð8r   c                 ó\   — |                       d¦  «        }|                      d|¦  «         d S )Nzfail_switch_three_greenlets2.pya­  RESULTS: [('trace', 'switch'), ('trace', 'switch'), ('g2 arg', 'g2 from tracefunc'), ('trace', 'switch'), ('main g1', 'from g2_run'), ('trace', 'switch'), ('g1 arg', 'g1 from main'), ('trace', 'switch'), ('main g2', 'from g1_run'), ('trace', 'switch'), ('g1 from parent', 'g1 from main 2'), ('trace', 'switch'), ('main g1.2', 'g1 done'), ('trace', 'switch'), ('g2 from parent', ()), ('trace', 'switch'), ('main g2.2', 'g2 done')]rT  rV  s     r   Ú&test_reentrant_switch_three_greenlets2z:TestBrokenGreenlets.test_reentrant_switch_three_greenlets2õ  s@   € ð —’Ð!BÑCÔCˆØ�Šð=ð ñ		
ô 		
ð 		
ð 		
ð 		
r   c                 ó\   — |                       d¦  «        }|                      d|¦  «         d S )Nz#fail_initialstub_already_started.pya!  RESULTS: ['Begin C', 'Switch to b from B.__getattribute__ in C', ('Begin B', ()), '_B_run switching to main', ('main from c', 'From B'), 'B.__getattribute__ back from main in C', ('Begin A', (None,)), ('A dead?', True, 'B dead?', True, 'C dead?', False), 'C done', ('main from c.2', None)]rT  rV  s     r   Ú4test_reentrant_switch_GreenletAlreadyStartedInPythonzHTestBrokenGreenlets.test_reentrant_switch_GreenletAlreadyStartedInPython  s>   € Ø—’Ð!FÑGÔGˆà�Šð1ð
 ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó\   — |                       d¦  «        }|                      d|¦  «         d S )Nzfail_clearing_run_switches.pyz„RESULTS [('G.__getattribute__', 'run'), ('RunCallable', '__del__'), ('main: g.switch()', 'from RunCallable'), ('run_func', 'enter')]rT  rV  s     r   Ú*test_reentrant_switch_run_callable_has_delz>TestBrokenGreenlets.test_reentrant_switch_run_callable_has_del  s>   € Ø—’Ð!@ÑAÔAˆØ�Šðð ñ	
ô 	
ð 	
ð 	
ð 	
r   N)r   r   r   rE  rI  rQ  rW  rZ  r\  r^  r`  r   r   r   r<  r<  °  s�   € € € € € ð
ð 
ð 
ð*ð *ð *ð8Zð Zð Zð7ð 7ð 7ð9ð 9ð 9ð
ð 
ð 
ð$

ð 

ð 

ð
ð 
ð 
ð 
ð 
r   r<  Ú__main__)Ú
__future__r   r   r   r   r   r«   rk   Úabcr   r   r   r'   r¹  r
   Ú	leakcheckr   r†   r   r   r*   r,   rÂ  r  r2  r<  r   Úunittestrî   r   r   r   ú<module>rf     s6  ðØ &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &ð	ð 	ð 	ð 	ð 	�	ñ 	ô 	ð 	ðð ð ðð ð ðd(ð d(ð d(ð d(ð d(�8ñ d(ô d(ð d(ðNhDð hDð hDð hDð hD (ñ hDô hDð hDðVRð Rð Rð Rð Rˆxñ Rô Rð RðjBð Bð Bð Bð B�xñ Bô Bð Bð.k
ð k
ð k
ð k
ð k
˜(ñ k
ô k
ð k
ðZ ˆzÒÐØ€O€O€OØ€H„M�O„O€O€O€Oð Ðr   