mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-09 05:24:52 +08:00
asyncio: updates for 3.11 (#7844)
CPython changes: -13c10bfb77-9523c0d84f-9f04ee569c-d03acd7270-195a46d6ffCo-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com> Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
@@ -24,6 +24,7 @@ if sys.version_info >= (3, 9):
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
from .taskgroups import *
|
||||
from .timeouts import *
|
||||
|
||||
if sys.platform == "win32":
|
||||
from .windows_events import *
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import ssl
|
||||
import sys
|
||||
from _typeshed import FileDescriptorLike
|
||||
from _typeshed import FileDescriptorLike, WriteableBuffer
|
||||
from asyncio.events import AbstractEventLoop, AbstractServer, Handle, TimerHandle
|
||||
from asyncio.futures import Future
|
||||
from asyncio.protocols import BaseProtocol
|
||||
@@ -29,7 +29,18 @@ _ProtocolFactory: TypeAlias = Callable[[], BaseProtocol]
|
||||
_SSLContext: TypeAlias = bool | None | ssl.SSLContext
|
||||
|
||||
class Server(AbstractServer):
|
||||
if sys.version_info >= (3, 7):
|
||||
if sys.version_info >= (3, 11):
|
||||
def __init__(
|
||||
self,
|
||||
loop: AbstractEventLoop,
|
||||
sockets: Iterable[socket],
|
||||
protocol_factory: _ProtocolFactory,
|
||||
ssl_context: _SSLContext,
|
||||
backlog: int,
|
||||
ssl_handshake_timeout: float | None,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
) -> None: ...
|
||||
elif sys.version_info >= (3, 7):
|
||||
def __init__(
|
||||
self,
|
||||
loop: AbstractEventLoop,
|
||||
@@ -39,12 +50,13 @@ class Server(AbstractServer):
|
||||
backlog: int,
|
||||
ssl_handshake_timeout: float | None,
|
||||
) -> None: ...
|
||||
else:
|
||||
def __init__(self, loop: AbstractEventLoop, sockets: list[socket]) -> None: ...
|
||||
if sys.version_info >= (3, 7):
|
||||
def get_loop(self) -> AbstractEventLoop: ...
|
||||
def is_serving(self) -> bool: ...
|
||||
async def start_serving(self) -> None: ...
|
||||
async def serve_forever(self) -> None: ...
|
||||
else:
|
||||
def __init__(self, loop: AbstractEventLoop, sockets: list[socket]) -> None: ...
|
||||
if sys.version_info >= (3, 8):
|
||||
@property
|
||||
def sockets(self) -> tuple[socket, ...]: ...
|
||||
@@ -86,7 +98,11 @@ class BaseEventLoop(AbstractEventLoop):
|
||||
# Future methods
|
||||
def create_future(self) -> Future[Any]: ...
|
||||
# Tasks methods
|
||||
if sys.version_info >= (3, 8):
|
||||
if sys.version_info >= (3, 11):
|
||||
def create_task(
|
||||
self, coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T], *, name: object = ..., context: Context | None = ...
|
||||
) -> Task[_T]: ...
|
||||
elif sys.version_info >= (3, 8):
|
||||
def create_task(self, coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T], *, name: object = ...) -> Task[_T]: ...
|
||||
else:
|
||||
def create_task(self, coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T]) -> Task[_T]: ...
|
||||
@@ -113,7 +129,46 @@ class BaseEventLoop(AbstractEventLoop):
|
||||
flags: int = ...,
|
||||
) -> list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]]: ...
|
||||
async def getnameinfo(self, sockaddr: tuple[str, int] | tuple[str, int, int, int], flags: int = ...) -> tuple[str, str]: ...
|
||||
if sys.version_info >= (3, 8):
|
||||
if sys.version_info >= (3, 11):
|
||||
@overload
|
||||
async def create_connection(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
host: str = ...,
|
||||
port: int = ...,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
family: int = ...,
|
||||
proto: int = ...,
|
||||
flags: int = ...,
|
||||
sock: None = ...,
|
||||
local_addr: tuple[str, int] | None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
happy_eyeballs_delay: float | None = ...,
|
||||
interleave: int | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
@overload
|
||||
async def create_connection(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
host: None = ...,
|
||||
port: None = ...,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
family: int = ...,
|
||||
proto: int = ...,
|
||||
flags: int = ...,
|
||||
sock: socket,
|
||||
local_addr: None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
happy_eyeballs_delay: float | None = ...,
|
||||
interleave: int | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
elif sys.version_info >= (3, 8):
|
||||
@overload
|
||||
async def create_connection(
|
||||
self,
|
||||
@@ -214,10 +269,64 @@ class BaseEventLoop(AbstractEventLoop):
|
||||
local_addr: None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
if sys.version_info >= (3, 7):
|
||||
async def sock_sendfile(
|
||||
self, sock: socket, file: IO[bytes], offset: int = ..., count: int | None = ..., *, fallback: bool | None = ...
|
||||
) -> int: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
@overload
|
||||
async def create_server(
|
||||
self,
|
||||
protocol_factory: _ProtocolFactory,
|
||||
host: str | Sequence[str] | None = ...,
|
||||
port: int = ...,
|
||||
*,
|
||||
family: int = ...,
|
||||
flags: int = ...,
|
||||
sock: None = ...,
|
||||
backlog: int = ...,
|
||||
ssl: _SSLContext = ...,
|
||||
reuse_address: bool | None = ...,
|
||||
reuse_port: bool | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
start_serving: bool = ...,
|
||||
) -> Server: ...
|
||||
@overload
|
||||
async def create_server(
|
||||
self,
|
||||
protocol_factory: _ProtocolFactory,
|
||||
host: None = ...,
|
||||
port: None = ...,
|
||||
*,
|
||||
family: int = ...,
|
||||
flags: int = ...,
|
||||
sock: socket = ...,
|
||||
backlog: int = ...,
|
||||
ssl: _SSLContext = ...,
|
||||
reuse_address: bool | None = ...,
|
||||
reuse_port: bool | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
start_serving: bool = ...,
|
||||
) -> Server: ...
|
||||
async def start_tls(
|
||||
self,
|
||||
transport: BaseTransport,
|
||||
protocol: BaseProtocol,
|
||||
sslcontext: ssl.SSLContext,
|
||||
*,
|
||||
server_side: bool = ...,
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
) -> BaseTransport: ...
|
||||
async def connect_accepted_socket(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
sock: socket,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
elif sys.version_info >= (3, 7):
|
||||
@overload
|
||||
async def create_server(
|
||||
self,
|
||||
@@ -252,17 +361,6 @@ class BaseEventLoop(AbstractEventLoop):
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
start_serving: bool = ...,
|
||||
) -> Server: ...
|
||||
async def connect_accepted_socket(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
sock: socket,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
async def sendfile(
|
||||
self, transport: BaseTransport, file: IO[bytes], offset: int = ..., count: int | None = ..., *, fallback: bool = ...
|
||||
) -> int: ...
|
||||
async def start_tls(
|
||||
self,
|
||||
transport: BaseTransport,
|
||||
@@ -273,6 +371,14 @@ class BaseEventLoop(AbstractEventLoop):
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
) -> BaseTransport: ...
|
||||
async def connect_accepted_socket(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
sock: socket,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
else:
|
||||
@overload
|
||||
async def create_server(
|
||||
@@ -307,6 +413,13 @@ class BaseEventLoop(AbstractEventLoop):
|
||||
async def connect_accepted_socket(
|
||||
self, protocol_factory: Callable[[], _ProtocolT], sock: socket, *, ssl: _SSLContext = ...
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
if sys.version_info >= (3, 7):
|
||||
async def sock_sendfile(
|
||||
self, sock: socket, file: IO[bytes], offset: int = ..., count: int | None = ..., *, fallback: bool | None = ...
|
||||
) -> int: ...
|
||||
async def sendfile(
|
||||
self, transport: BaseTransport, file: IO[bytes], offset: int = ..., count: int | None = ..., *, fallback: bool = ...
|
||||
) -> int: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
async def create_datagram_endpoint( # type: ignore[override]
|
||||
self,
|
||||
@@ -378,10 +491,12 @@ class BaseEventLoop(AbstractEventLoop):
|
||||
def remove_reader(self, fd: FileDescriptorLike) -> bool: ...
|
||||
def add_writer(self, fd: FileDescriptorLike, callback: Callable[..., Any], *args: Any) -> None: ...
|
||||
def remove_writer(self, fd: FileDescriptorLike) -> bool: ...
|
||||
# The sock_* methods (and probably some others) are not actually implemented on
|
||||
# BaseEventLoop, only on subclasses. We list them here for now for convenience.
|
||||
# Completion based I/O methods returning Futures prior to 3.7
|
||||
if sys.version_info >= (3, 7):
|
||||
async def sock_recv(self, sock: socket, nbytes: int) -> bytes: ...
|
||||
async def sock_recv_into(self, sock: socket, buf: bytearray) -> int: ...
|
||||
async def sock_recv_into(self, sock: socket, buf: WriteableBuffer) -> int: ...
|
||||
async def sock_sendall(self, sock: socket, data: bytes) -> None: ...
|
||||
async def sock_connect(self, sock: socket, address: _Address) -> None: ...
|
||||
async def sock_accept(self, sock: socket) -> tuple[socket, _RetAddress]: ...
|
||||
@@ -390,6 +505,10 @@ class BaseEventLoop(AbstractEventLoop):
|
||||
def sock_sendall(self, sock: socket, data: bytes) -> Future[None]: ...
|
||||
def sock_connect(self, sock: socket, address: _Address) -> Future[None]: ...
|
||||
def sock_accept(self, sock: socket) -> Future[tuple[socket, _RetAddress]]: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
async def sock_recvfrom(self, sock: socket, bufsize: int) -> bytes: ...
|
||||
async def sock_recvfrom_into(self, sock: socket, buf: WriteableBuffer, nbytes: int = ...) -> int: ...
|
||||
async def sock_sendto(self, sock: socket, data: bytes, address: _Address) -> None: ...
|
||||
# Signal handling.
|
||||
def add_signal_handler(self, sig: int, callback: Callable[..., Any], *args: Any) -> None: ...
|
||||
def remove_signal_handler(self, sig: int) -> bool: ...
|
||||
|
||||
@@ -8,6 +8,10 @@ DEBUG_STACK_DEPTH: Literal[10]
|
||||
if sys.version_info >= (3, 7):
|
||||
SSL_HANDSHAKE_TIMEOUT: float
|
||||
SENDFILE_FALLBACK_READBUFFER_SIZE: Literal[262144]
|
||||
if sys.version_info >= (3, 11):
|
||||
SSL_SHUTDOWN_TIMEOUT: float
|
||||
FLOW_CONTROL_HIGH_WATER_SSL_READ: Literal[256]
|
||||
FLOW_CONTROL_HIGH_WATER_SSL_WRITE: Literal[512]
|
||||
|
||||
class _SendfileMode(enum.Enum):
|
||||
UNSUPPORTED: int
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import ssl
|
||||
import sys
|
||||
from _typeshed import FileDescriptorLike, Self
|
||||
from _typeshed import FileDescriptorLike, Self, WriteableBuffer
|
||||
from abc import ABCMeta, abstractmethod
|
||||
from collections.abc import Awaitable, Callable, Coroutine, Generator, Sequence
|
||||
from socket import AddressFamily, SocketKind, _Address, _RetAddress, socket
|
||||
@@ -184,7 +184,16 @@ class AbstractEventLoop:
|
||||
@abstractmethod
|
||||
def create_future(self) -> Future[Any]: ...
|
||||
# Tasks methods
|
||||
if sys.version_info >= (3, 8):
|
||||
if sys.version_info >= (3, 11):
|
||||
@abstractmethod
|
||||
def create_task(
|
||||
self,
|
||||
coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T],
|
||||
*,
|
||||
name: str | None = ...,
|
||||
context: Context | None = ...,
|
||||
) -> Task[_T]: ...
|
||||
elif sys.version_info >= (3, 8):
|
||||
@abstractmethod
|
||||
def create_task(
|
||||
self, coro: Coroutine[Any, Any, _T] | Generator[Any, None, _T], *, name: str | None = ...
|
||||
@@ -223,7 +232,48 @@ class AbstractEventLoop:
|
||||
) -> list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]]: ...
|
||||
@abstractmethod
|
||||
async def getnameinfo(self, sockaddr: tuple[str, int] | tuple[str, int, int, int], flags: int = ...) -> tuple[str, str]: ...
|
||||
if sys.version_info >= (3, 8):
|
||||
if sys.version_info >= (3, 11):
|
||||
@overload
|
||||
@abstractmethod
|
||||
async def create_connection(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
host: str = ...,
|
||||
port: int = ...,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
family: int = ...,
|
||||
proto: int = ...,
|
||||
flags: int = ...,
|
||||
sock: None = ...,
|
||||
local_addr: tuple[str, int] | None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
happy_eyeballs_delay: float | None = ...,
|
||||
interleave: int | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
@overload
|
||||
@abstractmethod
|
||||
async def create_connection(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
host: None = ...,
|
||||
port: None = ...,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
family: int = ...,
|
||||
proto: int = ...,
|
||||
flags: int = ...,
|
||||
sock: socket,
|
||||
local_addr: None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
happy_eyeballs_delay: float | None = ...,
|
||||
interleave: int | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
elif sys.version_info >= (3, 8):
|
||||
@overload
|
||||
@abstractmethod
|
||||
async def create_connection(
|
||||
@@ -330,11 +380,70 @@ class AbstractEventLoop:
|
||||
local_addr: None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
if sys.version_info >= (3, 7):
|
||||
if sys.version_info >= (3, 11):
|
||||
@overload
|
||||
@abstractmethod
|
||||
async def sock_sendfile(
|
||||
self, sock: socket, file: IO[bytes], offset: int = ..., count: int | None = ..., *, fallback: bool | None = ...
|
||||
) -> int: ...
|
||||
async def create_server(
|
||||
self,
|
||||
protocol_factory: _ProtocolFactory,
|
||||
host: str | Sequence[str] | None = ...,
|
||||
port: int = ...,
|
||||
*,
|
||||
family: int = ...,
|
||||
flags: int = ...,
|
||||
sock: None = ...,
|
||||
backlog: int = ...,
|
||||
ssl: _SSLContext = ...,
|
||||
reuse_address: bool | None = ...,
|
||||
reuse_port: bool | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
start_serving: bool = ...,
|
||||
) -> Server: ...
|
||||
@overload
|
||||
@abstractmethod
|
||||
async def create_server(
|
||||
self,
|
||||
protocol_factory: _ProtocolFactory,
|
||||
host: None = ...,
|
||||
port: None = ...,
|
||||
*,
|
||||
family: int = ...,
|
||||
flags: int = ...,
|
||||
sock: socket = ...,
|
||||
backlog: int = ...,
|
||||
ssl: _SSLContext = ...,
|
||||
reuse_address: bool | None = ...,
|
||||
reuse_port: bool | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
start_serving: bool = ...,
|
||||
) -> Server: ...
|
||||
@abstractmethod
|
||||
async def start_tls(
|
||||
self,
|
||||
transport: BaseTransport,
|
||||
protocol: BaseProtocol,
|
||||
sslcontext: ssl.SSLContext,
|
||||
*,
|
||||
server_side: bool = ...,
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
) -> BaseTransport: ...
|
||||
async def create_unix_server(
|
||||
self,
|
||||
protocol_factory: _ProtocolFactory,
|
||||
path: str | None = ...,
|
||||
*,
|
||||
sock: socket | None = ...,
|
||||
backlog: int = ...,
|
||||
ssl: _SSLContext = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
start_serving: bool = ...,
|
||||
) -> Server: ...
|
||||
elif sys.version_info >= (3, 7):
|
||||
@overload
|
||||
@abstractmethod
|
||||
async def create_server(
|
||||
@@ -371,31 +480,6 @@ class AbstractEventLoop:
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
start_serving: bool = ...,
|
||||
) -> Server: ...
|
||||
async def create_unix_connection(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
path: str | None = ...,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
sock: socket | None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
async def create_unix_server(
|
||||
self,
|
||||
protocol_factory: _ProtocolFactory,
|
||||
path: str | None = ...,
|
||||
*,
|
||||
sock: socket | None = ...,
|
||||
backlog: int = ...,
|
||||
ssl: _SSLContext = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
start_serving: bool = ...,
|
||||
) -> Server: ...
|
||||
@abstractmethod
|
||||
async def sendfile(
|
||||
self, transport: BaseTransport, file: IO[bytes], offset: int = ..., count: int | None = ..., *, fallback: bool = ...
|
||||
) -> int: ...
|
||||
@abstractmethod
|
||||
async def start_tls(
|
||||
self,
|
||||
@@ -407,6 +491,17 @@ class AbstractEventLoop:
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
) -> BaseTransport: ...
|
||||
async def create_unix_server(
|
||||
self,
|
||||
protocol_factory: _ProtocolFactory,
|
||||
path: str | None = ...,
|
||||
*,
|
||||
sock: socket | None = ...,
|
||||
backlog: int = ...,
|
||||
ssl: _SSLContext = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
start_serving: bool = ...,
|
||||
) -> Server: ...
|
||||
else:
|
||||
@overload
|
||||
@abstractmethod
|
||||
@@ -440,15 +535,6 @@ class AbstractEventLoop:
|
||||
reuse_address: bool | None = ...,
|
||||
reuse_port: bool | None = ...,
|
||||
) -> Server: ...
|
||||
async def create_unix_connection(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
path: str,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
sock: socket | None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
async def create_unix_server(
|
||||
self,
|
||||
protocol_factory: _ProtocolFactory,
|
||||
@@ -458,6 +544,67 @@ class AbstractEventLoop:
|
||||
backlog: int = ...,
|
||||
ssl: _SSLContext = ...,
|
||||
) -> Server: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
async def connect_accepted_socket(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
sock: socket,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
elif sys.version_info >= (3, 10):
|
||||
async def connect_accepted_socket(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
sock: socket,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
async def create_unix_connection(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
path: str | None = ...,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
sock: socket | None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
ssl_shutdown_timeout: float | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
elif sys.version_info >= (3, 7):
|
||||
async def create_unix_connection(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
path: str | None = ...,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
sock: socket | None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
ssl_handshake_timeout: float | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
else:
|
||||
async def create_unix_connection(
|
||||
self,
|
||||
protocol_factory: Callable[[], _ProtocolT],
|
||||
path: str,
|
||||
*,
|
||||
ssl: _SSLContext = ...,
|
||||
sock: socket | None = ...,
|
||||
server_hostname: str | None = ...,
|
||||
) -> tuple[BaseTransport, _ProtocolT]: ...
|
||||
if sys.version_info >= (3, 7):
|
||||
@abstractmethod
|
||||
async def sock_sendfile(
|
||||
self, sock: socket, file: IO[bytes], offset: int = ..., count: int | None = ..., *, fallback: bool | None = ...
|
||||
) -> int: ...
|
||||
@abstractmethod
|
||||
async def sendfile(
|
||||
self, transport: BaseTransport, file: IO[bytes], offset: int = ..., count: int | None = ..., *, fallback: bool = ...
|
||||
) -> int: ...
|
||||
|
||||
@abstractmethod
|
||||
async def create_datagram_endpoint(
|
||||
@@ -529,7 +676,7 @@ class AbstractEventLoop:
|
||||
@abstractmethod
|
||||
async def sock_recv(self, sock: socket, nbytes: int) -> bytes: ...
|
||||
@abstractmethod
|
||||
async def sock_recv_into(self, sock: socket, buf: bytearray) -> int: ...
|
||||
async def sock_recv_into(self, sock: socket, buf: WriteableBuffer) -> int: ...
|
||||
@abstractmethod
|
||||
async def sock_sendall(self, sock: socket, data: bytes) -> None: ...
|
||||
@abstractmethod
|
||||
@@ -545,6 +692,13 @@ class AbstractEventLoop:
|
||||
def sock_connect(self, sock: socket, address: _Address) -> Future[None]: ...
|
||||
@abstractmethod
|
||||
def sock_accept(self, sock: socket) -> Future[tuple[socket, _RetAddress]]: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
@abstractmethod
|
||||
async def sock_recvfrom(self, sock: socket, bufsize: int) -> bytes: ...
|
||||
@abstractmethod
|
||||
async def sock_recvfrom_into(self, sock: socket, buf: WriteableBuffer, nbytes: int = ...) -> int: ...
|
||||
@abstractmethod
|
||||
async def sock_sendto(self, sock: socket, data: bytes, address: _Address) -> None: ...
|
||||
# Signal handling.
|
||||
@abstractmethod
|
||||
def add_signal_handler(self, sig: int, callback: Callable[..., Any], *args: Any) -> None: ...
|
||||
|
||||
@@ -1,11 +1,24 @@
|
||||
__all__ = (
|
||||
"CancelledError",
|
||||
"InvalidStateError",
|
||||
"TimeoutError",
|
||||
"IncompleteReadError",
|
||||
"LimitOverrunError",
|
||||
"SendfileNotAvailableError",
|
||||
)
|
||||
import sys
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
__all__ = (
|
||||
"BrokenBarrierError",
|
||||
"CancelledError",
|
||||
"InvalidStateError",
|
||||
"TimeoutError",
|
||||
"IncompleteReadError",
|
||||
"LimitOverrunError",
|
||||
"SendfileNotAvailableError",
|
||||
)
|
||||
else:
|
||||
__all__ = (
|
||||
"CancelledError",
|
||||
"InvalidStateError",
|
||||
"TimeoutError",
|
||||
"IncompleteReadError",
|
||||
"LimitOverrunError",
|
||||
"SendfileNotAvailableError",
|
||||
)
|
||||
|
||||
class CancelledError(BaseException): ...
|
||||
class TimeoutError(Exception): ...
|
||||
@@ -20,3 +33,6 @@ class IncompleteReadError(EOFError):
|
||||
class LimitOverrunError(Exception):
|
||||
consumed: int
|
||||
def __init__(self, message: str, consumed: int) -> None: ...
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
class BrokenBarrierError(RuntimeError): ...
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import enum
|
||||
import sys
|
||||
from _typeshed import Self
|
||||
from collections import deque
|
||||
from collections.abc import Callable, Generator
|
||||
from types import TracebackType
|
||||
@@ -8,7 +10,12 @@ from typing_extensions import Literal
|
||||
from .events import AbstractEventLoop
|
||||
from .futures import Future
|
||||
|
||||
if sys.version_info >= (3, 7):
|
||||
if sys.version_info >= (3, 11):
|
||||
from .mixins import _LoopBoundMixin
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
__all__ = ("Lock", "Event", "Condition", "Semaphore", "BoundedSemaphore", "Barrier")
|
||||
elif sys.version_info >= (3, 7):
|
||||
__all__ = ("Lock", "Event", "Condition", "Semaphore", "BoundedSemaphore")
|
||||
else:
|
||||
__all__ = ["Lock", "Event", "Condition", "Semaphore", "BoundedSemaphore"]
|
||||
@@ -40,20 +47,32 @@ else:
|
||||
) -> None: ...
|
||||
|
||||
class Lock(_ContextManagerMixin):
|
||||
def __init__(self, *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
def __init__(self) -> None: ...
|
||||
else:
|
||||
def __init__(self, *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
|
||||
def locked(self) -> bool: ...
|
||||
async def acquire(self) -> Literal[True]: ...
|
||||
def release(self) -> None: ...
|
||||
|
||||
class Event:
|
||||
def __init__(self, *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
def __init__(self) -> None: ...
|
||||
else:
|
||||
def __init__(self, *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
|
||||
def is_set(self) -> bool: ...
|
||||
def set(self) -> None: ...
|
||||
def clear(self) -> None: ...
|
||||
async def wait(self) -> Literal[True]: ...
|
||||
|
||||
class Condition(_ContextManagerMixin):
|
||||
def __init__(self, lock: Lock | None = ..., *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
def __init__(self, lock: Lock | None = ...) -> None: ...
|
||||
else:
|
||||
def __init__(self, lock: Lock | None = ..., *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
|
||||
def locked(self) -> bool: ...
|
||||
async def acquire(self) -> Literal[True]: ...
|
||||
def release(self) -> None: ...
|
||||
@@ -65,11 +84,39 @@ class Condition(_ContextManagerMixin):
|
||||
class Semaphore(_ContextManagerMixin):
|
||||
_value: int
|
||||
_waiters: deque[Future[Any]]
|
||||
def __init__(self, value: int = ..., *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
def __init__(self, value: int = ...) -> None: ...
|
||||
else:
|
||||
def __init__(self, value: int = ..., *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
|
||||
def locked(self) -> bool: ...
|
||||
async def acquire(self) -> Literal[True]: ...
|
||||
def release(self) -> None: ...
|
||||
def _wake_up_next(self) -> None: ...
|
||||
|
||||
class BoundedSemaphore(Semaphore):
|
||||
def __init__(self, value: int = ..., *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
def __init__(self, value: int = ...) -> None: ...
|
||||
else:
|
||||
def __init__(self, value: int = ..., *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
class _BarrierState(enum.Enum): # undocumented
|
||||
FILLING: str
|
||||
DRAINING: str
|
||||
RESETTING: str
|
||||
BROKEN: str
|
||||
|
||||
class Barrier(_LoopBoundMixin):
|
||||
def __init__(self, parties: int) -> None: ...
|
||||
async def __aenter__(self: Self) -> Self: ...
|
||||
async def __aexit__(self, *args: object) -> None: ...
|
||||
async def wait(self) -> int: ...
|
||||
async def abort(self) -> None: ...
|
||||
async def reset(self) -> None: ...
|
||||
@property
|
||||
def parties(self) -> int: ...
|
||||
@property
|
||||
def n_waiting(self) -> int: ...
|
||||
@property
|
||||
def broken(self) -> bool: ...
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import sys
|
||||
import threading
|
||||
from typing import NoReturn
|
||||
|
||||
_global_lock: threading.Lock
|
||||
|
||||
class _LoopBoundMixin:
|
||||
def __init__(self, *, loop: NoReturn = ...) -> None: ...
|
||||
if sys.version_info < (3, 11):
|
||||
def __init__(self, *, loop: NoReturn = ...) -> None: ...
|
||||
|
||||
@@ -16,7 +16,11 @@ class QueueFull(Exception): ...
|
||||
_T = TypeVar("_T")
|
||||
|
||||
class Queue(Generic[_T]):
|
||||
def __init__(self, maxsize: int = ..., *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
def __init__(self, maxsize: int = ...) -> None: ...
|
||||
else:
|
||||
def __init__(self, maxsize: int = ..., *, loop: AbstractEventLoop | None = ...) -> None: ...
|
||||
|
||||
def _init(self, maxsize: int) -> None: ...
|
||||
def _get(self) -> _T: ...
|
||||
def _put(self, item: _T) -> None: ...
|
||||
|
||||
@@ -1,11 +1,28 @@
|
||||
import sys
|
||||
from collections.abc import Awaitable
|
||||
from typing import TypeVar
|
||||
from _typeshed import Self
|
||||
from collections.abc import Callable, Coroutine
|
||||
from contextvars import Context
|
||||
from typing import Any, TypeVar
|
||||
|
||||
__all__ = ("run",)
|
||||
from .events import AbstractEventLoop
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
__all__ = ("Runner", "run")
|
||||
else:
|
||||
__all__ = ("run",)
|
||||
_T = TypeVar("_T")
|
||||
|
||||
if sys.version_info >= (3, 11):
|
||||
class Runner:
|
||||
def __init__(self, *, debug: bool | None = ..., loop_factory: Callable[[], AbstractEventLoop] | None = ...) -> None: ...
|
||||
def __enter__(self: Self) -> Self: ...
|
||||
def __exit__(self, exc_type: object, exc_val: object, exc_tb: object) -> None: ...
|
||||
def close(self) -> None: ...
|
||||
def get_loop(self) -> AbstractEventLoop: ...
|
||||
def run(self, coro: Coroutine[Any, Any, _T], *, context: Context | None = ...) -> _T: ...
|
||||
|
||||
if sys.version_info >= (3, 8):
|
||||
def run(main: Awaitable[_T], *, debug: bool | None = ...) -> _T: ...
|
||||
def run(main: Coroutine[Any, Any, _T], *, debug: bool | None = ...) -> _T: ...
|
||||
|
||||
else:
|
||||
def run(main: Awaitable[_T], *, debug: bool = ...) -> _T: ...
|
||||
def run(main: Coroutine[Any, Any, _T], *, debug: bool = ...) -> _T: ...
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import ssl
|
||||
import sys
|
||||
from _typeshed import Self, StrPath
|
||||
from collections.abc import AsyncIterator, Awaitable, Callable, Iterable, Sequence
|
||||
@@ -179,6 +180,10 @@ class StreamWriter:
|
||||
|
||||
def get_extra_info(self, name: str, default: Any = ...) -> Any: ...
|
||||
async def drain(self) -> None: ...
|
||||
if sys.version_info >= (3, 11):
|
||||
async def start_tls(
|
||||
self, sslcontext: ssl.SSLContext, *, server_hostname: str | None = ..., ssl_handshake_timeout: float | None = ...
|
||||
) -> None: ...
|
||||
|
||||
class StreamReader(AsyncIterator[bytes]):
|
||||
def __init__(self, limit: int = ..., loop: events.AbstractEventLoop | None = ...) -> None: ...
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
from _typeshed import Self
|
||||
from collections.abc import Coroutine, Generator
|
||||
from contextvars import Context
|
||||
from types import TracebackType
|
||||
from typing import Any, TypeVar
|
||||
|
||||
@@ -15,4 +16,6 @@ class TaskGroup:
|
||||
def __init__(self) -> None: ...
|
||||
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], *, name: str | None = ...) -> Task[_T]: ...
|
||||
def create_task(
|
||||
self, coro: Generator[Any, None, _T] | Coroutine[Any, Any, _T], *, name: str | None = ..., context: Context | None = ...
|
||||
) -> Task[_T]: ...
|
||||
|
||||
@@ -10,6 +10,8 @@ from .futures import Future
|
||||
|
||||
if sys.version_info >= (3, 9):
|
||||
from types import GenericAlias
|
||||
if sys.version_info >= (3, 11):
|
||||
from contextvars import Context
|
||||
|
||||
if sys.version_info >= (3, 7):
|
||||
__all__ = (
|
||||
@@ -329,7 +331,11 @@ class Task(Future[_T], Generic[_T]):
|
||||
|
||||
if sys.version_info >= (3, 7):
|
||||
def all_tasks(loop: AbstractEventLoop | None = ...) -> set[Task[Any]]: ...
|
||||
if sys.version_info >= (3, 8):
|
||||
if sys.version_info >= (3, 11):
|
||||
def create_task(
|
||||
coro: Generator[Any, None, _T] | Coroutine[Any, Any, _T], *, name: str | None = ..., context: Context | None = ...
|
||||
) -> Task[_T]: ...
|
||||
elif sys.version_info >= (3, 8):
|
||||
def create_task(coro: Generator[Any, None, _T] | Coroutine[Any, Any, _T], *, name: str | None = ...) -> Task[_T]: ...
|
||||
else:
|
||||
def create_task(coro: Generator[Any, None, _T] | Coroutine[Any, Any, _T]) -> Task[_T]: ...
|
||||
|
||||
19
stdlib/asyncio/timeouts.pyi
Normal file
19
stdlib/asyncio/timeouts.pyi
Normal file
@@ -0,0 +1,19 @@
|
||||
from _typeshed import Self
|
||||
from types import TracebackType
|
||||
from typing_extensions import final
|
||||
|
||||
__all__ = ("Timeout", "timeout", "timeout_at")
|
||||
|
||||
@final
|
||||
class Timeout:
|
||||
def __init__(self, when: float | None) -> None: ...
|
||||
def when(self) -> float | None: ...
|
||||
def reschedule(self, when: float | None) -> None: ...
|
||||
def expired(self) -> bool: ...
|
||||
async def __aenter__(self: Self) -> Self: ...
|
||||
async def __aexit__(
|
||||
self, exc_type: type[BaseException] | None, exc_val: BaseException | None, exc_tb: TracebackType | None
|
||||
) -> None: ...
|
||||
|
||||
def timeout(delay: float | None) -> Timeout: ...
|
||||
def timeout_at(when: float | None) -> Timeout: ...
|
||||
Reference in New Issue
Block a user