Ë
    _§1h¢™  ã                  óº  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZmZ d dlZd dlZddlmZmZmZmZmZmZmZmZ ddlmZ ddlmZ dd	l m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' dd
l(m)Z) erd dl*m+Z+m,Z,m-Z- d dl.m/Z/ ddl0m1Z1 e2e3e4eejj                  e6e7   f   f      Z8 ed«      Z9d=d„Z:d=d„Z;d=d„Z<d=d„Z=d=d„Z>d>d?d„Z?d=d„Z@d=d„ZAd=d„ZBd=d„ZC	 	 	 	 	 	 d@d„ZDejŠ                  j�                  dg d¢«      ejŠ                  j�                  dddg«      ejŠ                  j�                  dddg«      	 	 	 	 	 	 	 	 dAd „«       «       «       ZGd=d!„ZHd=d"„ZI	 	 	 	 dBd#„ZJd=d$„ZKd=d%„ZL ejš                  d&«      ZNd'eOd&<   d=d(„ZPd=d)„ZQd=d*„ZRd=d+„ZSd=d,„ZTd=d-„ZUd=d.„ZVd=d/„ZWd=d0„ZXd=d1„ZYd=d2„ZZd=d3„Z[d=d4„Z\d=d5„Z]d=d6„Z^d=d7„Z_d=d8„Z`d=d9„Zaed=d:„«       Zbd=d;„Zcd=d<„Zdy)Cé    )ÚannotationsN©Úpartial)ÚTYPE_CHECKINGÚNoReturnÚTypeVarÚUnioné   )ÚCancelScopeÚCapacityLimiterÚEventÚ_coreÚ
fail_afterÚmove_on_afterÚsleepÚsleep_forever)Úki_self)Úslow)Úactive_thread_countÚcurrent_default_thread_limiterÚfrom_thread_check_cancelledÚfrom_thread_runÚfrom_thread_run_syncÚto_thread_run_syncÚwait_all_threads_completed)Úwait_all_tasks_blocked)ÚAsyncGeneratorÚ	AwaitableÚCallable)ÚOutcome)ÚTaskÚTc               ƒ  óˆ  ‡K  — t        j                  «       Š	 d
	 	 	 	 	 	 	 	 	 dˆfd„} t        j                  «       }dd„} | t        |d|¬«      ƒ d {  –—†  dd„} | t        |dt
        f|¬«      ƒ d {  –—†  dd„} | t        |d|¬«      ƒ d {  –—†  dd	„} | t        |dt        f|¬«      ƒ d {  –—†  y 7 Œe7 ŒE7 Œ+7 Œ­w)Nc              “  ó  •‡ ‡‡‡K  — g Šdˆ ˆˆˆfd„}t        j                  |d¬«      }|j                  «        |j                  «       r/t	        d«       t        d«      ƒ d {  –—†  |j                  «       rŒ/‰d|fd‰f|gk(  sJ ‚y 7 Œ$­w)	Nc                 ó  •— 	 ‰j                  dt        j                  «       f«        ‰‰‰‰¬«      } ‰j                  d| f«       y # t        $ r1}t	        |«       ‰j                  dt        |«      f«       Y d }~y d }~ww xY w)NÚstart©Ú
trio_tokenÚgotÚerror)ÚappendÚ	threadingÚcurrent_threadÚBaseExceptionÚprintÚtype)ÚxÚexcÚdo_in_trio_threadÚfnÚrecordr(   s     €€€€úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/trio/_tests/test_threads.pyÚthreadfnz<test_do_in_trio_thread.<locals>.check_case.<locals>.threadfnB   so   ø€ ð4Ø—‘˜w¬	×(@Ñ(@Ó(BÐCÔDÙ% b¨&¸ZÔH�Ø—‘˜u a˜jÕ)øÜ ò 4Ü�c”
Ø—‘˜w¬¨S«	Ð2×3Ñ3ûð4ús   ƒAA Á	BÁ'A<Á<BT)ÚtargetÚdaemonÚyawnç{®Gáz„?r&   Úf©ÚreturnÚNone)r,   ÚThreadr&   Úis_aliver/   r   )r3   r4   Úexpectedr(   r7   Úchild_threadr5   Útrio_threads   `` `  @€r6   Ú
check_casez*test_do_in_trio_thread.<locals>.check_case:   sŒ   üè ø€ ð  ˆ÷	4ð 	4ô !×'Ñ'¨xÀÔEˆØ×ÑÔØ×#Ñ#Ô%Ü�&ŒMÜ˜“+×Ðð ×#Ñ#Õ%ð ˜7 LÐ1°C¸Ð3EÀxÐPÒPÐPÑPð ús   ‡AB
Á#BÁ$B
Á9B
c                óz   — t        j                  «       rJ ‚| j                  dt        j                  «       f«       y)Nr<   r
   )r   Úcurrently_ki_protectedr+   r,   r-   ©r5   s    r6   Úf1z"test_do_in_trio_thread.<locals>.f1T   s1   € Ü×/Ñ/Ô1Ð1Ð1Ø�‰�sœI×4Ñ4Ó6Ð7Ô8Øó    )r)   r
   r'   c                ó„   — t        j                  «       rJ ‚| j                  dt        j                  «       f«       t
        ‚©Nr<   )r   rG   r+   r,   r-   Ú
ValueErrorrH   s    r6   Úf2z"test_do_in_trio_thread.<locals>.f2[   s4   € Ü×/Ñ/Ô1Ð1Ð1Ø�‰�sœI×4Ñ4Ó6Ð7Ô8ÜÐrJ   r*   c              “  ó¾   K  — t        j                  «       rJ ‚t        j                  «       ƒ d {  –—†  | j                  dt	        j
                  «       f«       y7 Œ*­w)Nr<   é   )r   rG   Ú
checkpointr+   r,   r-   rH   s    r6   Úf3z"test_do_in_trio_thread.<locals>.f3b   sL   è ø€ Ü×/Ñ/Ô1Ð1Ð1Ü×ÑÓ × Ð Ø�‰�sœI×4Ñ4Ó6Ð7Ô8Øð 	!ús   ‚.A°A±+A)r)   rP   c              “  óÈ   K  — t        j                  «       rJ ‚t        j                  «       ƒ d {  –—†  | j                  dt	        j
                  «       f«       t        ‚7 Œ/­wrL   )r   rG   rQ   r+   r,   r-   ÚKeyErrorrH   s    r6   Úf4z"test_do_in_trio_thread.<locals>.f4j   sN   è ø€ Ü×/Ñ/Ô1Ð1Ð1Ü×ÑÓ × Ð Ø�‰�sœI×4Ñ4Ó6Ð7Ô8Üˆð 	!ús   ‚.A"°A ±0A"©N)
r3   zCallable[..., threading.Thread]r4   zCallable[..., T | Awaitable[T]]rB   ztuple[str, T]r(   ú_core.TrioToken | Noner>   r?   )r5   Ú
RecordTyper>   Úint)r5   rX   r>   r   )r,   r-   r   Úcurrent_trio_tokenr   rM   r   rT   )rE   ÚtokenrI   rN   rR   rU   rD   s         @r6   Útest_do_in_trio_threadr\   7   s÷   øè ø€ Ü×*Ñ*Ó,€Kð .2ð	QØ:ðQà+ðQð  ðQð +ð	Qð
 
õQô0 ×$Ñ$Ó&€Eóñ
 Ô)¨2¨zÀeÔ
L×LÐLóñ
 Ô)¨2°¼Ð/DÐQVÔ
W×WÐWóñ ”_ b¨*ÀÔ
G×GÐGóñ ”_ b¨7´HÐ*=È%Ô
P×PÑPð/ Møð Xøð Høð QúsH   ƒACÁB:Á!CÁ6B<Á7CÂB>Â!CÂ4C Â5CÂ<CÂ>CÃ Cc               ƒ  óú   K  — t        j                  t        «      5  t        d„ «       d d d «       dd„} t        j                  t        «      5  t	        | «       d d d «       y # 1 sw Y   Œ;xY w# 1 sw Y   y xY w­w)Nc                  ó   — y rV   © r_   rJ   r6   ú<lambda>z9test_do_in_trio_thread_from_trio_thread.<locals>.<lambda>u   ó   � rJ   c               “  ó   K  — y ­wrV   r_   r_   rJ   r6   Úfooz4test_do_in_trio_thread_from_trio_thread.<locals>.foow   ó	   è ø€ Øùó   ‚r=   )ÚpytestÚraisesÚRuntimeErrorr   r   )rc   s    r6   Ú'test_do_in_trio_thread_from_trio_threadri   s   sc   è ø€ Ü	�‰”|Ó	$ñ +Ü™\Ô*÷+óô 
�‰”|Ó	$ñ Ü˜Ô÷ð ÷+ð +ú÷ð üs3   ‚A;œA#©%A;ÁA/Á	A;Á#A,Á(A;Á/A8Á4A;c                 ób   ‡— t        «       Šdˆfd„} t        j                  | «       ‰ddhk(  sJ ‚y )Nc               “  ó|  •‡‡‡K  — t        j                  «       Šd	d„Šd	ˆfd„Šd	ˆˆˆˆfd„} t        j                  | ¬«      }|j	                  «        t        d«       |j                  «       r$t        d«      ƒ d {  –—†  |j                  «       rŒ$t        d«       |j                  «        t        d«       y 7 Œ<­w)
Nc                 óø   — t        d«       t        j                  «       rJ ‚t        d«       	 t        «        dd l} t        d | j
                  «       «       y # dd l} t        d | j
                  «       «       w xY w)Nzin Trio threadr   r   Úfinally)r/   r   rG   r   ÚsysÚexc_info)rn   s    r6   Útrio_thread_fnzTtest_run_in_trio_thread_ki.<locals>.check_run_in_trio_thread.<locals>.trio_thread_fn†   s]   € ÜÐ"Ô#Ü×3Ñ3Ô5Ð5Ð5Ü�)Ôð1Ü”	ãä�i  §¡£Õ0øó ä�i  §¡£Õ0ús   ®
A Á!A9c               “  ó   •K  —  ‰ «        y ­wrV   r_   )rp   s   €r6   Útrio_thread_afnzUtest_run_in_trio_thread_ki.<locals>.check_run_in_trio_thread.<locals>.trio_thread_afn‘   s   øè ø€ ÙÕùs   ƒ	c                 ó   •— 	 t        d«       t        ‰‰¬«       	 t	        ‰‰¬«       y # t        $ r t        d«       ‰ j                  d«       Y Œ6w xY w# t        $ r t        d«       ‰ j                  d«       Y y w xY w)NÚrunningr'   Úok1Úok2)r/   r   ÚKeyboardInterruptÚaddr   )r5   r[   rr   rp   s   €€€€r6   Úexternal_thread_fnzXtest_run_in_trio_thread_ki.<locals>.check_run_in_trio_thread.<locals>.external_thread_fn”   sp   ø€ ð"Ü�iÔ Ü$ ^ÀÕFð"Ü ¸EÖBøô	 %ò "Ü�e”Ø—
‘
˜5Ö!ð"ûô
 %ò "Ü�e”Ø—
‘
˜5Ö!ð"ús    ƒ* œA ª%AÁAÁ%A=Á<A=)r8   Úwaitingr;   zwaited, joiningÚdoner=   )	r   rZ   r,   r@   r&   r/   rA   r   Újoin)ry   Úthreadr[   rr   rp   r5   s     @@@€r6   Úcheck_run_in_trio_threadz<test_run_in_trio_thread_ki.<locals>.check_run_in_trio_threadƒ   sŽ   ûè ø€ Ü×(Ñ(Ó*ˆó		1õ	÷	"ð 	"ô ×!Ñ!Ð);Ô<ˆØ�‰ŒÜˆiÔØ�o‰oÔÜ˜“+×Ðð �o‰oÕäÐÔ Ø�‰ŒÜˆf�ð ús   †A7B<Á=B:Á>B<Â(B<ru   rv   r=   )Úsetr   Úrun)r~   r5   s    @r6   Útest_run_in_trio_thread_kir�   ~   s3   ø€ ô ‹U€Fõ%ôN 
‡I�IÐ&Ô'Ø�e˜U�^Ò#Ð#Ñ#rJ   c                 ó¬   ‡‡‡‡— g Št        «       Šdˆˆfd„Šdˆˆfd„Šdˆˆˆfd„} t        j                  | «      }|j                  «        ‰ddgk(  sJ ‚y )	Nc               “  ó�   •K  — ‰j                  d«       ‰ j                  «        t        j                  d„ «      ƒ d {  –—†  y 7 Œ­w)NÚsleepingc                ó6   — t         j                  j                  S rV   )r   ÚAbortÚ	SUCCEEDED)Ú_s    r6   r`   zMtest_await_in_trio_thread_while_main_exits.<locals>.trio_fn.<locals>.<lambda>µ   s   € ´E·K±K×4IÑ4I€ rJ   )r+   r   r   Úwait_task_rescheduled)Úevr5   s   €€r6   Útrio_fnz;test_await_in_trio_thread_while_main_exits.<locals>.trio_fn²   s1   øè ø€ Ø�‰�jÔ!Ø
�‰ŒÜ×)Ñ)Ñ*IÓJ×JÒJús   ƒ;A¾A¿Ac                óv   •— 	 t        ‰| ¬«       y # t        j                  $ r ‰j                  d«       Y y w xY w)Nr'   Ú	cancelled)r   r   Ú	Cancelledr+   )r[   r5   r‹   s    €€r6   Ú	thread_fnz=test_await_in_trio_thread_while_main_exits.<locals>.thread_fn·   s1   ø€ ð	'Ü˜G°Ö6øÜ�‰ò 	'Ø�M‰M˜+Ö&ð	'ús   ƒ ‘$8·8c               “  óÌ   •K  — t        j                  «       } t        j                  ‰| f¬«      }|j	                  «        ‰j                  «       ƒ d {  –—†  ‰dgk(  sJ ‚|S 7 Œ­w)N)r8   Úargsr„   )r   rZ   r,   r@   r&   Úwait)r[   r}   rŠ   r5   r�   s     €€€r6   Úmainz8test_await_in_trio_thread_while_main_exits.<locals>.main½   sY   øè ø€ Ü×(Ñ(Ó*ˆÜ×!Ñ!¨¸%¸ÔBˆØ�‰ŒØ�g‰g‹i�ˆØ˜*˜Ò%Ð%Ð%Øˆð 	ús   ƒAA$ÁA"ÁA$r„   r�   r=   )r[   ú_core.TrioTokenr>   r?   )r>   úthreading.Thread)r   r   r€   r|   )r“   r}   rŠ   r5   r�   r‹   s     @@@@r6   Ú*test_await_in_trio_thread_while_main_exitsr–   ®   sJ   û€ Ø€FÜ	‹€BöKö
'÷ô �Y‰Y�t‹_€FØ
‡K�K„MØ�j +Ð.Ò.Ð.Ñ.rJ   c               ƒ  ób  ‡‡K  — d} d| z   fdd„Šdˆfd„Št        ‰«      ƒ d {  –—†  t        ‰d ¬«      ƒ d {  –—†  t         ‰d| z   «      «      ƒ d {  –—†  dˆfd„} |d«      ƒ d {  –—†   |d	«      ƒ d {  –—†   |d
«      ƒ d {  –—†   |d«      ƒ d {  –—†  y 7 Œ|7 Œi7 ŒO7 Œ;7 Œ-7 Œ7 Œ­w)Nz0 from trio._tests.test_threads.test_named_threadÚinnerc                óp   — t        j                  «       j                  | k(  sJ ‚t        j                  «       S rV   )r,   r-   Úname)rš   s    r6   r˜   z test_named_thread.<locals>.innerÍ   s.   € Ü×'Ñ'Ó)×.Ñ.°$Ò6Ð6Ð6Ü×'Ñ'Ó)Ð)rJ   c                ó   •— t        ‰| «      S rV   r   ©rš   r˜   s    €r6   r<   ztest_named_thread.<locals>.fÑ   ó   ø€ Ü�u˜dÓ#Ð#rJ   ©Úthread_namer?   c              “  óŒ   •K  — t         ‰| «      | ¬«      ƒ d {  –—† }t        j                  d|j                  «      sJ ‚y 7 Œ'­w)Nrž   úTrio thread [0-9]*)r   ÚreÚmatchrš   )rš   r}   r<   s     €r6   Útest_thread_namez+test_named_thread.<locals>.test_thread_nameÜ   s9   øè ø€ Ü)©!¨D«'¸tÔD×DˆÜ�x‰xÐ-¨v¯{©{Ô;Ð;Ñ;ð Eús   ƒAšA›(AÚ ÚfobiedooÚname_longer_than_15_charactersõ   ðŸ’™©rš   Ústrr>   r•   ©rš   rª   r>   zCallable[[], threading.Thread])rš   rª   r>   r?   ©r   )Úendingr¤   r<   r˜   s     @@r6   Útest_named_threadr®   Ê   s¸   ùè ø€ Ø?€Fà! FÑ*ô *õ$ô ˜UÓ
#×#Ð#Ü
˜U°Ô
5×5Ð5ô ™Q˜v¨™Ó/Ó
0×0Ð0õ<ñ ˜2Ó
×ÐÙ
˜:Ó
&×&Ð&Ù
Ð;Ó
<×<Ð<á
˜6Ó
"×"Ñ"ð $øØ5øð 1øð øØ&øØ<øà"úsy   „ B/¤B!¥B/¹B#ºB/ÁB%ÁB/Á+B'Á,B/Á;B)Á<B/ÂB+ÂB/ÂB-ÂB/Â#B/Â%B/Â'B/Â)B/Â+B/Â-B/c                óz  — dd l }dd l}|j                  j                  d«      }|sd}	 |j	                  |«      }t        |dd «      }|sJ ‚|j                  |j                  |j                  g|_        |j                  |_        |j!                  dd¬«      }| €t#        j$                  «       }  || |d«      dk(  sJ ‚	 |j&                  j)                  «       S # t
        $ r t        dt        j                  › �«       Y y w xY w# t*        $ r/}t-        j.                  d	|j&                  ›d
|› �«       Y d }~y d }~ww xY w)Nr   Úpthreadzlibc.sozno pthread on Úpthread_getname_nprJ   é   )Úsizezvalue: z, exception: )ÚctypesÚctypes.utilÚutilÚfind_libraryÚCDLLÚ	Exceptionr/   rn   ÚplatformÚgetattrÚc_void_pÚc_char_pÚc_size_tÚargtypesÚc_intÚrestypeÚcreate_string_bufferr,   Ú	get_identÚvalueÚdecodeÚUnicodeDecodeErrorrf   Úfail)Úidentr´   Úlibpthread_pathÚ
libpthreadr±   Úname_bufferÚes          r6   Ú_get_thread_namerÍ   ç   s>  € ÛÛà—k‘k×.Ñ.¨yÓ9€OÙð $ˆðØ—[‘[ Ó1ˆ
ô
 ! Ð-AÀ4ÓHÐñ ÐÐð 	�‰Ø�‰Ø�‰ð#ÐÔð
 "(§¡ÐÔà×-Ñ-¨c¸Ð-Ó;€KØ€}Ü×#Ñ#Ó%ˆÙ˜e [°"Ó5¸Ò:Ð:Ð:ðEØ× Ñ ×'Ñ'Ó)Ð)øô- ò Ü�œsŸ|™|˜nÐ-Ô.Ùðûô. ò Eä�‰�g˜k×/Ñ/Ð2°-À¸sÐC×DÑDûðEús)   ©C Â=D Ã%C?Ã>C?Ä	D:Ä%D5Ä5D:c               ƒ  ó:  ‡‡K  — dd„Šdˆfd„Šd} t         ‰| «      «      ƒ d {  –—†  t         ‰| «      d ¬«      ƒ d {  –—†  ddˆfd„} |d«      ƒ d {  –—†   |d«      ƒ d {  –—†   |d«      ƒ d {  –—†   |d	d
¬«      ƒ d {  –—†  y 7 Œi7 ŒP7 Œ;7 Œ-7 Œ7 Œ­w)Nc                óð   — t        «       }|€Mt        j                  dk7  r:t        j                  dt        j                  › �«       t        j                  «       S || d d k(  sJ ‚t        j                  «       S )NÚlinuxzno pthread OS support on é   )rÍ   rn   rº   rf   Úskipr,   r-   )rš   Úos_thread_names     r6   r˜   z#test_named_thread_os.<locals>.inner  si   € Ü)Ó+ˆØÐ!¤c§l¡l°gÒ&=Ü�K‰KÐ3´C·L±L°>ÐBÔCô ×'Ñ'Ó)Ð)ð " T¨#¨2 YÒ.Ð.Ð.ä×'Ñ'Ó)Ð)rJ   c                ó   •— t        ‰| «      S rV   r   rœ   s    €r6   r<   ztest_named_thread_os.<locals>.f  r�   rJ   z4None from trio._tests.test_threads.test_named_threadrž   c              “  ó¼   •K  — |€| }t         ‰|«      | ¬«      ƒ d {  –—† }t        |j                  «      }|€J d«       ‚t        j                  d|«      sJ ‚y 7 Œ;­w)Nrž   z'should skip earlier if this is the caser¡   )r   rÍ   rÈ   r¢   r£   )rš   rB   r}   rÓ   r<   s       €r6   r¤   z.test_named_thread_os.<locals>.test_thread_name(  s`   øè ø€ ØÐØˆHÜ)©!¨H«+À4ÔH×Hˆä)¨&¯,©,Ó7ˆØÐ)ÐTÐ+TÓTÐ)Ü�x‰xÐ-¨~Ô>Ð>Ñ>ð	 Iús   ƒAžAŸ<Ar¥   r¦   r§   r¨   ú?)rB   r©   r«   rV   )rš   rª   rB   ú
str | Noner>   r?   r¬   )Údefaultr¤   r<   r˜   s     @@r6   Útest_named_thread_osrÙ     sœ   ùè ø€ ó*õ$ð E€GÜ
™Q˜w›ZÓ
(×(Ð(Ü
™Q˜w›Z°TÔ
:×:Ð:ö?ñ ˜2Ó
×ÐÙ
˜:Ó
&×&Ð&Ù
Ð;Ó
<×<Ð<á
˜6¨CÔ
0×0Ñ0ð# )øØ:øð øØ&øØ<øà0úsi   „!B¥B¦BÁ BÁBÁBÁBÁ'BÁ(BÁ7BÁ8BÂ	BÂ
BÂBÂBÂBÂBÂBc                 óš   — ddl m}   | «       }|€<t        j                  dk7  sJ ‚t	        j
                  dt        j                  › �«       y y )Nr   )Úget_os_thread_name_funcrÐ   zno pthread_setname_np on )Útrio._core._thread_cacherÛ   rn   rº   rf   rÒ   )rÛ   Úks     r6   Útest_has_pthread_setname_nprÞ   8  sA   € Ý@áÓ!€AØ€yÜ�|‰|˜wÒ&Ð&Ð&Ü�‰Ð/´·±¨~Ð>Õ?ð rJ   c               ƒ  ó–  K  — t        j                  «       } dd„}t        |d«      ƒ d {  –—† \  }}|dk(  sJ ‚|| k7  sJ ‚dd„}t        j                  t
        d¬«      5 }t        |«      ƒ d {  –—†  d d d «       t        j                  j                  «       |j                  j                  d   | k7  sJ ‚y 7 ŒŽ7 ŒL# 1 sw Y   ŒKxY w­w)	Nc                ó.   — | t        j                  «       fS rV   )r,   r-   )r1   s    r6   r<   z$test_run_in_worker_thread.<locals>.fD  s   € Ø”9×+Ñ+Ó-Ð.Ð.rJ   é   c                 ó<   — t        t        j                  «       «      ‚rV   )rM   r,   r-   r_   rJ   r6   Úgz$test_run_in_worker_thread.<locals>.gK  s   € Üœ×1Ñ1Ó3Ó4Ð4rJ   z1^<Thread\(Trio thread \d+, started daemon \d+\)>$©r£   r   )r1   r"   r>   ztuple[T, threading.Thread])r>   r   )	r,   r-   r   rf   rg   rM   r/   rÄ   r‘   )rD   r<   r1   rC   rã   Úexcinfos         r6   Útest_run_in_worker_threadræ   A  sÄ   è ø€ Ü×*Ñ*Ó,€Kó/ô /¨q°!Ó4×4�O€A€|Ø�Š6€Mˆ6Ø˜;Ò&Ð&Ð&ó5ô 
�‰ÜØBô
ð $ð 
Ü  Ó#×#Ð#÷	$ô
 
ˆ'�-‰-×
Ñ
ÔØ�=‰=×Ñ˜aÑ  KÒ/Ð/Ñ/ð 5øð 	$ø÷	$ð $üs:   ‚(C	ªB9«4C	ÁB=Á.B;Á/B=Á3AC	Â;B=Â=CÃC	c               ƒ  óÀ  ‡‡‡K  — d gŠdˆfd„Šdˆˆfd„} g Št        j                  «       }t        j                  «       4 ƒd {  –—† }|j	                  | |d«       t        «       ƒ d {  –—†  ‰dgk(  sJ ‚|j                  j                  «        d d d «      ƒd {  –—†  ‰d   dk7  sJ ‚|j                  d «       ‰d   dk7  rt        j                  d«       ‰d   dk7  rŒg Šd ‰d<   t        j                  «       4 ƒd {  –—† }|j	                  | |d«       t        «       ƒ d {  –—†  |j                  j                  «        t        j                  d¬	«      5  t        d
«      D ]  }t        j                  «       ƒ d {  –—†  Œ  	 d d d «       ‰dgk(  sJ ‚|j                  d «       d d d «      ƒd {  –—†  t        j                  «       5 }|j                  «         | |d«      ƒ d {  –—†  d d d «       j                  sJ ‚y 7 �ŒÂ7 �Œ 7 �Œq# 1 ƒd {  –—†7  sw Y   �Œ‚xY w7 �Œ%7 �Œ7 Œª# 1 sw Y   Œ¦xY w7 Œ„# 1 ƒd {  –—†7  sw Y   Œ”xY w7 Œe# 1 sw Y   ŒdxY w­w)Nc                ó:   •— d‰d<   | j                  «        d‰d<   y )NÚblockingr   Úfinished)Úget)ÚqÚregisters    €r6   r<   z1test_run_in_worker_thread_cancellation.<locals>.fZ  s   ø€ à ˆ�‰Ø	�‰ŒØ ˆ�ŠrJ   c              “  ó®   •K  — ‰j                  d«       	 t        ‰| |¬«      ƒ d {  –—† ‰j                  d«       S 7 Œ# ‰j                  d«       w xY w­w)Nr&   ©Úabandon_on_cancelÚexit)r+   r   )rì   rð   r<   r5   s     €€r6   Úchildz5test_run_in_worker_thread_cancellation.<locals>.child`  sG   øè ø€ Ø�‰�gÔð	"Ü+¨A¨qÐDUÔV×Và�M‰M˜&Õ!ð Wùà�M‰M˜&Õ!üs%   ƒA–? §=¨? «A½? ¿AÁATr&   r   rê   r;   F©Úshieldé
   )rì   ústdlib_queue.Queue[None]r>   r?   )rì   rö   rð   Úboolr>   r?   )Ústdlib_queueÚQueuer   Úopen_nurseryÚ
start_soonr   Úcancel_scopeÚcancelÚputÚtimer   r   ÚrangerQ   Úcancelled_caught)rò   rì   Únurseryrˆ   Úscoper<   r5   rí   s        @@@r6   Ú&test_run_in_worker_thread_cancellationr  W  s9  úè ø€ Ø"& €Hõ!ö"ð €FÜ".×"4Ñ"4Ó"6€AÜ×!Ñ!Ó#÷ &ð & wØ×Ñ˜5 ! TÔ*ô %Ó&×&Ð&Ø˜'˜Ò"Ð"Ð"à×Ñ×#Ñ#Ô%÷&÷ &ð �A‰;˜*Ò$Ð$Ð$à‡E�Eˆ$„KØ
�1‰+˜Ò
#Ü�
‰
�4Ôð �1‰+˜Ó
#ð €FØ€HˆQ�KÜ×!Ñ!Ó#÷ 	ð 	 wØ×Ñ˜5 ! UÔ+Ü$Ó&×&Ð&Ø×Ñ×#Ñ#Ô%Ü×Ñ dÔ+ñ 	)Ü˜2“Yò )�Ü×&Ñ&Ó(×(Ñ(ñ)÷	)ð ˜'˜Ò"Ð"Ð"Ø	�‰ˆdŒ÷	÷ 	ô 
×	Ñ	Ó	ð  Ø�‰ŒÙ�A�u‹o×Ð÷ð ×!Ò!Ð!Ñ!ðI&ùð
 	'ùð&ù÷ &÷ &ò &úð&	ùà&ùð )ø÷	)ð 	)úð		ø÷ 	÷ 	ñ 	úð  	ø÷ð üs  …?IÁHÁIÁ!HÁ)H	Á*&HÂIÂHÂAIÃ!IÄ H%ÄIÄ!H;Ä%H(Ä&4H;Å&H-Æ H+
ÆH-Æ!H;Æ)IÆ4H9Æ5IÇIÇ*IÇ+IÇ/IÈ	HÈIÈH"ÈHÈH"È	IÈ(H;È+H-È-H6	È2H;È9IÈ;IÉIÉIÉ	IÉIÉIÉIc                óÌ  ‡‡‡— |j                  t        j                  dd«       t        j                  «       Št        j                  «       Šdˆˆfd„Šdˆfd„}t        j
                  |«       ‰j                  d «       ‰j                  «       }|j                  «       r&t        j                  d«       |j                  «       rŒ&| j                  «       \  }}d|vsJ ‚d|vsJ ‚y )NÚIDLE_TIMEOUTr;   c                 ól   •— ‰ j                  «        ‰j                  t        j                  «       «       y rV   )rë   rþ   r,   r-   )Úq1Úq2s   €€r6   r�   z6test_run_in_worker_thread_abandoned.<locals>.thread_fnœ  s!   ø€ Ø
�‰ŒØ
�‰Œy×'Ñ'Ó)Õ*rJ   c               “  ó$  •K  — dˆfd„} t        j                  «       4 ƒd {  –—† }|j                  | «       t        «       ƒ d {  –—†  |j                  j                  «        d d d «      ƒd {  –—†  y 7 ŒR7 Œ17 Œ	# 1 ƒd {  –—†7  sw Y   y xY w­w)Nc               “  ó<   •K  — t        ‰ d¬«      ƒ d {  –—†  y 7 Œ­w)NTrï   r¬   )r�   s   €r6   rò   z@test_run_in_worker_thread_abandoned.<locals>.main.<locals>.child¡  s   øè ø€ Ü$ YÀ$ÔG×GÒGús   ƒ”•r=   )r   rú   rû   r   rü   rý   )rò   r  r�   s     €r6   r“   z1test_run_in_worker_thread_abandoned.<locals>.main   s|   øè ø€ õ	Hô ×%Ñ%Ó'÷ 	*ð 	*¨7Ø×Ñ˜uÔ%Ü(Ó*×*Ð*Ø× Ñ ×'Ñ'Ô)÷	*÷ 	*ñ 	*øà*øð	*ø÷ 	*÷ 	*ñ 	*üsV   ƒB¢A5£B¦A;ÁA7ÁA;Á$BÁ/A9Á0BÁ7A;Á9BÁ;BÂBÂBÂ	BzException in threadr=   )Úsetattrr   Ú_thread_cacherø   rù   r€   rþ   rë   rA   rÿ   r   Ú
readouterr)	ÚcapfdÚmonkeypatchr“   r}   ÚoutÚerrr  r	  r�   s	         @@@r6   Ú#test_run_in_worker_thread_abandonedr  “  sº   ú€ ð ×Ñœ×+Ñ+¨^¸TÔBä#/×#5Ñ#5Ó#7€BÜ/;×/AÑ/AÓ/C€Bö+õ*ô 
‡I�Iˆd„Oà‡F�Fˆ4„Lð �V‰V‹X€FØ
�/‰/Ô
Ü�
‰
�4Ôð �/‰/Õ
ð ×ÑÓ!�H€CˆØ ¨Ñ+Ð+Ð+Ø ¨Ñ+Ð+Ñ+rJ   ÚMAX)rP   é   rõ   rý   FTÚuse_default_limiterc              ƒ  ó4  ‡‡
‡‡‡‡‡K  — d| z  }t        j                  «       Š
t        j                  «       Š|r t        «       }|j                  }| |_        d Šnt        | «      }| }|Š	  G d„ d«      Šd‰_        d‰_        d‰_        d‰_	        t        j                  «       Šdˆ
ˆˆˆfd„Šdˆˆˆfd„}t        j                  «       4 ƒd {  –—† }t        d«       g }t        |«      D ]B  }	|j                  t        «       «       |j!                  ||d   «       t#        «       ƒ d {  –—†  ŒD ‰r8t        d	«       |d   j%                  «       ƒ d {  –—†  t#        «       ƒ d {  –—†  ‰j                  | k7  s|j'                  «       j(                  | k7  rAt+        d
«      ƒ d {  –—†  ‰j                  | k7  rŒ#|j'                  «       j(                  | k7  rŒA‰
j-                  «        d d d «      ƒd {  –—†  ‰j                  | k(  sJ ‚‰r2|j.                  dkD  r#t+        d
«      ƒ d {  –—†  |j.                  dkD  rŒ#‰j                  |k(  sJ ‚‰j                  dk(  sJ ‚	 ||_        y 7 �Œ™7 �ŒA7 �Œ7 �Œ7 ŒÎ7 Œ‚# 1 ƒd {  –—†7  sw Y   Œ’xY w7 Œd# ||_        w xY w­w)Nr
   c                  ó6   — e Zd ZU ded<   ded<   ded<   ded<   y)ú0test_run_in_worker_thread_limiter.<locals>.staterY   ÚranÚ
high_waterrt   ÚparkedN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r_   rJ   r6   Ústater  Ý  s   … Ø‹HØ‹OØ‹LØŒKrJ   r!  r   c                óø  •— t        d«       t        | j                  ‰¬«       ‰5  ‰xj                  dz  c_        ‰xj                  dz  c_        t        ‰j                  ‰j                  «      ‰_        ‰xj                  dz  c_        d d d «       ‰j                  «        ‰5  ‰xj                  dz  c_        ‰xj                  dz  c_        d d d «       t        d«       y # 1 sw Y   ŒZxY w# 1 sw Y   Œ!xY w)Nzthread_fn startr'   rá   zthread_fn exiting)	r/   r   rý   r  rt   Úmaxr  r  r’   )rü   ÚgateÚlockr!  r[   s    €€€€r6   r�   z4test_run_in_worker_thread_limiter.<locals>.thread_fnê  sÂ   ø€ ÜÐ#Ô$Ü  ×!4Ñ!4ÀÕGØñ "Ø—	’	˜Q‘•	Ø—’ Ñ"•Ü#& u×'7Ñ'7¸¿¹Ó#G�Ô ð —’ Ñ!•÷"ð �I‰IŒKØñ #Ø—’ Ñ!•Ø—’ Ñ"•÷#ô Ð%Õ&÷"ð "ú÷#ð #ús   ¦A%C$Â%+C0Ã$C-Ã0C9c              “  óÞ   •K  — t        j                  «       5 }t        ‰|‰‰¬«      ƒ d {  –—†  d d d «       t        dj                  «       | j                  «        y 7 Œ3# 1 sw Y   Œ2xY w­w)N)rð   Úlimiterzrun_thread finished, cancelled:)r   r   r   r/   r  r   )Úeventrü   rý   Úlimiter_argr�   s     €€€r6   Ú
run_threadz5test_run_in_worker_thread_limiter.<locals>.run_threadú  si   øè ø€ Ü×"Ñ"Ó$ð ¨Ü(ØØ Ø&,Ø'ô	÷ ð ÷ô Ð3°\×5RÑ5RÔSØ�I‰I�Kðø÷ð üs+   ƒA-˜A!«A¬A!°/A-ÁA!Á!A*Á&A-Úspawningéÿÿÿÿz'waiting for first cancellation to clearr;   )rü   r   r>   r?   )r(  r   r>   r?   )r,   r   ÚLockr   Útotal_tokensr   r  r  rt   r  r   rZ   rú   r/   r   r+   rû   r   r’   Ú
statisticsÚtasks_waitingr   r   Úborrowed_tokens)r  rý   r  ÚCOUNTÚcÚorig_total_tokensr*  r  Úeventsrˆ   r$  r)  r%  r!  r�   r[   s    `        @@@@@@r6   Ú!test_run_in_worker_thread_limiterr6  ¹  s\  þè ø€ ð �‰G€EÜ�?‰?Ó€DÜ�>‰>Ó€DÙÜ*Ó,ˆØŸN™NÐØˆŒØ‰ä˜CÓ ˆØÐØˆð[+÷	ñ 	ð ˆŒ	ØˆÔØˆŒØˆŒä×(Ñ(Ó*ˆ÷	'ð 	'÷ 		ô ×%Ñ%Ó'÷ 	ð 	¨7Ü�*ÔØˆFÜ˜5“\ò /�Ø—‘œe›gÔ&Ø×"Ñ" :¨v°b©zÔ:Ü,Ó.×.Ñ.ð/ñ ÜÐ?Ô@Ø˜Q‘i—n‘nÓ&×&Ð&Ü,Ó.×.Ð.ð —‘ Ò# q§|¡|£~×'CÑ'CÀsÒ'Jä˜D“k×!Ð!ð —‘ Ó# q§|¡|£~×'CÑ'CÀsÓ'Jð �H‰HŒJ÷5	÷ 	ð8 ×Ñ 3Ò&Ð&Ð&áð ×#Ñ# aÒ'Ü˜D“k×!Ð!ð ×#Ñ# aÓ'ð �y‰y˜EÒ!Ð!Ð!Ø�}‰} Ò!Ð!Ñ!à*ˆ�ðQ	ùð /ùð 'ùØ.ùð "øð1	ø÷ 	÷ 	ñ 	úðF "ùð
 +ˆ�üsÎ   ‰AJÁ)A#J ÃI%ÃJ ÃAI5Ä'I(Ä()I5ÅI+ÅI5Å#I.Å$>I5Æ"I1Æ#I5Æ7I5ÇI5Ç%J Ç0I3Ç14J È%J
È&J È:"J ÉJÉ%J É(I5É+I5É.I5É1I5É3J É5JÉ;I>É<JÊJ Ê	JÊJc               ƒ  óv   ‡K  — g Š G ˆfd„d«      } t        d„  | «       ¬«      ƒ d {  –—†  ‰ddgk(  sJ ‚y 7 Œ­w)Nc                  ó&   •— e Zd Zdˆ fd„Zdˆ fd„Zy)ú?test_run_in_worker_thread_custom_limiter.<locals>.CustomLimiterc              “  ó>   •K  — ‰j                  d«       || _        y ­w©NÚacquire©r+   Ú	_borrower©ÚselfÚborrowerr5   s     €r6   Úacquire_on_behalf_ofzTtest_run_in_worker_thread_custom_limiter.<locals>.CustomLimiter.acquire_on_behalf_of6  s   øè ø€ Ø�M‰M˜)Ô$Ø%ˆD�Nùs   ƒc                óJ   •— ‰j                  d«       || j                  k(  sJ ‚y )NÚreleaser=  r?  s     €r6   Úrelease_on_behalf_ofzTtest_run_in_worker_thread_custom_limiter.<locals>.CustomLimiter.release_on_behalf_of:  s!   ø€ Ø�M‰M˜)Ô$Ø˜tŸ~™~Ò-Ð-Ñ-rJ   N©rA  r!   r>   r?   ©r  r  r  rB  rE  rH   s   €r6   ÚCustomLimiterr9  5  s   ø„ õ	&ö	.rJ   rH  c                  ó   — y rV   r_   r_   rJ   r6   r`   z:test_run_in_worker_thread_custom_limiter.<locals>.<lambda>@  ra   rJ   ©r'  r<  rD  r¬   )rH  r5   s    @r6   Ú(test_run_in_worker_thread_custom_limiterrK  0  sE   øè ø€ ð €F÷.ó .ô ™\±=³?Ô
C×CÐCØ�i Ð+Ò+Ð+Ñ+ð Dús   ƒ%9¨7©9c               ƒ  ó  ‡‡K  — g Š G ˆfd„d«      }  | «       }t        j                  t        d¬«      5 }t        d„ |¬«      ƒ d {  –—†  d d d «       j                  j
                  �J ‚‰ddgk(  sJ ‚g Ši Št        j                  t        d¬«      5 }t        ˆfd	„|¬«      ƒ d {  –—†  d d d «       t        |j                  j
                  t        «      sJ ‚‰ddgk(  sJ ‚y 7 Œ�# 1 sw Y   ŒœxY w7 ŒJ# 1 sw Y   ŒIxY w­w)
Nc                  ó&   •— e Zd Zdˆ fd„Zdˆ fd„Zy)úCtest_run_in_worker_thread_limiter_error.<locals>.BadCapacityLimiterc              “  ó0   •K  — ‰j                  d«       y ­wr;  )r+   r?  s     €r6   rB  zXtest_run_in_worker_thread_limiter_error.<locals>.BadCapacityLimiter.acquire_on_behalf_ofH  s   øè ø€ Ø�M‰M˜)Õ$ùs   ƒc                ó<   •— ‰j                  d«       t        d«      ‚)NrD  zrelease on behalf)r+   rM   r?  s     €r6   rE  zXtest_run_in_worker_thread_limiter_error.<locals>.BadCapacityLimiter.release_on_behalf_ofK  s   ø€ Ø�M‰M˜)Ô$ÜÐ0Ó1Ð1rJ   NrF  )rA  r!   r>   r   rG  rH   s   €r6   ÚBadCapacityLimiterrN  G  s   ø„ õ	%ö	2rJ   rQ  z^release on behalf$rä   c                  ó   — y rV   r_   r_   rJ   r6   r`   z9test_run_in_worker_thread_limiter_error.<locals>.<lambda>R  ra   rJ   rJ  r<  rD  c                 ó   •— ‰ d   S )Nr1   r_   )Úds   €r6   r`   z9test_run_in_worker_thread_limiter_error.<locals>.<lambda>[  s   ø€ ¨¨3©€ rJ   )rf   rg   rM   r   rÄ   Ú__context__Ú
isinstancerT   )rQ  Úbsrå   rT  r5   s      @@r6   Ú'test_run_in_worker_thread_limiter_errorrX  D  sù   ùè ø€ Ø€F÷2ó 2ñ 
Ó	€Bä	�‰”zÐ)?Ô	@ð ;ÀGÜ ¡°rÔ:×:Ð:÷;à�=‰=×$Ñ$Ð,Ð,Ð,Ø�i Ð+Ò+Ð+Ð+Ø€Fð €AÜ	�‰”zÐ)?Ô	@ð =ÀGÜ £¸Ô<×<Ð<÷=ä�g—m‘m×/Ñ/´Ô:Ð:Ð:Ø�i Ð+Ò+Ð+Ñ+ð 	;ø÷;ð ;úð 	=ø÷=ð =üsY   „1DµC'ÁC%ÁC'ÁADÂC5Â(C3Â)C5Â-8DÃ%C'Ã'C0Ã,DÃ3C5Ã5C>Ã:Dc              ƒ  ó|  K  — dd„}| j                  t        j                  j                  d|«       t	        «       }|j
                  dk(  sJ ‚t        j                  t        «      5 }t        d„ «      ƒ d {  –—†  d d d «       dt        j                  «      v sJ ‚|j
                  dk(  sJ ‚y 7 Œ7# 1 sw Y   Œ6xY w­w)Nc                ó   — t        d«      ‚)Nz!the engines canna take it captain)rh   )r@  r‘   s     r6   Ú	bad_startz:test_run_in_worker_thread_fail_to_spawn.<locals>.bad_startd  s   € ÜÐ>Ó?Ð?rJ   Ústart_thread_soonr   c                  ó   — y rV   r_   r_   rJ   r6   r`   z9test_run_in_worker_thread_fail_to_spawn.<locals>.<lambda>n  ra   rJ   Úengines)r@  Úobjectr‘   r_  r>   r   )r  r   r  ÚThreadCacher   r1  rf   rg   rh   r   rª   rÄ   )r  r[  r'  rå   s       r6   Ú'test_run_in_worker_thread_fail_to_spawnra  `  s¬   è ø€ ó@ð ×Ñœ×+Ñ+×7Ñ7Ð9LÈiÔXä,Ó.€GØ×"Ñ" aÒ'Ð'Ð'ô 
�‰”|Ó	$ð /¨Ü ¡Ó.×.Ð.÷/àœ˜GŸM™MÓ*Ñ*Ð*Ð*à×"Ñ" aÒ'Ð'Ñ'ð 	/ø÷/ð /üs0   ‚A$B<Á&B0Á6B.Á7B0Á;3B<Â.B0Â0B9Â5B<c               ƒ  ót   K  — dd„} t        j                  «       }t        | «      ƒ d {  –—† }||k(  sJ ‚y 7 Œ­w)Nc                 ó8   — t        t        j                  «      } | S rV   ©r   r   rZ   ©Úcallee_tokens    r6   r�   z5test_trio_to_thread_run_sync_token.<locals>.thread_fnw  ó   € Ü+¬E×,DÑ,DÓEˆØÐrJ   ©r>   r”   ©r   rZ   r   ©r�   Úcaller_tokenrf  s      r6   Ú"test_trio_to_thread_run_sync_tokenrl  t  ó;   è ø€ óô ×+Ñ+Ó-€LÜ+¨IÓ6×6€LØ˜<Ò'Ð'Ñ'ð 7úó   ‚'8©6ª8c               ƒ  óž   K  — dd„} t        j                  t        d¬«      5  t        | «      ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w)Nc               “  ó   K  — y ­wrV   r_   r_   rJ   r6   Úasync_fnz=test_trio_to_thread_run_sync_expected_error.<locals>.async_fn‚  rd   re   zexpected a sync functionrä   r=   )rf   rg   Ú	TypeErrorr   ©rq  s    r6   Ú+test_trio_to_thread_run_sync_expected_errorrt  €  sG   è ø€ óô 
�‰”yÐ(BÔ	Cñ +Ü  Ó*×*Ð*÷+ð +Ø*ø÷+ð +üs)   ‚ A¢A±?²A¶	A¿AÁA
ÁAÚtrio_test_contextvarzcontextvars.ContextVar[str]c               ƒ  óz  K  — t        j                  «       } t        j                  d«       dd„}t	        |«      ƒ d {  –—† \  }}|dk(  sJ ‚|| k7  sJ ‚dd„}t	        |«      ƒ d {  –—† \  }}}t        j                  «       }|dk(  sJ ‚|dk(  sJ ‚|dk(  sJ d«       ‚t        j                  «       dk(  sJ ‚y 7 Œx7 ŒR­w)	Nr“   c                 óî   — t         j                  «       } t        j                  t        j
                  «      5  t	        j                  «        d d d «       | t        j                  «       fS # 1 sw Y   ŒxY wrV   )	ru  rë   rf   rg   ÚsniffioÚAsyncLibraryNotFoundErrorÚcurrent_async_libraryr,   r-   )rÄ   s    r6   r<   z3test_trio_to_thread_run_sync_contextvars.<locals>.f’  sW   € Ü$×(Ñ(Ó*ˆÜ�]‰]œ7×<Ñ<Ó=ñ 	,Ü×)Ñ)Ô+÷	,à”y×/Ñ/Ó1Ð2Ð2÷	,ð 	,ús   ¸A+Á+A4c                 óB  — t         j                  «       } t         j                  d«       t         j                  «       }t        j                  t
        j                  «      5  t        j                  «        d d d «       | |t        j                  «       fS # 1 sw Y   Œ xY w)NÚworker)
ru  rë   r   rf   rg   rx  ry  rz  r,   r-   )Úparent_valueÚinner_values     r6   rã   z3test_trio_to_thread_run_sync_contextvars.<locals>.gœ  s}   € Ü+×/Ñ/Ó1ˆÜ× Ñ  Ô*Ü*×.Ñ.Ó0ˆÜ�]‰]œ7×<Ñ<Ó=ñ 	,Ü×)Ñ)Ô+÷	,ð ØÜ×$Ñ$Ó&ð
ð 	
÷	,ð 	,ús   Á!BÂBr|  zRThe contextvar value set on the worker would not propagate back to the main threadÚtrio)r>   ztuple[str, threading.Thread])r>   z!tuple[str, str, threading.Thread])r,   r-   ru  r   r   rë   rx  rz  )rD   r<   rÄ   rC   rã   r}  r~  Úcurrent_values           r6   Ú(test_trio_to_thread_run_sync_contextvarsr�  Ž  sÚ   è ø€ Ü×*Ñ*Ó,€KÜ×Ñ˜VÔ$ó3ô !3°1Ó 5×5Ñ€Eˆ<Ø�FŠ?Ðˆ?Ø˜;Ò&Ð&Ð&ó

ô 5GÀqÓ4I×.IÑ+€L�+˜|Ü(×,Ñ,Ó.€MØ˜6Ò!Ð!Ð!Ø˜(Ò"Ð"Ð"Ø˜FÒ"ð ð	óÐ"ô ×(Ñ(Ó*¨fÒ4Ð4Ñ4ð1 6øð  /Jús"   ‚<B;¾B7¿'B;Á&B9Á'AB;Â9B;c               ƒ  ó  ‡K  — dd„} t        | «      ƒ d {  –—† }t        |t        «      sJ ‚dd„Šdˆfd„}t        j                  t
        d¬«      5  t        |«      ƒ d {  –—†  d d d «       y 7 ŒX7 Œ# 1 sw Y   y xY w­w)Nc                 ó8   — t        t        j                  «      } | S rV   )r   r   Úcurrent_time)Ú	trio_times    r6   Úthread_fn_1z3test_trio_from_thread_run_sync.<locals>.thread_fn_1¶  s   € Ü(¬×);Ñ);Ó<ˆ	ØÐrJ   c               “  ó   K  — y ­wrV   r_   r_   rJ   r6   rq  z0test_trio_from_thread_run_sync.<locals>.async_fn¾  rd   re   c                 ó   •— t        ‰ «       y rV   )r   rs  s   €r6   Úthread_fn_2z3test_trio_from_thread_run_sync.<locals>.thread_fn_2Á  s   ø€ Ü˜XÕ&rJ   zexpected a synchronous functionrä   )r>   Úfloatr=   )r   rV  rŠ  rf   rg   rr  )r†  r…  r‰  rq  s      @r6   Útest_trio_from_thread_run_syncr‹  ³  sy   øè ø€ óô )¨Ó5×5€IÜ�i¤Ô'Ð'Ð'óõ'ô 
�‰”yÐ(IÔ	Jñ .Ü  Ó-×-Ð-÷.ð .ð 6øð 	.ø÷.ð .üs9   ƒA?–A/—;A?ÁA3Á!A1Á"A3Á&
A?Á1A3Á3A<Á8A?c               ƒ  ó  ‡‡K  — g Šdˆfd„Šdˆˆfd„} t        | «      ƒ d {  –—†  ‰ddgk(  sJ ‚dd„}t        j                  t        d¬«      5  t        t        |«      ƒ d {  –—†  d d d «       y 7 ŒN7 Œ# 1 sw Y   y xY w­w)	Nc               “  óX   •K  — t        j                  «        ‰ j                  d«       y ­w)Núback in trio)r   r„  r+   rH   s   €r6   Úback_in_trio_fnz2test_trio_from_thread_run.<locals>.back_in_trio_fnÍ  s   øè ø€ Ü×ÑÔØ�‰�nÕ%ùs   ƒ'*c                 ó>   •— ‰j                  d«       t        ‰ «       y )Nú	in thread)r+   r   )r�  r5   s   €€r6   r�   z,test_trio_from_thread_run.<locals>.thread_fnÑ  s   ø€ Ø�‰�kÔ"Ü˜Õ(rJ   r‘  rŽ  c                  ó   — y rV   r_   r_   rJ   r6   Úsync_fnz*test_trio_from_thread_run.<locals>.sync_fnÙ  s   € ØrJ   zappears to be synchronousrä   r=   )r   rf   rg   rr  r   )r�   r“  r�  r5   s     @@r6   Útest_trio_from_thread_runr”  È  s†   ùè ø€ ð €Fõ&ö)ô ˜YÓ
'×'Ð'Ø�k >Ð2Ò2Ð2Ð2óô 
�‰”yÐ(CÔ	Dñ ;Ü ¤°'Ó:×:Ð:÷;ð ;ð (øð 	;ø÷;ð ;üs9   „B¢A1£,BÁA5Á#A3Á$A5Á(
BÁ3A5Á5A>Á:Bc               ƒ  ót   K  — dd„} t        j                  «       }t        | «      ƒ d {  –—† }||k(  sJ ‚y 7 Œ­w)Nc                 ó8   — t        t        j                  «      } | S rV   rd  re  s    r6   r�   z.test_trio_from_thread_token.<locals>.thread_fnã  rg  rJ   rh  ri  rj  s      r6   Útest_trio_from_thread_tokenr—  à  rm  rn  c               ƒ  óv   K  — dd„} t        j                  «       }t        | |«      ƒ d {  –—† }||k(  sJ ‚y 7 Œ­w)Nc                ó<   — t        t        j                  | ¬«      }|S )Nr'   rd  )r[   rf  s     r6   r�   z4test_trio_from_thread_token_kwarg.<locals>.thread_fnï  s   € Ü+¬E×,DÑ,DÐQVÔWˆØÐrJ   )r[   r”   r>   r”   ri  rj  s      r6   Ú!test_trio_from_thread_token_kwargrš  ì  s>   è ø€ óô ×+Ñ+Ó-€LÜ+¨I°|ÓD×D€LØ˜<Ò'Ð'Ñ'ð Eús   ‚(9ª7«9c               ƒ  óš   K  — t        j                  t        «      5  t        t        j
                  «       d d d «       y # 1 sw Y   y xY w­wrV   ©rf   rg   rh   r   r   r„  r_   rJ   r6   Útest_from_thread_no_tokenr�  ø  s6   è ø€ ô 
�‰”|Ó	$ñ 1ÜœU×/Ñ/Ô0÷1÷ 1ñ 1üs   ‚Aœ?¶	A¿AÁAc               ƒ  ó(  K  — t         j                  d«       dd„} t        | «      ƒ d {  –—† \  }}}}}t         j                  «       }||cxk(  rdk(  sJ ‚ J ‚||cxk(  r|cxk(  rdk(  sJ ‚ J ‚t	        j
                  «       dk(  sJ ‚|dk(  sJ ‚y 7 Œe­w)Nr“   c                 ó  — t         j                  «       } t         j                  d«       t         j                  «       }t        j                  t
        j                  «      5  t        j                  «        d d d «       dd„}t        |«      \  }}t         j                  «       }t        j                  t
        j                  «      5  t        j                  «        d d d «       | ||||fS # 1 sw Y   ŒvxY w# 1 sw Y   ŒxY w)Nr|  c                 ó¶   — t         j                  «       } t         j                  d«       t         j                  «       }t        j                  «       dk(  sJ ‚| |fS ©NÚback_in_mainr  ©ru  rë   r   rx  rz  ©Úback_parent_valueÚback_current_values     r6   r¢  zStest_trio_from_thread_run_sync_contextvars.<locals>.thread_fn.<locals>.back_in_main
  sQ   € Ü 4× 8Ñ 8Ó :ÐÜ ×$Ñ$ ^Ô4Ü!5×!9Ñ!9Ó!;ÐÜ×0Ñ0Ó2°fÒ<Ð<Ð<Ø$Ð&8Ð8Ð8rJ   ©r>   ztuple[str, str])	ru  rë   r   rf   rg   rx  ry  rz  r   )Úthread_parent_valueÚthread_current_valuer¢  r¥  r¦  Úthread_after_values         r6   r�   z=test_trio_from_thread_run_sync_contextvars.<locals>.thread_fn  s×   € Ü2×6Ñ6Ó8ÐÜ× Ñ  Ô*Ü3×7Ñ7Ó9ÐÜ�]‰]œ7×<Ñ<Ó=ñ 	,Ü×)Ñ)Ô+÷	,ó	9ô 1EÀ\Ó0RÑ-ÐÐ-Ü1×5Ñ5Ó7ÐÜ�]‰]œ7×<Ñ<Ó=ñ 	,Ü×)Ñ)Ô+÷	,ð  Ø ØØØð
ð 	
÷	,ð 	,ú÷	,ð 	,úó   Á!C+ÃC7Ã+C4Ã7D r|  r  r¢  ©r>   ztuple[str, str, str, str, str]©ru  r   r   rë   rx  rz  ©r�   r¨  r©  rª  r¥  r¦  r€  s          r6   Ú*test_trio_from_thread_run_sync_contextvarsr¯     s­   è ø€ Ü×Ñ˜VÔ$ó
ô@ ! Ó+×+ñØØØØØä(×,Ñ,Ó.€MØÐ/Ô9°6Ò9Ð9Ñ9Ð9Ð9ØÐ#4ÔVÐ8JÔVÈhÒVÐVÑVÐVÐVÜ×(Ñ(Ó*¨fÒ4Ð4Ð4Ø Ò/Ð/Ñ/ð 	,úó   ‚(BªB«A&Bc               ƒ  ó(  K  — t         j                  d«       dd„} t        | «      ƒ d {  –—† \  }}}}}t         j                  «       }||cxk(  rdk(  sJ ‚ J ‚||cxk(  r|cxk(  rdk(  sJ ‚ J ‚|dk(  sJ ‚t	        j
                  «       dk(  sJ ‚y 7 Œe­w)Nr“   c                 ó  — t         j                  «       } t         j                  d«       t         j                  «       }t        j                  t
        j                  «      5  t        j                  «        d d d «       dd„}t        |«      \  }}t         j                  «       }t        j                  t
        j                  «      5  t        j                  «        d d d «       | ||||fS # 1 sw Y   ŒvxY w# 1 sw Y   ŒxY w)Nr|  c               “  ó¾   K  — t         j                  «       } t         j                  d«       t         j                  «       }t        j                  «       dk(  sJ ‚| |fS ­wr¡  r£  r¤  s     r6   Úasync_back_in_mainzTtest_trio_from_thread_run_contextvars.<locals>.thread_fn.<locals>.async_back_in_main5  sU   è ø€ Ü 4× 8Ñ 8Ó :ÐÜ ×$Ñ$ ^Ô4Ü!5×!9Ñ!9Ó!;ÐÜ×0Ñ0Ó2°fÒ<Ð<Ð<Ø$Ð&8Ð8Ð8ùs   ‚AAr§  )	ru  rë   r   rf   rg   rx  ry  rz  r   )r¨  r©  r´  r¥  r¦  rª  s         r6   r�   z8test_trio_from_thread_run_contextvars.<locals>.thread_fn.  sØ   € Ü2×6Ñ6Ó8ÐÜ× Ñ  Ô*Ü3×7Ñ7Ó9ÐÜ�]‰]œ7×<Ñ<Ó=ñ 	,Ü×)Ñ)Ô+÷	,ó	9ô 1@Ð@RÓ0SÑ-ÐÐ-Ü1×5Ñ5Ó7ÐÜ�]‰]œ7×<Ñ<Ó=ñ 	,Ü×)Ñ)Ô+÷	,ð  Ø ØØØð
ð 	
÷	,ð 	,ú÷	,ð 	,úr«  r|  r¢  r  r¬  r­  r®  s          r6   Ú%test_trio_from_thread_run_contextvarsrµ  +  s­   è ø€ Ü×Ñ˜VÔ$ó
ô@ ! Ó+×+ñØØØØØä(×,Ñ,Ó.€MØÐ/Ô9°6Ò9Ð9Ñ9Ð9Ð9ØÐ#4ÔVÐ8JÔVÈhÒVÐVÑVÐVÐVØ Ò/Ð/Ð/Ü×(Ñ(Ó*¨fÒ4Ð4Ñ4ð 	,úr°  c                 ó–   — t        j                  t        «      5  t        t        j
                  d¬«       d d d «       y # 1 sw Y   y xY w)NzNot TrioTokentyper'   rœ  r_   rJ   r6   Ú3test_run_fn_as_system_task_caught_badly_typed_tokenr·  V  s7   € Ü	�‰”|Ó	$ñ 
ÜÜ×ÑØ*õ	
÷
÷ 
ñ 
ús	   š?¿Ac               ƒ  ó²   K  — dd„} t        j                  «       }t        j                  t        «      5  t        | |¬«       d d d «       y # 1 sw Y   y xY w­w)Nc                 ó   — t        «       ‚rV   )ÚAssertionErrorr_   rJ   r6   Ú
not_calledz7test_from_thread_inside_trio_thread.<locals>.not_called_  s   € ÜÓÐrJ   r'   r=   )r   rZ   rf   rg   rh   r   )r»  r(   s     r6   Ú#test_from_thread_inside_trio_threadr¼  ^  sI   è ø€ óô ×)Ñ)Ó+€JÜ	�‰”|Ó	$ñ @Ü˜Z°JÕ?÷@÷ @ñ @üs   ‚2A´AÁ	AÁAÁAc                 ó–   ‡‡‡— g Šg Šdˆfd„Šdˆˆfd„} t        j                  | d«       t        j                  | d«       ‰ddgk(  sJ ‚y )	Nc               óh  •K  — 	 d ­–— t        j                  d¬«      5  	 t        t        t        t
        d| ¬«      «      ƒ d {  –—†  ‰j                  d«       d d d «       y 7 Œ# t         j                  $ r ‰j                  d«       Y Œ1w xY w# 1 sw Y   y xY w# t        j                  d¬«      5  	 t        t        t        t
        d| ¬«      «      ƒ d {  –—†7   ‰j                  d«       n*# t         j                  $ r ‰j                  d«       Y nw xY wd d d «       w # 1 sw Y   w xY wxY w­w)NTró   r   r'   Úcleanrê   )r   r   r   r   r   r   r+   ÚRunFinishedError)r[   r5   s    €r6   Úagenz2test_from_thread_run_during_shutdown.<locals>.agenk  s	  øè ø€ ð	+Üä×"Ñ"¨$Ô/ñ +ð+Ü,Ü¤´¸ÀeÔLó÷ ð ð —M‘M 'Ô*÷+ð +ðùô ×-Ñ-ò .Ø—M‘M *Ö-ð.ú÷+ð +û”×"Ñ"¨$Ô/ñ +ð+Ü,Ü¤´¸ÀeÔLó÷ ñ ð —M‘M 'Õ*øô ×-Ñ-ò .Ø—M‘M *Ö-ð.ú÷+÷ +ñ +ÿs¯   ƒD2…B ŠD2 B¢#A&ÁA$ÁA&Á
BÁ	D2Á$A&Á&$BÂ
BÂBÂBÂBÂD2ÂD/Â3D#Â5#C0ÃC
ÃC0ÃD#Ã0$D	ÄD#ÄD	ÄD#Ä	D/Ä#D,Ä(D/Ä/D2c              “  ó¤   •K  — ‰j                   ‰| rt        j                  «       nd «      «       ‰d   j                  d «      ƒ d {  –—†  y 7 Œ­w)Nr,  )r+   r   rZ   Úasend)Úuse_system_taskrÁ  Úsaves    €€r6   r“   z2test_from_thread_run_during_shutdown.<locals>.mainy  s;   øè ø€ Ø�‰‘D±œ×1Ñ1Ô3ÈDÓQÔRØ�2‰h�n‰n˜TÓ"×"Ò"ús   ƒAAÁAÁ	ATFrê   r¿  )r[   rW   r>   zAsyncGenerator[None, None])rÄ  r÷   r>   r?   )r   r€   )r“   rÁ  r5   rÅ  s    @@@r6   Ú$test_from_thread_run_during_shutdownrÆ  g  sH   ú€ Ø€DØ€Fõ+ö#ô 
‡I�Iˆd�DÔÜ	‡I�Iˆd�EÔØ�j 'Ð*Ò*Ð*Ñ*rJ   c               ƒ  ó¬   K  — t        j                  «       } t        | t         j                  «      sJ ‚t	        j
                  | «      }|  |«       u sJ ‚y ­wrV   )r   rZ   rV  Ú	TrioTokenÚweakrefÚref)r[   Úweak_references     r6   Ú"test_trio_token_weak_referenceablerÌ  ‚  sG   è ø€ Ü×$Ñ$Ó&€EÜ�eœUŸ_™_Ô-Ð-Ð-Ü—[‘[ Ó'€NØ‘NÓ$Ñ$Ð$Ñ$ùs   ‚AAc               ƒ  ó¼   K  —  G d„ d«      } t        j                  t        «      5  t        t         | «       ¬«      ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w)Nc                  ó   — e Zd Zdd„Zy)ú4test_unsafe_abandon_on_cancel_kwarg.<locals>.BadBoolc                ó   — t         ‚rV   )ÚNotImplementedError)r@  s    r6   Ú__bool__z=test_unsafe_abandon_on_cancel_kwarg.<locals>.BadBool.__bool__�  s   € Ü%Ð%rJ   N©r>   r÷   )r  r  r  rÒ  r_   rJ   r6   ÚBadBoolrÏ  Œ  s   „ ô	&rJ   rÔ  rï   )rf   rg   rÑ  r   rY   )rÔ  s    r6   Ú#test_unsafe_abandon_on_cancel_kwargrÕ  ‰  sS   è ø€ ÷&ñ &ô 
�‰Ô*Ó	+ñ CÜ ¤¹»	ÔB×BÐB÷Cð CØBø÷Cð Cüs.   ‚$A¦AÁ AÁAÁ	AÁAÁAÁAc               ƒ  óÐ   K  — t        j                  «       } dd„}| t        t        t         j                  «      ƒ d {  –—† u sJ ‚| t        t        |«      ƒ d {  –—† u sJ ‚y 7 Œ$7 Œ
­w)Nc               “  ó2   K  — t        j                  «       S ­wrV   )r   Úcurrent_taskr_   rJ   r6   Úasync_current_taskz8test_from_thread_reuses_task.<locals>.async_current_task—  s   è ø€ Ü×!Ñ!Ó#Ð#ùs   ‚)r>   z
_core.Task)r   rØ  r   r   r   )ÚtaskrÙ  s     r6   Útest_from_thread_reuses_taskrÛ  ”  s_   è ø€ Ü×ÑÓ€Dó$ð Ô+Ô,@Ä%×BTÑBTÓU×UÑUÐUÐUØÔ+¬OÐ=OÓP×PÑPÐPÑPð VøØPús!   ‚;A&½A"¾A&ÁA$Á	A&Á$A&c               ƒ  óR   ‡K  — d Šdˆfd„} ‰t        | «      ƒ d {  –—† k7  sJ ‚y 7 Œ	­w)Nc                 óh   •— t        j                  «       Š t        t        t         j                  «      S rV   )r,   rÃ   r   r   )Útids   €r6   Úget_tid_then_reenterz6test_recursive_to_thread.<locals>.get_tid_then_reenter¡  s%   ø€ ä×!Ñ!Ó#ˆÜÔ1´9×3FÑ3FÓGÐGrJ   )r>   rY   r¬   )rß  rÞ  s    @r6   Útest_recursive_to_threadrà  ž  s/   øè ø€ Ø
€CõHð
 Ô*Ð+?Ó@×@Ò@Ð@Ñ@Ð@ús   ƒ'›%œ
'c               ƒ  ó|  ‡‡‡K  — t        j                  «       Šd	ˆˆfd„} t        j                  «       5 Št	        | «      ƒ d {  –—†  d d d «       ‰j
                  rJ ‚‰j                  «       rJ ‚t        j                  «       5 Št	        | d¬«      ƒ d {  –—†  d d d «       ‰j
                  sJ ‚t	        t        ‰j                  d¬«      «      ƒ d {  –—† rJ ‚d
d„Šd	ˆˆˆfd„}t        j                  «       5 Št	        |«      ƒ d {  –—†  d d d «       ‰j
                  rJ ‚‰j                  «       rJ ‚t        j                  «       5 Št	        |d¬«      ƒ d {  –—†  d d d «       ‰j
                  sJ ‚t	        t        ‰j                  d¬«      «      ƒ d {  –—† rJ ‚d	ˆfd„}t        j                  «       5 Št	        t        |«      ƒ d {  –—†  d d d «       ‰j
                  sJ ‚y 7 �Œ§# 1 sw Y   �Œ§xY w7 �Œe# 1 sw Y   �ŒexY w7 �Œ77 �Œ# 1 sw Y   �ŒxY w7 ŒÁ# 1 sw Y   ŒÀxY w7 Œ‘7 Œ^# 1 sw Y   Œ]xY w­w)Nc                 óÆ   •— t        ‰ j                  «       	 t        t        «       ‰j                  d«       y # t        j
                  $ r ‰j                  d«       Y y w xY w©NFT)r   rý   r÷   rþ   r   rŽ   )rü   Úqueues   €€r6   Ú
sync_checkz3test_from_thread_host_cancelled.<locals>.sync_check¬  sL   ø€ Ü˜\×0Ñ0Ô1ð	Ü ¤Ô&ð �I‰I�eÕøô �‰ò 	Ø�I‰I�dŽOð	ús   ˜9 ¹$A ÁA Trï   rá   ©Útimeoutc               “  ó   K  — y­w©NTr_   r_   rJ   r6   Úno_checkpointz6test_from_thread_host_cancelled.<locals>.no_checkpointÁ  s	   è ø€ Øùre   c                 óÄ   •— t        ‰ j                  «       	 t        ‰«      sJ ‚	 ‰j                  d«       y # t        j
                  $ r ‰j                  d«       Y y w xY wrã  )r   rý   r   rþ   r   rŽ   )rü   rê  rä  s   €€€r6   Úasync_checkz4test_from_thread_host_cancelled.<locals>.async_checkÄ  sR   ø€ Ü˜\×0Ñ0Ô1ð	Ü" =Ô1Ð1Ñ1ð �I‰I�eÕøô �‰ò 	Ø�I‰I�dŽOð	ús   ˜8 ¸$AÁAc               “  ó–   •K  — ‰ j                  «        t        d«      5  t        «       ƒ d {  –—†  d d d «       y 7 Œ# 1 sw Y   y xY w­w)Nrõ   )rý   r   r   )rü   s   €r6   Úasync_time_bombz8test_from_thread_host_cancelled.<locals>.async_time_bombÙ  sB   øè ø€ Ø×ÑÔÜ˜‹^ñ 	"Ü“/×!Ð!÷	"ð 	"Ø!ø÷	"ð 	"üs%   ƒA	Ÿ=­;®=²	A	»=½AÁA	r=   rÓ  )
rø   rù   r   r   r   r  Ú
get_nowaitr   rë   r   )rå  rì  rî  rü   rê  rä  s      @@@r6   Útest_from_thread_host_cancelledrð  ©  s  úè ø€ Ü&2×&8Ñ&8Ó&:€Eöô 
×	Ñ	Ó	ð - Ü  Ó,×,Ð,÷-ð ×,Ò,Ð,Ð,Ø×ÑÔ!Ð!Ð!ä	×	Ñ	Ó	ð E Ü  ¸tÔD×DÐD÷Eð ×(Ò(Ð(Ð(Ü'¬°·	±	À1Ô(EÓF×FÐFÐFÐFó÷ô 
×	Ñ	Ó	ð . Ü  Ó-×-Ð-÷.ð ×,Ò,Ð,Ð,Ø×ÑÔ!Ð!Ð!ä	×	Ñ	Ó	ð F Ü  ÀÔE×EÐE÷Fð ×(Ò(Ð(Ð(Ü'¬°·	±	À1Ô(EÓF×FÐFÐFÐFõ"ô
 
×	Ñ	Ó	ð C Ü ¤°/ÓB×BÐB÷Cð ×(Ò(Ð(Ñ(ðW 	-ù÷-ñ -úð 	Eù÷Eñ Eúð Gùð 	.ù÷.ñ .úð 	Fø÷Fð Fúð Gøð 	Cø÷Cð Cüsî   …0H<µG.ÁG+ÁG.Á	<H<ÂG>ÂG;ÂG>Â9H<ÃHÃ&H<Ã;HÄ
HÄHÄ<H<ÅH ÅHÅH Å!9H<ÆH,Æ H<Æ;H0ÇH.ÇH0ÇH<Ç+G.Ç.G8Ç3H<Ç;G>Ç>HÈ	H<ÈHÈHÈH<ÈH È H)È%H<È.H0È0H9È5H<c               ƒ  óî  ‡‡‡‡K  — t        j                  «       Šdˆˆfd„} dˆˆfd„Šg Št        j                  «       Št	        j
                  «       4 ƒd {  –—† }|j                  | dt	        j                  «       «       t        «       ƒ d {  –—†  ‰d   dk(  sJ ‚‰j                  d¬«      dk(  sJ ‚‰j                  «        d d d «      ƒd {  –—†  ‰d   d	k(  sJ ‚g Št        j                  «       Št	        j                  «       }t	        j
                  «       4 ƒd {  –—† }|j                  | d|«       t        «       ƒ d {  –—†  ‰d   dk(  sJ ‚‰j                  d¬«      dk(  sJ ‚|j                  «        ‰j                  «        d d d «      ƒd {  –—†  |j                  sJ ‚d
‰v sJ ‚‰d   d	k(  sJ ‚dˆˆfd„Šg Št        j                  «       Št	        j                  «       }t	        j
                  «       4 ƒd {  –—† }|j                  | d|«       t        «       ƒ d {  –—†  ‰d   dk(  sJ ‚|j                  «        ‰j                  «        d d d «      ƒd {  –—†  |j                  sJ ‚d
‰v sJ ‚‰d   d	k(  sJ ‚‰j                  d¬«      dk(  sJ ‚y 7 �ŒE7 �Œ7 �ŒÓ# 1 ƒd {  –—†7  sw Y   �ŒäxY w7 �Œ›7 �Œy7 �Œ+# 1 ƒd {  –—†7  sw Y   �Œ<xY w7 Œ×7 Œ´7 Œ|# 1 ƒd {  –—†7  sw Y   ŒŒxY w­w)Nc              “  ó.  •K  — |5  ‰j                  d«       	 t        ‰| ¬«      ƒ d {  –—† ‰j                  d«       cd d d «       S 7 Œ# t        j                  $ r ‰j                  d«       ‚ w xY w# ‰j                  d«       w xY w# 1 sw Y   y xY w­w)Nr&   rï   rñ   rý   )r+   r   r   rŽ   )rð   r  r<   r5   s     €€r6   rò   z/test_from_thread_check_cancelled.<locals>.childç  s‡   øè ø€ Øñ 	&Ø�M‰M˜'Ô"ð&Ü/°ÐEVÔW×Wð
 —‘˜fÔ%÷	&ñ 	&ð XùÜ—?‘?ò Ø—‘˜hÔ'Øðûð —‘˜fÕ%ú÷	&ð 	&üsM   ƒB†B	™A
©AªA
­B	¾
BÁA
Á
&A0Á0A3Á3BÂB	Â	BÂBc                 óÄ   •— 	 t        «        ‰j                  d«       ‰ j	                  «        t        «       S # t        j                  $ r ‰j                  d«       Y Œ@w xY w©NúNot CancelledrŽ   )r   rþ   r   rŽ   r’   ©rŠ   rì   s   €€r6   r<   z+test_from_thread_check_cancelled.<locals>.fò  sO   ø€ ð	#Ü'Ô)ð �E‰E�/Ô"Ø
�‰Œ	Ü*Ó,Ð,øô �‰ò 	Ø�E‰E�+Öð	ús   ƒ
8 ¸$AÁAFr   r&   rá   ræ  rõ  rñ   rý   r,  c                 ó²   •— ‰ j                  «        	 t        «        ‰j                  d«       y # t        j                  $ r ‰j                  d«       Y y w xY wrô  )r’   r   rþ   r   rŽ   rö  s   €€r6   r<   z+test_from_thread_check_cancelled.<locals>.f  sF   ø€ Ø
�‰Œ	ð	#Ü'Ô)ð �E‰E�/Õ"øô �‰ò 	Ø�E‰E�+Öð	ús   “
/ ¯$AÁATrŽ   )rð   r÷   r  r   r>   r?   r=   )rø   rù   r,   r   r   rú   rû   r   r   rë   r   rý   r  )rò   r  r  rŠ   r<   rì   r5   s      @@@@r6   Ú test_from_thread_check_cancelledrø  ä  sÆ  ûè ø€ Ü!-×!3Ñ!3Ó!5€Aö	&ö-ð €FÜ	�‰Ó	€BÜ×!Ñ!Ó#÷ ð  wØ×Ñ˜5 %¬×):Ñ):Ó)<Ô=Ü$Ó&×&Ð&Ø�a‰y˜GÒ#Ð#Ð#Ø�u‰u˜QˆuÓ ?Ò2Ð2Ð2Ø
�‰Œ÷÷ ð �!‰9˜ÒÐÐð €FÜ	�‰Ó	€BÜ×ÑÓ€EÜ×!Ñ!Ó#÷ ð  wØ×Ñ˜5 %¨Ô/Ü$Ó&×&Ð&Ø�a‰y˜GÒ#Ð#Ð#Ø�u‰u˜QˆuÓ ?Ò2Ð2Ð2Ø�‰ŒØ
�‰Œ÷÷ ð ×!Ò!Ð!Ð!Ø�vÑÐÐØ�"‰:˜ÒÐÐö#ð €FÜ	�‰Ó	€BÜ×ÑÓ€EÜ×!Ñ!Ó#÷ ð  wØ×Ñ˜5 $¨Ô.Ü$Ó&×&Ð&Ø�a‰y˜GÒ#Ð#Ð#Ø�‰ŒØ
�‰Œ÷÷ ð ×!Ò!Ð!Ð!Ø�vÑÐÐØ�"‰:˜ÒÐÐØ�5‰5˜ˆ5Ó˜{Ò*Ð*Ñ*ðaùà&ùðù÷ ÷ ò úðùà&ùðù÷ ÷ ò úð2øà&øðø÷ ÷ ñ üs  †AK5ÁJÁK5Á3J%ÂJÂ5J%ÃK5ÃJ"ÃAK5Ä J;Ä!K5Ä$!KÅJ>ÅAKÆK5ÆKÆA+K5ÈKÈK5È!K È'KÈ(.K ÉK5É!KÉ";K5ÊJ%Ê"K5Ê%J8Ê+J.Ê,J8Ê3	K5Ê>KËK5ËKË
KËKË	K5ËK ËK5Ë K2Ë&K)Ë'K2Ë.K5c                 ót  ‡ — t        j                  t        «      5  t        «        d d d «       t	        j
                  «       Š t        j                  t        ˆ fd„«       t        j                  t        «      5  ‰ j                  d¬«      j                  «        d d d «       y # 1 sw Y   Œ}xY w# 1 sw Y   y xY w)Nc                ó&   •— ‰j                  | «      S rV   )rþ   )rˆ   rì   s    €r6   r`   zLtest_from_thread_check_cancelled_raises_in_foreign_threads.<locals>.<lambda>6  s   ø€ À1Ç5Á5ÈÃ8€ rJ   rá   ræ  )
rf   rg   rh   r   rø   rù   r   r\  rë   Úunwrap)rì   s   @r6   Ú:test_from_thread_check_cancelled_raises_in_foreign_threadsrü  2  s‡   ø€ Ü	�‰”|Ó	$ñ &Ü#Ô%÷&ä-9×-?Ñ-?Ó-A€AÜ	×ÑÔ7Ó9KÔLÜ	�‰”|Ó	$ñ "Ø	�‰�aˆÓ×ÑÔ!÷"ð "÷	&ð &ú÷"ð "ús   ›B"Á8!B.Â"B+Â.B7c               ƒ  ó"  K  — dd„} t        d«      5  t        j                  «       4 ƒd {  –—† }t        d«      D ]  }|j	                  | «       Œ d d d «      ƒd {  –—†  d d d «       y 7 Œ>7 Œ# 1 ƒd {  –—†7  sw Y   ŒxY w# 1 sw Y   y xY w­w)Nc               “  óP   K  — 	 t        t        t        dd¬«      ƒ d {  –—†  Œ 7 Œ­w)Nr   Frï   )r   r   r   r_   rJ   r6   rò   z+test_reentry_doesnt_deadlock.<locals>.childA  s&   è ø€ ØÜ$¤_´e¸QÐRWÔX×XÐXð ØXús   ‚&ž$Ÿ&r
   é   r=   )r   r   rú   r   rû   )rò   r  rˆ   s      r6   Útest_reentry_doesnt_deadlockr   ;  sŽ   è ø€ óYô 
�qÓ	ñ *Ü×%Ñ%Ó'÷ 	*ð 	*¨7Ü˜1“Xò *�Ø×"Ñ" 5Õ)ð*÷	*÷ 	*÷*ð *ð	*øð 	*ø÷ 	*÷ 	*ñ 	*ú÷*ð *üsa   ‚B’B«A*¬B¯"A.ÁBÁA,ÁBÁ!	BÁ*BÁ,BÁ.B 	Á4A7Á5B 	Á<BÂBÂBc               ƒ  ó,  ‡K  — dŠt        «       } t        «       }t        «       }t        «       }dd„}dˆfd„}t        j                  «       4 ƒd {  –—† }|j                  || |«       |j                  |||«       t	        «       ƒ d {  –—†  |j                  |«       t	        «       ƒ d {  –—†  ‰rJ ‚t        «       dk(  sJ ‚| j                  «        |j                  «       ƒ d {  –—†  t	        «       ƒ d {  –—†  ‰rJ ‚t        «       dk(  sJ ‚|j                  «        |j                  «       ƒ d {  –—†  t	        «       ƒ d {  –—†  ‰sJ ‚t        «       dk(  sJ ‚d d d «      ƒd {  –—†  y 7 �Œ7 Œè7 ŒÇ7 ŒŽ7 Œ~7 ŒE7 Œ57 Œ# 1 ƒd {  –—†7  sw Y   y xY w­w)	NFc              “  ód   ‡ K  — dˆ fd„}t        |«      ƒ d {  –—†  |j                  «        y 7 Œ­w)Nc                 ó0   •— t        ‰ j                  «       y rV   )r   r’   )rÌ   s   €r6   r}   zCtest_wait_all_threads_completed.<locals>.wait_event.<locals>.threadT  s   ø€ Ü˜AŸF™FÕ#rJ   r=   )r   r   )rÌ   Úe_exitr}   s   `  r6   Ú
wait_eventz3test_wait_all_threads_completed.<locals>.wait_eventS  s*   øè ø€ õ	$ô ! Ó(×(Ð(Ø�
‰
�ð 	)ús   ƒ0˜.™0c               “  ó:   •K  — t        «       ƒ d {  –—†  dŠ y 7 Œ­wré  )r   )Úno_threads_lefts   €r6   Úwait_no_threads_leftz=test_wait_all_threads_completed.<locals>.wait_no_threads_leftZ  s   øè ø€ ä(Ó*×*Ð*Ø‰ð 	+ús   ƒ‘’r
   rá   r   )rÌ   r   r  r   r>   r?   r=   )r   r   rú   rû   r   r   r   r’   )Úe1Úe2Ú	e1_exitedÚ	e2_exitedr  r  r  r  s          @r6   Útest_wait_all_threads_completedr  K  sq  øè ø€ Ø€OÜ	‹€BÜ	‹€Bä“€IÜ“€Ióõô
 ×!Ñ!Ó#÷ *ð * wØ×Ñ˜: r¨9Ô5Ø×Ñ˜: r¨9Ô5Ü$Ó&×&Ð&Ø×ÑÐ/Ô0Ü$Ó&×&Ð&Ù"Ð"Ð"Ü"Ó$¨Ò)Ð)Ð)à
�‰ŒØ�n‰nÓ×ÐÜ$Ó&×&Ð&Ù"Ð"Ð"Ü"Ó$¨Ò)Ð)Ð)à
�‰ŒØ�n‰nÓ×ÐÜ$Ó&×&Ð&ÙÐˆÜ"Ó$¨Ò)Ð)Ð)÷'*÷ *ñ *ùð 	'øà&øð
 	øØ&øð
 	øØ&øð#*ø÷ *÷ *ñ *üs´   ƒAFÁE.ÁFÁ4E?ÂE1Â	"E?Â+E3Â,:E?Ã&E5Ã'E?Ã8E7Ã9:E?Ä3E9Ä4E?ÅE;ÅE?ÅFÅ(E=Å)FÅ1E?Å3E?Å5E?Å7E?Å9E?Å;E?Å=FÅ?FÆFÆFÆFc               ƒ  óR   K  — t        «       ƒ d {  –—†  t        «       dk(  sJ ‚y 7 Œ­w)Nr   )r   r   r_   rJ   r6   Ú*test_wait_all_threads_completed_no_threadsr  u  s(   è ø€ Ü
$Ó
&×&Ð&ÜÓ  AÒ%Ð%Ñ%ð 'ús   ‚'�%‘'r=   rV   )rÈ   z
int | Noner>   r×   )r  zpytest.CaptureFixture[str]r  úpytest.MonkeyPatchr>   r?   )r  rY   rý   r÷   r  r÷   r>   r?   )r  r  r>   r?   )eÚ
__future__r   Úcontextvarsrä  rø   r¢   rn   r,   rÿ   rÉ  Ú	functoolsr   Útypingr   r   r   r	   rf   rx  r¥   r   r   r   r   r   r   r   r   Ú_core._tests.test_kir   Ú_core._tests.tutilr   Ú_threadsr   r   r   r   r   r   r   Útestingr   Úcollections.abcr   r   r   Úoutcomer    Úlowlevelr!   ÚlistÚtuplerª   r@   r0   r.   rX   r"   r\   ri   r�   r–   r®   rÍ   rÙ   rÞ   ræ   r  r  ÚmarkÚparametrizer6  rK  rX  ra  rl  rt  Ú
ContextVarru  r   r�  r‹  r”  r—  rš  r�  r¯  rµ  r·  r¼  rÆ  rÌ  rÕ  rÛ  rà  rð  rø  rü  r   r  r  r_   rJ   r6   ú<module>r!     sP  ðÞ "ã Û Û 	Û 
Û Û Û Ý ÷ó ó Û ÷	÷ 	ó 	õ +Ý %÷÷ ñ õ -áßCÑCååà�%˜˜U 9×#3Ñ#3°T¸-Ñ5HÐ#HÑIÐIÑJÑK€
ÙˆCƒL€ó9Qóxó-$ó`/ó8#ô:'Eó\ 1óF@ó0ó,6"ðx#,Ø%ð#,à#ð#,ð 
ó#,ðL ‡�×Ñ˜¢
Ó+Ø‡�×Ñ˜ E¨4 =Ó1Ø‡�×ÑÐ.°¸°Ó>ðq+Ø	ðq+àðq+ð ðq+ð 
ò	q+ó ?ó 2ó ,ðq+óh,ó(,ð8(Ø#ð(à	ó(ó(	(ó+ð 5K°K×4JÑ4JØó5Ð Ð1ó ó
"5óJ.ó*;ó0	(ó	(ó1ó(0óV(5óV
ó@ó+ó6%óCóQóAó8)óvK+ó\"ð ò*ó ð*ó'*ôT&rJ   