mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
asyncio: Tulip issue 112: Inline make_handle() into Handle constructor
This commit is contained in:
parent
136fea253e
commit
dc62b7e261
6 changed files with 9 additions and 14 deletions
|
@ -240,7 +240,7 @@ class BaseEventLoop(events.AbstractEventLoop):
|
||||||
Any positional arguments after the callback will be passed to
|
Any positional arguments after the callback will be passed to
|
||||||
the callback when it is called.
|
the callback when it is called.
|
||||||
"""
|
"""
|
||||||
handle = events.make_handle(callback, args)
|
handle = events.Handle(callback, args)
|
||||||
self._ready.append(handle)
|
self._ready.append(handle)
|
||||||
return handle
|
return handle
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ class Handle:
|
||||||
"""Object returned by callback registration methods."""
|
"""Object returned by callback registration methods."""
|
||||||
|
|
||||||
def __init__(self, callback, args):
|
def __init__(self, callback, args):
|
||||||
|
assert not isinstance(callback, Handle), 'A Handle is not a callback'
|
||||||
self._callback = callback
|
self._callback = callback
|
||||||
self._args = args
|
self._args = args
|
||||||
self._cancelled = False
|
self._cancelled = False
|
||||||
|
@ -42,12 +43,6 @@ class Handle:
|
||||||
self = None # Needed to break cycles when an exception occurs.
|
self = None # Needed to break cycles when an exception occurs.
|
||||||
|
|
||||||
|
|
||||||
def make_handle(callback, args):
|
|
||||||
# TODO: Inline this? Or make it a private EventLoop method?
|
|
||||||
assert not isinstance(callback, Handle), 'A Handle is not a callback'
|
|
||||||
return Handle(callback, args)
|
|
||||||
|
|
||||||
|
|
||||||
class TimerHandle(Handle):
|
class TimerHandle(Handle):
|
||||||
"""Object returned by timed callback registration methods."""
|
"""Object returned by timed callback registration methods."""
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,7 @@ class BaseSelectorEventLoop(base_events.BaseEventLoop):
|
||||||
|
|
||||||
def add_reader(self, fd, callback, *args):
|
def add_reader(self, fd, callback, *args):
|
||||||
"""Add a reader callback."""
|
"""Add a reader callback."""
|
||||||
handle = events.make_handle(callback, args)
|
handle = events.Handle(callback, args)
|
||||||
try:
|
try:
|
||||||
key = self._selector.get_key(fd)
|
key = self._selector.get_key(fd)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
@ -167,7 +167,7 @@ class BaseSelectorEventLoop(base_events.BaseEventLoop):
|
||||||
|
|
||||||
def add_writer(self, fd, callback, *args):
|
def add_writer(self, fd, callback, *args):
|
||||||
"""Add a writer callback.."""
|
"""Add a writer callback.."""
|
||||||
handle = events.make_handle(callback, args)
|
handle = events.Handle(callback, args)
|
||||||
try:
|
try:
|
||||||
key = self._selector.get_key(fd)
|
key = self._selector.get_key(fd)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
|
|
@ -216,7 +216,7 @@ class TestLoop(base_events.BaseEventLoop):
|
||||||
raise AssertionError("Time generator is not finished")
|
raise AssertionError("Time generator is not finished")
|
||||||
|
|
||||||
def add_reader(self, fd, callback, *args):
|
def add_reader(self, fd, callback, *args):
|
||||||
self.readers[fd] = events.make_handle(callback, args)
|
self.readers[fd] = events.Handle(callback, args)
|
||||||
|
|
||||||
def remove_reader(self, fd):
|
def remove_reader(self, fd):
|
||||||
self.remove_reader_count[fd] += 1
|
self.remove_reader_count[fd] += 1
|
||||||
|
@ -235,7 +235,7 @@ class TestLoop(base_events.BaseEventLoop):
|
||||||
handle._args, args)
|
handle._args, args)
|
||||||
|
|
||||||
def add_writer(self, fd, callback, *args):
|
def add_writer(self, fd, callback, *args):
|
||||||
self.writers[fd] = events.make_handle(callback, args)
|
self.writers[fd] = events.Handle(callback, args)
|
||||||
|
|
||||||
def remove_writer(self, fd):
|
def remove_writer(self, fd):
|
||||||
self.remove_writer_count[fd] += 1
|
self.remove_writer_count[fd] += 1
|
||||||
|
|
|
@ -64,7 +64,7 @@ class _UnixSelectorEventLoop(selector_events.BaseSelectorEventLoop):
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
raise RuntimeError(str(exc))
|
raise RuntimeError(str(exc))
|
||||||
|
|
||||||
handle = events.make_handle(callback, args)
|
handle = events.Handle(callback, args)
|
||||||
self._signal_handlers[sig] = handle
|
self._signal_handlers[sig] = handle
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -1660,12 +1660,12 @@ class HandleTests(unittest.TestCase):
|
||||||
'<function HandleTests.test_handle.<locals>.callback'))
|
'<function HandleTests.test_handle.<locals>.callback'))
|
||||||
self.assertTrue(r.endswith('())<cancelled>'), r)
|
self.assertTrue(r.endswith('())<cancelled>'), r)
|
||||||
|
|
||||||
def test_make_handle(self):
|
def test_handle(self):
|
||||||
def callback(*args):
|
def callback(*args):
|
||||||
return args
|
return args
|
||||||
h1 = asyncio.Handle(callback, ())
|
h1 = asyncio.Handle(callback, ())
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
AssertionError, asyncio.events.make_handle, h1, ())
|
AssertionError, asyncio.Handle, h1, ())
|
||||||
|
|
||||||
@unittest.mock.patch('asyncio.events.logger')
|
@unittest.mock.patch('asyncio.events.logger')
|
||||||
def test_callback_with_exception(self, log):
|
def test_callback_with_exception(self, log):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue