Add asyncio.taskgroups and new Task methods (#7240)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
Guido van Rossum
2022-02-16 14:32:20 -08:00
committed by GitHub
parent 5a8b9dafb3
commit 35bddd289f
9 changed files with 28 additions and 0 deletions

View File

@@ -68,6 +68,7 @@ asyncio.exceptions: 3.8-
asyncio.format_helpers: 3.7-
asyncio.runners: 3.7-
asyncio.staggered: 3.8-
asyncio.taskgroups: 3.11-
asyncio.threads: 3.9-
asyncio.trsock: 3.8-
asyncore: 2.7-

View File

@@ -107,6 +107,9 @@ if sys.version_info >= (3, 7):
current_task as current_task,
)
if sys.version_info >= (3, 11):
from .taskgroups import TaskGroup as TaskGroup
DefaultEventLoopPolicy: type[AbstractEventLoopPolicy]
if sys.platform == "win32":

View File

@@ -0,0 +1,16 @@
# This only exists in 3.11+. See VERSIONS.
from _typeshed import Self
from types import TracebackType
from typing import Any, Coroutine, Generator, TypeVar
from .tasks import Task
_T = TypeVar("_T")
class TaskGroup:
def __init__(self, *, name: str | None = ...) -> None: ...
def get_name(self) -> str: ...
async def __aenter__(self: Self) -> Self: ...
async def __aexit__(self, et: type[BaseException] | None, exc: BaseException | None, tb: TracebackType | None) -> None: ...
def create_task(self, coro: Generator[Any, None, _T] | Coroutine[Any, Any, _T]) -> Task[_T]: ...

View File

@@ -276,6 +276,9 @@ class Task(Future[_T], Generic[_T]):
def cancel(self, msg: Any | None = ...) -> bool: ...
else:
def cancel(self) -> bool: ...
if sys.version_info >= (3, 11):
def cancelling(self) -> bool: ...
def uncancel(self) -> bool: ...
if sys.version_info < (3, 9):
@classmethod
def current_task(cls, loop: AbstractEventLoop | None = ...) -> Task[Any] | None: ...

View File

@@ -41,6 +41,7 @@ asyncio.Future.__init__ # Usually initialized from c object
asyncio.Future._callbacks # Usually initialized from c object
asyncio.futures.Future.__init__ # Usually initialized from c object
asyncio.futures.Future._callbacks # Usually initialized from c object
asyncio.taskgroups # Added in Python 3.11
builtins.dict.get
contextvars.Context.__init__ # Default C __init__ signature is wrong
contextlib.AbstractAsyncContextManager.__class_getitem__

View File

@@ -13,6 +13,7 @@ asyncio.staggered # Added in Python 3.8
asyncio.threads # Added in Python 3.9
asyncio.trsock # Added in Python 3.8
asyncio.mixins # Added in Python 3.10
asyncio.taskgroups # Added in Python 3.11
builtins.str.maketrans
cmath.log
collections.AsyncGenerator.ag_await

View File

@@ -13,6 +13,7 @@ asyncio.staggered # Added in Python 3.8
asyncio.threads # Added in Python 3.9
asyncio.trsock # Added in Python 3.8
asyncio.mixins # Added in Python 3.10
asyncio.taskgroups # Added in Python 3.11
builtins.dict.get
builtins.str.maketrans
cmath.log

View File

@@ -18,6 +18,7 @@ asyncio.futures.Future.__init__ # Usually initialized from c object
asyncio.futures.Future._callbacks # Usually initialized from c object
asyncio.threads # Added in Python 3.9
asyncio.mixins # Added in Python 3.10
asyncio.taskgroups # Added in Python 3.11
builtins.dict.get
collections.AsyncGenerator.ag_await
collections.AsyncGenerator.ag_code

View File

@@ -20,6 +20,7 @@ asyncio.Future._callbacks # Usually initialized from c object
asyncio.futures.Future.__init__ # Usually initialized from c object
asyncio.futures.Future._callbacks # Usually initialized from c object
asyncio.mixins # Added in Python 3.10
asyncio.taskgroups # Added in Python 3.11
builtins.dict.get
collections.AsyncGenerator.ag_await
collections.AsyncGenerator.ag_code