mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
gh-127949: make deprecation of policy system more prominent (#128290)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
parent
71de839ec9
commit
64173cd6f2
3 changed files with 43 additions and 6 deletions
|
@ -19,10 +19,35 @@ Pending removal in Python 3.16
|
|||
* :mod:`asyncio`:
|
||||
|
||||
* :func:`!asyncio.iscoroutinefunction` is deprecated
|
||||
and will be removed in Python 3.16,
|
||||
and will be removed in Python 3.16;
|
||||
use :func:`inspect.iscoroutinefunction` instead.
|
||||
(Contributed by Jiahao Li and Kumar Aditya in :gh:`122875`.)
|
||||
|
||||
* :mod:`asyncio` policy system is deprecated and will be removed in Python 3.16.
|
||||
In particular, the following classes and functions are deprecated:
|
||||
|
||||
* :class:`asyncio.AbstractEventLoopPolicy`
|
||||
* :class:`asyncio.DefaultEventLoopPolicy`
|
||||
* :class:`asyncio.WindowsSelectorEventLoopPolicy`
|
||||
* :class:`asyncio.WindowsProactorEventLoopPolicy`
|
||||
* :func:`asyncio.get_event_loop_policy`
|
||||
* :func:`asyncio.set_event_loop_policy`
|
||||
* :func:`asyncio.set_event_loop`
|
||||
|
||||
Users should use :func:`asyncio.run` or :class:`asyncio.Runner` with
|
||||
*loop_factory* to use the desired event loop implementation.
|
||||
|
||||
For example, to use :class:`asyncio.SelectorEventLoop` on Windows::
|
||||
|
||||
import asyncio
|
||||
|
||||
async def main():
|
||||
...
|
||||
|
||||
asyncio.run(main(), loop_factory=asyncio.SelectorEventLoop)
|
||||
|
||||
(Contributed by Kumar Aditya in :gh:`127949`.)
|
||||
|
||||
* :mod:`builtins`:
|
||||
|
||||
* Bitwise inversion on boolean types, ``~True`` or ``~False``
|
||||
|
|
|
@ -62,6 +62,13 @@ an event loop:
|
|||
.. versionchanged:: 3.14
|
||||
Raises a :exc:`RuntimeError` if there is no current event loop.
|
||||
|
||||
.. note::
|
||||
|
||||
The :mod:`!asyncio` policy system is deprecated and will be removed
|
||||
in Python 3.16; from there on, this function will always return the
|
||||
running event loop.
|
||||
|
||||
|
||||
.. function:: set_event_loop(loop)
|
||||
|
||||
Set *loop* as the current event loop for the current OS thread.
|
||||
|
@ -1781,12 +1788,11 @@ By default asyncio is configured to use :class:`EventLoop`.
|
|||
import asyncio
|
||||
import selectors
|
||||
|
||||
class MyPolicy(asyncio.DefaultEventLoopPolicy):
|
||||
def new_event_loop(self):
|
||||
selector = selectors.SelectSelector()
|
||||
return asyncio.SelectorEventLoop(selector)
|
||||
async def main():
|
||||
...
|
||||
|
||||
asyncio.set_event_loop_policy(MyPolicy())
|
||||
loop_factory = lambda: asyncio.SelectorEventLoop(selectors.SelectSelector())
|
||||
asyncio.run(main(), loop_factory=loop_factory)
|
||||
|
||||
|
||||
.. availability:: Unix, Windows.
|
||||
|
|
|
@ -76,6 +76,12 @@ Running an asyncio Program
|
|||
|
||||
*coro* can be any awaitable object.
|
||||
|
||||
.. note::
|
||||
|
||||
The :mod:`!asyncio` policy system is deprecated and will be removed
|
||||
in Python 3.16; from there on, an explicit *loop_factory* is needed
|
||||
to configure the event loop.
|
||||
|
||||
|
||||
Runner context manager
|
||||
======================
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue