From 9456f5501b564b333891fb474f44f7172c6d5174 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Mon, 5 Jun 2023 11:32:02 +0300 Subject: [PATCH] Update socket stubs for Python3.12 (#10247) Docs: https://github.com/python/cpython/blob/3.12/Doc/library/socket.rst Source: https://github.com/python/cpython/blob/3.12/Modules/socketmodule.c#L8441 --- stdlib/_socket.pyi | 25 +++++++++++++++ stdlib/socket.pyi | 35 +++++++++++++++++++++ tests/stubtest_allowlists/darwin-py312.txt | 18 ----------- tests/stubtest_allowlists/win32-py312.txt | 36 ---------------------- 4 files changed, 60 insertions(+), 54 deletions(-) diff --git a/stdlib/_socket.pyi b/stdlib/_socket.pyi index f7b0e6901..7a0ede628 100644 --- a/stdlib/_socket.pyi +++ b/stdlib/_socket.pyi @@ -692,3 +692,28 @@ if sys.platform != "win32" or sys.version_info >= (3, 8): def if_nameindex() -> list[tuple[int, str]]: ... def if_nametoindex(__name: str) -> int: ... def if_indextoname(__index: int) -> str: ... + +if sys.version_info >= (3, 12): + IP_PKTINFO: int + IP_UNBLOCK_SOURCE: int + IP_BLOCK_SOURCE: int + IP_ADD_SOURCE_MEMBERSHIP: int + IP_DROP_SOURCE_MEMBERSHIP: int + if sys.platform == "win32": + AF_HYPERV: int + HV_PROTOCOL_RAW: int + HVSOCKET_CONNECT_TIMEOUT: int + HVSOCKET_CONNECT_TIMEOUT_MAX: int + HVSOCKET_CONNECTED_SUSPEND: int + HVSOCKET_ADDRESS_FLAG_PASSTHRU: int + HV_GUID_ZERO: str + HV_GUID_WILDCARD: str + HV_GUID_BROADCAST: str + HV_GUID_CHILDREN: str + HV_GUID_LOOPBACK: str + HV_GUID_PARENT: str + else: + ETHERTYPE_ARP: int + ETHERTYPE_IP: int + ETHERTYPE_IPV6: int + ETHERTYPE_VLAN: int diff --git a/stdlib/socket.pyi b/stdlib/socket.pyi index 6c897b919..e1ffc573b 100644 --- a/stdlib/socket.pyi +++ b/stdlib/socket.pyi @@ -438,6 +438,36 @@ if sys.platform == "win32": SIO_LOOPBACK_FAST_PATH as SIO_LOOPBACK_FAST_PATH, SIO_RCVALL as SIO_RCVALL, ) +if sys.version_info >= (3, 12): + from _socket import ( + IP_ADD_SOURCE_MEMBERSHIP as IP_ADD_SOURCE_MEMBERSHIP, + IP_BLOCK_SOURCE as IP_BLOCK_SOURCE, + IP_DROP_SOURCE_MEMBERSHIP as IP_DROP_SOURCE_MEMBERSHIP, + IP_PKTINFO as IP_PKTINFO, + IP_UNBLOCK_SOURCE as IP_UNBLOCK_SOURCE, + ) + + if sys.platform == "win32": + from _socket import ( + HV_GUID_BROADCAST as HV_GUID_BROADCAST, + HV_GUID_CHILDREN as HV_GUID_CHILDREN, + HV_GUID_LOOPBACK as HV_GUID_LOOPBACK, + HV_GUID_PARENT as HV_GUID_PARENT, + HV_GUID_WILDCARD as HV_GUID_WILDCARD, + HV_GUID_ZERO as HV_GUID_ZERO, + HV_PROTOCOL_RAW as HV_PROTOCOL_RAW, + HVSOCKET_ADDRESS_FLAG_PASSTHRU as HVSOCKET_ADDRESS_FLAG_PASSTHRU, + HVSOCKET_CONNECT_TIMEOUT as HVSOCKET_CONNECT_TIMEOUT, + HVSOCKET_CONNECT_TIMEOUT_MAX as HVSOCKET_CONNECT_TIMEOUT_MAX, + HVSOCKET_CONNECTED_SUSPEND as HVSOCKET_CONNECTED_SUSPEND, + ) + else: + from _socket import ( + ETHERTYPE_ARP as ETHERTYPE_ARP, + ETHERTYPE_IP as ETHERTYPE_IP, + ETHERTYPE_IPV6 as ETHERTYPE_IPV6, + ETHERTYPE_VLAN as ETHERTYPE_VLAN, + ) # Re-exported from errno EBADF: int @@ -489,6 +519,8 @@ class AddressFamily(IntEnum): AF_LINK: int if sys.platform != "darwin": AF_BLUETOOTH: int + if sys.platform == "win32" and sys.version_info >= (3, 12): + AF_HYPERV: int AF_INET = AddressFamily.AF_INET AF_INET6 = AddressFamily.AF_INET6 @@ -540,6 +572,9 @@ if sys.platform != "win32" or sys.version_info >= (3, 9): if sys.platform != "darwin": AF_BLUETOOTH = AddressFamily.AF_BLUETOOTH +if sys.platform == "win32" and sys.version_info >= (3, 12): + AF_HYPERV = AddressFamily.AF_HYPERV + class SocketKind(IntEnum): SOCK_STREAM: int SOCK_DGRAM: int diff --git a/tests/stubtest_allowlists/darwin-py312.txt b/tests/stubtest_allowlists/darwin-py312.txt index e9427d189..216f19e7f 100644 --- a/tests/stubtest_allowlists/darwin-py312.txt +++ b/tests/stubtest_allowlists/darwin-py312.txt @@ -2,15 +2,6 @@ _?curses.color_pair _curses.unget_wch _curses.window.get_wch _posixsubprocess.fork_exec -_socket.ETHERTYPE_ARP -_socket.ETHERTYPE_IP -_socket.ETHERTYPE_IPV6 -_socket.ETHERTYPE_VLAN -_socket.IP_ADD_SOURCE_MEMBERSHIP -_socket.IP_BLOCK_SOURCE -_socket.IP_DROP_SOURCE_MEMBERSHIP -_socket.IP_PKTINFO -_socket.IP_UNBLOCK_SOURCE curses.unget_wch curses.window.get_wch os.PRIO_DARWIN_BG @@ -22,15 +13,6 @@ posix.PRIO_DARWIN_BG posix.PRIO_DARWIN_NONUI posix.PRIO_DARWIN_PROCESS posix.PRIO_DARWIN_THREAD -socket.ETHERTYPE_ARP -socket.ETHERTYPE_IP -socket.ETHERTYPE_IPV6 -socket.ETHERTYPE_VLAN -socket.IP_ADD_SOURCE_MEMBERSHIP -socket.IP_BLOCK_SOURCE -socket.IP_DROP_SOURCE_MEMBERSHIP -socket.IP_PKTINFO -socket.IP_UNBLOCK_SOURCE socket.TCP_CONNECTION_INFO syslog.LOG_MASK syslog.LOG_UPTO diff --git a/tests/stubtest_allowlists/win32-py312.txt b/tests/stubtest_allowlists/win32-py312.txt index 38cf282e4..7b0f3a96f 100644 --- a/tests/stubtest_allowlists/win32-py312.txt +++ b/tests/stubtest_allowlists/win32-py312.txt @@ -1,21 +1,3 @@ - -_socket.AF_HYPERV -_socket.HV_GUID_BROADCAST -_socket.HV_GUID_CHILDREN -_socket.HV_GUID_LOOPBACK -_socket.HV_GUID_PARENT -_socket.HV_GUID_WILDCARD -_socket.HV_GUID_ZERO -_socket.HV_PROTOCOL_RAW -_socket.HVSOCKET_ADDRESS_FLAG_PASSTHRU -_socket.HVSOCKET_CONNECT_TIMEOUT -_socket.HVSOCKET_CONNECT_TIMEOUT_MAX -_socket.HVSOCKET_CONNECTED_SUSPEND -_socket.IP_ADD_SOURCE_MEMBERSHIP -_socket.IP_BLOCK_SOURCE -_socket.IP_DROP_SOURCE_MEMBERSHIP -_socket.IP_PKTINFO -_socket.IP_UNBLOCK_SOURCE _winapi.CreateFileMapping _winapi.MapViewOfFile _winapi.NeedCurrentDirectoryForExePath @@ -40,22 +22,4 @@ os.path.isdir os.set_blocking os.stat_result.st_birthtime os.stat_result.st_birthtime_ns -socket.AddressFamily.AF_HYPERV -socket.AF_HYPERV -socket.HV_GUID_BROADCAST -socket.HV_GUID_CHILDREN -socket.HV_GUID_LOOPBACK -socket.HV_GUID_PARENT -socket.HV_GUID_WILDCARD -socket.HV_GUID_ZERO -socket.HV_PROTOCOL_RAW -socket.HVSOCKET_ADDRESS_FLAG_PASSTHRU -socket.HVSOCKET_CONNECT_TIMEOUT -socket.HVSOCKET_CONNECT_TIMEOUT_MAX -socket.HVSOCKET_CONNECTED_SUSPEND -socket.IP_ADD_SOURCE_MEMBERSHIP -socket.IP_BLOCK_SOURCE -socket.IP_DROP_SOURCE_MEMBERSHIP -socket.IP_PKTINFO -socket.IP_UNBLOCK_SOURCE subprocess.STARTUPINFO.copy