mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
bpo-23819: asyncio: Replace AssertionError with TypeError where it makes sense (GH-29894)
This commit is contained in:
parent
8518ee348c
commit
265918bb1d
5 changed files with 15 additions and 9 deletions
|
@ -706,6 +706,8 @@ 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.
|
||||||
"""
|
"""
|
||||||
|
if delay is None:
|
||||||
|
raise TypeError('delay must not be None')
|
||||||
timer = self.call_at(self.time() + delay, callback, *args,
|
timer = self.call_at(self.time() + delay, callback, *args,
|
||||||
context=context)
|
context=context)
|
||||||
if timer._source_traceback:
|
if timer._source_traceback:
|
||||||
|
@ -717,6 +719,8 @@ class BaseEventLoop(events.AbstractEventLoop):
|
||||||
|
|
||||||
Absolute time corresponds to the event loop's time() method.
|
Absolute time corresponds to the event loop's time() method.
|
||||||
"""
|
"""
|
||||||
|
if when is None:
|
||||||
|
raise TypeError("when cannot be None")
|
||||||
self._check_closed()
|
self._check_closed()
|
||||||
if self._debug:
|
if self._debug:
|
||||||
self._check_thread()
|
self._check_thread()
|
||||||
|
|
|
@ -101,7 +101,6 @@ class TimerHandle(Handle):
|
||||||
__slots__ = ['_scheduled', '_when']
|
__slots__ = ['_scheduled', '_when']
|
||||||
|
|
||||||
def __init__(self, when, callback, args, loop, context=None):
|
def __init__(self, when, callback, args, loop, context=None):
|
||||||
assert when is not None
|
|
||||||
super().__init__(callback, args, loop, context)
|
super().__init__(callback, args, loop, context)
|
||||||
if self._source_traceback:
|
if self._source_traceback:
|
||||||
del self._source_traceback[-1]
|
del self._source_traceback[-1]
|
||||||
|
@ -661,7 +660,8 @@ class BaseDefaultEventLoopPolicy(AbstractEventLoopPolicy):
|
||||||
def set_event_loop(self, loop):
|
def set_event_loop(self, loop):
|
||||||
"""Set the event loop."""
|
"""Set the event loop."""
|
||||||
self._local._set_called = True
|
self._local._set_called = True
|
||||||
assert loop is None or isinstance(loop, AbstractEventLoop)
|
if loop is not None and not isinstance(loop, AbstractEventLoop):
|
||||||
|
raise TypeError(f"loop must be an instance of AbstractEventLoop or None, not '{type(loop).__name__}'")
|
||||||
self._local._loop = loop
|
self._local._loop = loop
|
||||||
|
|
||||||
def new_event_loop(self):
|
def new_event_loop(self):
|
||||||
|
@ -745,7 +745,8 @@ def set_event_loop_policy(policy):
|
||||||
|
|
||||||
If policy is None, the default policy is restored."""
|
If policy is None, the default policy is restored."""
|
||||||
global _event_loop_policy
|
global _event_loop_policy
|
||||||
assert policy is None or isinstance(policy, AbstractEventLoopPolicy)
|
if policy is not None and not isinstance(policy, AbstractEventLoopPolicy):
|
||||||
|
raise TypeError(f"policy must be an instance of AbstractEventLoopPolicy or None, not '{type(policy).__name__}'")
|
||||||
_event_loop_policy = policy
|
_event_loop_policy = policy
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -255,6 +255,8 @@ class BaseEventLoopTests(test_utils.TestCase):
|
||||||
self.assertIsInstance(h, asyncio.TimerHandle)
|
self.assertIsInstance(h, asyncio.TimerHandle)
|
||||||
self.assertIn(h, self.loop._scheduled)
|
self.assertIn(h, self.loop._scheduled)
|
||||||
self.assertNotIn(h, self.loop._ready)
|
self.assertNotIn(h, self.loop._ready)
|
||||||
|
with self.assertRaises(TypeError, msg="delay must not be None"):
|
||||||
|
self.loop.call_later(None, cb)
|
||||||
|
|
||||||
def test_call_later_negative_delays(self):
|
def test_call_later_negative_delays(self):
|
||||||
calls = []
|
calls = []
|
||||||
|
@ -286,6 +288,8 @@ class BaseEventLoopTests(test_utils.TestCase):
|
||||||
# tolerate a difference of +800 ms because some Python buildbots
|
# tolerate a difference of +800 ms because some Python buildbots
|
||||||
# are really slow
|
# are really slow
|
||||||
self.assertLessEqual(dt, 0.9, dt)
|
self.assertLessEqual(dt, 0.9, dt)
|
||||||
|
with self.assertRaises(TypeError, msg="when cannot be None"):
|
||||||
|
self.loop.call_at(None, cb)
|
||||||
|
|
||||||
def check_thread(self, loop, debug):
|
def check_thread(self, loop, debug):
|
||||||
def cb():
|
def cb():
|
||||||
|
|
|
@ -2322,10 +2322,6 @@ class TimerTests(unittest.TestCase):
|
||||||
self.assertIsNone(h._callback)
|
self.assertIsNone(h._callback)
|
||||||
self.assertIsNone(h._args)
|
self.assertIsNone(h._args)
|
||||||
|
|
||||||
# when cannot be None
|
|
||||||
self.assertRaises(AssertionError,
|
|
||||||
asyncio.TimerHandle, None, callback, args,
|
|
||||||
self.loop)
|
|
||||||
|
|
||||||
def test_timer_repr(self):
|
def test_timer_repr(self):
|
||||||
self.loop.get_debug.return_value = False
|
self.loop.get_debug.return_value = False
|
||||||
|
@ -2592,7 +2588,7 @@ class PolicyTests(unittest.TestCase):
|
||||||
policy = asyncio.DefaultEventLoopPolicy()
|
policy = asyncio.DefaultEventLoopPolicy()
|
||||||
old_loop = policy.get_event_loop()
|
old_loop = policy.get_event_loop()
|
||||||
|
|
||||||
self.assertRaises(AssertionError, policy.set_event_loop, object())
|
self.assertRaises(TypeError, policy.set_event_loop, object())
|
||||||
|
|
||||||
loop = policy.new_event_loop()
|
loop = policy.new_event_loop()
|
||||||
policy.set_event_loop(loop)
|
policy.set_event_loop(loop)
|
||||||
|
@ -2608,7 +2604,7 @@ class PolicyTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_set_event_loop_policy(self):
|
def test_set_event_loop_policy(self):
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
AssertionError, asyncio.set_event_loop_policy, object())
|
TypeError, asyncio.set_event_loop_policy, object())
|
||||||
|
|
||||||
old_policy = asyncio.get_event_loop_policy()
|
old_policy = asyncio.get_event_loop_policy()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Replaced asserts with exceptions in asyncio, patch by Kumar Aditya.
|
Loading…
Add table
Add a link
Reference in a new issue