Skip to content

Commit defca70

Browse files
committed
fix TaskFactory and loop.create_task
1 parent b4e49dd commit defca70

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

stdlib/asyncio/base_events.pyi

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import ssl
22
import sys
33
from _typeshed import FileDescriptorLike, ReadableBuffer, WriteableBuffer
4+
from _asyncio import _TaskCompatibleCoro
45
from asyncio import _AwaitableLike, _CoroutineLike
56
from asyncio.events import AbstractEventLoop, AbstractServer, Handle, TimerHandle, _TaskFactory
67
from asyncio.futures import Future
@@ -86,7 +87,11 @@ class BaseEventLoop(AbstractEventLoop):
8687
# Future methods
8788
def create_future(self) -> Future[Any]: ...
8889
# Tasks methods
89-
if sys.version_info >= (3, 11):
90+
if sys.version_info >= (3, 13, 2):
91+
def create_task(
92+
self, coro: _TaskCompatibleCoro[_T], *, name: str | None = None, context: Context | None = None, eager_start: bool | None = None
93+
) -> Task[_T]: ...
94+
elif sys.version_info >= (3, 11):
9095
def create_task(self, coro: _CoroutineLike[_T], *, name: object = None, context: Context | None = None) -> Task[_T]: ...
9196
else:
9297
def create_task(self, coro: _CoroutineLike[_T], *, name: object = None) -> Task[_T]: ...

stdlib/asyncio/events.pyi

+22-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ from _asyncio import (
55
_set_running_loop as _set_running_loop,
66
get_event_loop as get_event_loop,
77
get_running_loop as get_running_loop,
8+
_TaskCompatibleCoro,
89
)
910
from _typeshed import FileDescriptorLike, ReadableBuffer, StrPath, Unused, WriteableBuffer
1011
from abc import ABCMeta, abstractmethod
@@ -67,8 +68,21 @@ _ExceptionHandler: TypeAlias = Callable[[AbstractEventLoop, _Context], object]
6768
_ProtocolFactory: TypeAlias = Callable[[], BaseProtocol]
6869
_SSLContext: TypeAlias = bool | None | ssl.SSLContext
6970

70-
class _TaskFactory(Protocol):
71-
def __call__(self, loop: AbstractEventLoop, factory: _CoroutineLike[_T], /) -> Future[_T]: ...
71+
if sys.version_info >= (3, 13, 2):
72+
class _TaskFactory(Protocol):
73+
def __call__(
74+
self,
75+
loop: AbstractEventLoop,
76+
coro: _TaskCompatibleCoro[_T_co],
77+
/,
78+
*,
79+
name: str | None = ...,
80+
context: Context | None = None,
81+
eager_start: bool = False,
82+
) -> Task[_T]: ...
83+
else:
84+
class _TaskFactory(Protocol):
85+
def __call__(self, loop: AbstractEventLoop, coro: _CoroutineLike[_T], /) -> Task[_T]: ...
7286

7387
class Handle:
7488
_cancelled: bool
@@ -165,7 +179,12 @@ class AbstractEventLoop:
165179
@abstractmethod
166180
def create_future(self) -> Future[Any]: ...
167181
# Tasks methods
168-
if sys.version_info >= (3, 11):
182+
if sys.version_info >= (3, 13, 2):
183+
@abstractmethod
184+
def create_task(
185+
self, coro: _TaskCompatibleCoro[_T], *, name: str | None = None, context: Context | None = None, eager_start: bool | None = None
186+
) -> Task[_T]: ...
187+
elif sys.version_info >= (3, 11):
169188
@abstractmethod
170189
def create_task(
171190
self, coro: _CoroutineLike[_T], *, name: str | None = None, context: Context | None = None

0 commit comments

Comments
 (0)