massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-pyright / node_modules / pyright / dist / typeshed-fallback / stdlib / socket.pyi
1 import sys
2 from _typeshed import ReadableBuffer, Self, WriteableBuffer
3 from collections.abc import Iterable
4 from enum import IntEnum, IntFlag
5 from io import RawIOBase
6 from typing import Any, BinaryIO, TextIO, TypeVar, overload
7 from typing_extensions import Literal
8
9 # Ideally, we'd just do "from _socket import *". Unfortunately, socket
10 # overrides some definitions from _socket incompatibly. mypy incorrectly
11 # prefers the definitions from _socket over those defined here.
12 import _socket
13 from _socket import (
14     _FD,
15     CMSG_LEN as CMSG_LEN,
16     CMSG_SPACE as CMSG_SPACE,
17     EAI_ADDRFAMILY as EAI_ADDRFAMILY,
18     EAI_AGAIN as EAI_AGAIN,
19     EAI_BADFLAGS as EAI_BADFLAGS,
20     EAI_BADHINTS as EAI_BADHINTS,
21     EAI_FAIL as EAI_FAIL,
22     EAI_FAMILY as EAI_FAMILY,
23     EAI_MAX as EAI_MAX,
24     EAI_MEMORY as EAI_MEMORY,
25     EAI_NODATA as EAI_NODATA,
26     EAI_NONAME as EAI_NONAME,
27     EAI_OVERFLOW as EAI_OVERFLOW,
28     EAI_PROTOCOL as EAI_PROTOCOL,
29     EAI_SERVICE as EAI_SERVICE,
30     EAI_SOCKTYPE as EAI_SOCKTYPE,
31     EAI_SYSTEM as EAI_SYSTEM,
32     INADDR_ALLHOSTS_GROUP as INADDR_ALLHOSTS_GROUP,
33     INADDR_ANY as INADDR_ANY,
34     INADDR_BROADCAST as INADDR_BROADCAST,
35     INADDR_LOOPBACK as INADDR_LOOPBACK,
36     INADDR_MAX_LOCAL_GROUP as INADDR_MAX_LOCAL_GROUP,
37     INADDR_NONE as INADDR_NONE,
38     INADDR_UNSPEC_GROUP as INADDR_UNSPEC_GROUP,
39     IP_ADD_MEMBERSHIP as IP_ADD_MEMBERSHIP,
40     IP_DEFAULT_MULTICAST_LOOP as IP_DEFAULT_MULTICAST_LOOP,
41     IP_DEFAULT_MULTICAST_TTL as IP_DEFAULT_MULTICAST_TTL,
42     IP_DROP_MEMBERSHIP as IP_DROP_MEMBERSHIP,
43     IP_HDRINCL as IP_HDRINCL,
44     IP_MAX_MEMBERSHIPS as IP_MAX_MEMBERSHIPS,
45     IP_MULTICAST_IF as IP_MULTICAST_IF,
46     IP_MULTICAST_LOOP as IP_MULTICAST_LOOP,
47     IP_MULTICAST_TTL as IP_MULTICAST_TTL,
48     IP_OPTIONS as IP_OPTIONS,
49     IP_RECVDSTADDR as IP_RECVDSTADDR,
50     IP_RECVOPTS as IP_RECVOPTS,
51     IP_RECVRETOPTS as IP_RECVRETOPTS,
52     IP_RETOPTS as IP_RETOPTS,
53     IP_TOS as IP_TOS,
54     IP_TRANSPARENT as IP_TRANSPARENT,
55     IP_TTL as IP_TTL,
56     IPPORT_RESERVED as IPPORT_RESERVED,
57     IPPORT_USERRESERVED as IPPORT_USERRESERVED,
58     IPPROTO_AH as IPPROTO_AH,
59     IPPROTO_BIP as IPPROTO_BIP,
60     IPPROTO_DSTOPTS as IPPROTO_DSTOPTS,
61     IPPROTO_EGP as IPPROTO_EGP,
62     IPPROTO_EON as IPPROTO_EON,
63     IPPROTO_ESP as IPPROTO_ESP,
64     IPPROTO_FRAGMENT as IPPROTO_FRAGMENT,
65     IPPROTO_GGP as IPPROTO_GGP,
66     IPPROTO_GRE as IPPROTO_GRE,
67     IPPROTO_HELLO as IPPROTO_HELLO,
68     IPPROTO_HOPOPTS as IPPROTO_HOPOPTS,
69     IPPROTO_ICMP as IPPROTO_ICMP,
70     IPPROTO_ICMPV6 as IPPROTO_ICMPV6,
71     IPPROTO_IDP as IPPROTO_IDP,
72     IPPROTO_IGMP as IPPROTO_IGMP,
73     IPPROTO_IP as IPPROTO_IP,
74     IPPROTO_IPCOMP as IPPROTO_IPCOMP,
75     IPPROTO_IPIP as IPPROTO_IPIP,
76     IPPROTO_IPV4 as IPPROTO_IPV4,
77     IPPROTO_IPV6 as IPPROTO_IPV6,
78     IPPROTO_MAX as IPPROTO_MAX,
79     IPPROTO_MOBILE as IPPROTO_MOBILE,
80     IPPROTO_ND as IPPROTO_ND,
81     IPPROTO_NONE as IPPROTO_NONE,
82     IPPROTO_PIM as IPPROTO_PIM,
83     IPPROTO_PUP as IPPROTO_PUP,
84     IPPROTO_RAW as IPPROTO_RAW,
85     IPPROTO_ROUTING as IPPROTO_ROUTING,
86     IPPROTO_RSVP as IPPROTO_RSVP,
87     IPPROTO_SCTP as IPPROTO_SCTP,
88     IPPROTO_TCP as IPPROTO_TCP,
89     IPPROTO_TP as IPPROTO_TP,
90     IPPROTO_UDP as IPPROTO_UDP,
91     IPPROTO_VRRP as IPPROTO_VRRP,
92     IPPROTO_XTP as IPPROTO_XTP,
93     IPV6_CHECKSUM as IPV6_CHECKSUM,
94     IPV6_DONTFRAG as IPV6_DONTFRAG,
95     IPV6_DSTOPTS as IPV6_DSTOPTS,
96     IPV6_HOPLIMIT as IPV6_HOPLIMIT,
97     IPV6_HOPOPTS as IPV6_HOPOPTS,
98     IPV6_JOIN_GROUP as IPV6_JOIN_GROUP,
99     IPV6_LEAVE_GROUP as IPV6_LEAVE_GROUP,
100     IPV6_MULTICAST_HOPS as IPV6_MULTICAST_HOPS,
101     IPV6_MULTICAST_IF as IPV6_MULTICAST_IF,
102     IPV6_MULTICAST_LOOP as IPV6_MULTICAST_LOOP,
103     IPV6_NEXTHOP as IPV6_NEXTHOP,
104     IPV6_PATHMTU as IPV6_PATHMTU,
105     IPV6_PKTINFO as IPV6_PKTINFO,
106     IPV6_RECVDSTOPTS as IPV6_RECVDSTOPTS,
107     IPV6_RECVHOPLIMIT as IPV6_RECVHOPLIMIT,
108     IPV6_RECVHOPOPTS as IPV6_RECVHOPOPTS,
109     IPV6_RECVPATHMTU as IPV6_RECVPATHMTU,
110     IPV6_RECVPKTINFO as IPV6_RECVPKTINFO,
111     IPV6_RECVRTHDR as IPV6_RECVRTHDR,
112     IPV6_RECVTCLASS as IPV6_RECVTCLASS,
113     IPV6_RTHDR as IPV6_RTHDR,
114     IPV6_RTHDR_TYPE_0 as IPV6_RTHDR_TYPE_0,
115     IPV6_RTHDRDSTOPTS as IPV6_RTHDRDSTOPTS,
116     IPV6_TCLASS as IPV6_TCLASS,
117     IPV6_UNICAST_HOPS as IPV6_UNICAST_HOPS,
118     IPV6_USE_MIN_MTU as IPV6_USE_MIN_MTU,
119     IPV6_V6ONLY as IPV6_V6ONLY,
120     IPX_TYPE as IPX_TYPE,
121     LOCAL_PEERCRED as LOCAL_PEERCRED,
122     NI_DGRAM as NI_DGRAM,
123     NI_MAXHOST as NI_MAXHOST,
124     NI_MAXSERV as NI_MAXSERV,
125     NI_NAMEREQD as NI_NAMEREQD,
126     NI_NOFQDN as NI_NOFQDN,
127     NI_NUMERICHOST as NI_NUMERICHOST,
128     NI_NUMERICSERV as NI_NUMERICSERV,
129     SCM_CREDENTIALS as SCM_CREDENTIALS,
130     SCM_CREDS as SCM_CREDS,
131     SCM_RIGHTS as SCM_RIGHTS,
132     SHUT_RD as SHUT_RD,
133     SHUT_RDWR as SHUT_RDWR,
134     SHUT_WR as SHUT_WR,
135     SO_ACCEPTCONN as SO_ACCEPTCONN,
136     SO_BINDTODEVICE as SO_BINDTODEVICE,
137     SO_BROADCAST as SO_BROADCAST,
138     SO_DEBUG as SO_DEBUG,
139     SO_DONTROUTE as SO_DONTROUTE,
140     SO_ERROR as SO_ERROR,
141     SO_EXCLUSIVEADDRUSE as SO_EXCLUSIVEADDRUSE,
142     SO_KEEPALIVE as SO_KEEPALIVE,
143     SO_LINGER as SO_LINGER,
144     SO_MARK as SO_MARK,
145     SO_OOBINLINE as SO_OOBINLINE,
146     SO_PASSCRED as SO_PASSCRED,
147     SO_PEERCRED as SO_PEERCRED,
148     SO_PRIORITY as SO_PRIORITY,
149     SO_RCVBUF as SO_RCVBUF,
150     SO_RCVLOWAT as SO_RCVLOWAT,
151     SO_RCVTIMEO as SO_RCVTIMEO,
152     SO_REUSEADDR as SO_REUSEADDR,
153     SO_REUSEPORT as SO_REUSEPORT,
154     SO_SETFIB as SO_SETFIB,
155     SO_SNDBUF as SO_SNDBUF,
156     SO_SNDLOWAT as SO_SNDLOWAT,
157     SO_SNDTIMEO as SO_SNDTIMEO,
158     SO_TYPE as SO_TYPE,
159     SO_USELOOPBACK as SO_USELOOPBACK,
160     SOL_ATALK as SOL_ATALK,
161     SOL_AX25 as SOL_AX25,
162     SOL_HCI as SOL_HCI,
163     SOL_IP as SOL_IP,
164     SOL_IPX as SOL_IPX,
165     SOL_NETROM as SOL_NETROM,
166     SOL_ROSE as SOL_ROSE,
167     SOL_SOCKET as SOL_SOCKET,
168     SOL_TCP as SOL_TCP,
169     SOL_UDP as SOL_UDP,
170     SOMAXCONN as SOMAXCONN,
171     TCP_CORK as TCP_CORK,
172     TCP_DEFER_ACCEPT as TCP_DEFER_ACCEPT,
173     TCP_FASTOPEN as TCP_FASTOPEN,
174     TCP_INFO as TCP_INFO,
175     TCP_KEEPCNT as TCP_KEEPCNT,
176     TCP_KEEPIDLE as TCP_KEEPIDLE,
177     TCP_KEEPINTVL as TCP_KEEPINTVL,
178     TCP_LINGER2 as TCP_LINGER2,
179     TCP_MAXSEG as TCP_MAXSEG,
180     TCP_NODELAY as TCP_NODELAY,
181     TCP_QUICKACK as TCP_QUICKACK,
182     TCP_SYNCNT as TCP_SYNCNT,
183     TCP_WINDOW_CLAMP as TCP_WINDOW_CLAMP,
184     SocketType as SocketType,
185     _Address as _Address,
186     _RetAddress as _RetAddress,
187     dup as dup,
188     error as error,
189     gaierror as gaierror,
190     getdefaulttimeout as getdefaulttimeout,
191     gethostbyaddr as gethostbyaddr,
192     gethostbyname as gethostbyname,
193     gethostbyname_ex as gethostbyname_ex,
194     gethostname as gethostname,
195     getnameinfo as getnameinfo,
196     getprotobyname as getprotobyname,
197     getservbyname as getservbyname,
198     getservbyport as getservbyport,
199     has_ipv6 as has_ipv6,
200     herror as herror,
201     htonl as htonl,
202     htons as htons,
203     inet_aton as inet_aton,
204     inet_ntoa as inet_ntoa,
205     inet_ntop as inet_ntop,
206     inet_pton as inet_pton,
207     ntohl as ntohl,
208     ntohs as ntohs,
209     setdefaulttimeout as setdefaulttimeout,
210     timeout as timeout,
211 )
212
213 if sys.version_info >= (3, 7):
214     from _socket import close as close
215 if sys.platform != "win32":
216     from _socket import sethostname as sethostname
217 if sys.platform != "win32" or sys.version_info >= (3, 8):
218     from _socket import if_indextoname as if_indextoname, if_nameindex as if_nameindex, if_nametoindex as if_nametoindex
219 if sys.platform == "linux":
220     from _socket import (
221         ALG_OP_DECRYPT as ALG_OP_DECRYPT,
222         ALG_OP_ENCRYPT as ALG_OP_ENCRYPT,
223         ALG_OP_SIGN as ALG_OP_SIGN,
224         ALG_OP_VERIFY as ALG_OP_VERIFY,
225         ALG_SET_AEAD_ASSOCLEN as ALG_SET_AEAD_ASSOCLEN,
226         ALG_SET_AEAD_AUTHSIZE as ALG_SET_AEAD_AUTHSIZE,
227         ALG_SET_IV as ALG_SET_IV,
228         ALG_SET_KEY as ALG_SET_KEY,
229         ALG_SET_OP as ALG_SET_OP,
230         ALG_SET_PUBKEY as ALG_SET_PUBKEY,
231         CAN_BCM as CAN_BCM,
232         CAN_BCM_RX_CHANGED as CAN_BCM_RX_CHANGED,
233         CAN_BCM_RX_DELETE as CAN_BCM_RX_DELETE,
234         CAN_BCM_RX_READ as CAN_BCM_RX_READ,
235         CAN_BCM_RX_SETUP as CAN_BCM_RX_SETUP,
236         CAN_BCM_RX_STATUS as CAN_BCM_RX_STATUS,
237         CAN_BCM_RX_TIMEOUT as CAN_BCM_RX_TIMEOUT,
238         CAN_BCM_TX_DELETE as CAN_BCM_TX_DELETE,
239         CAN_BCM_TX_EXPIRED as CAN_BCM_TX_EXPIRED,
240         CAN_BCM_TX_READ as CAN_BCM_TX_READ,
241         CAN_BCM_TX_SEND as CAN_BCM_TX_SEND,
242         CAN_BCM_TX_SETUP as CAN_BCM_TX_SETUP,
243         CAN_BCM_TX_STATUS as CAN_BCM_TX_STATUS,
244         CAN_EFF_FLAG as CAN_EFF_FLAG,
245         CAN_EFF_MASK as CAN_EFF_MASK,
246         CAN_ERR_FLAG as CAN_ERR_FLAG,
247         CAN_ERR_MASK as CAN_ERR_MASK,
248         CAN_RAW as CAN_RAW,
249         CAN_RAW_ERR_FILTER as CAN_RAW_ERR_FILTER,
250         CAN_RAW_FD_FRAMES as CAN_RAW_FD_FRAMES,
251         CAN_RAW_FILTER as CAN_RAW_FILTER,
252         CAN_RAW_LOOPBACK as CAN_RAW_LOOPBACK,
253         CAN_RAW_RECV_OWN_MSGS as CAN_RAW_RECV_OWN_MSGS,
254         CAN_RTR_FLAG as CAN_RTR_FLAG,
255         CAN_SFF_MASK as CAN_SFF_MASK,
256         PACKET_BROADCAST as PACKET_BROADCAST,
257         PACKET_FASTROUTE as PACKET_FASTROUTE,
258         PACKET_HOST as PACKET_HOST,
259         PACKET_LOOPBACK as PACKET_LOOPBACK,
260         PACKET_MULTICAST as PACKET_MULTICAST,
261         PACKET_OTHERHOST as PACKET_OTHERHOST,
262         PACKET_OUTGOING as PACKET_OUTGOING,
263         PF_CAN as PF_CAN,
264         PF_PACKET as PF_PACKET,
265         PF_RDS as PF_RDS,
266         RDS_CANCEL_SENT_TO as RDS_CANCEL_SENT_TO,
267         RDS_CMSG_RDMA_ARGS as RDS_CMSG_RDMA_ARGS,
268         RDS_CMSG_RDMA_DEST as RDS_CMSG_RDMA_DEST,
269         RDS_CMSG_RDMA_MAP as RDS_CMSG_RDMA_MAP,
270         RDS_CMSG_RDMA_STATUS as RDS_CMSG_RDMA_STATUS,
271         RDS_CMSG_RDMA_UPDATE as RDS_CMSG_RDMA_UPDATE,
272         RDS_CONG_MONITOR as RDS_CONG_MONITOR,
273         RDS_FREE_MR as RDS_FREE_MR,
274         RDS_GET_MR as RDS_GET_MR,
275         RDS_GET_MR_FOR_DEST as RDS_GET_MR_FOR_DEST,
276         RDS_RDMA_DONTWAIT as RDS_RDMA_DONTWAIT,
277         RDS_RDMA_FENCE as RDS_RDMA_FENCE,
278         RDS_RDMA_INVALIDATE as RDS_RDMA_INVALIDATE,
279         RDS_RDMA_NOTIFY_ME as RDS_RDMA_NOTIFY_ME,
280         RDS_RDMA_READWRITE as RDS_RDMA_READWRITE,
281         RDS_RDMA_SILENT as RDS_RDMA_SILENT,
282         RDS_RDMA_USE_ONCE as RDS_RDMA_USE_ONCE,
283         RDS_RECVERR as RDS_RECVERR,
284         SOL_ALG as SOL_ALG,
285         SOL_CAN_BASE as SOL_CAN_BASE,
286         SOL_CAN_RAW as SOL_CAN_RAW,
287         SOL_RDS as SOL_RDS,
288         SOL_TIPC as SOL_TIPC,
289         TIPC_ADDR_ID as TIPC_ADDR_ID,
290         TIPC_ADDR_NAME as TIPC_ADDR_NAME,
291         TIPC_ADDR_NAMESEQ as TIPC_ADDR_NAMESEQ,
292         TIPC_CFG_SRV as TIPC_CFG_SRV,
293         TIPC_CLUSTER_SCOPE as TIPC_CLUSTER_SCOPE,
294         TIPC_CONN_TIMEOUT as TIPC_CONN_TIMEOUT,
295         TIPC_CRITICAL_IMPORTANCE as TIPC_CRITICAL_IMPORTANCE,
296         TIPC_DEST_DROPPABLE as TIPC_DEST_DROPPABLE,
297         TIPC_HIGH_IMPORTANCE as TIPC_HIGH_IMPORTANCE,
298         TIPC_IMPORTANCE as TIPC_IMPORTANCE,
299         TIPC_LOW_IMPORTANCE as TIPC_LOW_IMPORTANCE,
300         TIPC_MEDIUM_IMPORTANCE as TIPC_MEDIUM_IMPORTANCE,
301         TIPC_NODE_SCOPE as TIPC_NODE_SCOPE,
302         TIPC_PUBLISHED as TIPC_PUBLISHED,
303         TIPC_SRC_DROPPABLE as TIPC_SRC_DROPPABLE,
304         TIPC_SUB_CANCEL as TIPC_SUB_CANCEL,
305         TIPC_SUB_PORTS as TIPC_SUB_PORTS,
306         TIPC_SUB_SERVICE as TIPC_SUB_SERVICE,
307         TIPC_SUBSCR_TIMEOUT as TIPC_SUBSCR_TIMEOUT,
308         TIPC_TOP_SRV as TIPC_TOP_SRV,
309         TIPC_WAIT_FOREVER as TIPC_WAIT_FOREVER,
310         TIPC_WITHDRAWN as TIPC_WITHDRAWN,
311         TIPC_ZONE_SCOPE as TIPC_ZONE_SCOPE,
312     )
313 if sys.platform == "linux" and sys.version_info >= (3, 7):
314     from _socket import (
315         CAN_ISOTP as CAN_ISOTP,
316         IOCTL_VM_SOCKETS_GET_LOCAL_CID as IOCTL_VM_SOCKETS_GET_LOCAL_CID,
317         SO_VM_SOCKETS_BUFFER_MAX_SIZE as SO_VM_SOCKETS_BUFFER_MAX_SIZE,
318         SO_VM_SOCKETS_BUFFER_MIN_SIZE as SO_VM_SOCKETS_BUFFER_MIN_SIZE,
319         SO_VM_SOCKETS_BUFFER_SIZE as SO_VM_SOCKETS_BUFFER_SIZE,
320         TCP_NOTSENT_LOWAT as TCP_NOTSENT_LOWAT,
321         VM_SOCKETS_INVALID_VERSION as VM_SOCKETS_INVALID_VERSION,
322         VMADDR_CID_ANY as VMADDR_CID_ANY,
323         VMADDR_CID_HOST as VMADDR_CID_HOST,
324         VMADDR_PORT_ANY as VMADDR_PORT_ANY,
325     )
326 if sys.platform == "linux" and sys.version_info >= (3, 8):
327     from _socket import (
328         CAN_BCM_CAN_FD_FRAME as CAN_BCM_CAN_FD_FRAME,
329         CAN_BCM_RX_ANNOUNCE_RESUME as CAN_BCM_RX_ANNOUNCE_RESUME,
330         CAN_BCM_RX_CHECK_DLC as CAN_BCM_RX_CHECK_DLC,
331         CAN_BCM_RX_FILTER_ID as CAN_BCM_RX_FILTER_ID,
332         CAN_BCM_RX_NO_AUTOTIMER as CAN_BCM_RX_NO_AUTOTIMER,
333         CAN_BCM_RX_RTR_FRAME as CAN_BCM_RX_RTR_FRAME,
334         CAN_BCM_SETTIMER as CAN_BCM_SETTIMER,
335         CAN_BCM_STARTTIMER as CAN_BCM_STARTTIMER,
336         CAN_BCM_TX_ANNOUNCE as CAN_BCM_TX_ANNOUNCE,
337         CAN_BCM_TX_COUNTEVT as CAN_BCM_TX_COUNTEVT,
338         CAN_BCM_TX_CP_CAN_ID as CAN_BCM_TX_CP_CAN_ID,
339         CAN_BCM_TX_RESET_MULTI_IDX as CAN_BCM_TX_RESET_MULTI_IDX,
340     )
341 if sys.platform == "linux" and sys.version_info >= (3, 9):
342     from _socket import (
343         CAN_J1939 as CAN_J1939,
344         CAN_RAW_JOIN_FILTERS as CAN_RAW_JOIN_FILTERS,
345         J1939_EE_INFO_NONE as J1939_EE_INFO_NONE,
346         J1939_EE_INFO_TX_ABORT as J1939_EE_INFO_TX_ABORT,
347         J1939_FILTER_MAX as J1939_FILTER_MAX,
348         J1939_IDLE_ADDR as J1939_IDLE_ADDR,
349         J1939_MAX_UNICAST_ADDR as J1939_MAX_UNICAST_ADDR,
350         J1939_NLA_BYTES_ACKED as J1939_NLA_BYTES_ACKED,
351         J1939_NLA_PAD as J1939_NLA_PAD,
352         J1939_NO_ADDR as J1939_NO_ADDR,
353         J1939_NO_NAME as J1939_NO_NAME,
354         J1939_NO_PGN as J1939_NO_PGN,
355         J1939_PGN_ADDRESS_CLAIMED as J1939_PGN_ADDRESS_CLAIMED,
356         J1939_PGN_ADDRESS_COMMANDED as J1939_PGN_ADDRESS_COMMANDED,
357         J1939_PGN_MAX as J1939_PGN_MAX,
358         J1939_PGN_PDU1_MAX as J1939_PGN_PDU1_MAX,
359         J1939_PGN_REQUEST as J1939_PGN_REQUEST,
360         SCM_J1939_DEST_ADDR as SCM_J1939_DEST_ADDR,
361         SCM_J1939_DEST_NAME as SCM_J1939_DEST_NAME,
362         SCM_J1939_ERRQUEUE as SCM_J1939_ERRQUEUE,
363         SCM_J1939_PRIO as SCM_J1939_PRIO,
364         SO_J1939_ERRQUEUE as SO_J1939_ERRQUEUE,
365         SO_J1939_FILTER as SO_J1939_FILTER,
366         SO_J1939_PROMISC as SO_J1939_PROMISC,
367         SO_J1939_SEND_PRIO as SO_J1939_SEND_PRIO,
368     )
369 if sys.platform == "win32":
370     from _socket import (
371         RCVALL_IPLEVEL as RCVALL_IPLEVEL,
372         RCVALL_MAX as RCVALL_MAX,
373         RCVALL_OFF as RCVALL_OFF,
374         RCVALL_ON as RCVALL_ON,
375         RCVALL_SOCKETLEVELONLY as RCVALL_SOCKETLEVELONLY,
376         SIO_KEEPALIVE_VALS as SIO_KEEPALIVE_VALS,
377         SIO_LOOPBACK_FAST_PATH as SIO_LOOPBACK_FAST_PATH,
378         SIO_RCVALL as SIO_RCVALL,
379     )
380
381 _T = TypeVar("_T")
382
383 # Re-exported from errno
384 EBADF: int
385 EAGAIN: int
386 EWOULDBLOCK: int
387
388 class AddressFamily(IntEnum):
389     AF_UNIX: int
390     AF_INET: int
391     AF_INET6: int
392     AF_AAL5: int
393     AF_ALG: int
394     AF_APPLETALK: int
395     AF_ASH: int
396     AF_ATMPVC: int
397     AF_ATMSVC: int
398     AF_AX25: int
399     AF_BLUETOOTH: int
400     AF_BRIDGE: int
401     AF_CAN: int
402     AF_DECnet: int
403     AF_ECONET: int
404     AF_IPX: int
405     AF_IRDA: int
406     AF_KEY: int
407     AF_LINK: int
408     AF_LLC: int
409     AF_NETBEUI: int
410     AF_NETLINK: int
411     AF_NETROM: int
412     AF_PACKET: int
413     AF_PPPOX: int
414     AF_QIPCRTR: int
415     AF_RDS: int
416     AF_ROSE: int
417     AF_ROUTE: int
418     AF_SECURITY: int
419     AF_SNA: int
420     AF_SYSTEM: int
421     AF_TIPC: int
422     AF_UNSPEC: int
423     AF_VSOCK: int
424     AF_WANPIPE: int
425     AF_X25: int
426
427 AF_UNIX: AddressFamily
428 AF_INET: AddressFamily
429 AF_INET6: AddressFamily
430 AF_AAL5: AddressFamily
431 AF_APPLETALK: AddressFamily
432 AF_ASH: AddressFamily
433 AF_ATMPVC: AddressFamily
434 AF_ATMSVC: AddressFamily
435 AF_AX25: AddressFamily
436 AF_BRIDGE: AddressFamily
437 AF_DECnet: AddressFamily
438 AF_ECONET: AddressFamily
439 AF_IPX: AddressFamily
440 AF_IRDA: AddressFamily
441 AF_KEY: AddressFamily
442 AF_LLC: AddressFamily
443 AF_NETBEUI: AddressFamily
444 AF_NETROM: AddressFamily
445 AF_PPPOX: AddressFamily
446 AF_ROSE: AddressFamily
447 AF_ROUTE: AddressFamily
448 AF_SECURITY: AddressFamily
449 AF_SNA: AddressFamily
450 AF_SYSTEM: AddressFamily
451 AF_UNSPEC: AddressFamily
452 AF_WANPIPE: AddressFamily
453 AF_X25: AddressFamily
454 if sys.platform == "linux":
455     AF_CAN: AddressFamily
456     AF_PACKET: AddressFamily
457     AF_RDS: AddressFamily
458     AF_TIPC: AddressFamily
459     AF_ALG: AddressFamily
460     AF_NETLINK: AddressFamily
461     if sys.version_info >= (3, 7):
462         AF_VSOCK: AddressFamily
463     if sys.version_info >= (3, 8):
464         AF_QIPCRTR: AddressFamily
465 AF_LINK: AddressFamily  # availability: BSD, macOS
466 if sys.platform != "win32" and sys.platform != "darwin":
467     AF_BLUETOOTH: AddressFamily
468
469 class SocketKind(IntEnum):
470     SOCK_STREAM: int
471     SOCK_DGRAM: int
472     SOCK_RAW: int
473     SOCK_RDM: int
474     SOCK_SEQPACKET: int
475     SOCK_CLOEXEC: int
476     SOCK_NONBLOCK: int
477
478 SOCK_STREAM: SocketKind
479 SOCK_DGRAM: SocketKind
480 SOCK_RAW: SocketKind
481 SOCK_RDM: SocketKind
482 SOCK_SEQPACKET: SocketKind
483 if sys.platform == "linux":
484     SOCK_CLOEXEC: SocketKind
485     SOCK_NONBLOCK: SocketKind
486
487 class MsgFlag(IntFlag):
488     MSG_CTRUNC: int
489     MSG_DONTROUTE: int
490     MSG_DONTWAIT: int
491     MSG_EOR: int
492     MSG_OOB: int
493     MSG_PEEK: int
494     MSG_TRUNC: int
495     MSG_WAITALL: int
496
497 MSG_BCAST: MsgFlag
498 MSG_BTAG: MsgFlag
499 MSG_CMSG_CLOEXEC: MsgFlag
500 MSG_CONFIRM: MsgFlag
501 MSG_CTRUNC: MsgFlag
502 MSG_DONTROUTE: MsgFlag
503 MSG_DONTWAIT: MsgFlag
504 MSG_EOF: MsgFlag
505 MSG_EOR: MsgFlag
506 MSG_ERRQUEUE: MsgFlag
507 MSG_ETAG: MsgFlag
508 MSG_FASTOPEN: MsgFlag
509 MSG_MCAST: MsgFlag
510 MSG_MORE: MsgFlag
511 MSG_NOSIGNAL: MsgFlag
512 MSG_NOTIFICATION: MsgFlag
513 MSG_OOB: MsgFlag
514 MSG_PEEK: MsgFlag
515 MSG_TRUNC: MsgFlag
516 MSG_WAITALL: MsgFlag
517
518 class AddressInfo(IntFlag):
519     AI_ADDRCONFIG: int
520     AI_ALL: int
521     AI_CANONNAME: int
522     AI_NUMERICHOST: int
523     AI_NUMERICSERV: int
524     AI_PASSIVE: int
525     AI_V4MAPPED: int
526
527 AI_ADDRCONFIG: AddressInfo
528 AI_ALL: AddressInfo
529 AI_CANONNAME: AddressInfo
530 AI_DEFAULT: AddressInfo
531 AI_MASK: AddressInfo
532 AI_NUMERICHOST: AddressInfo
533 AI_NUMERICSERV: AddressInfo
534 AI_PASSIVE: AddressInfo
535 AI_V4MAPPED: AddressInfo
536 AI_V4MAPPED_CFG: AddressInfo
537
538 if sys.platform == "win32":
539     errorTab: dict[int, str]  # undocumented
540
541 class socket(_socket.socket):
542     def __init__(
543         self, family: AddressFamily | int = ..., type: SocketKind | int = ..., proto: int = ..., fileno: int | None = ...
544     ) -> None: ...
545     def __enter__(self: Self) -> Self: ...
546     def __exit__(self, *args: object) -> None: ...
547     def dup(self: _T) -> _T: ...  # noqa: F811
548     def accept(self) -> tuple[socket, _RetAddress]: ...
549     # Note that the makefile's documented windows-specific behavior is not represented
550     # mode strings with duplicates are intentionally excluded
551     @overload
552     def makefile(
553         self,
554         mode: Literal["r", "w", "rw", "wr", ""] = ...,
555         buffering: int | None = ...,
556         *,
557         encoding: str | None = ...,
558         errors: str | None = ...,
559         newline: str | None = ...,
560     ) -> TextIO: ...
561     @overload
562     def makefile(
563         self,
564         mode: Literal["b", "rb", "br", "wb", "bw", "rwb", "rbw", "wrb", "wbr", "brw", "bwr"],
565         buffering: int | None = ...,
566         *,
567         encoding: str | None = ...,
568         errors: str | None = ...,
569         newline: str | None = ...,
570     ) -> BinaryIO: ...
571     def sendfile(self, file: BinaryIO, offset: int = ..., count: int | None = ...) -> int: ...
572     @property
573     def family(self) -> AddressFamily: ...  # type: ignore
574     @property
575     def type(self) -> SocketKind: ...  # type: ignore
576     def get_inheritable(self) -> bool: ...
577     def set_inheritable(self, inheritable: bool) -> None: ...
578
579 def fromfd(fd: _FD, family: AddressFamily | int, type: SocketKind | int, proto: int = ...) -> socket: ...
580
581 if sys.platform != "win32":
582     if sys.version_info >= (3, 9):
583         # flags and address appear to be unused in send_fds and recv_fds
584         def send_fds(
585             sock: socket, buffers: Iterable[bytes], fds: bytes | Iterable[int], flags: int = ..., address: None = ...
586         ) -> int: ...
587         def recv_fds(sock: socket, bufsize: int, maxfds: int, flags: int = ...) -> tuple[bytes, list[int], int, Any]: ...
588
589 if sys.platform == "win32":
590     def fromshare(info: bytes) -> socket: ...
591
592 if sys.platform == "win32":
593     def socketpair(family: int = ..., type: int = ..., proto: int = ...) -> tuple[socket, socket]: ...
594
595 else:
596     def socketpair(  # type: ignore
597         family: int | AddressFamily | None = ..., type: SocketType | int = ..., proto: int = ...
598     ) -> tuple[socket, socket]: ...
599
600 class SocketIO(RawIOBase):
601     def __init__(self, sock: socket, mode: Literal["r", "w", "rw", "rb", "wb", "rwb"]) -> None: ...
602     def readinto(self, b: WriteableBuffer) -> int | None: ...
603     def write(self, b: ReadableBuffer) -> int | None: ...
604     @property
605     def name(self) -> int: ...  # return value is really "int"
606     @property
607     def mode(self) -> Literal["rb", "wb", "rwb"]: ...
608
609 def getfqdn(name: str = ...) -> str: ...
610 def create_connection(
611     address: tuple[str | None, int],
612     timeout: float | None = ...,  # noqa: F811
613     source_address: tuple[bytearray | bytes | str, int] | None = ...,
614 ) -> socket: ...
615
616 if sys.version_info >= (3, 8):
617     def has_dualstack_ipv6() -> bool: ...
618     def create_server(
619         address: _Address, *, family: int = ..., backlog: int | None = ..., reuse_port: bool = ..., dualstack_ipv6: bool = ...
620     ) -> socket: ...
621
622 # the 5th tuple item is an address
623 def getaddrinfo(
624     host: bytearray | bytes | str | None,
625     port: str | int | None,
626     family: int = ...,
627     type: int = ...,
628     proto: int = ...,
629     flags: int = ...,
630 ) -> list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]]: ...