1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
U
Z±d?ã@slddlZddlZddlmZmZddlmZddlmZddlmZm    Z    ddl
Tdd    „Z d
d „Z d d „Z dd„Zdd„Zdd„Zdd„Zejjdeegdd„ddd„ƒZdd„Zddl
mZddlmZGd d!„d!eƒZGd"d#„d#eƒZGd$d%„d%eƒZd&d„d'd„eed(d„d)d„eegZd*d+d,d-d.d/d#d%gZejjd0eedZ e d1d2„ƒZ!e d3d4„ƒZ"e d5d6„ƒZ#dS)7éNé)Úwait_all_tasks_blockedÚassert_checkpoints)Ú_core)Ú    _timeouts)Ú sleep_foreverÚ move_on_after)Ú*c
ƒstƒ‰ˆ ¡rt‚ˆ ¡jdks$t‚ˆ ¡ˆ ¡s8t‚tƒˆ ¡IdHW5QRXtƒ‰g‰‡‡fdd„}t     ¡4IdHšp}| 
|¡| 
|¡t ƒIdHˆddgks²t‚ˆ ¡jdksÄt‚ˆ ¡t ƒIdHˆddddgksìt‚W5QIdHRXdS)Nrc“s&ˆ d¡ˆ ¡IdHˆ d¡dS)NÚsleepingÚwoken)ÚappendÚwait©©ÚeÚrecordrúKd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\trio/tests/test_sync.pyÚchilds
ztest_Event.<locals>.childr
rr ) ÚEventÚis_setÚAssertionErrorÚ
statisticsÚ tasks_waitingÚsetrr rÚ open_nurseryÚ
start_soonr)rÚnurseryrrrÚ
test_Event s&  
 
  rc Ãs4t t¡tdƒW5QRXt t¡tdƒW5QRXtdƒ}t|ƒ|jdksZt‚|jdksht‚|j    dksvt‚t t
¡|  ¡W5QRX|jdks¢t‚|  ¡|jdks¸t‚|j    dksÆt‚|  ¡}|jdksÜt‚|jdksêt‚|jt ¡gksþt‚|jdkst‚t t
¡|  ¡W5QRX|jdks<t‚t t
¡| ¡IdHW5QRX|jdkspt‚tƒ| d¡IdHW5QRX|jdks¢t‚t tj¡| d¡W5QRXt|  ¡jƒt ¡dhksät‚| t ¡¡|  ¡jdgkst‚| d¡|jdks"t‚tƒ4|4IdHš|jdksHt‚W5QIdHRXW5QRXt ¡4IdHšž}| d¡IdH| d    ¡IdH| |jd
¡tƒIdH|jdks¾t‚|  ¡jdksÒt‚| d    ¡|jdksìt‚t tj¡|  ¡W5QRXW5QIdHRX| d
¡| d¡dS) Nçð?éÿÿÿÿrréZsomeonez third partyzvalue 1zvalue 2zvalue 3)ÚpytestÚraisesÚ    TypeErrorÚCapacityLimiterÚ
ValueErrorÚreprÚ total_tokensrÚborrowed_tokensÚavailable_tokensÚ RuntimeErrorÚreleaseÚacquire_nowaitrÚ    borrowersrÚ current_taskrÚacquirerÚacquire_on_behalf_ofÚ
WouldBlockZacquire_on_behalf_of_nowaitrÚrelease_on_behalf_ofrrr)ÚcÚstatsrrrrÚtest_CapacityLimiter+sh      
* 
"
r5c    Ãsšddlm}t|ƒ}t|ƒ|j|ks*t‚|jdks8t‚|j|ksFt‚t     t
¡|  ¡W5QRX|jdksrt‚|  ¡|jdksˆt‚|j|ks–t‚dS)Nr)Úinfr ) Úmathr6r$r&r'rr(r)r!r"r*r+r,)r6r3rrrÚtest_CapacityLimiter_infps  r8c
ÃsØtdƒ}t t¡ d|_W5QRXt t¡ d|_W5QRXt t¡ d|_W5QRX|jdksjt‚t ¡4IdHšL}t    dƒD]}| 
|j |¡t ƒIdHq†t | ¡jƒddhksÀt‚| ¡jdksÒt‚|jd7_t | ¡jƒddddhksþt‚| ¡jdkst‚|jd8_|jdks0t‚|jdks@t‚| d¡| d¡| d¡t | ¡jƒdhksxt‚| ¡jdksŒt‚| d¡t | ¡jƒdhks°t‚| ¡jdksÄt‚W5QIdHRXdS)    Nrrriöÿÿÿér éé)r$r!r"r#r'r%rrrÚrangerr0rrrr-rr(r2)r3rÚirrrÚ(test_CapacityLimiter_change_total_tokens€s8    
 
 
 
r>c
Ãsrtdd}| ¡IdHt ¡4IdHš(}| |j¡tƒIdH|j ¡W5QIdHRXt|j    ƒdksnt
‚dS)Nr )r'r) r$r/rrrrÚ cancel_scopeÚcancelÚlenZ_pending_borrowersr)ZlimiterÚnrrrÚ test_CapacityLimiter_memleak_548¥s
  rCc ƒst t¡tdƒW5QRXt t¡tdƒW5QRXtdƒ}t|ƒ|jdksZt‚|jdksht‚|     ¡|jdks~t‚| 
¡j dkst‚|  ¡|jdks¦t‚t ƒ| ¡IdHW5QRX|jdksÔt‚t tj¡|  ¡W5QRX|     ¡|jdks t‚t ƒ4|4IdHš|jdks2t‚W5QIdHRXW5QRX|jdks\t‚|  ¡g‰‡fdd„}t ¡4IdHšv}| ||¡tƒIdHˆdgks®t‚|jdks¾t‚|     ¡|jdksÖt‚t tj¡|  ¡W5QRXW5QIdHRXˆdd    gkst‚dS)
Nrrr rrc“s&ˆ d¡| ¡IdHˆ d¡dS©NÚstartedÚfinished)r r/)Ús©rrrÚ
do_acquireÑs
z"test_Semaphore.<locals>.do_acquirerErF)r!r"r#Ú    Semaphorer%r&ÚvaluerÚ    max_valuer+rrr,rr/rr1rrr)rGrIrrrHrÚtest_Semaphore³sJ  *   "rMc    ÃsÂt t¡tdddW5QRXt t¡tdddW5QRXtddd}|jdks^t‚t|ƒt t¡| ¡W5QRX|j    dks’t‚| 
¡|j    dks¨t‚| ¡|j    dks¾t‚dS)Nr r)rLrr) r!r"r#rJr%rLrr&r+rKr,)ÚbsrrrÚtest_Semaphore_boundedãs    rOÚlockclscCs|jS©N)Ú__name__)ÚfnrrrÚ<lambda>ôórT)Úidsc ƒs |ƒ‰ˆ ¡rt‚t ˆ¡}|ƒˆks*t‚tˆƒ|jtˆƒksDt‚tƒ8ˆ4IdHšˆ ¡sft‚tˆƒW5QIdHRXW5QRXˆ ¡r”t‚ˆ ¡ˆ ¡s¨t‚ˆ ¡ˆ ¡r¼t‚tƒˆ     ¡IdHW5QRXˆ ¡sèt‚ˆ ¡ˆ ¡rüt‚ˆ ¡t
  t ¡ˆ ¡W5QRXˆ ¡t
  t ¡ˆ ¡W5QRXd‰‡‡fdd„}t  ¡4IdHšò}ˆ ¡rzt‚| |¡tƒIdHˆ ¡sžt‚t
  t j¡ˆ ¡W5QRXt
  t ¡ˆ ¡W5QRXˆ ¡}t|ƒ|jsøt‚|jˆkst‚|jdkst‚| |¡tƒIdHˆ ¡}t|ƒ|jdksNt‚|j ¡W5QIdHRXˆ ¡}|jr|t‚|jdksŒt‚|jdksœt‚dS)Nc
“s6t ¡‰ˆ4IdHštƒIdHW5QIdHRXdSrQ)rr.rr©Z holder_taskÚlrrÚholdersz,test_Lock_and_StrictFIFOLock.<locals>.holderrr )ÚlockedrÚweakrefÚrefr&rRrr,r+r/r!r"r*rrrrr1rÚprintÚownerrr?r@)rPÚrrYrrrrWrÚtest_Lock_and_StrictFIFOLockôsh 
 "       
 
  r`c ƒs¤t t¡ttdƒƒW5QRXt t¡ttƒW5QRXtƒ}t|ƒ‰| ¡rZt‚ˆ ¡rft‚t    ƒˆ 
¡IdHW5QRX| ¡s’t‚ˆ ¡sžt‚tƒ‰ˆ ¡r°t‚ˆ  ¡ˆ ¡sÄt‚t t ¡ˆ  ¡W5QRXˆ  ¡t t ¡ˆ ¡IdHW5QRXt t ¡ˆ ¡W5QRXt t ¡ˆ ¡W5QRXtƒ‰‡‡fdd„}t ¡4IdHšÄ}tdƒD]}| ||¡tƒIdHqxˆ4IdHšˆ ¡W5QIdHRXˆ ¡sÌt‚tƒIdHˆdhksèt‚ˆ4IdHšˆ ¡W5QIdHRXtƒIdHˆdddhks.t‚W5QIdHRXtƒ‰t ¡4IdHšâ}tdƒD]}| ||¡tƒIdHq^ˆ4IdHšBˆ d¡ˆ ¡}t|ƒ|jdks¶t‚|jjdksÈt‚W5QIdHRXˆ ¡jjdksît‚tƒIdHˆddhks t‚ˆ4IdHšˆ ¡W5QIdHRXW5QIdHRXt ¡P}ˆ4IdHš2| ¡zˆ ¡IdHW5ˆ ¡s„t‚XW5QIdHRXW5QRXdS)Nr c
“s:ˆ4IdHšˆ ¡IdHW5QIdHRXˆ |¡dSrQ)r Úadd)r=©r3Zfinished_waitersrrÚwaiterbsztest_Condition.<locals>.waiterr:rr)r!r"r#Ú    ConditionrJÚStrictFIFOLockÚLockrZrrr/r,r*r+r ÚnotifyÚ
notify_allrrrr<rrrr]rZlock_statisticsZ CancelScoper@)rXrcrr=rZscoperrbrÚtest_Condition@s|                $  
" (
ri)ÚAsyncContextManagerMixin)Úopen_memory_channelc@s,eZdZdd„Zdd„Zdd„Zdd„Zd    S)
Ú ChannelLock1cCs2t|ƒ\|_|_t|dƒD]}|j d¡qdS©Nr )rkrGr_r<Ú send_nowait)ÚselfÚcapacityÚ_rrrÚ__init__œszChannelLock1.__init__cCs|j d¡dSrQ©rGrn©rorrrr,¡szChannelLock1.acquire_nowaitcÃs|j d¡IdHdSrQ)rGÚsendrtrrrr/¤szChannelLock1.acquirecCs|j ¡dSrQ©r_Úreceive_nowaitrtrrrr+§szChannelLock1.releaseN©rRÚ
__module__Ú __qualname__rrr,r/r+rrrrrl›srlc@s,eZdZdd„Zdd„Zdd„Zdd„Zd    S)
Ú ChannelLock2cCs tdƒ\|_|_|j d¡dS©Né
)rkrGr_rnrtrrrrr¬szChannelLock2.__init__cCs|j ¡dSrQrvrtrrrr,°szChannelLock2.acquire_nowaitcÃs|j ¡IdHdSrQ)r_Zreceivertrrrr/³szChannelLock2.acquirecCs|j d¡dSrQrsrtrrrr+¶szChannelLock2.releaseNrxrrrrr{«sr{c@s,eZdZdd„Zdd„Zdd„Zdd„Zd    S)
Ú ChannelLock3cCstdƒ\|_|_d|_dS)NrF)rkrGr_Úacquiredrtrrrrr»szChannelLock3.__init__cCs|jr
t‚d|_dS©NT)rrrtrrrr,Âs
zChannelLock3.acquire_nowaitcÃs2|jr|j d¡IdHnd|_t ¡IdHdSr€)rrGrurÚ
checkpointrtrrrr/ÆszChannelLock3.acquirecCs:z|j ¡Wn&tjk
r4|js*t‚d|_YnXdS)NF)r_rwrr1rrrtrrrr+Ís
 
zChannelLock3.releaseNrxrrrrr~ºsr~cCstdƒSrm)r$rrrrrTÖrUcCstdƒSrm)rJrrrrrT×rUcCstdƒSr|©rlrrrrrTÚrUcCstdƒSrmr‚rrrrrTÛrUzCapacityLimiter(1)z Semaphore(1)rfrezChannelLock1(10)zChannelLock1(1)Ú lock_factoryc
ƒs~d‰d}d‰d‰‡‡‡fdd„}t ¡4IdHš&}|ƒ}t|ƒD]}| ||¡q@W5QIdHRXˆrjt‚ˆˆ|kszt‚dS)Nr}r9Frc “sltˆƒD]^}|4IdHšBˆd7‰ˆr*t‚d‰t ¡IdHt ¡IdHˆsRt‚d‰W5QIdHRXqdS)Nr TF)r<rrr)Ú    lock_likerq©ÚLOOPSZacquiresZin_critical_sectionrrÚworkerøs z+test_generic_lock_exclusion.<locals>.worker)rrr<rr)rƒZWORKERSr‡rr„rqrr…rÚtest_generic_lock_exclusionñs  rˆc
ƒs g‰g‰d‰‡‡‡fdd„}|ƒ}t ¡4IdHš0}| |d|¡| |d|¡| |d|¡W5QIdHRXtˆƒD]$}ˆd|d|d…ˆksvt‚qvdS)Nr9c “sDˆ |¡tˆƒD],}|4IdHšˆ |¡W5QIdHRXqdSrQ)r r<)Únamer„rq©r†Z initial_orderrrrÚloopys
 z.test_generic_lock_fifo_fairness.<locals>.loopyr rr:)rrrr<r)rƒr‹r„rr=rrŠrÚtest_generic_lock_fifo_fairnesss rŒc
ƒsr|ƒ‰g‰‡‡fdd„}t ¡4IdHš:}ˆ ¡| |¡tƒIdHˆdgksVt‚ˆ ¡W5QIdHRXdS)Nc
“s6ˆ d¡ˆ4IdHšW5QIdHRXˆ d¡dSrD)r r©r„rrrÚ
lock_taker,s
zCtest_generic_lock_acquire_nowait_blocks_acquire.<locals>.lock_takerrE)rrr,rrrr+)rƒrŽrrrrÚ/test_generic_lock_acquire_nowait_blocks_acquire&s
 r)$r!r[ZtestingrrÚrrrrZ_syncrr5r8r>rCrMrOÚmarkZ parametrizerfrer`rirjZ_channelrkrlr{r~Zlock_factoriesZlock_factory_namesZgeneric_lock_testrˆrŒrrrrrÚ<module>sd  E%0
KT  ø ø ÿ