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

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