Ë
    bQbjž  ã                  ó  — 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 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l/m0Z0 e1e2e3ejh                  e5e6   z  f      Z7 ed«      Z8d@d„Z9d@d„Z:d@d„Z;d@d„Z<d@d„Z=dAdBd„Z>d@d„Z?d@d„Z@d@d„ZAd@d„ZB	 	 	 	 	 	 dCd„ZCejˆ                  j‹                  dg d¢«      ejˆ                  j‹                  dddg«      ejˆ                  j‹                  dddg«      	 	 	 	 	 	 	 	 dDd „«       «       «       ZFd@d!„ZGd@d"„ZH	 	 	 	 dEd#„ZId@d$„ZJd@d%„ZK ej˜                  d&«      ZMd'eNd&<   d@d(„ZOd@d)„ZPd@d*„ZQd@d+„ZRd@d,„ZSd@d-„ZTd@d.„ZUd@d/„ZVd@d0„ZWd@d1„ZXd@d2„ZYd@d3„ZZd@d4„Z[d@d5„Z\d@d6„Z]d@d7„Z^	 	 	 	 	 	 	 	 	 	 dFd8„Z_ejˆ                  j‹                  d9ddg«      dGd:„«       Z`d@d;„Zad@d<„Zbed@d=„«       Zcd@d>„Zdd@d?„Zey)Hé    )ÚannotationsN©Úpartial)ÚTYPE_CHECKINGÚNoReturnÚTypeVaré   )Ú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     €€€€úK/var/www/html/venv/lib/python3.12/site-packages/trio/_tests/test_threads.pyÚthreadfnz<test_do_in_trio_thread.<locals>.check_case.<locals>.threadfnA   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   )r2   r3   Úexpectedr'   r6   Úchild_threadr4   Útrio_threads   `` `  @€r5   Ú
check_casez*test_do_in_trio_thread.<locals>.check_case9   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,   ©r4   s    r5   Úf1z"test_do_in_trio_thread.<locals>.f1S   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   rF   r*   r+   r,   Ú
ValueErrorrG   s    r5   Úf2z"test_do_in_trio_thread.<locals>.f2Z   s4   € Ü×/Ñ/Ô1Ð1Ð1Ø�‰�sœI×4Ñ4Ó6Ð7Ô8ÜÐrI   r)   c              “  ó¾   K  — t        j                  «       rJ ‚t        j                  «       ƒ d {  –—†  | j                  dt	        j
                  «       f«       y7 Œ*­w)Nr;   é   )r   rF   Ú
checkpointr*   r+   r,   rG   s    r5   Úf3z"test_do_in_trio_thread.<locals>.f3a   sL   è ø€ Ü×/Ñ/Ô1Ð1Ð1Ü×ÑÓ × Ð Ø�‰�sœI×4Ñ4Ó6Ð7Ô8Øð 	!ús   ‚.A°A±+A)r(   rO   c              “  óÈ   K  — t        j                  «       rJ ‚t        j                  «       ƒ d {  –—†  | j                  dt	        j
                  «       f«       t        ‚7 Œ/­wrK   )r   rF   rP   r*   r+   r,   ÚKeyErrorrG   s    r5   Úf4z"test_do_in_trio_thread.<locals>.f4i   sN   è ø€ Ü×/Ñ/Ô1Ð1Ð1Ü×ÑÓ × Ð Ø�‰�sœI×4Ñ4Ó6Ð7Ô8Üˆð 	!ús   ‚.A"°A ±0A"©N)
r2   zCallable[..., threading.Thread]r3   zCallable[..., T | Awaitable[T]]rA   ztuple[str, T]r'   ú_core.TrioToken | Noner=   r>   )r4   Ú
RecordTyper=   Úint)r4   rW   r=   r   )r+   r,   r   Úcurrent_trio_tokenr   rL   r   rS   )rD   ÚtokenrH   rM   rQ   rT   rC   s         @r5   Útest_do_in_trio_threadr[   6   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 rU   © r^   rI   r5   ú<lambda>z9test_do_in_trio_thread_from_trio_thread.<locals>.<lambda>t   ó   � rI   c               “  ó   K  — y ­wrU   r^   r^   rI   r5   Úfooz4test_do_in_trio_thread_from_trio_thread.<locals>.foov   ó	   è ø€ Øùó   ‚r<   )ÚpytestÚraisesÚRuntimeErrorr   r   )rb   s    r5   Ú'test_do_in_trio_thread_from_trio_threadrh   r   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   rF   r   ÚsysÚexc_info)rm   s    r5   Ú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rU   r^   )ro   s   €r5   Ú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   )r4   rZ   rq   ro   s   €€€€r5   Ú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=)r7   Úwaitingr:   zwaited, joiningÚdoner<   )	r   rY   r+   r?   r%   r.   r@   r   Újoin)rx   ÚthreadrZ   rq   ro   r4   s     @@@€r5   Ú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<rt   ru   r<   )Úsetr   Úrun)r}   r4   s    @r5   Útest_run_in_trio_thread_kir€   }   s3   ø€ ô ‹U€Fõ%ôN 
‡I�IÐ&Ô'Ø�e˜U�^Ò#Ð#Ñ#rI   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 rU   )r   ÚAbortÚ	SUCCEEDED)Ú_s    r5   r_   zMtest_await_in_trio_thread_while_main_exits.<locals>.trio_fn.<locals>.<lambda>´   s   € ´E·K±K×4IÑ4I€ rI   )r*   r~   r   Úwait_task_rescheduled)Úevr4   s   €€r5   Ú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*   )rZ   r4   rŠ   s    €€r5   Ú	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)r7   Úargsrƒ   )r   rY   r+   r?   r%   Úwait)rZ   r|   r‰   r4   rŽ   s     €€€r5   Úmainz8test_await_in_trio_thread_while_main_exits.<locals>.main¼   sY   øè ø€ Ü×(Ñ(Ó*ˆÜ×!Ñ!¨¸%¸ÔBˆØ�‰ŒØ�g‰g‹i�ˆØ˜*˜Ò%Ð%Ð%Øˆð 	ús   ƒAA$ÁA"ÁA$rƒ   rŒ   r<   )rZ   ú_core.TrioTokenr=   r>   )r=   úthreading.Thread)r   r   r   r{   )r’   r|   r‰   r4   rŽ   rŠ   s     @@@@r5   Ú*test_await_in_trio_thread_while_main_exitsr•   ­   sJ   û€ Ø€FÜ	‹€BöKö
'÷ô �Y‰Y�t‹_€FØ
‡K�K„MØ�j +Ð.Ò.Ð.Ñ.rI   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 rU   )r+   r,   Úname)r™   s    r5   r—   z test_named_thread.<locals>.innerÌ   s.   € Ü×'Ñ'Ó)×.Ñ.°$Ò6Ð6Ð6Ü×'Ñ'Ó)Ð)rI   c                ó   •— t        ‰| «      S rU   r   ©r™   r—   s    €r5   r;   ztest_named_thread.<locals>.fÐ   ó   ø€ Ü�u˜dÓ#Ð#rI   ©Ú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     €r5   Ú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     @@r5   Ú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_nprI   é   )Úsizezvalue: z, exception: )ÚctypesÚctypes.utilÚutilÚfind_libraryÚCDLLÚ	Exceptionr.   rm   ÚplatformÚgetattrÚc_void_pÚc_char_pÚc_size_tÚargtypesÚc_intÚrestypeÚcreate_string_bufferr+   Ú	get_identÚvalueÚdecodeÚUnicodeDecodeErrorre   Úfail)Úidentr³   Úlibpthread_pathÚ
libpthreadr°   Úname_bufferÚes          r5   Ú_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Ì   rm   r¹   re   Úskipr+   r,   )r™   Úos_thread_names     r5   r—   z#test_named_thread_os.<locals>.inner  si   € Ü)Ó+ˆØÐ!¤c§l¡l°gÒ&=Ü�K‰KÐ3´C·L±L°>ÐBÔCô ×'Ñ'Ó)Ð)ð " T¨#¨2 YÒ.Ð.Ð.ä×'Ñ'Ó)Ð)rI   c                ó   •— t        ‰| «      S rU   r   r›   s    €r5   r;   ztest_named_thread_os.<locals>.f  rœ   rI   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™   rA   r|   rÒ   r;   s       €r5   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§   ú?)rA   r¨   rª   rU   )r™   r©   rA   ú
str | Noner=   r>   r«   )Údefaultr£   r;   r—   s     @@r5   Ú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Ú   rm   r¹   re   rÑ   )rÚ   Úks     r5   Útest_has_pthread_setname_nprÝ   7  sA   € Ý@áÓ!€AØ€yÜ�|‰|˜wÒ&Ð&Ð&Ü�‰Ð/´·±¨~Ð>Õ?ð rI   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 rU   )r+   r,   )r0   s    r5   r;   z$test_run_in_worker_thread.<locals>.fC  s   € Ø”9×+Ñ+Ó-Ð.Ð.rI   é   c                 ó<   — t        t        j                  «       «      ‚rU   )rL   r+   r,   r^   rI   r5   Úgz$test_run_in_worker_thread.<locals>.gJ  s   € Üœ×1Ñ1Ó3Ó4Ð4rI   z1^<Thread\(Trio thread \d+, started daemon \d+\)>$©r¢   r   )r0   r!   r=   ztuple[T, threading.Thread])r=   r   )	r+   r,   r   re   rf   rL   r.   rÃ   r�   )rC   r;   r0   rB   râ   Úexcinfos         r5   Útest_run_in_worker_threadrå   @  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    €r5   r;   z1test_run_in_worker_thread_cancellation.<locals>.fY  s   ø€ à ˆ�‰Ø	�‰ŒØ ˆ�ŠrI   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;   r4   s     €€r5   Ú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
   ÚrangerP   Úcancelled_caught)rò   rë   Únurseryr‡   Úscoper;   r4   rì   s        @@@r5   Ú&test_run_in_worker_thread_cancellationr  V  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 rU   )rê   rþ   r+   r,   )Úq1Úq2s   €€r5   rŽ   z6test_run_in_worker_thread_abandoned.<locals>.thread_fn›  s!   ø€ Ø
�‰ŒØ
�‰Œy×'Ñ'Ó)Õ*rI   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   €r5   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     €r5   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ê   r@   rÿ   r   Ú
readouterr)	ÚcapfdÚmonkeypatchr’   r|   ÚoutÚerrr  r	  rŽ   s	         @@@r5   Ú#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ˆØ ¨Ñ+Ð+Ð+Ø ¨Ñ+Ð+Ñ+rI   ÚMAX)rO   é   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>.staterX   ÚranÚ
high_waterrs   ÚparkedN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r^   rI   r5   Ústater  Ü  s   … Ø‹HØ‹OØ‹LØŒKrI   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  rs   Úmaxr  r  r‘   )rü   ÚgateÚlockr!  rZ   s    €€€€r5   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     €€€r5   Ú
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  rs   r  r   rY   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Ž   rZ   s    `        @@@@@@r5   Ú!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Úborrowerr4   s     €r5   Úacquire_on_behalf_ofzTtest_run_in_worker_thread_custom_limiter.<locals>.CustomLimiter.acquire_on_behalf_of5  s   øè ø€ Ø�M‰M˜)Ô$Ø%ˆD�Nùs   ƒc                óJ   •— ‰j                  d«       || j                  k(  sJ ‚y )NÚreleaser=  r?  s     €r5   Úrelease_on_behalf_ofzTtest_run_in_worker_thread_custom_limiter.<locals>.CustomLimiter.release_on_behalf_of9  s!   ø€ Ø�M‰M˜)Ô$Ø˜tŸ~™~Ò-Ð-Ñ-rI   N©rA  r    r=   r>   ©r  r  r  rB  rE  rG   s   €r5   ÚCustomLimiterr9  4  s   ø„ õ	&ö	.rI   rH  c                  ó   — y rU   r^   r^   rI   r5   r_   z:test_run_in_worker_thread_custom_limiter.<locals>.<lambda>?  r`   rI   ©r'  r<  rD  r«   )rH  r4   s    @r5   Ú(test_run_in_worker_thread_custom_limiterrK  /  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     €r5   rB  zXtest_run_in_worker_thread_limiter_error.<locals>.BadCapacityLimiter.acquire_on_behalf_ofG  s   øè ø€ Ø�M‰M˜)Õ$ùs   ƒc                ó<   •— ‰j                  d«       t        d«      ‚)NrD  zrelease on behalf)r*   rL   r?  s     €r5   rE  zXtest_run_in_worker_thread_limiter_error.<locals>.BadCapacityLimiter.release_on_behalf_ofJ  s   ø€ Ø�M‰M˜)Ô$ÜÐ0Ó1Ð1rI   NrF  )rA  r    r=   r   rG  rG   s   €r5   ÚBadCapacityLimiterrN  F  s   ø„ õ	%ö	2rI   rQ  z^release on behalf$rã   c                  ó   — y rU   r^   r^   rI   r5   r_   z9test_run_in_worker_thread_limiter_error.<locals>.<lambda>Q  r`   rI   rJ  r<  rD  c                 ó   •— ‰ d   S )Nr0   r^   )Úds   €r5   r_   z9test_run_in_worker_thread_limiter_error.<locals>.<lambda>Z  s   ø€ ¨¨3©€ rI   )re   rf   rL   r   rÃ   Ú__context__Ú
isinstancerS   )rQ  Úbsrä   rT  r4   s      @@r5   Ú'test_run_in_worker_thread_limiter_errorrX  C  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)rg   )r@  r�   s     r5   Ú	bad_startz:test_run_in_worker_thread_fail_to_spawn.<locals>.bad_startc  s   € ÜÐ>Ó?Ð?rI   Ústart_thread_soonr   c                  ó   — y rU   r^   r^   rI   r5   r_   z9test_run_in_worker_thread_fail_to_spawn.<locals>.<lambda>m  r`   rI   Úengines)r@  Úobjectr�   r_  r=   r   )r  r   r  ÚThreadCacher   r1  re   rf   rg   r   r©   rÃ   )r  r[  r'  rä   s       r5   Ú'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 rU   ©r   r   rY   ©Úcallee_tokens    r5   rŽ   z5test_trio_to_thread_run_sync_token.<locals>.thread_fnv  ó   € Ü+¬E×,DÑ,DÓEˆØÐrI   ©r=   r“   ©r   rY   r   ©rŽ   Úcaller_tokenrf  s      r5   Ú"test_trio_to_thread_run_sync_tokenrl  s  ó;   è ø€ óô ×+Ñ+Ó-€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rU   r^   r^   rI   r5   Úasync_fnz=test_trio_to_thread_run_sync_expected_error.<locals>.async_fn�  rc   rd   zexpected a sync functionrã   r<   )re   rf   Ú	TypeErrorr   ©rq  s    r5   Ú+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rU   )	ru  rê   re   rf   ÚsniffioÚAsyncLibraryNotFoundErrorÚcurrent_async_libraryr+   r,   )rÃ   s    r5   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~   re   rf   rx  ry  rz  r+   r,   )Úparent_valueÚinner_values     r5   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  )rC   r;   rÃ   rB   râ   r}  r~  Úcurrent_values           r5   Ú(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 rU   )r   r   Úcurrent_time)Ú	trio_times    r5   Úthread_fn_1z3test_trio_from_thread_run_sync.<locals>.thread_fn_1µ  s   € Ü(¬×);Ñ);Ó<ˆ	ØÐrI   c               “  ó   K  — y ­wrU   r^   r^   rI   r5   rq  z0test_trio_from_thread_run_sync.<locals>.async_fn½  rc   rd   c                 ó   •— t        ‰ «       y rU   )r   rs  s   €r5   Úthread_fn_2z3test_trio_from_thread_run_sync.<locals>.thread_fn_2À  s   ø€ Ü˜XÕ&rI   zexpected a synchronous functionrã   )r=   Úfloatr<   )r   rV  rŠ  re   rf   rr  )r†  r…  r‰  rq  s      @r5   Ú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*   rG   s   €r5   Ú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�  r4   s   €€r5   rŽ   z,test_trio_from_thread_run.<locals>.thread_fnÐ  s   ø€ Ø�‰�kÔ"Ü˜Õ(rI   r‘  rŽ  c                  ó   — y rU   r^   r^   rI   r5   Úsync_fnz*test_trio_from_thread_run.<locals>.sync_fnØ  s   € ØrI   zappears to be synchronousrã   r<   )r   re   rf   rr  r   )rŽ   r“  r�  r4   s     @@r5   Ú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 rU   rd  re  s    r5   rŽ   z.test_trio_from_thread_token.<locals>.thread_fnâ  rg  rI   rh  ri  rj  s      r5   Ú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  )rZ   rf  s     r5   rŽ   z4test_trio_from_thread_token_kwarg.<locals>.thread_fnî  s   € Ü+¬E×,DÑ,DÐQVÔWˆØÐrI   )rZ   r“   r=   r“   ri  rj  s      r5   Ú!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rU   ©re   rf   rg   r   r   r„  r^   rI   r5   Ú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     r5   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Ð8rI   ©r=   ztuple[str, str])	ru  rê   r~   re   rf   rx  ry  rz  r   )Úthread_parent_valueÚthread_current_valuer¢  r¥  r¦  Úthread_after_values         r5   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          r5   Ú*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     r5   Úasync_back_in_mainzTtest_trio_from_thread_run_contextvars.<locals>.thread_fn.<locals>.async_back_in_main4  sU   è ø€ Ü 4× 8Ñ 8Ó :ÐÜ ×$Ñ$ ^Ô4Ü!5×!9Ñ!9Ó!;ÐÜ×0Ñ0Ó2°fÒ<Ð<Ð<Ø$Ð&8Ð8Ð8ùs   ‚AAr§  )	ru  rê   r~   re   rf   rx  ry  rz  r   )r¨  r©  r´  r¥  r¦  rª  s         r5   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          r5   Ú%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^   rI   r5   Ú3test_run_fn_as_system_task_caught_badly_typed_tokenr·  U  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        «       ‚rU   )ÚAssertionErrorr^   rI   r5   Ú
not_calledz7test_from_thread_inside_trio_thread.<locals>.not_called^  s   € ÜÓÐrI   r&   r<   )r   rY   re   rf   rg   r   )r»  r'   s     r5   Ú#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)rZ   r4   s    €r5   Úagenz2test_from_thread_run_during_shutdown.<locals>.agenj  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   rY   Úasend)Úuse_system_taskrÁ  Úsaves    €€r5   r’   z2test_from_thread_run_during_shutdown.<locals>.mainx  s;   øè ø€ Ø�‰‘D±œ×1Ñ1Ô3ÈDÓQÔRØ�2‰h�n‰n˜TÓ"×"Ò"ús   ƒAAÁAÁ	ATFré   r¿  )rZ   rV   r=   zAsyncGenerator[None, None])rÄ  r÷   r=   r>   )r   r   )r’   rÁ  r4   rÅ  s    @@@r5   Ú$test_from_thread_run_during_shutdownrÆ  f  sH   ú€ Ø€DØ€Fõ+ö#ô 
‡I�Iˆd�DÔÜ	‡I�Iˆd�EÔØ�j 'Ð*Ò*Ð*Ñ*rI   c               ƒ  ó¬   K  — t        j                  «       } t        | t         j                  «      sJ ‚t	        j
                  | «      }|  |«       u sJ ‚y ­wrU   )r   rY   rV  Ú	TrioTokenÚweakrefÚref)rZ   Úweak_references     r5   Ú"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         ‚rU   )ÚNotImplementedError)r@  s    r5   Ú__bool__z=test_unsafe_abandon_on_cancel_kwarg.<locals>.BadBool.__bool__Œ  s   € Ü%Ð%rI   N©r=   r÷   )r  r  r  rÒ  r^   rI   r5   ÚBadBoolrÏ  ‹  s   „ ô	&rI   rÔ  rï   )re   rf   rÑ  r   rX   )rÔ  s    r5   Ú#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rU   )r   Úcurrent_taskr^   rI   r5   Úasync_current_taskz8test_from_thread_reuses_task.<locals>.async_current_task–  s   è ø€ Ü×!Ñ!Ó#Ð#ùs   ‚)r=   z
_core.Task)r   rØ  r   r   r   )ÚtaskrÙ  s     r5   Ú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 rU   )r+   rÂ   r   r   )Útids   €r5   Úget_tid_then_reenterz6test_recursive_to_thread.<locals>.get_tid_then_reenter   s%   ø€ ä×!Ñ!Ó#ˆÜÔ1´9×3FÑ3FÓGÐGrI   )r=   rX   r«   )rß  rÞ  s    @r5   Ú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   €€r5   Ú
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^   rI   r5   Úno_checkpointz6test_from_thread_host_cancelled.<locals>.no_checkpointÀ  s	   è ø€ Øùrd   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   €€€r5   Ú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   €r5   Ú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      @@@r5   Ú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              ƒ  óF  K  — |5  |j                  d«       	 t        || ¬«      ƒ d {  –—† |j                  d«       cd d d «       S 7 Œ# t        j                  $ r }|j                  t	        |«      «       ‚ d }~ww xY w# |j                  d«       w xY w# 1 sw Y   y xY w­wrî   )r*   r   r   r�   r©   )rð   r  r4   r;   rË   s        r5   rò   rò   ã  s�   è ø€ ð 
ñ "Ø�‰�gÔð	"Ü+¨AÐARÔS×Sð
 �M‰M˜&Ô!÷"ñ "ð TùÜ�‰ò 	Ø�M‰Mœ#˜a›&Ô!Øûð	ûð �M‰M˜&Õ!ú÷"ð "üsY   ‚B!…B˜A	¨A©A	¬B½
B!ÁA	Á	A<ÁA7Á7A<Á<A?Á?BÂBÂBÂB!Úcancel_the_scopec              ƒ  ó¶  ‡‡K  — t        j                  «       Šdˆˆfd„}g }t        j                  «       Št	        j
                  «       }t	        j                  «       4 ƒd {  –—† }|j                  t        d|||«       t        «       ƒ d {  –—†  |d   dk(  sJ ‚‰j                  d¬«      dk(  sJ ‚| r|j                  «        ‰j                  «        d d d «      ƒd {  –—†  | s|d   dk(  sJ ‚y |j                  sJ ‚t        j                  d	|d   «      s
J |d   «       ‚|d
   dk(  sJ ‚t!        |«      dk(  sJ ‚y 7 ŒÛ7 Œ²7 Œa# 1 ƒd {  –—†7  sw Y   ŒqxY w­w)Nc                 óä   •— 	 t        «        ‰j                  d«       ‰j                  «        t        «       S # t        j                  $ r$} ‰j                  t	        | «      «       Y d } ~ ŒLd } ~ ww xY w©NúNot Cancelled)r   rþ   r   r�   r©   r‘   ©rË   r‰   rë   s    €€r5   r;   z6test_from_thread_check_cancelled_no_abandon.<locals>.fø  sU   ø€ ð	#Ü'Ô)ð �E‰E�/Ô"Ø
�‰Œ	Ü*Ó,Ð,øô �‰ò 	Ø�E‰E”#�a“&�M‰Mûð	ús   ƒ
8 ¸A/ÁA*Á*A/Fr   r%   rà   ræ  rö  rñ   zzcancelled due to explicit from task <Task 'trio._tests.test_threads.test_from_thread_check_cancelled_no_abandon' at 0x\w*>r	   rO   r<   )rø   rù   r+   r   r   r
   rú   rû   rò   r   rê   rý   r~   r  r¡   Ú	fullmatchÚlen)rò  r;   r4   r  r  r‰   rë   s        @@r5   Ú+test_from_thread_check_cancelled_no_abandonrú  ô  s]  ùè ø€ ä1=×1CÑ1CÓ1E€Aö-ð €FÜ	�‰Ó	€BÜ×ÑÓ€Eä×!Ñ!Ó#÷ ð  wØ×Ñœ5 %¨°¸Ô:Ü$Ó&×&Ð&Ø�a‰y˜GÒ#Ð#Ð#Ø�u‰u˜QˆuÓ ?Ò2Ð2Ð2ÙØ�L‰LŒNØ
�‰Œ÷÷ ñ à�a‰y˜FÒ"Ð"Ñ"ð
 ×%Ò%Ð%Ð%Ü�|‰|ðfà�1‰Iô
ð 	ð �!‰9ó		ð 
ð
 �a‰y˜FÒ"Ð"Ð"Ü�6‹{˜aÒÐÑð/øà&øðø÷ ÷ ñ üs\   „AEÁ"D>Á#EÁ&'EÂE ÂAEÃEÃ EÃ!AEÅ EÅEÅEÅ
EÅEÅEc               ƒ  óÌ  ‡‡K  — t        j                  «       Šd
ˆˆfd„} g }t        j                  «       Št	        j
                  «       }t	        j                  «       4 ƒd {  –—† }|j                  t        d||| «       t        «       ƒ d {  –—†  |d   dk(  sJ ‚|j                  «        d d d «      ƒd {  –—†  ‰j                  «        |j                  sJ ‚t        j                  d|d   «      s
J |d   «       ‚|d   dk(  sJ ‚‰j                  d¬	«      }t!        |t"        «      r|‚t        j                  d|«      sJ |«       ‚y 7 Œæ7 Œ½7 Œ•# 1 ƒd {  –—†7  sw Y   Œ¥xY w­w)Nc                 ó  •— ‰j                  «        	 t        «        ‰j                  d«       y # t        j                  $ r$} ‰j                  t        | «      «       Y d } ~ y d } ~ wt        $ r} ‰j                  | «       Y d } ~ y d } ~ ww xY wrõ  )r‘   r   rþ   r   r�   r©   r-   r÷  s    €€r5   r;   z=test_from_thread_check_cancelled_abandon_on_cancel.<locals>.f%  sd   ø€ Ø
�‰Œ	ð		#Ü'Ô)ð �E‰E�/Õ"øô �‰ò 	Ø�E‰E”#�a“&�M‰MûÜò 	ð �E‰E�!�H‰Hûð	ús!   “
/ ¯BÁA!Á!BÁ-BÂBTr   r%   z�cancelled due to explicit from task <Task 'trio._tests.test_threads.test_from_thread_check_cancelled_abandon_on_cancel' at 0x\w*>rà   r,  rñ   ræ  r<   )rø   rù   r+   r   r   r
   rú   rû   rò   r   rý   r~   r  r¡   rø  rê   rV  r-   )r;   r4   r  r  Úresr‰   rë   s        @@r5   Ú2test_from_thread_check_cancelled_abandon_on_cancelrþ     s`  ùè ø€ Ü1=×1CÑ1CÓ1E€Aö#ð €FÜ	�‰Ó	€BÜ×ÑÓ€EÜ×!Ñ!Ó#÷ ð  wØ×Ñœ5 $¨¨v°qÔ9Ü$Ó&×&Ð&Ø�a‰y˜GÒ#Ð#Ð#Ø�‰Œ÷	÷ ð ‡F�F„Hà×!Ò!Ð!Ð!Ü�<‰<ð	iàˆq‰	ôð ð ˆa�yó	ð ð
 �"‰:˜ÒÐÐØ
�%‰%˜ˆ%Ó
€CÜ�#”}Ô%Øˆ	ä�|‰|ðmàô
ð 	ð ó		ñ 
ð)øà&øðø÷ ÷ ñ üs[   „AE$Á"E	Á#E$Á&'EÂEÂEÂ,E$Â7EÂ8BE$ÅEÅE$ÅE!ÅEÅE!ÅE$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 rU   )rþ   )r‡   rë   s    €r5   r_   zLtest_from_thread_check_cancelled_raises_in_foreign_threads.<locals>.<lambda>T  s   ø€ À1Ç5Á5ÈÃ8€ rI   rà   ræ  )
re   rf   rg   r   rø   rù   r   r\  rê   Úunwrap)rë   s   @r5   Ú:test_from_thread_check_cancelled_raises_in_foreign_threadsr  P  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^   rI   r5   rò   z+test_reentry_doesnt_deadlock.<locals>.child_  s&   è ø€ ØÜ$¤_´e¸QÐRWÔX×XÐXð ØXús   ‚&ž$Ÿ&r	   é   r<   )r   r   rú   r   rû   )rò   r  r‡   s      r5   Útest_reentry_doesnt_deadlockr  Y  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 rU   )r   r‘   )rË   s   €r5   r|   zCtest_wait_all_threads_completed.<locals>.wait_event.<locals>.threadr  s   ø€ Ü˜AŸF™FÕ#rI   r<   )r   r~   )rË   Úe_exitr|   s   `  r5   Ú
wait_eventz3test_wait_all_threads_completed.<locals>.wait_eventq  s*   øè ø€ õ	$ô ! Ó(×(Ð(Ø�
‰
�ð 	)ús   ƒ0˜.™0c               “  ó:   •K  — t        «       ƒ d {  –—†  dŠ y 7 Œ­wré  )r   )Úno_threads_lefts   €r5   Úwait_no_threads_leftz=test_wait_all_threads_completed.<locals>.wait_no_threads_leftx  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          @r5   Útest_wait_all_threads_completedr  i  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^   rI   r5   Ú*test_wait_all_threads_completed_no_threadsr  “  s(   è ø€ Ü
$Ó
&×&Ð&ÜÓ  AÒ%Ð%Ñ%ð 'ús   ‚'�%‘'r<   rU   )rÇ   z
int | Noner=   rÖ   )r  zpytest.CaptureFixture[str]r  úpytest.MonkeyPatchr=   r>   )r  rX   rý   r÷   r  r÷   r=   r>   )r  r  r=   r>   )
rð   r÷   r  r
   r4   z	list[str]r;   zCallable[[], None]r=   r>   )rò  r÷   r=   r>   )fÚ
__future__r   Úcontextvarsrä  rø   r¡   rm   r+   rÿ   rÉ  Ú	functoolsr   Útypingr   r   r   re   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?   r/   r-   rW   r!   r[   rh   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  r  r^   rI   r5   ú<module>r'     s¨  ðÞ "ã Û Û 	Û 
Û Û Û Ý ÷ñ ó Û ÷	÷ 	ó 	õ +Ý %÷÷ ñ õ -áßCÑCååà�%˜˜Y×-Ñ-°°]Ñ0CÑCÐCÑDÑE€
Ùˆ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"Øð"àð"ð ð"ð ð	"ð
 
ó"ð" ‡�×ÑÐ+¨e°T¨]Ó;ò( ó <ð( óV-ó`"ð ò*ó ð*ó'*ôT&rI   