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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
U
K±d mã@sÎddlZddlZddlZddlZddlmZddlZddlm    Z    ddl
m Z m Z m Z mZmZmZmZdd„Ze d    d
„ƒZe d d „ƒZGd d„dƒZdd„Ze dd„ƒZdd„Ze dd„ƒZdd„ZGdd„deƒZejdd„ƒZejdd„ƒZejdd „ƒZ e d!d"„ƒZ!d#d$„Z"d%d&„Z#d'd(„Z$d)d*„Z%d+d,„Z&e d-d.„ƒZ'd/d0„Z(e d1d2„ƒZ)d3d4„Z*e d5d6„ƒZ+d7d8„Z,d9d:„Z-d;d<„Z.e d=d>„ƒZ/e d?d@„ƒZ0dAdB„Z1e dCdD„ƒZ2ej3dEkr¼e4dFƒdGdH„Z5e dIdJ„ƒZ6e dKdL„ƒZ7dMdN„Z8dOdP„Z9e dQdR„ƒZ:e dSdT„ƒZ;dUdV„Z<dWdX„Z=dYdZ„Z>d[d\„Z?d]d^„Z@d_d`„ZAdadb„ZBdcdd„ZCdedf„ZDdgdh„ZEdidj„ZFdkdl„ZGddml
mHZHejIjJeKednƒ dodpdqdr„ƒZLe dsdt„ƒZMdudv„ZNdwdx„ZOejPdydz„ƒZQd{d|„ZRd}d~„ZSdS)éN)Úwrapsé©Ú
mock_sleepé)Úasync_generatorÚyield_Ú yield_from_Ú
isasyncgenÚisasyncgenfunctionÚget_asyncgen_hooksÚset_asyncgen_hookscÃs&g}|2z3dHW}| |¡q6|S©N)Úappend)ÚaitÚitemsÚvalue©rúbd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\async_generator/_tests/test_async_generator.pyÚcollectsrcÃs.t|ƒD] }td |¡ƒt|ƒIdHqdS)NzCalling yield_({}))ÚrangeÚprintÚformatr)ÚcountÚirrrÚ async_range$s rcÃs6|2z*3dHW}t|dƒIdHtƒIdHq6dS©Nr©rr)rrrrrÚdouble+src@s eZdZdd„Zedd„ƒZdS)ÚHasAsyncGenMethodcCs
||_dSr)Ú_factor)ÚselfZfactorrrrÚ__init__3szHasAsyncGenMethod.__init__cÃs,|2z 3dHW}t||jƒIdHq6dSr)rr )r!rrrrrÚasync_multiplied6sz"HasAsyncGenMethod.async_multipliedN)Ú__name__Ú
__module__Ú __qualname__r"rr#rrrrr2srcÃs€ttdƒƒIdHttdƒƒks"t‚tttdƒƒƒIdHdddddgksJt‚tdƒ}t| tdƒ¡ƒIdHdddd    d
gks|t‚dS) Né
érrééééé    é )rrÚlistrÚAssertionErrorrrr#)ZtriplerrrrÚtest_async_generator<s"(ÿ ÿÿr1cÃstƒIdHdSr©rrrrrÚagen_yield_no_argGsr3cÃsttƒƒIdHdgkst‚dSr)rr3r0rrrrÚtest_yield_no_argLsr4cÃs tdƒIdHtdƒIdHdS)NrrÚhir2rrrrÚasync_gen_with_non_None_returnWsr6c
Ãsštƒ}|2z3dHW}|dks"t‚q*q
6|2z3dHW}|dksFt‚qNq.6z| ¡IdHWn4tk
r”}z|jddks„t‚W5d}~XYnXdS)Nrrrr5)r6r0Ú    __anext__ÚStopAsyncIterationÚargs)ÚgenÚitemÚerrrÚtest_bad_return_value^s  r=c@s eZdZdS)Ú MyTestErrorN)r$r%r&rrrrr>|sr>ccs
dVdS)Núhit merrrrrÚhit_me…sr@ccsdVdkst‚dS)Nú    number mer©r0rrrrÚ    number_meŠsrCccsdVdkst‚dS©Nznext merBrrrrÚnext_mesrEcÃsztdƒIdHztƒIdHWn"tk
r@tdƒIdHYnXtƒIdHtdƒIdHtƒIdHtdƒIdHdS©Nrrr,r))rr@r>rCrErrrrÚyield_after_different_entries”s  rGc
Cs‚| ¡}d}zB|dkr$| tƒ¡}n(|dkr8| d¡}n|dksDt‚| ¡}Wq tk
rz}z|jWY¢Sd}~XYq Xq dS)Nr?rArrD)Ú    __await__Úthrowr>Úsendr0Ú__next__Ú StopIterationr)ÚcoroZ    coro_iterrÚexcrrrÚhostile_coroutine_runner¡s   rOcCs*ttƒƒ}t|ƒ}|ddddgks&t‚dSrF)rrGrOr0)rMÚyieldedrrrÚtest_yield_different_entries±s
rQc    ƒsDt‡fdd„ƒ}|ƒ‰t t¡ˆ2z 3dHW}q&6W5QRXdS)Nc“s&ˆ2z3dHW}t|ƒIdHq6dSrr2)Úobj©ÚagenrrÚrecurse¸sz*test_reentrance_forbidden.<locals>.recurse)rÚpytestÚraisesÚ
ValueError)rUÚ_rrSrÚtest_reentrance_forbidden·s  rZc    ÃsŠtdd„ƒ}|ƒ}| d¡}| d¡}| d¡dks8t‚t t¡| d¡W5QRXt t¡| d¡W5QRX| ¡IdHdS)NcÓstƒIdHdSrrrrrrÚfÄsz8test_reentrance_forbidden_simultaneous_asends.<locals>.fr)    rÚasendrJr0rVrWrXr8Úaclose)r[ÚagÚsender1Úsender2rrrÚ-test_reentrance_forbidden_simultaneous_asendsÃs
 
 
  rac    Ãs¬tdd„ƒ}|ƒ}| d¡}| d¡}|dks2t‚|js<t‚t t¡| d¡IdHW5QRXt t¡| d¡W5QRXt t    ¡| d¡ d¡W5QRXdS)NcÓstƒIdHtdƒIdHdS)Nz final yield©rrrrrrr[Õs zHtest_reentrance_forbidden_while_suspended_in_coroutine_runner.<locals>.fr)
rr\rJr0Ú
ag_runningrVrWrXrLr8)r[r^Z
asend_coroZfutrrrÚ=test_reentrance_forbidden_while_suspended_in_coroutine_runnerÔs
 
 
 
   rdcÃs0tdƒIdHdkst‚tdƒIdHdks,t‚dSrF)rr0rrrrÚasend_meòsrec    Ãs^tƒ}| ¡IdHdkst‚| d¡IdHdks4t‚t t¡| d¡IdHW5QRXdSrF)rer7r0r\rVrWr8©ÚaiterrrrÚ
test_asendøs
 rhc    ÃsZt t¡tdƒIdHW5QRXt t¡tdƒIdHW5QRXtdƒIdHdS)Nrrr,)rVrWÚKeyErrorrrXrrrrÚ    athrow_mes
  rjc    Ãs‚tƒ}| ¡IdHdkst‚| tdƒ¡IdHdks8t‚| tdƒ¡IdHdksTt‚t t¡| tdƒ¡IdHW5QRXdS)NrÚoopsrr,)    rjr7r0ÚathrowrirXrVrWÚOSErrorrfrrrÚ test_athrows  rncÃs>ztdƒIdHWntk
r0d|d<‚Yn
Xd|d<dS)NrÚclosedrZwtf)rÚ GeneratorExit)ÚtrackrrrÚclose_me_aiter s rrcÃsddg}t|ƒ}|2z3dHW}|dks*t‚q2q6|ddksBt‚| ¡IdH|ddks`t‚dS)Nrrro)rrr0r])rqrgrRrrrÚ test_aclose+s rscÃs8tdgƒ}| ¡IdH|2z3dHW}dst‚q6dS©NF)rrr]r0©rgrRrrrÚ"test_aclose_on_unstarted_generator6s
rvcÃs.tdƒ}|2z 3dHW}q 6| ¡IdHdS©Nr,)rr]rurrrÚ!test_aclose_on_finished_generator=srxcÃs&ztdƒIdHW5tƒIdHXdS©NrrbrrrrÚsync_yield_during_acloseDsrzcÃs(ztdƒIdHW5tdƒIdHXdS©Nrrr2rrrrÚasync_yield_during_acloseLsr|c    Ãsntƒ}| ¡IdHdkst‚| ¡IdHtƒ}| ¡IdHdksFt‚t t¡| ¡IdHW5QRXdSry)rzr7r0r]r|rVrWÚ RuntimeErrorrfrrrÚtest_aclose_yieldingTs r~cÃs6tt|ƒƒIdHtdƒIdHtt|ƒƒIdHdSr)r    rr©rrrrÚasync_range_twicegsr€©r,r*a«
async def native_async_range(count):
    for i in range(count):
        yield i
 
# XX uncomment if/when we re-enable the ctypes hacks:
# async def native_async_range_twice(count):
#     # make sure yield_from_ works inside a native async generator
#     await yield_from_(async_range(count))
#     yield None
#     # make sure we can yield_from_ a native async generator
#     await yield_from_(native_async_range(count))
    cÃs`ttdƒƒIdHdddddddgks(t‚tjdkr\tdd„ƒ}t|ƒƒIdHdddgks\t‚dS)Nr,rrrrcÓsttdƒƒIdHdSrw)r    Únative_async_rangerrrrÚyield_from_nativesz1test_async_yield_from_.<locals>.yield_from_native)rr€r0ÚsysÚ version_infor)rƒrrrÚtest_async_yield_from_€sù
 
 
 
r†cÃstd|ƒIdH}qdSrr2©rrrrÚ doubles_sendsšsrˆcÃstt|ƒƒIdHdSr)r    rˆr‡rrrÚwraps_doubles_sends sr‰cÃsttdƒ}| ¡IdHdk| d¡IdHdks2t‚| d¡IdHdksJt‚| d¡IdHdksbt‚| ¡IdHdS)Nr'érr)r(r)r‰r7r\r0r]©r:rrrÚtest_async_yield_from_asend¥s rŒc    ÃsHtdƒ}| ¡IdHdkst‚t t¡| t¡IdHW5QRXdS)Nrr)r€r7r0rVrWrXrlr‹rrrÚtest_async_yield_from_athrow®s rcÃstdƒIdHdS©Nrrr2rrrrÚ    returns_1µsrcÃstttƒƒIdHƒIdHdSr)rr    rrrrrÚyields_from_returns_1»srcÃs ttƒƒIdHddgkst‚dSrŽ)rrr0rrrrÚ"test_async_yield_from_return_valueÀsr‘cƒs8tdd„ƒ‰t‡fdd„ƒ}t|ƒƒIdHgks4t‚dS)NcÓsdS©NÚdonerrrrrÚemptyÆsz$test_yield_from_empty.<locals>.emptyc“stˆƒƒIdHdkst‚dSr’)r    r0r©r”rrÚyield_from_emptyÊsz/test_yield_from_empty.<locals>.yield_from_empty©rrr0)r–rr•rÚtest_yield_from_emptyÅs
 
r˜c
ƒs€Gdd„dƒ‰t‡fdd„ƒ}g}t|d|ƒƒIdHdddgksDt‚|gksPt‚g}|d|ƒ}| ¡IdHdkstt‚td    ƒ}z| |¡IdHWn4tk
rÄ}z|jd|ks´t‚W5d}~XYnX|d
gksÔt‚g}|d|ƒ}| ¡IdHdksøt‚| ¡IdH|d d
gkst‚g}|d|ƒ}| ¡IdHdks>t‚t    ƒ}t
  t¡| |¡IdHW5QRX|d d
gks|t‚dS) Nc@s@eZdZdd„Zejdkr$dd„Zndd„Zdd„Zd    d
„Zd S) z0test_yield_from_non_generator.<locals>.CountdowncSs||_d|_dSrt©rro©r!rrrrr"Ósz9test_yield_from_non_generator.<locals>.Countdown.__init__©r,r(rcÓs|Srr©r!rrrÚ    __aiter__Ùsz:test_yield_from_non_generator.<locals>.Countdown.__aiter__cSs|SrrrœrrrrÝscÓs&|jd8_|jdkr tdƒ‚|jS©NrrÚboom©rr8rœrrrr7às
z:test_yield_from_non_generator.<locals>.Countdown.__anext__cÓs
d|_dS)NT)rorœrrrr]æsz7test_yield_from_non_generator.<locals>.Countdown.acloseN)    r$r%r&r"r„r…rr7r]rrrrÚ    CountdownÒs 
 
r¡c
“slz"ˆ|ƒ}t|ƒIdHdks t‚WnDtk
rf}z&|jrD| d¡| d¡|WY¢Sd}~XYnXdS)NrŸúcountdown closedÚraise)r    r0Ú BaseExceptionror)rZ
happeningsÚcr<©r¡rrÚyield_from_countdownés
 
z;test_yield_from_non_generator.<locals>.yield_from_countdownr,rrrÚxr£r¢) rrr0r7rXrlr8r9r]rprVrW)r§ÚhrTrNr<rr¦rÚtest_yield_from_non_generatorÑs6
" 
$
 
 rªcƒs„Gdd„dƒ‰t‡fdd„ƒ}t|dƒƒIdHdddgks>t‚|dƒ}| ¡IdHdks\t‚| ¡IdHdksrt‚| ¡IdHdS)    Nc@s8eZdZdd„Zejdkr$dd„Zndd„Zdd„Zd    S)
z?test_yield_from_non_generator_with_no_aclose.<locals>.CountdowncSs||_d|_dSrtr™ršrrrr"szHtest_yield_from_non_generator_with_no_aclose.<locals>.Countdown.__init__r›cÓs|SrrrœrrrrszItest_yield_from_non_generator_with_no_aclose.<locals>.Countdown.__aiter__cSs|Srrrœrrrr"scÓs&|jd8_|jdkr tdƒ‚|jSržr rœrrrr7%s
zItest_yield_from_non_generator_with_no_aclose.<locals>.Countdown.__anext__N)r$r%r&r"r„r…rr7rrrrr¡s
 
 
r¡c“stˆ|ƒƒIdHSr©r    rr¦rrr§+szJtest_yield_from_non_generator_with_no_aclose.<locals>.yield_from_countdownr,rrr)rrr0r7r])r§rTrr¦rÚ,test_yield_from_non_generator_with_no_acloses r¬cƒsBGdd„dƒ‰t‡fdd„ƒ}t|dƒƒIdHdddgks>t‚dS)    Nc@s$eZdZdd„Zdd„Zdd„ZdS)z7test_yield_from_with_old_style_aiter.<locals>.CountdowncSs||_d|_dSrtr™ršrrrr";sz@test_yield_from_with_old_style_aiter.<locals>.Countdown.__init__cÓs|Srrrœrrrr@szAtest_yield_from_with_old_style_aiter.<locals>.Countdown.__aiter__cÓs&|jd8_|jdkr tdƒ‚|jSržr rœrrrr7Cs
zAtest_yield_from_with_old_style_aiter.<locals>.Countdown.__anext__N)r$r%r&r"rr7rrrrr¡:sr¡c“stˆ|ƒƒIdHSrr«rr¦rrr§IszBtest_yield_from_with_old_style_aiter.<locals>.yield_from_countdownr,rrrr—)r§rr¦rÚ$test_yield_from_with_old_style_aiter8sr­c
ƒs®tdd„ƒ‰t‡fdd„ƒ}|ƒ}| ¡IdHdks8t‚| ¡IdHdksNt‚tdƒ}zt| |¡IdHƒWn6tk
r¤}z|jd|ffks”t‚W5d}~XYnXt‚dS)Nc
ÓsHztdƒIdHqWn.tk
rB}zd|fWY¢Sd}~XYnXdS)Nr5Úbye)rÚ    Exception)rNrrrÚcatchQsz?test_yield_from_athrow_raises_StopAsyncIteration.<locals>.catchc“stˆƒƒIdHSrr«r©r°rrÚyield_from_catchYszJtest_yield_from_athrow_raises_StopAsyncIteration.<locals>.yield_from_catchr5rkr®)rr7r0rXrrlr8r9)r²rTZthrownZcaughtrr±rÚ0test_yield_from_athrow_raises_StopAsyncIterationPs
&r³c
ƒsjd‰t‡fdd„ƒ}|ƒ}| ¡|ƒ}t|ƒIdHdddgksDt‚| ¡dD]D}|ƒ}t|ƒD]}| ¡IdH|ksbt‚qb| ¡IdH| ¡qPdD]t}|ƒ}t|ƒD]}| ¡IdH|ks¬t‚q¬|dkrt t    ¡}| ¡W5QRXdt
|j ƒkst‚qš| ¡qšˆdkst‚td    d
„ƒ}|ƒ}| ¡IdHdksHt‚t t    ¡}| ¡W5QRXdS) Nrc“sRtdƒIdHztdƒIdHW5tƒIdHXztdƒIdHW5ˆd7‰XdS)Nrrrrr©Z completionsrrÚawaits_when_unwindingqsz+test___del__.<locals>.awaits_when_unwindingrr)rrr,z8awaited during finalization; install a finalization hookr,cÓs(ztdƒIdHW5tdƒIdHXdSr{r2rrrrÚyields_when_unwinding¢sz+test___del__.<locals>.yields_when_unwinding) rÚ__del__rr0rr7r]rVrWr}Ústrr)Zcapfdrµr:Zstop_after_turnZturnÚinfor¶rr´rÚ test___del__ns@  
 
 ÿ
 
 rºcCsFttƒr t‚ttdƒƒst‚tjdkrBttƒr2t‚ttdƒƒsBt‚dS©Nr'r)r
rr0r„r…r‚rrrrÚtest_isasyncgen´s
 
 r¼cCsRttƒs t‚ttƒrt‚ttdƒƒr(t‚tjdkrNttƒs>t‚ttdƒƒrNt‚dSr»)r rr0r/r„r…r‚rrrrÚtest_isasyncgenfunction½s   
 r½cCs.ttƒdd„ƒ}t|ƒrt‚t|jƒs*t‚dS)Nc_s
t||ŽSr)r)r9ÚkwargsrrrÚasync_range_wrapperÙszQtest_isasyncgenfunction_is_not_inherited_by_wrappers.<locals>.async_range_wrapper)rrr r0Ú __wrapped__)r¿rrrÚ4test_isasyncgenfunction_is_not_inherited_by_wrappersØs
 rÁcCs&ttjdƒr"ttdƒtjjƒs"t‚dS)NÚAsyncGeneratorr')ÚhasattrÚ collectionsÚabcÚ
isinstancerrÂr0rrrrÚ#test_collections_abc_AsyncGeneratorás rÇcÃsRtdd„ƒ}|ƒ}|jjdks"t‚|2z$3dHW}|jjddksFt‚qNq&6dS)NcÓsd}tƒIdHdSryr2©r¨rrrr[çsztest_ag_attributes.<locals>.fr[r¨r)rÚag_codeÚco_namer0Úag_frameÚf_locals)r[rTrYrrrÚtest_ag_attributesæs
rÍ)Ú_implÚ getrefcountz CPython only)Úreasoncsxtƒ‰tt ˆ¡ƒtt ˆ¡ƒtt ˆ¡ƒtt ˆ¡ƒt ˆ¡}‡fdd„tdƒDƒ}tt ˆ¡ƒtt ˆ¡ƒtt ˆ¡ƒt ˆ¡|dksžt‚dd„|Dƒ}t ˆ¡|dksÂt‚tt ˆ¡ƒtt ˆ¡ƒtt ˆ¡ƒtt ˆ¡ƒ~tt ˆ¡ƒtt ˆ¡ƒtt ˆ¡ƒ~tt ˆ¡ƒtt ˆ¡ƒtt ˆ¡ƒt ˆ¡|ksft‚tt ˆ¡ƒdS)Ncsg|]}t ˆ¡‘qSr)rÎÚ_wrap)Ú.0rYrÈrrÚ
<listcomp>sztest_refcnt.<locals>.<listcomp>édcSsg|]}t |¡‘qSr)rÎZ_unwrap)rÒZboxrrrrÓséÈ)Úobjectrr„rÏrr0)Z
base_countÚlÚl2rrÈrÚ test_refcntús6
rÙcÃstƒIdHdSrr2rrrrÚlets_exception_out$srÚc
ÃsrttfD]d}tƒ}| d¡IdH|ƒ}t t¡}| |¡IdHW5QRX|jtks\t    ‚|j
j |kst    ‚qdSr) rLr8rÚr\rVrWr}rlÚtyper0rÚ    __cause__)ÚclsrTrNÚexcinforrrÚ.test_throw_StopIteration_or_StopAsyncIteration)s  rßcÃsFtdƒ}~tdƒD] }t ¡q|D]}t|ƒt|jtƒr$t‚q$dS)Nr'r))    rrÚgcrrÚ
issubclassÚcategoryÚRuntimeWarningr0)ZrecwarnrTrYÚmsgrrrÚ,test_no_spurious_unawaited_coroutine_warning6s 
råccstƒ}dVt|ŽdSr)r r )Z    old_hooksrrrÚlocal_asyncgen_hooksNsræc    sbdd„‰dd„‰tddƒtƒdks(t‚tˆdtƒdˆfksDt‚tˆdtƒˆˆfks`t‚tdˆdtƒˆdfks~t‚tdˆƒtƒdˆfksšt‚ˆˆf}t|Žtƒ|ks¸t‚t t¡td    dW5QRXt t¡td
dW5QRX‡‡fd d „}d dlm}g}|||fd}| ¡|     ¡|dˆˆfgksJt‚tƒˆˆfks^t‚dS)NcSsdSrrrSrrrÚoneVsz$test_gc_hooks_interface.<locals>.onecSsdSrrrSrrrÚtwoYsz$test_gc_hooks_interface.<locals>.two)NN)Ú    finalizer)Ú    firstiter)rérêé*Fcs&| tƒ¡tˆˆƒ| tƒ¡dSr)rr r )Úresults©rçrèrrÚ    in_threadps 
z*test_gc_hooks_interface.<locals>.in_threadr)ÚThread)Útargetr9)
r r r0rVrWÚ    TypeErrorÚ    threadingrïÚstartÚjoin)ræÚtuprîrïrìÚthreadrrírÚtest_gc_hooks_interfaceUs6
 
 
 
   r÷cƒsg‰g‰‡fdd„}‡‡fdd„}t‡fdd„ƒ}‡fdd„}|d    ƒ}|d
ƒ}||d    ƒIdHt||ƒ||d
ƒIdH|d ƒ}||d ƒIdHˆd d ddddddddddddgks¸t‚ˆdd…=|dƒ}| d¡}    | d¡}
ˆ d¡|     ¡|
 ¡| ¡IdHˆddgkst‚ˆdd…=ddlm} t    | |||fƒ\} } }| 
¡IdH| 
¡IdH~t dƒD]}t   ¡qj| ƒdksŠt‚ˆd d!d"d#d$gks¢t‚ˆr¬t‚ˆdd…=| 
¡IdH| 
¡IdH| 
¡IdHt|ƒt|ƒ}}~t dƒD]}t   ¡qü~t dƒD]}t   ¡qˆd%d&d'd(d)d*d+gksBt‚ˆdd…=tt    tˆƒƒ||gksht‚ˆ d,¡ˆd ¡IdHˆ d-¡ˆd. ¡IdHˆ d/¡ˆdd…=t dƒD]}t   ¡q¼| ƒdkrä|ƒdksèt‚ˆd,d0d-d1d/gkst‚dS)2Ncsˆ d |jjd¡¡dS)Nz firstiter {}Úident©rrrËrÌrS©Úeventsrrrê‚sz)test_gc_hooks_behavior.<locals>.firstitercs&ˆ d |jjd¡¡ˆ |¡dS)Nz finalizer {}rørùrS©rûZ to_finalizerrré…sz)test_gc_hooks_behavior.<locals>.finalizerc “sºˆ d |¡¡tdƒIdHz2ˆ d |¡¡tdƒIdHˆ d |¡¡W5ˆ d |¡¡tƒIdHXz"ˆ d |¡¡td    ƒIdHW5ˆ d |¡¡Xˆ d
 |¡¡dS) Nz
yield 1 {}rz mock_sleep {}z
yield 2 {}rzafter yield 2 {}z unwind 3 {}z
yield 3 {}r,zdone {})rrrr)rørúrrrT‰sz$test_gc_hooks_behavior.<locals>.agenc“sHˆ d |¡¡| d¡}ˆ d |¡¡|IdHˆ d |¡¡dS)Nzbefore asend {}zbefore send {}zafter asend {})rrr\)ÚiterrøZsenderrúrrÚanext_verboselyœs
 
 
z/test_gc_hooks_behavior.<locals>.anext_verboselyÚAÚBÚCzbefore asend Az before send Az    yield 1 Az after asend Azbefore asend Bz firstiter Bz before send Bz    yield 1 Bz after asend Bzbefore asend Cz firstiter Cz before send Cz    yield 1 Cz after asend CÚXz before closez firstiter Xr)Úrefr)z    yield 2 Azafter yield 2 Az mock_sleep Az    yield 3 Az
unwind 3 Az    yield 2 Cz    yield 2 Bzafter yield 2 Cz mock_sleep Cz    yield 3 Cz finalizer Bz finalizer Czbefore aclose Bzbefore aclose Crzafter aclose bothz mock_sleep Bz
unwind 3 C)rr r0r\rÚcloser]ÚweakrefrÚmapr7rràrÚidr/)rærêrérTrþZiterAZiterBZiterCZiterXr_r`rZrefAZrefBZrefCrYZidBZidCrrürÚtest_gc_hooks_behavior~s¼  
ü
 
 
 
 
 
   þ 
 
    þ 
 
 
 
 
  þr)TrVÚtypesr„Úcollections.abcrÄÚ    functoolsrràZconftestrÚrrr    r
r r r rrrrr1r3r4r6r=r¯r>Ú    coroutiner@rCrErGrOrQrZrardrerhrjrnrrrsrvrxrzr|r~r€r…Úexecr†rˆr‰rŒrrrr‘r˜rªr¬r­r³rºr¼r½rÁrÇrÍrÎÚmarkZskipifrÃrÙrÚrßråZfixturerær÷rrrrrÚ<module>s´  $ 
 
 
 
 
    
 
 
 
 
 
 
 
 
 
 
 ÿ
 
    
 
 E"F         
)
 
)