diff options
author | Kumar Aditya <rahuladitya303@gmail.com> | 2021-12-06 23:40:35 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-06 23:40:35 (GMT) |
commit | 265918bb1d782ab85c7dbc835eb62d6cfc2145b7 (patch) | |
tree | d3f63cd07b8465aed76dfc04839d388c28bf87c2 | |
parent | 8518ee348c18da7e150f5e42b3424c86f7c0a3d8 (diff) | |
download | cpython-265918bb1d782ab85c7dbc835eb62d6cfc2145b7.zip cpython-265918bb1d782ab85c7dbc835eb62d6cfc2145b7.tar.gz cpython-265918bb1d782ab85c7dbc835eb62d6cfc2145b7.tar.bz2 |
bpo-23819: asyncio: Replace AssertionError with TypeError where it makes sense (GH-29894)
-rw-r--r-- | Lib/asyncio/base_events.py | 4 | ||||
-rw-r--r-- | Lib/asyncio/events.py | 7 | ||||
-rw-r--r-- | Lib/test/test_asyncio/test_base_events.py | 4 | ||||
-rw-r--r-- | Lib/test/test_asyncio/test_events.py | 8 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2021-12-02-14-37-30.bpo-23819.An6vkT.rst | 1 |
5 files changed, 15 insertions, 9 deletions
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index 054d7b4..cfaf082 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -706,6 +706,8 @@ class BaseEventLoop(events.AbstractEventLoop): Any positional arguments after the callback will be passed to 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, context=context) if timer._source_traceback: @@ -717,6 +719,8 @@ class BaseEventLoop(events.AbstractEventLoop): Absolute time corresponds to the event loop's time() method. """ + if when is None: + raise TypeError("when cannot be None") self._check_closed() if self._debug: self._check_thread() diff --git a/Lib/asyncio/events.py b/Lib/asyncio/events.py index 7abaaca..d91fe8d 100644 --- a/Lib/asyncio/events.py +++ b/Lib/asyncio/events.py @@ -101,7 +101,6 @@ class TimerHandle(Handle): __slots__ = ['_scheduled', '_when'] def __init__(self, when, callback, args, loop, context=None): - assert when is not None super().__init__(callback, args, loop, context) if self._source_traceback: del self._source_traceback[-1] @@ -661,7 +660,8 @@ class BaseDefaultEventLoopPolicy(AbstractEventLoopPolicy): def set_event_loop(self, loop): """Set the event loop.""" 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 def new_event_loop(self): @@ -745,7 +745,8 @@ def set_event_loop_policy(policy): If policy is None, the default policy is restored.""" 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 diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py index b522fac..d812bc9 100644 --- a/Lib/test/test_asyncio/test_base_events.py +++ b/Lib/test/test_asyncio/test_base_events.py @@ -255,6 +255,8 @@ class BaseEventLoopTests(test_utils.TestCase): self.assertIsInstance(h, asyncio.TimerHandle) self.assertIn(h, self.loop._scheduled) 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): calls = [] @@ -286,6 +288,8 @@ class BaseEventLoopTests(test_utils.TestCase): # tolerate a difference of +800 ms because some Python buildbots # are really slow 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 cb(): diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py index e50a53d..fe791fa 100644 --- a/Lib/test/test_asyncio/test_events.py +++ b/Lib/test/test_asyncio/test_events.py @@ -2322,10 +2322,6 @@ class TimerTests(unittest.TestCase): self.assertIsNone(h._callback) self.assertIsNone(h._args) - # when cannot be None - self.assertRaises(AssertionError, - asyncio.TimerHandle, None, callback, args, - self.loop) def test_timer_repr(self): self.loop.get_debug.return_value = False @@ -2592,7 +2588,7 @@ class PolicyTests(unittest.TestCase): policy = asyncio.DefaultEventLoopPolicy() 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() policy.set_event_loop(loop) @@ -2608,7 +2604,7 @@ class PolicyTests(unittest.TestCase): def test_set_event_loop_policy(self): self.assertRaises( - AssertionError, asyncio.set_event_loop_policy, object()) + TypeError, asyncio.set_event_loop_policy, object()) old_policy = asyncio.get_event_loop_policy() diff --git a/Misc/NEWS.d/next/Library/2021-12-02-14-37-30.bpo-23819.An6vkT.rst b/Misc/NEWS.d/next/Library/2021-12-02-14-37-30.bpo-23819.An6vkT.rst new file mode 100644 index 0000000..d1ec505 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-12-02-14-37-30.bpo-23819.An6vkT.rst @@ -0,0 +1 @@ +Replaced asserts with exceptions in asyncio, patch by Kumar Aditya.
\ No newline at end of file |