File tree 3 files changed +10
-11
lines changed
3 files changed +10
-11
lines changed Original file line number Diff line number Diff line change @@ -94,11 +94,11 @@ def sleep(t):
94
94
95
95
################################################################################
96
96
# "Never schedule" object"
97
- # Don't re-schedule the object that awaits the _never singleton .
97
+ # Don't re-schedule the object that awaits _never() .
98
98
# For internal use only. Some constructs, like `await event.wait()`,
99
99
# work by NOT re-scheduling the task which calls wait(), but by
100
100
# having some other task schedule it later.
101
- class _Never :
101
+ class _NeverSingletonGenerator :
102
102
def __init__ (self ):
103
103
self .state = None
104
104
self .exc = StopIteration ()
@@ -117,7 +117,10 @@ def __next__(self):
117
117
self .exc .__traceback__ = None
118
118
raise self .exc
119
119
120
- _never = _Never ()
120
+ def _never (sgen = _NeverSingletonGenerator ()):
121
+ # assert sgen.state is None, "Check for a missing `await` in your code"
122
+ sgen .state = False
123
+ return sgen
121
124
122
125
123
126
################################################################################
@@ -150,13 +153,11 @@ def _dequeue(self, s):
150
153
151
154
async def queue_read (self , s ):
152
155
self ._enqueue (s , 0 )
153
- _never .state = False
154
- await _never
156
+ await _never ()
155
157
156
158
async def queue_write (self , s ):
157
159
self ._enqueue (s , 1 )
158
- _never .state = False
159
- await _never
160
+ await _never ()
160
161
161
162
def remove (self , task ):
162
163
while True :
Original file line number Diff line number Diff line change @@ -62,8 +62,7 @@ async def wait(self):
62
62
self .waiting .push_head (core .cur_task )
63
63
# Set calling task's data to the event's queue so it can be removed if needed
64
64
core .cur_task .data = self .waiting
65
- core ._never .state = False
66
- await core ._never
65
+ await core ._never ()
67
66
return True
68
67
69
68
Original file line number Diff line number Diff line change @@ -69,8 +69,7 @@ async def acquire(self):
69
69
# Set calling task's data to the lock's queue so it can be removed if needed
70
70
core .cur_task .data = self .waiting
71
71
try :
72
- core ._never .state = False
73
- await core ._never
72
+ await core ._never ()
74
73
except core .CancelledError as er :
75
74
if self .state == core .cur_task :
76
75
# Cancelled while pending on resume, schedule next waiting Task
You can’t perform that action at this time.
0 commit comments