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
U
Z±dª/ã@sœddlZddlmZmZddlZddlmZmZdd„Zdd„Zd    d
„Z    d d „Z
d d„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„ZdS)éNé)Úwait_all_tasks_blockedÚassert_checkpoints)Úopen_memory_channelÚ EndOfChannelc    Ãs0t t¡tdƒW5QRXt t¡tdƒW5QRXtdƒ\}}t|ƒt|ƒ| d¡tƒ| d¡IdHW5QRXt t    j
¡| d¡W5QRXtƒ|  ¡IdHdksÄt ‚W5QRX|  ¡dksÞt ‚t t    j
¡|  ¡W5QRX| d¡| ¡IdHt t    j¡| d¡IdHW5QRXt t    j¡| d¡W5QRXt t    j¡| ¡W5QRX| ¡IdH|  ¡dks t ‚t t¡|  ¡IdHW5QRX| ¡IdHt t    j¡|  ¡IdHW5QRXt t    j¡|  ¡IdHW5QRX| ¡IdHdS)Ngð?éÿÿÿÿréÚlastztoo late)ÚpytestÚraisesÚ    TypeErrorrÚ
ValueErrorÚreprÚ send_nowaitrÚsendÚtrioÚ
WouldBlockÚreceiveÚAssertionErrorÚreceive_nowaitÚacloseÚClosedResourceErrorÚcloner)ÚsÚr©rúNd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\trio/tests/test_channel.pyÚ test_channelsF   
 
 rc    ÃsNtdƒ\}}t d¡}| ¡IdHW5QRX|js:t‚| d¡IdHdS)Nré
zTest for PR #553)rrZ move_on_afterrZcancelled_caughtrr)Zautojump_clockrrZ timeout_scoperrrÚtest_5533s
 
rc Ãs¶dd„}tdƒ\}}t ¡4IdHš‚}|4IdHš&tdƒD]}| || ¡|¡q<W5QIdHRXg}|2z3dHW}| |¡ql6| ¡|ttdƒƒks¢t    ‚W5QIdHRXdS)Nc
ÓsN|4IdHš2td|d|dƒD]}| |¡IdHq$W5QIdHRXdS)Nér)Úranger)Ú send_channelÚiÚjrrrÚproducer<sz1test_channel_multiple_producers.<locals>.producerrré)
rrÚ open_nurseryr!Ú
start_soonrÚappendÚsortÚlistr)r%r"Úreceive_channelÚnurseryr#ÚgotÚvaluerrrÚtest_channel_multiple_producers;s  $r0c ƒsìtƒ‰g‰‡‡fdd„}t ¡4IdHšx}t d¡\}}|4IdHšLtdƒD]}| |||¡qNtƒIdHtdƒD]}| |¡IdHqvW5QIdHRXW5QIdHRXˆttdƒƒksÀt‚t    ˆƒdksÐt‚tˆƒttdƒƒksèt‚dS)Nc“s,|2z 3dHW}ˆ |¡ˆ |¡q6dS©N)Úaddr))r,r#r/©ZreceivedZsuccessful_receiversrrÚconsumerVs
z1test_channel_multiple_consumers.<locals>.consumerrér)
Úsetrr'rr!r(rrrÚlen)r4r-r"r,r#rr3rÚtest_channel_multiple_consumersRs   2r8c
Ãs4dd„}tdƒ\}}t ¡4IdHš0}| ||tj¡tƒIdH| ¡IdHW5QIdHRXt tj¡|     d¡W5QRXt tj¡| 
d¡IdHW5QRXt t ¡|  ¡W5QRXt t ¡|  ¡IdHW5QRXtdƒ\}}t ¡4IdHš0}| ||tj¡tƒIdH| ¡IdHW5QIdHRXt tj¡|     d¡W5QRXt tj¡| 
d¡IdHW5QRXdd„}tdƒ\}}t ¡4IdHš,}| ||¡tƒIdH| ¡IdHW5QIdHRXt tj¡|  ¡W5QRXt tj¡|  ¡IdHW5QRXdS)Nc    Ós*t |¡| d¡IdHW5QRXdSr1©r
r r©rÚexpectrrrÚ
send_blockjs z%test_close_basics.<locals>.send_blockrc    Ós*t tj¡| ¡IdHW5QRXdSr1©r
r rrr©rrrrÚ receive_blocksz(test_close_basics.<locals>.receive_block)rrr'r(rrrr
r rrrrrÚBrokenResourceError©r<rrr-r?rrrÚtest_close_basicsisB         rBc
Ãs"dd„}tdƒ\}}t ¡4IdHš*}| ||tj¡tƒIdH| ¡W5QIdHRXt tj¡|     d¡W5QRXt tj¡| 
d¡IdHW5QRXt t ¡|  ¡W5QRXt t ¡|  ¡IdHW5QRXtdƒ\}}t ¡4IdHš*}| ||tj¡tƒIdH| ¡W5QIdHRXt tj¡|     d¡W5QRXt tj¡| 
d¡IdHW5QRXdd„}tdƒ\}}t ¡4IdHš&}| ||¡tƒIdH| ¡W5QIdHRXt tj¡|  ¡W5QRXt tj¡|  ¡IdHW5QRXdS)Nc    Ós*t |¡| d¡IdHW5QRXdSr1r9r:rrrr<¡s z#test_close_sync.<locals>.send_blockrc    Ós*t tj¡| ¡IdHW5QRXdSr1r=r>rrrr?Æsz&test_close_sync.<locals>.receive_block)rrr'r(rrÚcloser
r rrrrrr@rArrrÚtest_close_sync sB         rDc    ÃsÂtdƒ\}}| ¡}| ¡}| d¡| ¡IdH|W5QRXt tj¡| ¡W5QRXt tj¡| ¡W5QRX| d¡| ¡IdHt tj¡| d¡W5QRXdS)Nr)    rrrrr
r rrr@)rrÚr2Zr3rrrÚ$test_receive_channel_clone_and_close×s 
 
 
rFc
ƒs–tdƒ\‰}ˆ ¡‰‡fdd„}‡fdd„}t ¡4IdHšJ}| |¡| |¡tƒIdHˆ ¡IdH| ¡IdHdks‚t‚W5QIdHRXdS)Nrc    “s,t tj¡ˆ d¡IdHW5QRXdS)NZnope)r
r rrrr)Ús1rrÚsend_will_closeøsz9test_close_multiple_send_handles.<locals>.send_will_closec“sˆ d¡IdHdS©NÚok)rr)Ús2rrÚsend_will_succeedüsz;test_close_multiple_send_handles.<locals>.send_will_succeedrJ)    rrrr'r(rrrr)rrHrLr-r)rGrKrÚ test_close_multiple_send_handlesòs   
 
 rMc
ƒstdƒ\}‰ˆ ¡‰‡fdd„}‡fdd„}t ¡4IdHšD}| |¡| |¡tƒIdHˆ ¡IdH| d¡IdHW5QIdHRXdS)Nrc    “s*t tj¡ˆ ¡IdHW5QRXdSr1r=r)Úr1rrÚreceive_will_close sz?test_close_multiple_receive_handles.<locals>.receive_will_closec“sˆ ¡IdHdkst‚dSrI)rrr)rErrÚreceive_will_succeedszAtest_close_multiple_receive_handles.<locals>.receive_will_succeedrJ)rrrr'r(rrr)rrOrPr-r)rNrErÚ#test_close_multiple_receive_handless   
 
 rQc    Ãsrttdƒƒ\}}|tdƒD]}| |¡qW5QRXg}|2z3dHW}| |¡q@6|ttdƒƒksnt‚dS)NÚinfr)rÚfloatr!rr)r+r)rrr#r.rrrÚtest_inf_capacitys rTc
ÃsBtdƒ\}}| ¡| ¡ks t‚| ¡}|jdks6t‚|jdksDt‚|jdksRt‚|jdks`t‚|jdksnt‚|jdks|t‚|     d¡| ¡jdks˜t‚| 
¡}| ¡jdks²t‚|  ¡IdH| ¡jdksÒt‚| 
¡}| ¡jdksìt‚|  ¡IdH| ¡jdkst‚t   ¡4IdHšj}|     d¡| ¡jdks>t‚| |jd¡| |jd¡tƒIdH| ¡jdkszt‚|j ¡W5QIdHRX| ¡jdks¨t‚z| ¡qªWnt jk
rÐYnXt   ¡4IdHš<}| |j¡tƒIdH| ¡jdkst‚|j ¡W5QIdHRX| ¡jdks>t‚dS)Nrrr)rZ
statisticsrZcurrent_buffer_usedÚmax_buffer_sizeZopen_send_channelsZopen_receive_channelsZtasks_waiting_sendZtasks_waiting_receiverrrrr'r(rrZ cancel_scopeÚcancelrrr)rrÚstatsrKrEr-rrrÚtest_statistics*sL 
 
   rXc
ƒs„tdƒ\}}| d¡| ¡dks&t‚| d¡| ¡dks@t‚d‰‡fdd„}t ¡4IdHšH}| ||¡tƒIdH| d¡t     tj
¡| ¡W5QRXW5QIdHRXˆdksÀt‚tdƒ\}}| d¡t     tj
¡| d¡W5QRXt ¡4IdHšl}| |j d¡tƒIdH| ¡dks6t‚t     tj
¡| d¡W5QRX|  ¡IdHdkspt‚W5QIdHRXdS)Nrrc“s| ¡IdH‰dSr1)rr>©ÚresultrrÚ
do_receiveksz)test_channel_fairness.<locals>.do_receiver ) rrrrrr'r(rr
r rrr)rrr[r-rrYrÚtest_channel_fairness\s2 
 
 
"  
 r\c
ÃsÒtdƒ\}}t tj¡| ¡W5QRXt tj¡| d¡W5QRXdd„}t ¡4IdHš<}| ||d¡t    ƒ| 
¡IdHdks”t ‚W5QRXW5QIdHRXt tj¡| ¡W5QRXdS)Nrrc    Ós&tƒ| |¡IdHW5QRXdSr1)rr)rÚvrrrÚdo_sendŽsz test_unbuffered.<locals>.do_send) rr
r rrrrr'r(rrr)rrr^r-rrrÚtest_unbuffered‡s 0r_)r
Ztestingrrrrrrrr0r8rBrDrFrMrQrTrXr\r_rrrrÚ<module>s +772+