bpo-23819: asyncio: Replace AssertionError with TypeError where it makes sense (GH-29894)

This commit is contained in:
Kumar Aditya 2021-12-07 05:10:35 +05:30 committed by GitHub
parent 8518ee348c
commit 265918bb1d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 9 deletions

View file

@ -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()

View file

@ -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

View file

@ -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():

View file

@ -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()

View file

@ -0,0 +1 @@
Replaced asserts with exceptions in asyncio, patch by Kumar Aditya.