zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
U
¸ý°d(ã@s
ddlmZddlZddlZddlmZddlmZddlmZddl    m    Z    ddl    m
Z
dd    l m Z zDdd
l mZdd l mZdd l mZed ddZedddZdZWn ek
rÈdZZZYnXeedk    dƒGdd„de ƒƒZeedk    dƒGdd„de ƒƒZdS)é)Úprint_functionN)Úpartial)Ú
skipUnless)ÚskipIf)Úgreenlet)Ú
getcurrenté)ÚTestCase)ÚContext)Ú
ContextVar)Ú copy_contextÚid)ÚdefaultÚvarzContextVar not supportedc@sleZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z dd„ZdS)ÚContextVarsTestscOstƒj||ŽS©N)r Úrun)ÚselfÚargsÚkwargs©rúVd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\greenlet/tests/test_contextvars.pyÚ _new_ctx_run"szContextVarsTests._new_ctx_runcCsbt}|dkr| | ¡¡n| | ¡|¡| |¡tdƒD]}|| ¡d7<|ƒq>dS)Nér)ÚID_VARÚ assertIsNoneÚgetÚ assertEqualÚsetÚrange)rÚ greenlet_idÚcallbackÚcountsÚexpectZctx_varÚ_rrrÚ
_increment%s
 zContextVarsTests._incrementc    sVt d¡tƒj‰tdd„tdƒDƒƒ‰‡‡‡‡fdd„tddƒDƒ}|D](}ˆdkr`tƒ|_qJˆd    krJtƒj|_qJtd
ƒD]*}ˆt ¡d7<|D] }| ¡q˜q|ˆd krÈt    |ƒD] }| ¡q¸n|D] }| ¡qÌ|D]4}ˆ 
|j ¡ˆd krˆ  |j¡qވ  |j¡qވd    kr8ˆ ˆddddd d œ¡nˆ tˆ ¡ƒtd
gƒ¡dS)Nrcss|]}|dfVqdS)rNr©Ú.0ÚirrrÚ    <genexpr>4sz1ContextVarsTests._test_context.<locals>.<genexpr>éc
sXg|]P}ttˆdkr$ttƒjˆjƒnˆj|ˆˆˆdkr>|dnˆdkrJdnddƒ‘qS)rÚsharer)rrrN)r r!r"r#)rrr rr%r&©r!r"Ú propagate_byrrrÚ
<listcomp>6sóýþöz2ContextVarsTests._test_context.<locals>.<listcomp>rrr+rré)rrréé)rrrÚswitchÚdictrr Ú
gr_contextrÚreversedÚ
assertTrueZdeadrZassertIsNotNonerÚvalues)rr-ZletsZletr(rr,rÚ _test_context0s8
ò
 
 
 
zContextVarsTests._test_contextcCs| |jd¡dS)Nr©rr8©rrrrÚ&test_context_propagated_by_context_runlsz7ContextVarsTests.test_context_propagated_by_context_runcCs| |jd¡dS)Nrr9r:rrrÚ,test_context_propagated_by_setting_attributeosz=ContextVarsTests.test_context_propagated_by_setting_attributecCs| |jd¡dSrr9r:rrrÚtest_context_not_propagatedrsz,ContextVarsTests.test_context_not_propagatedcCs| |jd¡dS)Nr+r9r:rrrÚtest_context_sharedusz$ContextVarsTests.test_context_sharedcCs@ttƒjƒ}ttƒjƒ}| tƒj¡| tƒj¡| ¡dSr)rr rr2r©rÚlet1Zlet2rrrÚtest_break_ctxvarsxs
  z#ContextVarsTests.test_break_ctxvarscCsLttƒjƒ}ttƒjƒ}tƒ|_tƒ|_| ¡| ¡| ¡| ¡dSr)rrr2r r4r?rrrÚ9test_not_broken_if_using_attribute_instead_of_context_run‚s  zJContextVarsTests.test_not_broken_if_using_attribute_instead_of_context_runc    st d¡‡‡fdd„}t|ƒ‰ˆ td¡
ˆ`W5QRXˆ ˆj¡ˆ ¡\}}ˆ |ˆj¡ˆ     |td¡ˆ     |td¡ˆ     | 
tj ¡d¡|ˆ_ˆ ¡ˆ ˆj|¡dˆ_ˆ ¡ˆ ˆj|¡dˆ_ˆ ¡ˆ ˆj¡d‰t   ¡ˆ     t |¡d¡ˆ     t |¡d¡dS)NcsXˆ t ¡¡ˆ ˆj¡t d¡ˆ ˆjt¡ˆ t ¡d¡ˆ ˆjtd¡ˆj}dˆ_ˆ t ¡¡ˆ ˆj¡t d¡ˆ ˆjt¡ˆ t ¡d¡ˆ ˆjtd¡ˆj}tƒj     
||f¡ˆ t ¡d¡|ˆ_ˆ t ¡d¡tƒj     
¡ˆ t ¡¡ˆ ˆj¡|ˆ_ˆ t ¡d¡tƒj     
¡ˆ t ¡¡ˆ ˆj¡dS)Nrr) rrrr4rZassertIsInstancer
rrÚparentr2)Ú old_contextÚ new_context©ÚgrrrrÚtargets6 
 
   zFContextVarsTests.test_context_assignment_while_running.<locals>.targetzcan't delete context attributerr)rrrÚassertRaisesRegexÚAttributeErrorr4rr2ÚassertIsrrrÚgcZcollectÚsysÚ getrefcount)rrHrDrErrFrÚ%test_context_assignment_while_runningŒs0
)   z6ContextVarsTests.test_context_assignment_while_runningc    sXddl}t d¡tƒ‰| ¡‰| ¡‰| ¡‰| ¡‰g‰‡‡‡fdd„‰‡‡‡‡‡fdd„}|j|dd}| ¡ˆ d¡ˆd}| t    d    ¡t
|d
ƒW5QRX| t    d    ¡ d|_ W5QRXˆ ¡ˆ d¡|  |j ˆ¡|  |j td ¡d|_ ˆ ¡| d¡|  ˆ|dg¡| |j ¡ˆ|_ |  |j ˆ¡ˆdd…=d}d}dS) NrcsDt d¡ˆ ¡ˆ d¡t d¡tƒj ¡ˆ t ¡¡dS)Nré
r)ÚVAR_VARrÚwaitrrCr2Úappendrr)ÚholderÚ
is_runningÚshould_suspendrrÚgreenlet_in_thread_fnßs 
 
 
 zXContextVarsTests.test_context_assignment_different_thread.<locals>.greenlet_in_thread_fncsFtˆƒ}ˆ|_ˆ |¡| ¡ˆ ¡ˆ d¡| ¡~tƒdS)NrP)rr4rSr2rrR)rG)ÚctxÚ did_suspendrWrTÚ should_exitrrÚ    thread_fnçs
 
zLContextVarsTests.test_context_assignment_different_thread.<locals>.thread_fnT)rHÚdaemonrPzrunning in a differentr4r)Ú    threadingrQrr
ÚEventÚThreadÚstartrRrIÚ
ValueErrorÚgetattrr4rKrÚjoinr)rr]r[ÚthreadrGr)rXrYrWrTrUrZrVrÚ(test_context_assignment_different_threadÔs@
 
 
 
 
z9ContextVarsTests.test_context_assignment_different_threadc    Cs(tƒ}| td¡ ||_W5QRXdS)Nz6greenlet context must be a contextvars.Context or None)rrIÚ    TypeErrorr4)rÚgrrrÚ"test_context_assignment_wrong_types
ÿz3ContextVarsTests.test_context_assignment_wrong_typeN)Ú__name__Ú
__module__Ú __qualname__rr%r8r;r<r=r>rArBrOrerhrrrrr s <
 
HBrzContextVar supportedc@seZdZdd„ZdS)ÚNoContextVarsTestsc    Cs¢ttƒjƒ}| t|dƒ¡| t¡t|dƒW5QRX| t¡ d|_W5QRX| ¡| t¡t|dƒW5QRX| t¡ d|_W5QRX~dS)Nr4)    rrr2Z assertFalseÚhasattrÚ assertRaisesrJrbr4)rr@rrrÚtest_contextvars_errorss     z*NoContextVarsTests.test_contextvars_errorsN)rirjrkrorrrrrlsrl)Ú
__future__rrLrMÚ    functoolsrZunittestrrrrÚr    Z contextvarsr
r r rrQÚ ImportErrorrrlrrrrÚ<module>s,             }