File tree Expand file tree Collapse file tree 3 files changed +10
-11
lines changed Expand file tree Collapse file tree 3 files changed +10
-11
lines changed Original file line number Diff line number Diff line change @@ -94,11 +94,11 @@ def sleep(t):
9494
9595################################################################################
9696# "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() .
9898# For internal use only. Some constructs, like `await event.wait()`,
9999# work by NOT re-scheduling the task which calls wait(), but by
100100# having some other task schedule it later.
101- class _Never :
101+ class _NeverSingletonGenerator :
102102 def __init__ (self ):
103103 self .state = None
104104 self .exc = StopIteration ()
@@ -117,7 +117,10 @@ def __next__(self):
117117 self .exc .__traceback__ = None
118118 raise self .exc
119119
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
121124
122125
123126################################################################################
@@ -150,13 +153,11 @@ def _dequeue(self, s):
150153
151154 async def queue_read (self , s ):
152155 self ._enqueue (s , 0 )
153- _never .state = False
154- await _never
156+ await _never ()
155157
156158 async def queue_write (self , s ):
157159 self ._enqueue (s , 1 )
158- _never .state = False
159- await _never
160+ await _never ()
160161
161162 def remove (self , task ):
162163 while True :
Original file line number Diff line number Diff line change @@ -62,8 +62,7 @@ async def wait(self):
6262 self .waiting .push_head (core .cur_task )
6363 # Set calling task's data to the event's queue so it can be removed if needed
6464 core .cur_task .data = self .waiting
65- core ._never .state = False
66- await core ._never
65+ await core ._never ()
6766 return True
6867
6968
Original file line number Diff line number Diff line change @@ -69,8 +69,7 @@ async def acquire(self):
6969 # Set calling task's data to the lock's queue so it can be removed if needed
7070 core .cur_task .data = self .waiting
7171 try :
72- core ._never .state = False
73- await core ._never
72+ await core ._never ()
7473 except core .CancelledError as er :
7574 if self .state == core .cur_task :
7675 # Cancelled while pending on resume, schedule next waiting Task
You can’t perform that action at this time.
0 commit comments