Format: application/octet-stream
⬇ Download File (22.2 KB)
   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