summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/asyncio-eventloop.rst12
-rw-r--r--Doc/whatsnew/3.11.rst9
-rw-r--r--Lib/asyncio/base_events.py6
-rw-r--r--Lib/test/test_asyncio/test_base_events.py8
-rw-r--r--Misc/NEWS.d/next/Library/2021-02-15-22-14-31.bpo-43234.F-vKAT.rst3
5 files changed, 21 insertions, 17 deletions
diff --git a/Doc/library/asyncio-eventloop.rst b/Doc/library/asyncio-eventloop.rst
index 83ab736..f0f6ae6 100644
--- a/Doc/library/asyncio-eventloop.rst
+++ b/Doc/library/asyncio-eventloop.rst
@@ -1132,16 +1132,12 @@ Executing code in thread or process pools
.. method:: loop.set_default_executor(executor)
Set *executor* as the default executor used by :meth:`run_in_executor`.
- *executor* should be an instance of
+ *executor* must be an instance of
:class:`~concurrent.futures.ThreadPoolExecutor`.
- .. deprecated:: 3.8
- Using an executor that is not an instance of
- :class:`~concurrent.futures.ThreadPoolExecutor` is deprecated and
- will trigger an error in Python 3.9.
-
- *executor* must be an instance of
- :class:`concurrent.futures.ThreadPoolExecutor`.
+ .. versionchanged:: 3.11
+ *executor* must be an instance of
+ :class:`~concurrent.futures.ThreadPoolExecutor`.
Error Handling API
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index 94d8bef..5b51273 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -188,6 +188,15 @@ This section lists previously described changes and other bugfixes
that may require changes to your code.
+Changes in the Python API
+-------------------------
+
+* Prohibited passing non-:class:`concurrent.futures.ThreadPoolExecutor`
+ executors to :meth:`loop.set_default_executor` following a deprecation in
+ Python 3.8.
+ (Contributed by Illia Volochii in :issue:`43234`.)
+
+
C API Changes
=============
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index f789635..74d5670 100644
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -814,11 +814,7 @@ class BaseEventLoop(events.AbstractEventLoop):
def set_default_executor(self, executor):
if not isinstance(executor, concurrent.futures.ThreadPoolExecutor):
- warnings.warn(
- 'Using the default executor that is not an instance of '
- 'ThreadPoolExecutor is deprecated and will be prohibited '
- 'in Python 3.9',
- DeprecationWarning, 2)
+ raise TypeError('executor must be ThreadPoolExecutor instance')
self._default_executor = executor
def _getaddrinfo_debug(self, host, port, family, type, proto, flags):
diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py
index 47a9fb9..adc7bd4 100644
--- a/Lib/test/test_asyncio/test_base_events.py
+++ b/Lib/test/test_asyncio/test_base_events.py
@@ -224,14 +224,14 @@ class BaseEventLoopTests(test_utils.TestCase):
self.loop.set_default_executor(executor)
self.assertIs(executor, self.loop._default_executor)
- def test_set_default_executor_deprecation_warnings(self):
+ def test_set_default_executor_error(self):
executor = mock.Mock()
- with self.assertWarns(DeprecationWarning):
+ msg = 'executor must be ThreadPoolExecutor instance'
+ with self.assertRaisesRegex(TypeError, msg):
self.loop.set_default_executor(executor)
- # Avoid cleaning up the executor mock
- self.loop._default_executor = None
+ self.assertIsNone(self.loop._default_executor)
def test_call_soon(self):
def cb():
diff --git a/Misc/NEWS.d/next/Library/2021-02-15-22-14-31.bpo-43234.F-vKAT.rst b/Misc/NEWS.d/next/Library/2021-02-15-22-14-31.bpo-43234.F-vKAT.rst
new file mode 100644
index 0000000..7f195cc
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2021-02-15-22-14-31.bpo-43234.F-vKAT.rst
@@ -0,0 +1,3 @@
+Prohibit passing non-:class:`concurrent.futures.ThreadPoolExecutor`
+executors to :meth:`loop.set_default_executor` following a deprecation in
+Python 3.8. Patch by Illia Volochii.