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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
U
Z±d‚8ã@sôddlZddlZddlZddlZddlZddlZddlZddlZddlmZm    Z    m
Z
m Z ddl m Z ddlmZddlmZmZddlmZdd    lmZd
d „Zd d „Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z dd„Z!dS) éN)Úasync_generatorÚyield_ÚisasyncgenfunctionÚasynccontextmanageré)Ú_core)Úwait_all_tasks_blocked)Ú signal_raiseÚis_main_thread)Úsleepé)ÚslowcCsttjƒdS©N)r    ÚsignalÚSIGINT©rrúOd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\trio/_core/tests/test_ki.pyÚki_selfsrc    Cs t t¡ tƒW5QRXdSr)ÚpytestÚraisesÚKeyboardInterruptrrrrrÚ test_ki_selfs rc
ƒst ¡r t‚t ¡}g‰‡fdd„}| |¡tƒIdHˆdgksHt‚tj‡fdd„ƒ}tjdd„ƒ‰|ƒtj‡fdd    „ƒ}tjd
d „ƒ‰|ƒIdHt ¡4IdHš}|     |¡|     ˆ¡W5QIdHRXtjd d „ƒ}|ƒD]}qätjdd„ƒ}|ƒD]}qþdS)Ncsˆ t ¡¡dSr)ÚappendrÚcurrently_ki_protectedr©ÚrecordrrÚcheck)sztest_ki_enabled.<locals>.checkTcst ¡s t‚ˆƒdSr©rrÚAssertionErrorr)Ú unprotectedrrÚ    protected0s z"test_ki_enabled.<locals>.protectedcSst ¡r t‚dSrrrrrrr5sz$test_ki_enabled.<locals>.unprotectedc“st ¡s t‚ˆƒIdHdSrrr)Ú aunprotectedrrÚ
aprotected;s z#test_ki_enabled.<locals>.aprotectedcÓst ¡r t‚dSrrrrrrr!@sz%test_ki_enabled.<locals>.aunprotectedcsst ¡s t‚dVdSrrrrrrÚ gen_protectedLs z&test_ki_enabled.<locals>.gen_protectedcsst ¡r t‚dVdSrrrrrrÚgen_unprotectedTs z(test_ki_enabled.<locals>.gen_unprotected)
rrrÚcurrent_trio_tokenÚ run_sync_soonrÚenable_ki_protectionÚdisable_ki_protectionÚ open_nurseryÚ
start_soon)Útokenrr r"Únurseryr#Ú_r$r)r!rrrÚtest_ki_enabled!s8  
 
 
 
 
 
 
 
r.cƒsHtj‡fdd„ƒ}tj‡fdd„ƒ}dd„‰|ƒIdH|ƒIdHdS)Nc“sˆdƒIdHdS)NTrr©Úchildrrr gsz6test_ki_enabled_after_yield_briefly.<locals>.protectedc“sˆdƒIdHdS)NFrrr/rrrksz8test_ki_enabled_after_yield_briefly.<locals>.unprotectedcÓsJddl}| ¡t ¡|ks t‚t ¡IdH| ¡t ¡|ksFt‚dS)Nr)Ú    tracebackÚ print_stackrrrÚ
checkpoint)Úexpectedr1rrrr0os z2test_ki_enabled_after_yield_briefly.<locals>.child)rr'r()r rrr/rÚ#test_ki_enabled_after_yield_brieflyfs     r5c
Ãsbtjtjdd„ƒƒ}|ƒt ¡r(t‚W5QRXt t¡|ƒ
t‚W5QRXW5QRXdS)Ncss*t ¡s t‚z
dVW5t ¡s$t‚XdSrrrrrrÚprotected_managers 
zEtest_generator_based_context_manager_throw.<locals>.protected_manager)    Ú
contextlibÚcontextmanagerrr'rrrrÚKeyError)r6rrrÚ*test_generator_based_context_manager_throw~s  r:c Ãstjtdd„ƒƒ}tjtdd„ƒƒ}ttjdd„ƒƒ}ttjdd„ƒƒ}tjd    d
„ƒ}tjd d „ƒ}||||||fD]œ}|ƒ2z3dHW}t ¡r~t‚q~6t|ƒrtt|ƒƒ4IdHšt ¡rÂt‚W5QIdHRXt     t
¡.t|ƒƒ4IdHš
t
‚W5QIdHRXW5QRXqtdS) NcÓs0t ¡s t‚ztƒIdHW5t ¡s*t‚XdSr©rrrrrrrrÚagen_protected1’s z-test_agen_protection.<locals>.agen_protected1cÓs0t ¡r t‚ztƒIdHW5t ¡r*t‚XdSrr;rrrrÚagen_unprotected1›s z/test_agen_protection.<locals>.agen_unprotected1cÓs0t ¡s t‚ztƒIdHW5t ¡s*t‚XdSrr;rrrrÚagen_protected2¥s z-test_agen_protection.<locals>.agen_protected2cÓs0t ¡r t‚ztƒIdHW5t ¡r*t‚XdSrr;rrrrÚagen_unprotected2®s z/test_agen_protection.<locals>.agen_unprotected2cSs*t ¡s t‚z
dVW5t ¡s$t‚XdSrrrrrrÚagen_protected3¸s 
z-test_agen_protection.<locals>.agen_protected3cSs*t ¡r t‚z
dVW5t ¡r$t‚XdSrrrrrrÚagen_unprotected3Às 
z/test_agen_protection.<locals>.agen_unprotected3) rr'rr(rrrrrrr9)r<r=r>r?r@rAZagen_fnr-rrrÚtest_agen_protection‘s>    
 
ú rBcCst ¡s t‚dSrrrrrrÚtest_ki_disabled_out_of_contextásrCcsBdd„‰‡fdd„‰tj‡‡fdd„ƒ}ˆƒ|ƒˆƒs>t‚dS)NcSst ¡Sr)rrrrrrÚnestedfunctionæsz/test_ki_disabled_in_del.<locals>.nestedfunctioncst ¡s t‚ˆƒst‚dSrrr)rDrrÚ__del__és z(test_ki_disabled_in_del.<locals>.__del__cs t ¡r t‚ˆƒrt‚ˆƒdSrrr©rErDrrÚ outerfunctionís 
z.test_ki_disabled_in_del.<locals>.outerfunction)rr(r)rGrrFrÚtest_ki_disabled_in_delås rHc    shdd„‰dd„‰tdƒtƒ‰‡‡‡fdd„}t t¡t |¡W5QRXˆdd    d
hks`t‚td ƒtƒ‰‡‡‡fd d „}t t¡t |¡W5QRXˆdd    dhks°t‚tdƒdd„}t t¡t |¡W5QRXtdƒGdd„dƒ}dd„}t t¡tj||ƒgdW5QRXtdƒtjdd„ƒ}t |¡tdƒtjdd„ƒ}t |¡tdƒtjdd„ƒ}t |¡tdƒtjdd„ƒ}t |¡td ƒtjd!d„ƒ}t t¡t |¡W5QRXtd"ƒg‰‡fd#d„}tj|d$d%ˆd&gkst‚g‰t t¡t |¡W5QRXˆgksDt‚td'ƒtjd(d„ƒ}t |¡dS))NcÓs>zt ¡IdHqWn$tjk
r8| |d¡YnXdS)Nz ok)rr3Ú    CancelledÚadd©ÚnamerrrrÚsleeperùsz)test_ki_protection_works.<locals>.sleepercÓsžztdt ¡ƒtƒWn:tk
rRtdƒt ¡IdH| |d¡‚YnHXtdƒzt dd„¡IdHWn$tjk
r˜| |d¡YnXdS)Nzkilling, protection =zraised!z     raise okz didn't raise!cSstjjSr)rÚAbortZ    SUCCEEDED©r-rrrÚ<lambda>óz:test_ki_protection_works.<locals>.raiser.<locals>.<lambda>z
 cancel ok)    Úprintrrrrr3rJÚwait_task_rescheduledrIrKrrrÚraisers
z(test_ki_protection_works.<locals>.raiserzcheck 1c
“sPt ¡4IdHš0}| ˆdˆ¡| ˆdˆ¡| ˆdˆ¡W5QIdHRXdS©NÚs1Ús2Zr1)rr)r*©r,©rTrrMrrÚcheck_unprotected_killsz8test_ki_protection_works.<locals>.check_unprotected_killzs1 okzs2 okz r1 raise okzcheck 2c
“sVt ¡4IdHš6}| ˆdˆ¡| ˆdˆ¡| t ˆ¡dˆ¡W5QIdHRXdSrU)rr)r*r'rXrYrrÚcheck_protected_kill(sz6test_ki_protection_works.<locals>.check_protected_killz r1 cancel okzcheck 3c“s$t ¡‰‡‡fdd„‰ˆ ˆ¡dS)NcsDt ¡s t‚zˆ ˆ¡Wn$tjk
r>tdƒtƒYnXdS)Nz kill! kill!)rrrr&ZRunFinishedErrorrRrr©Úkill_during_shutdownr+rrr]:s  zZtest_ki_protection_works.<locals>.check_kill_during_shutdown.<locals>.kill_during_shutdown)rr%r&rrr\rÚcheck_kill_during_shutdown7s    z<test_ki_protection_works.<locals>.check_kill_during_shutdownzcheck 4c@seZdZdd„ZdS)z3test_ki_protection_works.<locals>.InstrumentOfDeathcSs
tƒdSr©r)ÚselfrrrÚ
before_runLsz>test_ki_protection_works.<locals>.InstrumentOfDeath.before_runN)Ú__name__Ú
__module__Ú __qualname__rarrrrÚInstrumentOfDeathKsrecÓst ¡IdHdSr)rr3rrrrÚmainOsz&test_ki_protection_works.<locals>.main)Z instrumentszcheck 5c    Ós:t ¡s t‚tƒt t¡t ¡IdHW5QRXdSr)rrrrrrrZcheckpoint_if_cancelledrrrrrfXs  zcheck 6c    Ósdt ¡s t‚tƒt ¡IdHt ¡IdHt ¡IdHt t¡t ¡IdHW5QRXdSr)    rrrrZcancel_shielded_checkpointrrrr3rrrrrfds  zcheck 7c    “sft ¡s t‚tƒt ¡‰‡fdd„}t |¡IdHdks>t‚t t¡t     ¡IdHW5QRXdS)Ncst ˆt d¡¡tjjS)Nr )rÚ
rescheduleÚoutcomeÚValuerNÚFAILEDrO©ZtaskrrÚabortysú5test_ki_protection_works.<locals>.main.<locals>.abortr )
rrrrÚ current_taskrSrrrr3©rlrrkrrfss   zcheck 8c    “sbt ¡s t‚tƒt ¡‰‡fdd„}t t¡t |¡IdHsFt‚W5QRXt     ¡IdHdS)Ncst |¡}t ˆ|¡tjjSr)rhÚcapturerrgrNrj)Z raise_cancelÚresultrkrrrlŒs
 rm)
rrrrrnrrrrSr3rorrkrrf†s   zcheck 9cÓs
tƒdSrr_rrrrrfszcheck 10c    “sDt ¡r t‚tƒˆ d¡t t¡tdƒIdHW5QRXdS)NÚoké
)    rrrrrrrrr rrrrrf©s
 
 T)Z*restrict_keyboard_interrupt_to_checkpointsrrzcheck 11c
Ós¢t ¡s t‚t ¡„}| ¡t tj¡t ¡IdHW5QRXt    ƒt t
¡t ¡IdHW5QRXt tj¡t ¡IdHW5QRXW5QRXdSr) rrrZ CancelScopeÚcancelrrrIr3rr)Z cancel_scoperrrrfÀs 
 )    rRÚsetrrrrÚrunrr')rZr[r^rerfrrYrÚtest_ki_protection_worksøsr    
 
 
    
 
 
 
 
 
 
 
rwc
sXzBt tj¡}dd„‰‡fdd„}t |¡t tj¡ˆks@t‚W5t tj|¡XdS)NcSsdSrr)ÚsignumÚframerrrÚ
my_handlerÖsz,test_ki_is_good_neighbor.<locals>.my_handlerc“st tjˆ¡dSr)rrr©rzrrrfÙsz&test_ki_is_good_neighbor.<locals>.main)rrÚ    getsignalrrvr)Úorigrfrr{rÚtest_ki_is_good_neighborÐs  
r~c    CsNt ¡}tj|j}z&tj|j=tjdd„ƒ}t |¡W5|tj|j<XdS)NcÓst tj¡tjkst‚dSr)rr|rÚdefault_int_handlerrrrrrÚinnerïsz*test_ki_with_broken_threads.<locals>.inner)Ú    threadingÚ main_threadÚ_activeÚidentrr'rv)ÚthreadÚoriginalr€rrrÚtest_ki_with_broken_threadsäs 
 
r‡)"rhrÚsysÚosrrr7ÚtimerrrrÚrZtestingrZ_utilr    r
Z    _timeoutsr Ztutilr rrr.r5r:rBrCrHrwr~r‡rrrrÚ<module>s2    EPY