diff --git a/stdlib/@tests/stubtest_allowlists/linux.txt b/stdlib/@tests/stubtest_allowlists/linux.txt index 90432236f3bc..df86aeeb40a9 100644 --- a/stdlib/@tests/stubtest_allowlists/linux.txt +++ b/stdlib/@tests/stubtest_allowlists/linux.txt @@ -29,11 +29,78 @@ select.poll # Actually a function; we have a class so it can be used as a type # Bluetooth constants which aren't on the GitHub Actions runners, see #15207 (_?socket\.AF_BLUETOOTH)? (_?socket\.BDADDR_ANY)? +(_?socket\.BDADDR_BREDR)? +(_?socket\.BDADDR_LE_PUBLIC)? +(_?socket\.BDADDR_LE_RANDOM)? (_?socket\.BDADDR_LOCAL)? +(_?socket\.BT_CHANNEL_POLICY)? +(_?socket\.BT_CHANNEL_POLICY_BREDR_ONLY)? +(_?socket\.BT_CHANNEL_POLICY_BREDR_PREFERRED)? +(_?socket\.BT_CODEC)? +(_?socket\.BT_DEFER_SETUP)? +(_?socket\.BT_FLUSHABLE)? +(_?socket\.BT_FLUSHABLE_OFF)? +(_?socket\.BT_FLUSHABLE_ON)? +(_?socket\.BT_ISO_QOS)? +(_?socket\.BT_MODE)? +(_?socket\.BT_MODE_BASIC)? +(_?socket\.BT_MODE_ERTM)? +(_?socket\.BT_MODE_EXT_FLOWCTL)? +(_?socket\.BT_MODE_LE_FLOWCTL)? +(_?socket\.BT_MODE_STREAMING)? +(_?socket\.BT_PHY)? +(_?socket\.BT_PHY_BR_1M_1SLOT)? +(_?socket\.BT_PHY_BR_1M_3SLOT)? +(_?socket\.BT_PHY_BR_1M_5SLOT)? +(_?socket\.BT_PHY_EDR_2M_1SLOT)? +(_?socket\.BT_PHY_EDR_2M_3SLOT)? +(_?socket\.BT_PHY_EDR_2M_5SLOT)? +(_?socket\.BT_PHY_EDR_3M_1SLOT)? +(_?socket\.BT_PHY_EDR_3M_3SLOT)? +(_?socket\.BT_PHY_EDR_3M_5SLOT)? +(_?socket\.BT_PHY_LE_1M_RX)? +(_?socket\.BT_PHY_LE_1M_TX)? +(_?socket\.BT_PHY_LE_2M_RX)? +(_?socket\.BT_PHY_LE_2M_TX)? +(_?socket\.BT_PHY_LE_CODED_RX)? +(_?socket\.BT_PHY_LE_CODED_TX)? +(_?socket\.BT_PKT_STATUS)? +(_?socket\.BT_POWER)? +(_?socket\.BT_POWER_FORCE_ACTIVE_OFF)? +(_?socket\.BT_POWER_FORCE_ACTIVE_ON)? +(_?socket\.BT_RCVMTU)? +(_?socket\.BT_SECURITY)? +(_?socket\.BT_SECURITY_FIPS)? +(_?socket\.BT_SECURITY_HIGH)? +(_?socket\.BT_SECURITY_LOW)? +(_?socket\.BT_SECURITY_MEDIUM)? +(_?socket\.BT_SECURITY_SDP)? +(_?socket\.BT_SNDMTU)? +(_?socket\.BT_VOICE)? +(_?socket\.BT_VOICE_CVSD_16BIT)? +(_?socket\.BT_VOICE_TRANSPARENT)? +(_?socket\.BT_VOICE_TRANSPARENT_16BIT)? (_?socket\.BTPROTO_HCI)? (_?socket\.BTPROTO_L2CAP)? (_?socket\.BTPROTO_RFCOMM)? (_?socket\.BTPROTO_SCO)? +(_?socket\.HCI_CHANNEL_CONTROL)? +(_?socket\.HCI_CHANNEL_LOGGING)? +(_?socket\.HCI_CHANNEL_MONITOR)? +(_?socket\.HCI_CHANNEL_RAW)? +(_?socket\.HCI_CHANNEL_USER)? +(_?socket\.HCI_DEV_NONE)? +(_?socket\.L2CAP_LM)? +(_?socket\.L2CAP_LM_AUTH)? +(_?socket\.L2CAP_LM_ENCRYPT)? +(_?socket\.L2CAP_LM_MASTER)? +(_?socket\.L2CAP_LM_RELIABLE)? +(_?socket\.L2CAP_LM_SECURE)? +(_?socket\.L2CAP_LM_TRUSTED)? +(_?socket\.SOL_BLUETOOTH)? +(_?socket\.SOL_L2CAP)? +(_?socket\.SOL_RFCOMM)? +(_?socket\.SOL_SCO)? # These seem like they should be available on Linux, but they're not # on GitHub Actions runners for some reason. diff --git a/stdlib/_socket.pyi b/stdlib/_socket.pyi index bb9b08e2f79a..4450d46e6027 100644 --- a/stdlib/_socket.pyi +++ b/stdlib/_socket.pyi @@ -11,7 +11,11 @@ _CMSGArg: TypeAlias = tuple[int, int, ReadableBuffer] # Addresses can be either tuples of varying lengths (AF_INET, AF_INET6, # AF_NETLINK, AF_TIPC) or strings/buffers (AF_UNIX). # See getsockaddrarg() in socketmodule.c. -_Address: TypeAlias = tuple[Any, ...] | str | ReadableBuffer +if sys.version_info >= (3, 14): + # A bare int is accepted for Bluetooth HCI device IDs. + _Address: TypeAlias = tuple[Any, ...] | str | ReadableBuffer | int +else: + _Address: TypeAlias = tuple[Any, ...] | str | ReadableBuffer _RetAddress: TypeAlias = Any # ===== Constants ===== @@ -250,8 +254,75 @@ if sys.version_info >= (3, 14): TCP_QUICKACK: Final[int] if sys.platform == "linux": + BDADDR_BREDR: Final[int] + BDADDR_LE_PUBLIC: Final[int] + BDADDR_LE_RANDOM: Final[int] + BT_CHANNEL_POLICY: Final[int] + BT_CHANNEL_POLICY_BREDR_ONLY: Final[int] + BT_CHANNEL_POLICY_BREDR_PREFERRED: Final[int] + BT_CODEC: Final[int] + BT_DEFER_SETUP: Final[int] + BT_FLUSHABLE: Final[int] + BT_FLUSHABLE_OFF: Final[int] + BT_FLUSHABLE_ON: Final[int] + BT_ISO_QOS: Final[int] + BT_MODE: Final[int] + BT_MODE_BASIC: Final[int] + BT_MODE_ERTM: Final[int] + BT_MODE_EXT_FLOWCTL: Final[int] + BT_MODE_LE_FLOWCTL: Final[int] + BT_MODE_STREAMING: Final[int] + BT_PHY: Final[int] + BT_PHY_BR_1M_1SLOT: Final[int] + BT_PHY_BR_1M_3SLOT: Final[int] + BT_PHY_BR_1M_5SLOT: Final[int] + BT_PHY_EDR_2M_1SLOT: Final[int] + BT_PHY_EDR_2M_3SLOT: Final[int] + BT_PHY_EDR_2M_5SLOT: Final[int] + BT_PHY_EDR_3M_1SLOT: Final[int] + BT_PHY_EDR_3M_3SLOT: Final[int] + BT_PHY_EDR_3M_5SLOT: Final[int] + BT_PHY_LE_1M_RX: Final[int] + BT_PHY_LE_1M_TX: Final[int] + BT_PHY_LE_2M_RX: Final[int] + BT_PHY_LE_2M_TX: Final[int] + BT_PHY_LE_CODED_RX: Final[int] + BT_PHY_LE_CODED_TX: Final[int] + BT_PKT_STATUS: Final[int] + BT_POWER: Final[int] + BT_POWER_FORCE_ACTIVE_OFF: Final[int] + BT_POWER_FORCE_ACTIVE_ON: Final[int] + BT_RCVMTU: Final[int] + BT_SECURITY: Final[int] + BT_SECURITY_FIPS: Final[int] + BT_SECURITY_HIGH: Final[int] + BT_SECURITY_LOW: Final[int] + BT_SECURITY_MEDIUM: Final[int] + BT_SECURITY_SDP: Final[int] + BT_SNDMTU: Final[int] + BT_VOICE: Final[int] + BT_VOICE_CVSD_16BIT: Final[int] + BT_VOICE_TRANSPARENT: Final[int] + BT_VOICE_TRANSPARENT_16BIT: Final[int] + HCI_CHANNEL_CONTROL: Final[int] + HCI_CHANNEL_LOGGING: Final[int] + HCI_CHANNEL_MONITOR: Final[int] + HCI_CHANNEL_RAW: Final[int] + HCI_CHANNEL_USER: Final[int] + HCI_DEV_NONE: Final[int] IP_FREEBIND: Final[int] IP_RECVORIGDSTADDR: Final[int] + L2CAP_LM: Final[int] + L2CAP_LM_AUTH: Final[int] + L2CAP_LM_ENCRYPT: Final[int] + L2CAP_LM_MASTER: Final[int] + L2CAP_LM_RELIABLE: Final[int] + L2CAP_LM_SECURE: Final[int] + L2CAP_LM_TRUSTED: Final[int] + SOL_BLUETOOTH: Final[int] + SOL_L2CAP: Final[int] + SOL_RFCOMM: Final[int] + SOL_SCO: Final[int] VMADDR_CID_LOCAL: Final[int] if sys.platform != "win32" and sys.platform != "darwin": diff --git a/stdlib/socket.pyi b/stdlib/socket.pyi index 76ba0a85c128..87e2bd353730 100644 --- a/stdlib/socket.pyi +++ b/stdlib/socket.pyi @@ -1133,8 +1133,75 @@ if sys.version_info >= (3, 14): if sys.platform == "linux": from _socket import ( + BDADDR_BREDR as BDADDR_BREDR, + BDADDR_LE_PUBLIC as BDADDR_LE_PUBLIC, + BDADDR_LE_RANDOM as BDADDR_LE_RANDOM, + BT_CHANNEL_POLICY as BT_CHANNEL_POLICY, + BT_CHANNEL_POLICY_BREDR_ONLY as BT_CHANNEL_POLICY_BREDR_ONLY, + BT_CHANNEL_POLICY_BREDR_PREFERRED as BT_CHANNEL_POLICY_BREDR_PREFERRED, + BT_CODEC as BT_CODEC, + BT_DEFER_SETUP as BT_DEFER_SETUP, + BT_FLUSHABLE as BT_FLUSHABLE, + BT_FLUSHABLE_OFF as BT_FLUSHABLE_OFF, + BT_FLUSHABLE_ON as BT_FLUSHABLE_ON, + BT_ISO_QOS as BT_ISO_QOS, + BT_MODE as BT_MODE, + BT_MODE_BASIC as BT_MODE_BASIC, + BT_MODE_ERTM as BT_MODE_ERTM, + BT_MODE_EXT_FLOWCTL as BT_MODE_EXT_FLOWCTL, + BT_MODE_LE_FLOWCTL as BT_MODE_LE_FLOWCTL, + BT_MODE_STREAMING as BT_MODE_STREAMING, + BT_PHY as BT_PHY, + BT_PHY_BR_1M_1SLOT as BT_PHY_BR_1M_1SLOT, + BT_PHY_BR_1M_3SLOT as BT_PHY_BR_1M_3SLOT, + BT_PHY_BR_1M_5SLOT as BT_PHY_BR_1M_5SLOT, + BT_PHY_EDR_2M_1SLOT as BT_PHY_EDR_2M_1SLOT, + BT_PHY_EDR_2M_3SLOT as BT_PHY_EDR_2M_3SLOT, + BT_PHY_EDR_2M_5SLOT as BT_PHY_EDR_2M_5SLOT, + BT_PHY_EDR_3M_1SLOT as BT_PHY_EDR_3M_1SLOT, + BT_PHY_EDR_3M_3SLOT as BT_PHY_EDR_3M_3SLOT, + BT_PHY_EDR_3M_5SLOT as BT_PHY_EDR_3M_5SLOT, + BT_PHY_LE_1M_RX as BT_PHY_LE_1M_RX, + BT_PHY_LE_1M_TX as BT_PHY_LE_1M_TX, + BT_PHY_LE_2M_RX as BT_PHY_LE_2M_RX, + BT_PHY_LE_2M_TX as BT_PHY_LE_2M_TX, + BT_PHY_LE_CODED_RX as BT_PHY_LE_CODED_RX, + BT_PHY_LE_CODED_TX as BT_PHY_LE_CODED_TX, + BT_PKT_STATUS as BT_PKT_STATUS, + BT_POWER as BT_POWER, + BT_POWER_FORCE_ACTIVE_OFF as BT_POWER_FORCE_ACTIVE_OFF, + BT_POWER_FORCE_ACTIVE_ON as BT_POWER_FORCE_ACTIVE_ON, + BT_RCVMTU as BT_RCVMTU, + BT_SECURITY as BT_SECURITY, + BT_SECURITY_FIPS as BT_SECURITY_FIPS, + BT_SECURITY_HIGH as BT_SECURITY_HIGH, + BT_SECURITY_LOW as BT_SECURITY_LOW, + BT_SECURITY_MEDIUM as BT_SECURITY_MEDIUM, + BT_SECURITY_SDP as BT_SECURITY_SDP, + BT_SNDMTU as BT_SNDMTU, + BT_VOICE as BT_VOICE, + BT_VOICE_CVSD_16BIT as BT_VOICE_CVSD_16BIT, + BT_VOICE_TRANSPARENT as BT_VOICE_TRANSPARENT, + BT_VOICE_TRANSPARENT_16BIT as BT_VOICE_TRANSPARENT_16BIT, + HCI_CHANNEL_CONTROL as HCI_CHANNEL_CONTROL, + HCI_CHANNEL_LOGGING as HCI_CHANNEL_LOGGING, + HCI_CHANNEL_MONITOR as HCI_CHANNEL_MONITOR, + HCI_CHANNEL_RAW as HCI_CHANNEL_RAW, + HCI_CHANNEL_USER as HCI_CHANNEL_USER, + HCI_DEV_NONE as HCI_DEV_NONE, IP_FREEBIND as IP_FREEBIND, IP_RECVORIGDSTADDR as IP_RECVORIGDSTADDR, + L2CAP_LM as L2CAP_LM, + L2CAP_LM_AUTH as L2CAP_LM_AUTH, + L2CAP_LM_ENCRYPT as L2CAP_LM_ENCRYPT, + L2CAP_LM_MASTER as L2CAP_LM_MASTER, + L2CAP_LM_RELIABLE as L2CAP_LM_RELIABLE, + L2CAP_LM_SECURE as L2CAP_LM_SECURE, + L2CAP_LM_TRUSTED as L2CAP_LM_TRUSTED, + SOL_BLUETOOTH as SOL_BLUETOOTH, + SOL_L2CAP as SOL_L2CAP, + SOL_RFCOMM as SOL_RFCOMM, + SOL_SCO as SOL_SCO, VMADDR_CID_LOCAL as VMADDR_CID_LOCAL, )