Format: application/octet-stream
1 import sys
2 from typing import Any, BinaryIO, Iterable, List, Optional, Text, TextIO, Tuple, TypeVar, Union, overload
3 from typing_extensions import Literal
4
5 # ----- Constants -----
6 # Some socket families are listed in the "Socket families" section of the docs,
7 # but not the "Constants" section. These are listed at the end of the list of
8 # constants.
9 #
10 # Besides those and the first few constants listed, the constants are listed in
11 # documentation order.
12
13 # Constants defined by Python (i.e. not OS constants re-exported from C)
14 has_ipv6: bool
15 SocketType: Any
16 if sys.version_info >= (3,):
17 SocketIO: Any
18
19 # Re-exported errno
20 EAGAIN: int
21 EBADF: int
22 EINTR: int
23 EWOULDBLOCK: int
24
25 # Constants re-exported from C
26
27 # Per socketmodule.c, only these three families are portable
28 AF_UNIX: AddressFamily
29 AF_INET: AddressFamily
30 AF_INET6: AddressFamily
31
32 SOCK_STREAM: SocketKind
33 SOCK_DGRAM: SocketKind
34 SOCK_RAW: SocketKind
35 SOCK_RDM: SocketKind
36 SOCK_SEQPACKET: SocketKind
37
38 if sys.platform == "linux" and sys.version_info >= (3,):
39 SOCK_CLOEXEC: SocketKind
40 SOCK_NONBLOCK: SocketKind
41
42 # Address families not mentioned in the docs
43 AF_AAL5: AddressFamily
44 AF_APPLETALK: AddressFamily
45 AF_ASH: AddressFamily
46 AF_ATMPVC: AddressFamily
47 AF_ATMSVC: AddressFamily
48 AF_AX25: AddressFamily
49 AF_BRIDGE: AddressFamily
50 AF_DECnet: AddressFamily
51 AF_ECONET: AddressFamily
52 AF_IPX: AddressFamily
53 AF_IRDA: AddressFamily
54 AF_KEY: AddressFamily
55 AF_LLC: AddressFamily
56 AF_NETBEUI: AddressFamily
57 AF_NETROM: AddressFamily
58 AF_PPPOX: AddressFamily
59 AF_ROSE: AddressFamily
60 AF_ROUTE: AddressFamily
61 AF_SECURITY: AddressFamily
62 AF_SNA: AddressFamily
63 AF_SYSTEM: AddressFamily
64 AF_UNSPEC: AddressFamily
65 AF_WANPIPE: AddressFamily
66 AF_X25: AddressFamily
67
68 # The "many constants" referenced by the docs
69 SOMAXCONN: int
70 AI_ADDRCONFIG: AddressInfo
71 AI_ALL: AddressInfo
72 AI_CANONNAME: AddressInfo
73 AI_DEFAULT: AddressInfo
74 AI_MASK: AddressInfo
75 AI_NUMERICHOST: AddressInfo
76 AI_NUMERICSERV: AddressInfo
77 AI_PASSIVE: AddressInfo
78 AI_V4MAPPED: AddressInfo
79 AI_V4MAPPED_CFG: AddressInfo
80 EAI_ADDRFAMILY: int
81 EAI_AGAIN: int
82 EAI_BADFLAGS: int
83 EAI_BADHINTS: int
84 EAI_FAIL: int
85 EAI_FAMILY: int
86 EAI_MAX: int
87 EAI_MEMORY: int
88 EAI_NODATA: int
89 EAI_NONAME: int
90 EAI_OVERFLOW: int
91 EAI_PROTOCOL: int
92 EAI_SERVICE: int
93 EAI_SOCKTYPE: int
94 EAI_SYSTEM: int
95 INADDR_ALLHOSTS_GROUP: int
96 INADDR_ANY: int
97 INADDR_BROADCAST: int
98 INADDR_LOOPBACK: int
99 INADDR_MAX_LOCAL_GROUP: int
100 INADDR_NONE: int
101 INADDR_UNSPEC_GROUP: int
102 IPPORT_RESERVED: int
103 IPPORT_USERRESERVED: int
104 IPPROTO_AH: int
105 IPPROTO_BIP: int
106 IPPROTO_DSTOPTS: int
107 IPPROTO_EGP: int
108 IPPROTO_EON: int
109 IPPROTO_ESP: int
110 IPPROTO_FRAGMENT: int
111 IPPROTO_GGP: int
112 IPPROTO_GRE: int
113 IPPROTO_HELLO: int
114 IPPROTO_HOPOPTS: int
115 IPPROTO_ICMP: int
116 IPPROTO_ICMPV6: int
117 IPPROTO_IDP: int
118 IPPROTO_IGMP: int
119 IPPROTO_IP: int
120 IPPROTO_IPCOMP: int
121 IPPROTO_IPIP: int
122 IPPROTO_IPV4: int
123 IPPROTO_IPV6: int
124 IPPROTO_MAX: int
125 IPPROTO_MOBILE: int
126 IPPROTO_ND: int
127 IPPROTO_NONE: int
128 IPPROTO_PIM: int
129 IPPROTO_PUP: int
130 IPPROTO_RAW: int
131 IPPROTO_ROUTING: int
132 IPPROTO_RSVP: int
133 IPPROTO_SCTP: int
134 IPPROTO_TCP: int
135 IPPROTO_TP: int
136 IPPROTO_UDP: int
137 IPPROTO_VRRP: int
138 IPPROTO_XTP: int
139 IPV6_CHECKSUM: int
140 IPV6_DONTFRAG: int
141 IPV6_DSTOPTS: int
142 IPV6_HOPLIMIT: int
143 IPV6_HOPOPTS: int
144 IPV6_JOIN_GROUP: int
145 IPV6_LEAVE_GROUP: int
146 IPV6_MULTICAST_HOPS: int
147 IPV6_MULTICAST_IF: int
148 IPV6_MULTICAST_LOOP: int
149 IPV6_NEXTHOP: int
150 IPV6_PATHMTU: int
151 IPV6_PKTINFO: int
152 IPV6_RECVDSTOPTS: int
153 IPV6_RECVHOPLIMIT: int
154 IPV6_RECVHOPOPTS: int
155 IPV6_RECVPATHMTU: int
156 IPV6_RECVPKTINFO: int
157 IPV6_RECVRTHDR: int
158 IPV6_RECVTCLASS: int
159 IPV6_RTHDR: int
160 IPV6_RTHDRDSTOPTS: int
161 IPV6_RTHDR_TYPE_0: int
162 IPV6_TCLASS: int
163 IPV6_UNICAST_HOPS: int
164 IPV6_USE_MIN_MTU: int
165 IPV6_V6ONLY: int
166 IPX_TYPE: int
167 IP_ADD_MEMBERSHIP: int
168 IP_DEFAULT_MULTICAST_LOOP: int
169 IP_DEFAULT_MULTICAST_TTL: int
170 IP_DROP_MEMBERSHIP: int
171 IP_HDRINCL: int
172 IP_MAX_MEMBERSHIPS: int
173 IP_MULTICAST_IF: int
174 IP_MULTICAST_LOOP: int
175 IP_MULTICAST_TTL: int
176 IP_OPTIONS: int
177 IP_RECVDSTADDR: int
178 IP_RECVOPTS: int
179 IP_RECVRETOPTS: int
180 IP_RETOPTS: int
181 IP_TOS: int
182 IP_TRANSPARENT: int
183 IP_TTL: int
184 LOCAL_PEERCRED: int
185 MSG_BCAST: MsgFlag
186 MSG_BTAG: MsgFlag
187 MSG_CMSG_CLOEXEC: MsgFlag
188 MSG_CONFIRM: MsgFlag
189 MSG_CTRUNC: MsgFlag
190 MSG_DONTROUTE: MsgFlag
191 MSG_DONTWAIT: MsgFlag
192 MSG_EOF: MsgFlag
193 MSG_EOR: MsgFlag
194 MSG_ERRQUEUE: MsgFlag
195 MSG_ETAG: MsgFlag
196 MSG_FASTOPEN: MsgFlag
197 MSG_MCAST: MsgFlag
198 MSG_MORE: MsgFlag
199 MSG_NOSIGNAL: MsgFlag
200 MSG_NOTIFICATION: MsgFlag
201 MSG_OOB: MsgFlag
202 MSG_PEEK: MsgFlag
203 MSG_TRUNC: MsgFlag
204 MSG_WAITALL: MsgFlag
205 NI_DGRAM: int
206 NI_MAXHOST: int
207 NI_MAXSERV: int
208 NI_NAMEREQD: int
209 NI_NOFQDN: int
210 NI_NUMERICHOST: int
211 NI_NUMERICSERV: int
212 SCM_CREDENTIALS: int
213 SCM_CREDS: int
214 SCM_RIGHTS: int
215 SHUT_RD: int
216 SHUT_RDWR: int
217 SHUT_WR: int
218 SOL_ATALK: int
219 SOL_AX25: int
220 SOL_HCI: int
221 SOL_IP: int
222 SOL_IPX: int
223 SOL_NETROM: int
224 SOL_ROSE: int
225 SOL_SOCKET: int
226 SOL_TCP: int
227 SOL_UDP: int
228 SO_ACCEPTCONN: int
229 SO_BINDTODEVICE: int
230 SO_BROADCAST: int
231 SO_DEBUG: int
232 SO_DONTROUTE: int
233 SO_ERROR: int
234 SO_EXCLUSIVEADDRUSE: int
235 SO_KEEPALIVE: int
236 SO_LINGER: int
237 SO_MARK: int
238 SO_OOBINLINE: int
239 SO_PASSCRED: int
240 SO_PEERCRED: int
241 SO_PRIORITY: int
242 SO_RCVBUF: int
243 SO_RCVLOWAT: int
244 SO_RCVTIMEO: int
245 SO_REUSEADDR: int
246 SO_REUSEPORT: int
247 SO_SETFIB: int
248 SO_SNDBUF: int
249 SO_SNDLOWAT: int
250 SO_SNDTIMEO: int
251 SO_TYPE: int
252 SO_USELOOPBACK: int
253 TCP_CORK: int
254 TCP_DEFER_ACCEPT: int
255 TCP_FASTOPEN: int
256 TCP_INFO: int
257 TCP_KEEPCNT: int
258 TCP_KEEPIDLE: int
259 TCP_KEEPINTVL: int
260 TCP_LINGER2: int
261 TCP_MAXSEG: int
262 TCP_NODELAY: int
263 TCP_QUICKACK: int
264 TCP_SYNCNT: int
265 TCP_WINDOW_CLAMP: int
266 if sys.version_info >= (3, 7):
267 TCP_NOTSENT_LOWAT: int
268
269 # Specifically-documented constants
270
271 if sys.platform == "linux" and sys.version_info >= (3,):
272 AF_CAN: AddressFamily
273 PF_CAN: int
274 SOL_CAN_BASE: int
275 SOL_CAN_RAW: int
276 CAN_EFF_FLAG: int
277 CAN_EFF_MASK: int
278 CAN_ERR_FLAG: int
279 CAN_ERR_MASK: int
280 CAN_RAW: int
281 CAN_RAW_ERR_FILTER: int
282 CAN_RAW_FILTER: int
283 CAN_RAW_LOOPBACK: int
284 CAN_RAW_RECV_OWN_MSGS: int
285 CAN_RTR_FLAG: int
286 CAN_SFF_MASK: int
287
288 CAN_BCM: int
289 CAN_BCM_TX_SETUP: int
290 CAN_BCM_TX_DELETE: int
291 CAN_BCM_TX_READ: int
292 CAN_BCM_TX_SEND: int
293 CAN_BCM_RX_SETUP: int
294 CAN_BCM_RX_DELETE: int
295 CAN_BCM_RX_READ: int
296 CAN_BCM_TX_STATUS: int
297 CAN_BCM_TX_EXPIRED: int
298 CAN_BCM_RX_STATUS: int
299 CAN_BCM_RX_TIMEOUT: int
300 CAN_BCM_RX_CHANGED: int
301
302 CAN_RAW_FD_FRAMES: int
303
304 if sys.platform == "linux" and sys.version_info >= (3, 8):
305 CAN_BCM_SETTIMER: int
306 CAN_BCM_STARTTIMER: int
307 CAN_BCM_TX_COUNTEVT: int
308 CAN_BCM_TX_ANNOUNCE: int
309 CAN_BCM_TX_CP_CAN_ID: int
310 CAN_BCM_RX_FILTER_ID: int
311 CAN_BCM_RX_CHECK_DLC: int
312 CAN_BCM_RX_NO_AUTOTIMER: int
313 CAN_BCM_RX_ANNOUNCE_RESUME: int
314 CAN_BCM_TX_RESET_MULTI_IDX: int
315 CAN_BCM_RX_RTR_FRAME: int
316 CAN_BCM_CAN_FD_FRAME: int
317
318 if sys.platform == "linux" and sys.version_info >= (3, 7):
319 CAN_ISOTP: int
320
321 if sys.platform == "linux" and sys.version_info >= (3, 9):
322 CAN_J1939: int
323
324 J1939_MAX_UNICAST_ADDR: int
325 J1939_IDLE_ADDR: int
326 J1939_NO_ADDR: int
327 J1939_NO_NAME: int
328 J1939_PGN_REQUEST: int
329 J1939_PGN_ADDRESS_CLAIMED: int
330 J1939_PGN_ADDRESS_COMMANDED: int
331 J1939_PGN_PDU1_MAX: int
332 J1939_PGN_MAX: int
333 J1939_NO_PGN: int
334
335 SO_J1939_FILTER: int
336 SO_J1939_PROMISC: int
337 SO_J1939_SEND_PRIO: int
338 SO_J1939_ERRQUEUE: int
339
340 SCM_J1939_DEST_ADDR: int
341 SCM_J1939_DEST_NAME: int
342 SCM_J1939_PRIO: int
343 SCM_J1939_ERRQUEUE: int
344
345 J1939_NLA_PAD: int
346 J1939_NLA_BYTES_ACKED: int
347
348 J1939_EE_INFO_NONE: int
349 J1939_EE_INFO_TX_ABORT: int
350
351 J1939_FILTER_MAX: int
352
353 if sys.platform == "linux":
354 AF_PACKET: AddressFamily
355 PF_PACKET: int
356 PACKET_BROADCAST: int
357 PACKET_FASTROUTE: int
358 PACKET_HOST: int
359 PACKET_LOOPBACK: int
360 PACKET_MULTICAST: int
361 PACKET_OTHERHOST: int
362 PACKET_OUTGOING: int
363
364 if sys.platform == "linux" and sys.version_info >= (3,):
365 AF_RDS: AddressFamily
366 PF_RDS: int
367 SOL_RDS: int
368 RDS_CANCEL_SENT_TO: int
369 RDS_CMSG_RDMA_ARGS: int
370 RDS_CMSG_RDMA_DEST: int
371 RDS_CMSG_RDMA_MAP: int
372 RDS_CMSG_RDMA_STATUS: int
373 RDS_CMSG_RDMA_UPDATE: int
374 RDS_CONG_MONITOR: int
375 RDS_FREE_MR: int
376 RDS_GET_MR: int
377 RDS_GET_MR_FOR_DEST: int
378 RDS_RDMA_DONTWAIT: int
379 RDS_RDMA_FENCE: int
380 RDS_RDMA_INVALIDATE: int
381 RDS_RDMA_NOTIFY_ME: int
382 RDS_RDMA_READWRITE: int
383 RDS_RDMA_SILENT: int
384 RDS_RDMA_USE_ONCE: int
385 RDS_RECVERR: int
386
387 if sys.platform == "win32":
388 SIO_RCVALL: int
389 SIO_KEEPALIVE_VALS: int
390 if sys.version_info >= (3, 6):
391 SIO_LOOPBACK_FAST_PATH: int
392 RCVALL_IPLEVEL: int
393 RCVALL_MAX: int
394 RCVALL_OFF: int
395 RCVALL_ON: int
396 RCVALL_SOCKETLEVELONLY: int
397
398 if sys.platform == "linux":
399 AF_TIPC: AddressFamily
400 SOL_TIPC: int
401 TIPC_ADDR_ID: int
402 TIPC_ADDR_NAME: int
403 TIPC_ADDR_NAMESEQ: int
404 TIPC_CFG_SRV: int
405 TIPC_CLUSTER_SCOPE: int
406 TIPC_CONN_TIMEOUT: int
407 TIPC_CRITICAL_IMPORTANCE: int
408 TIPC_DEST_DROPPABLE: int
409 TIPC_HIGH_IMPORTANCE: int
410 TIPC_IMPORTANCE: int
411 TIPC_LOW_IMPORTANCE: int
412 TIPC_MEDIUM_IMPORTANCE: int
413 TIPC_NODE_SCOPE: int
414 TIPC_PUBLISHED: int
415 TIPC_SRC_DROPPABLE: int
416 TIPC_SUBSCR_TIMEOUT: int
417 TIPC_SUB_CANCEL: int
418 TIPC_SUB_PORTS: int
419 TIPC_SUB_SERVICE: int
420 TIPC_TOP_SRV: int
421 TIPC_WAIT_FOREVER: int
422 TIPC_WITHDRAWN: int
423 TIPC_ZONE_SCOPE: int
424
425 if sys.platform == "linux" and sys.version_info >= (3, 6):
426 AF_ALG: AddressFamily
427 SOL_ALG: int
428 ALG_OP_DECRYPT: int
429 ALG_OP_ENCRYPT: int
430 ALG_OP_SIGN: int
431 ALG_OP_VERIFY: int
432 ALG_SET_AEAD_ASSOCLEN: int
433 ALG_SET_AEAD_AUTHSIZE: int
434 ALG_SET_IV: int
435 ALG_SET_KEY: int
436 ALG_SET_OP: int
437 ALG_SET_PUBKEY: int
438
439 if sys.platform == "linux" and sys.version_info >= (3, 7):
440 AF_VSOCK: AddressFamily
441 IOCTL_VM_SOCKETS_GET_LOCAL_CID: int
442 VMADDR_CID_ANY: int
443 VMADDR_CID_HOST: int
444 VMADDR_PORT_ANY: int
445 SO_VM_SOCKETS_BUFFER_MAX_SIZE: int
446 SO_VM_SOCKETS_BUFFER_SIZE: int
447 SO_VM_SOCKETS_BUFFER_MIN_SIZE: int
448 VM_SOCKETS_INVALID_VERSION: int
449
450 AF_LINK: AddressFamily # Availability: BSD, macOS
451
452 # BDADDR_* and HCI_* listed with other bluetooth constants below
453
454 if sys.version_info >= (3, 6):
455 SO_DOMAIN: int
456 SO_PASSSEC: int
457 SO_PEERSEC: int
458 SO_PROTOCOL: int
459 TCP_CONGESTION: int
460 TCP_USER_TIMEOUT: int
461
462 if sys.platform == "linux" and sys.version_info >= (3, 8):
463 AF_QIPCRTR: AddressFamily
464
465 # Semi-documented constants
466 # (Listed under "Socket families" in the docs, but not "Constants")
467
468 if sys.platform == "linux":
469 # Netlink is defined by Linux
470 AF_NETLINK: AddressFamily
471 NETLINK_ARPD: int
472 NETLINK_CRYPTO: int
473 NETLINK_DNRTMSG: int
474 NETLINK_FIREWALL: int
475 NETLINK_IP6_FW: int
476 NETLINK_NFLOG: int
477 NETLINK_ROUTE6: int
478 NETLINK_ROUTE: int
479 NETLINK_SKIP: int
480 NETLINK_TAPBASE: int
481 NETLINK_TCPDIAG: int
482 NETLINK_USERSOCK: int
483 NETLINK_W1: int
484 NETLINK_XFRM: int
485
486 if sys.platform != "win32" and sys.platform != "darwin":
487 # Linux and some BSD support is explicit in the docs
488 # Windows and macOS do not support in practice
489 AF_BLUETOOTH: AddressFamily
490 BTPROTO_HCI: int
491 BTPROTO_L2CAP: int
492 BTPROTO_RFCOMM: int
493 BTPROTO_SCO: int # not in FreeBSD
494
495 BDADDR_ANY: str
496 BDADDR_LOCAL: str
497
498 HCI_FILTER: int # not in NetBSD or DragonFlyBSD
499 # not in FreeBSD, NetBSD, or DragonFlyBSD
500 HCI_TIME_STAMP: int
501 HCI_DATA_DIR: int
502
503 if sys.platform == "darwin":
504 # PF_SYSTEM is defined by macOS
505 PF_SYSTEM: int
506 SYSPROTO_CONTROL: int
507
508 # enum versions of above flags
509 if sys.version_info >= (3, 4):
510 from enum import IntEnum
511 class AddressFamily(IntEnum):
512 AF_UNIX: int
513 AF_INET: int
514 AF_INET6: int
515 AF_AAL5: int
516 AF_ALG: int
517 AF_APPLETALK: int
518 AF_ASH: int
519 AF_ATMPVC: int
520 AF_ATMSVC: int
521 AF_AX25: int
522 AF_BLUETOOTH: int
523 AF_BRIDGE: int
524 AF_CAN: int
525 AF_DECnet: int
526 AF_ECONET: int
527 AF_IPX: int
528 AF_IRDA: int
529 AF_KEY: int
530 AF_LINK: int
531 AF_LLC: int
532 AF_NETBEUI: int
533 AF_NETLINK: int
534 AF_NETROM: int
535 AF_PACKET: int
536 AF_PPPOX: int
537 AF_QIPCRTR: int
538 AF_RDS: int
539 AF_ROSE: int
540 AF_ROUTE: int
541 AF_SECURITY: int
542 AF_SNA: int
543 AF_SYSTEM: int
544 AF_TIPC: int
545 AF_UNSPEC: int
546 AF_VSOCK: int
547 AF_WANPIPE: int
548 AF_X25: int
549 class SocketKind(IntEnum):
550 SOCK_STREAM: int
551 SOCK_DGRAM: int
552 SOCK_RAW: int
553 SOCK_RDM: int
554 SOCK_SEQPACKET: int
555 SOCK_CLOEXEC: int
556 SOCK_NONBLOCK: int
557
558 else:
559 AddressFamily = int
560 SocketKind = int
561
562 if sys.version_info >= (3, 6):
563 from enum import IntFlag
564 class AddressInfo(IntFlag):
565 AI_ADDRCONFIG: int
566 AI_ALL: int
567 AI_CANONNAME: int
568 AI_NUMERICHOST: int
569 AI_NUMERICSERV: int
570 AI_PASSIVE: int
571 AI_V4MAPPED: int
572 class MsgFlag(IntFlag):
573 MSG_CTRUNC: int
574 MSG_DONTROUTE: int
575 MSG_DONTWAIT: int
576 MSG_EOR: int
577 MSG_OOB: int
578 MSG_PEEK: int
579 MSG_TRUNC: int
580 MSG_WAITALL: int
581
582 else:
583 AddressInfo = int
584 MsgFlag = int
585
586 # ----- Exceptions -----
587
588 if sys.version_info < (3,):
589 class error(IOError): ...
590
591 else:
592 error = OSError
593
594 class herror(error):
595 def __init__(self, herror: int = ..., string: str = ...) -> None: ...
596
597 class gaierror(error):
598 def __init__(self, error: int = ..., string: str = ...) -> None: ...
599
600 class timeout(error):
601 def __init__(self, error: int = ..., string: str = ...) -> None: ...
602
603 # ----- Classes -----
604
605 # Addresses can be either tuples of varying lengths (AF_INET, AF_INET6,
606 # AF_NETLINK, AF_TIPC) or strings (AF_UNIX).
607 _Address = Union[tuple, str]
608 _RetAddress = Any
609 # TODO Most methods allow bytes as address objects
610
611 _WriteBuffer = Union[bytearray, memoryview]
612
613 _CMSG = Tuple[int, int, bytes]
614 _SelfT = TypeVar("_SelfT", bound=socket)
615
616 class socket:
617 family: int
618 type: int
619 proto: int
620
621 if sys.version_info < (3,):
622 def __init__(self, family: int = ..., type: int = ..., proto: int = ...) -> None: ...
623 else:
624 def __init__(self, family: int = ..., type: int = ..., proto: int = ..., fileno: Optional[int] = ...) -> None: ...
625 def __enter__(self: _SelfT) -> _SelfT: ...
626 def __exit__(self, *args: Any) -> None: ...
627 # --- methods ---
628 def accept(self) -> Tuple[socket, _RetAddress]: ...
629 def bind(self, address: Union[_Address, bytes]) -> None: ...
630 def close(self) -> None: ...
631 def connect(self, address: Union[_Address, bytes]) -> None: ...
632 def connect_ex(self, address: Union[_Address, bytes]) -> int: ...
633 def detach(self) -> int: ...
634 def dup(self) -> socket: ...
635 def fileno(self) -> int: ...
636 if sys.version_info >= (3, 4):
637 def get_inheritable(self) -> bool: ...
638 def getpeername(self) -> _RetAddress: ...
639 def getsockname(self) -> _RetAddress: ...
640 @overload
641 def getsockopt(self, level: int, optname: int) -> int: ...
642 @overload
643 def getsockopt(self, level: int, optname: int, buflen: int) -> bytes: ...
644 if sys.version_info >= (3, 7):
645 def getblocking(self) -> bool: ...
646 def gettimeout(self) -> Optional[float]: ...
647 if sys.platform == "win32" and sys.version_info >= (3, 6):
648 def ioctl(self, control: int, option: Union[int, Tuple[int, int, int], bool]) -> None: ...
649 elif sys.platform == "win32":
650 def ioctl(self, control: int, option: Union[int, Tuple[int, int, int]]) -> None: ...
651 if sys.version_info >= (3, 5):
652 def listen(self, __backlog: int = ...) -> None: ...
653 else:
654 def listen(self, __backlog: int) -> None: ...
655 # Note that the makefile's documented windows-specific behavior is not represented
656 if sys.version_info >= (3,):
657 # mode strings with duplicates are intentionally excluded
658 @overload
659 def makefile(
660 self,
661 mode: Literal["r", "w", "rw", "wr", ""] = ...,
662 buffering: Optional[int] = ...,
663 *,
664 encoding: Optional[str] = ...,
665 errors: Optional[str] = ...,
666 newline: Optional[str] = ...,
667 ) -> TextIO: ...
668 @overload
669 def makefile(
670 self,
671 mode: Literal["b", "rb", "br", "wb", "bw", "rwb", "rbw", "wrb", "wbr", "brw", "bwr"],
672 buffering: Optional[int] = ...,
673 *,
674 encoding: Optional[str] = ...,
675 errors: Optional[str] = ...,
676 newline: Optional[str] = ...,
677 ) -> BinaryIO: ...
678 else:
679 def makefile(self, mode: unicode = ..., buffering: int = ...) -> BinaryIO: ...
680 def recv(self, bufsize: int, flags: int = ...) -> bytes: ...
681 def recvfrom(self, bufsize: int, flags: int = ...) -> Tuple[bytes, _RetAddress]: ...
682 if sys.version_info >= (3, 3) and sys.platform != "win32":
683 def recvmsg(self, __bufsize: int, __ancbufsize: int = ..., __flags: int = ...) -> Tuple[bytes, List[_CMSG], int, Any]: ...
684 def recvmsg_into(
685 self, __buffers: Iterable[_WriteBuffer], __ancbufsize: int = ..., __flags: int = ...
686 ) -> Tuple[int, List[_CMSG], int, Any]: ...
687 def recvfrom_into(self, buffer: _WriteBuffer, nbytes: int = ..., flags: int = ...) -> Tuple[int, _RetAddress]: ...
688 def recv_into(self, buffer: _WriteBuffer, nbytes: int = ..., flags: int = ...) -> int: ...
689 def send(self, data: bytes, flags: int = ...) -> int: ...
690 def sendall(self, data: bytes, flags: int = ...) -> None: ... # return type: None on success
691 @overload
692 def sendto(self, data: bytes, address: _Address) -> int: ...
693 @overload
694 def sendto(self, data: bytes, flags: int, address: _Address) -> int: ...
695 if sys.version_info >= (3, 3) and sys.platform != "win32":
696 def sendmsg(
697 self, __buffers: Iterable[bytes], __ancdata: Iterable[_CMSG] = ..., __flags: int = ..., __address: _Address = ...
698 ) -> int: ...
699 if sys.platform == "linux" and sys.version_info >= (3, 6):
700 def sendmsg_afalg(
701 self, msg: Iterable[bytes] = ..., *, op: int, iv: Any = ..., assoclen: int = ..., flags: int = ...
702 ) -> int: ...
703 if sys.version_info >= (3,):
704 def sendfile(self, file: BinaryIO, offset: int = ..., count: Optional[int] = ...) -> int: ...
705 def set_inheritable(self, inheritable: bool) -> None: ...
706 def setblocking(self, flag: bool) -> None: ...
707 def settimeout(self, value: Optional[float]) -> None: ...
708 if sys.version_info < (3, 6):
709 def setsockopt(self, level: int, optname: int, value: Union[int, bytes]) -> None: ...
710 else:
711 @overload
712 def setsockopt(self, level: int, optname: int, value: Union[int, bytes]) -> None: ...
713 @overload
714 def setsockopt(self, level: int, optname: int, value: None, optlen: int) -> None: ...
715 if sys.platform == "win32":
716 def share(self, process_id: int) -> bytes: ...
717 def shutdown(self, how: int) -> None: ...
718
719 # ----- Functions -----
720
721 if sys.version_info >= (3, 7):
722 def close(fd: int) -> None: ...
723
724 def create_connection(
725 address: Tuple[Optional[str], int],
726 timeout: Optional[float] = ...,
727 source_address: Optional[Tuple[Union[bytearray, bytes, Text], int]] = ...,
728 ) -> socket: ...
729
730 if sys.version_info >= (3, 8):
731 def create_server(
732 address: _Address, *, family: int = ..., backlog: Optional[int] = ..., reuse_port: bool = ..., dualstack_ipv6: bool = ...
733 ) -> socket: ...
734 def has_dualstack_ipv6() -> bool: ...
735
736 def fromfd(fd: int, family: int, type: int, proto: int = ...) -> socket: ...
737
738 if sys.platform == "win32" and sys.version_info >= (3, 3):
739 def fromshare(info: bytes) -> socket: ...
740
741 # the 5th tuple item is an address
742 if sys.version_info >= (3,):
743 def getaddrinfo(
744 host: Optional[Union[bytearray, bytes, Text]],
745 port: Union[str, int, None],
746 family: int = ...,
747 type: int = ...,
748 proto: int = ...,
749 flags: int = ...,
750 ) -> List[Tuple[AddressFamily, SocketKind, int, str, Union[Tuple[str, int], Tuple[str, int, int, int]]]]: ...
751
752 else:
753 def getaddrinfo(
754 host: Optional[Union[bytearray, bytes, Text]],
755 port: Union[str, int, None],
756 family: int = ...,
757 socktype: int = ...,
758 proto: int = ...,
759 flags: int = ...,
760 ) -> List[Tuple[AddressFamily, SocketKind, int, str, Tuple[Any, ...]]]: ...
761
762 def getfqdn(name: str = ...) -> str: ...
763 def gethostbyname(hostname: str) -> str: ...
764 def gethostbyname_ex(hostname: str) -> Tuple[str, List[str], List[str]]: ...
765 def gethostname() -> str: ...
766 def gethostbyaddr(ip_address: str) -> Tuple[str, List[str], List[str]]: ...
767 def getnameinfo(sockaddr: Union[Tuple[str, int], Tuple[str, int, int, int]], flags: int) -> Tuple[str, str]: ...
768 def getprotobyname(protocolname: str) -> int: ...
769 def getservbyname(servicename: str, protocolname: str = ...) -> int: ...
770 def getservbyport(port: int, protocolname: str = ...) -> str: ...
771 def socketpair(family: int = ..., type: int = ..., proto: int = ...) -> Tuple[socket, socket]: ...
772 def ntohl(x: int) -> int: ... # param & ret val are 32-bit ints
773 def ntohs(x: int) -> int: ... # param & ret val are 16-bit ints
774 def htonl(x: int) -> int: ... # param & ret val are 32-bit ints
775 def htons(x: int) -> int: ... # param & ret val are 16-bit ints
776 def inet_aton(ip_string: str) -> bytes: ... # ret val 4 bytes in length
777 def inet_ntoa(packed_ip: bytes) -> str: ...
778 def inet_pton(address_family: int, ip_string: str) -> bytes: ...
779 def inet_ntop(address_family: int, packed_ip: bytes) -> str: ...
780
781 if sys.version_info >= (3, 9):
782 if sys.platform != "win32":
783 # flags and address appear to be unused in send_fds and recv_fds
784 def send_fds(
785 sock: socket, buffers: Iterable[bytes], fds: Union[bytes, Iterable[int]], flags: int = ..., address: None = ...
786 ) -> int: ...
787 def recv_fds(sock: socket, bufsize: int, maxfds: int, flags: int = ...) -> Tuple[bytes, List[int], int, Any]: ...
788
789 if sys.version_info >= (3, 3):
790 def CMSG_LEN(length: int) -> int: ...
791 def CMSG_SPACE(length: int) -> int: ...
792
793 def getdefaulttimeout() -> Optional[float]: ...
794 def setdefaulttimeout(timeout: Optional[float]) -> None: ...
795
796 if sys.version_info >= (3, 3):
797 if sys.platform != "win32":
798 def sethostname(name: str) -> None: ...
799 # Windows added these in 3.8, but didn't have them before
800 if sys.platform != "win32" or sys.version_info >= (3, 8):
801 def if_nameindex() -> List[Tuple[int, str]]: ...
802 def if_nametoindex(name: str) -> int: ...
803 def if_indextoname(index: int) -> str: ...
804