1
1
import ssl
2
2
import sys
3
- from _typeshed import FileDescriptorLike
3
+ from _typeshed import FileDescriptorLike , WriteableBuffer
4
4
from asyncio .events import AbstractEventLoop , AbstractServer , Handle , TimerHandle
5
5
from asyncio .futures import Future
6
6
from asyncio .protocols import BaseProtocol
@@ -29,7 +29,18 @@ _ProtocolFactory: TypeAlias = Callable[[], BaseProtocol]
29
29
_SSLContext : TypeAlias = bool | None | ssl .SSLContext
30
30
31
31
class Server (AbstractServer ):
32
- if sys .version_info >= (3 , 7 ):
32
+ if sys .version_info >= (3 , 11 ):
33
+ def __init__ (
34
+ self ,
35
+ loop : AbstractEventLoop ,
36
+ sockets : Iterable [socket ],
37
+ protocol_factory : _ProtocolFactory ,
38
+ ssl_context : _SSLContext ,
39
+ backlog : int ,
40
+ ssl_handshake_timeout : float | None ,
41
+ ssl_shutdown_timeout : float | None = ...,
42
+ ) -> None : ...
43
+ elif sys .version_info >= (3 , 7 ):
33
44
def __init__ (
34
45
self ,
35
46
loop : AbstractEventLoop ,
@@ -39,12 +50,13 @@ class Server(AbstractServer):
39
50
backlog : int ,
40
51
ssl_handshake_timeout : float | None ,
41
52
) -> None : ...
53
+ else :
54
+ def __init__ (self , loop : AbstractEventLoop , sockets : list [socket ]) -> None : ...
55
+ if sys .version_info >= (3 , 7 ):
42
56
def get_loop (self ) -> AbstractEventLoop : ...
43
57
def is_serving (self ) -> bool : ...
44
58
async def start_serving (self ) -> None : ...
45
59
async def serve_forever (self ) -> None : ...
46
- else :
47
- def __init__ (self , loop : AbstractEventLoop , sockets : list [socket ]) -> None : ...
48
60
if sys .version_info >= (3 , 8 ):
49
61
@property
50
62
def sockets (self ) -> tuple [socket , ...]: ...
@@ -86,7 +98,11 @@ class BaseEventLoop(AbstractEventLoop):
86
98
# Future methods
87
99
def create_future (self ) -> Future [Any ]: ...
88
100
# Tasks methods
89
- if sys .version_info >= (3 , 8 ):
101
+ if sys .version_info >= (3 , 11 ):
102
+ def create_task (
103
+ self , coro : Coroutine [Any , Any , _T ] | Generator [Any , None , _T ], * , name : object = ..., context : Context | None = ...
104
+ ) -> Task [_T ]: ...
105
+ elif sys .version_info >= (3 , 8 ):
90
106
def create_task (self , coro : Coroutine [Any , Any , _T ] | Generator [Any , None , _T ], * , name : object = ...) -> Task [_T ]: ...
91
107
else :
92
108
def create_task (self , coro : Coroutine [Any , Any , _T ] | Generator [Any , None , _T ]) -> Task [_T ]: ...
@@ -113,7 +129,46 @@ class BaseEventLoop(AbstractEventLoop):
113
129
flags : int = ...,
114
130
) -> list [tuple [AddressFamily , SocketKind , int , str , tuple [str , int ] | tuple [str , int , int , int ]]]: ...
115
131
async def getnameinfo (self , sockaddr : tuple [str , int ] | tuple [str , int , int , int ], flags : int = ...) -> tuple [str , str ]: ...
116
- if sys .version_info >= (3 , 8 ):
132
+ if sys .version_info >= (3 , 11 ):
133
+ @overload
134
+ async def create_connection (
135
+ self ,
136
+ protocol_factory : Callable [[], _ProtocolT ],
137
+ host : str = ...,
138
+ port : int = ...,
139
+ * ,
140
+ ssl : _SSLContext = ...,
141
+ family : int = ...,
142
+ proto : int = ...,
143
+ flags : int = ...,
144
+ sock : None = ...,
145
+ local_addr : tuple [str , int ] | None = ...,
146
+ server_hostname : str | None = ...,
147
+ ssl_handshake_timeout : float | None = ...,
148
+ ssl_shutdown_timeout : float | None = ...,
149
+ happy_eyeballs_delay : float | None = ...,
150
+ interleave : int | None = ...,
151
+ ) -> tuple [BaseTransport , _ProtocolT ]: ...
152
+ @overload
153
+ async def create_connection (
154
+ self ,
155
+ protocol_factory : Callable [[], _ProtocolT ],
156
+ host : None = ...,
157
+ port : None = ...,
158
+ * ,
159
+ ssl : _SSLContext = ...,
160
+ family : int = ...,
161
+ proto : int = ...,
162
+ flags : int = ...,
163
+ sock : socket ,
164
+ local_addr : None = ...,
165
+ server_hostname : str | None = ...,
166
+ ssl_handshake_timeout : float | None = ...,
167
+ ssl_shutdown_timeout : float | None = ...,
168
+ happy_eyeballs_delay : float | None = ...,
169
+ interleave : int | None = ...,
170
+ ) -> tuple [BaseTransport , _ProtocolT ]: ...
171
+ elif sys .version_info >= (3 , 8 ):
117
172
@overload
118
173
async def create_connection (
119
174
self ,
@@ -214,10 +269,7 @@ class BaseEventLoop(AbstractEventLoop):
214
269
local_addr : None = ...,
215
270
server_hostname : str | None = ...,
216
271
) -> tuple [BaseTransport , _ProtocolT ]: ...
217
- if sys .version_info >= (3 , 7 ):
218
- async def sock_sendfile (
219
- self , sock : socket , file : IO [bytes ], offset : int = ..., count : int | None = ..., * , fallback : bool | None = ...
220
- ) -> int : ...
272
+ if sys .version_info >= (3 , 11 ):
221
273
@overload
222
274
async def create_server (
223
275
self ,
@@ -233,6 +285,7 @@ class BaseEventLoop(AbstractEventLoop):
233
285
reuse_address : bool | None = ...,
234
286
reuse_port : bool | None = ...,
235
287
ssl_handshake_timeout : float | None = ...,
288
+ ssl_shutdown_timeout : float | None = ...,
236
289
start_serving : bool = ...,
237
290
) -> Server : ...
238
291
@overload
@@ -250,19 +303,64 @@ class BaseEventLoop(AbstractEventLoop):
250
303
reuse_address : bool | None = ...,
251
304
reuse_port : bool | None = ...,
252
305
ssl_handshake_timeout : float | None = ...,
306
+ ssl_shutdown_timeout : float | None = ...,
253
307
start_serving : bool = ...,
254
308
) -> Server : ...
309
+ async def start_tls (
310
+ self ,
311
+ transport : BaseTransport ,
312
+ protocol : BaseProtocol ,
313
+ sslcontext : ssl .SSLContext ,
314
+ * ,
315
+ server_side : bool = ...,
316
+ server_hostname : str | None = ...,
317
+ ssl_handshake_timeout : float | None = ...,
318
+ ssl_shutdown_timeout : float | None = ...,
319
+ ) -> BaseTransport : ...
255
320
async def connect_accepted_socket (
256
321
self ,
257
322
protocol_factory : Callable [[], _ProtocolT ],
258
323
sock : socket ,
259
324
* ,
260
325
ssl : _SSLContext = ...,
261
326
ssl_handshake_timeout : float | None = ...,
327
+ ssl_shutdown_timeout : float | None = ...,
262
328
) -> tuple [BaseTransport , _ProtocolT ]: ...
263
- async def sendfile (
264
- self , transport : BaseTransport , file : IO [bytes ], offset : int = ..., count : int | None = ..., * , fallback : bool = ...
265
- ) -> int : ...
329
+ elif sys .version_info >= (3 , 7 ):
330
+ @overload
331
+ async def create_server (
332
+ self ,
333
+ protocol_factory : _ProtocolFactory ,
334
+ host : str | Sequence [str ] | None = ...,
335
+ port : int = ...,
336
+ * ,
337
+ family : int = ...,
338
+ flags : int = ...,
339
+ sock : None = ...,
340
+ backlog : int = ...,
341
+ ssl : _SSLContext = ...,
342
+ reuse_address : bool | None = ...,
343
+ reuse_port : bool | None = ...,
344
+ ssl_handshake_timeout : float | None = ...,
345
+ start_serving : bool = ...,
346
+ ) -> Server : ...
347
+ @overload
348
+ async def create_server (
349
+ self ,
350
+ protocol_factory : _ProtocolFactory ,
351
+ host : None = ...,
352
+ port : None = ...,
353
+ * ,
354
+ family : int = ...,
355
+ flags : int = ...,
356
+ sock : socket = ...,
357
+ backlog : int = ...,
358
+ ssl : _SSLContext = ...,
359
+ reuse_address : bool | None = ...,
360
+ reuse_port : bool | None = ...,
361
+ ssl_handshake_timeout : float | None = ...,
362
+ start_serving : bool = ...,
363
+ ) -> Server : ...
266
364
async def start_tls (
267
365
self ,
268
366
transport : BaseTransport ,
@@ -273,6 +371,14 @@ class BaseEventLoop(AbstractEventLoop):
273
371
server_hostname : str | None = ...,
274
372
ssl_handshake_timeout : float | None = ...,
275
373
) -> BaseTransport : ...
374
+ async def connect_accepted_socket (
375
+ self ,
376
+ protocol_factory : Callable [[], _ProtocolT ],
377
+ sock : socket ,
378
+ * ,
379
+ ssl : _SSLContext = ...,
380
+ ssl_handshake_timeout : float | None = ...,
381
+ ) -> tuple [BaseTransport , _ProtocolT ]: ...
276
382
else :
277
383
@overload
278
384
async def create_server (
@@ -307,6 +413,13 @@ class BaseEventLoop(AbstractEventLoop):
307
413
async def connect_accepted_socket (
308
414
self , protocol_factory : Callable [[], _ProtocolT ], sock : socket , * , ssl : _SSLContext = ...
309
415
) -> tuple [BaseTransport , _ProtocolT ]: ...
416
+ if sys .version_info >= (3 , 7 ):
417
+ async def sock_sendfile (
418
+ self , sock : socket , file : IO [bytes ], offset : int = ..., count : int | None = ..., * , fallback : bool | None = ...
419
+ ) -> int : ...
420
+ async def sendfile (
421
+ self , transport : BaseTransport , file : IO [bytes ], offset : int = ..., count : int | None = ..., * , fallback : bool = ...
422
+ ) -> int : ...
310
423
if sys .version_info >= (3 , 11 ):
311
424
async def create_datagram_endpoint ( # type: ignore[override]
312
425
self ,
@@ -378,10 +491,12 @@ class BaseEventLoop(AbstractEventLoop):
378
491
def remove_reader (self , fd : FileDescriptorLike ) -> bool : ...
379
492
def add_writer (self , fd : FileDescriptorLike , callback : Callable [..., Any ], * args : Any ) -> None : ...
380
493
def remove_writer (self , fd : FileDescriptorLike ) -> bool : ...
494
+ # The sock_* methods (and probably some others) are not actually implemented on
495
+ # BaseEventLoop, only on subclasses. We list them here for now for convenience.
381
496
# Completion based I/O methods returning Futures prior to 3.7
382
497
if sys .version_info >= (3 , 7 ):
383
498
async def sock_recv (self , sock : socket , nbytes : int ) -> bytes : ...
384
- async def sock_recv_into (self , sock : socket , buf : bytearray ) -> int : ...
499
+ async def sock_recv_into (self , sock : socket , buf : WriteableBuffer ) -> int : ...
385
500
async def sock_sendall (self , sock : socket , data : bytes ) -> None : ...
386
501
async def sock_connect (self , sock : socket , address : _Address ) -> None : ...
387
502
async def sock_accept (self , sock : socket ) -> tuple [socket , _RetAddress ]: ...
@@ -390,6 +505,10 @@ class BaseEventLoop(AbstractEventLoop):
390
505
def sock_sendall (self , sock : socket , data : bytes ) -> Future [None ]: ...
391
506
def sock_connect (self , sock : socket , address : _Address ) -> Future [None ]: ...
392
507
def sock_accept (self , sock : socket ) -> Future [tuple [socket , _RetAddress ]]: ...
508
+ if sys .version_info >= (3 , 11 ):
509
+ async def sock_recvfrom (self , sock : socket , bufsize : int ) -> bytes : ...
510
+ async def sock_recvfrom_into (self , sock : socket , buf : WriteableBuffer , nbytes : int = ...) -> int : ...
511
+ async def sock_sendto (self , sock : socket , data : bytes , address : _Address ) -> None : ...
393
512
# Signal handling.
394
513
def add_signal_handler (self , sig : int , callback : Callable [..., Any ], * args : Any ) -> None : ...
395
514
def remove_signal_handler (self , sig : int ) -> bool : ...
0 commit comments