python / python/typeshed

Bluetooth socket additions in Python 3.14

Đang mở
#15,213 8 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

stubs: incomplete
Ngôn ngữ chính
Python
Star
5.1k
Fork
2.1k
Merge trung bình
1 ngày 19 giờ
Pull request đã merge (30 ngày)
82

Mô tả

Python 3.14 added some additional constants to the socket module for Bluetooth-related sockets.

Related documentation sections:

Changes needed:

  • _socket._Address needs to add int to the union because of "device_id not packed in a tuple is now accepted." for BTPROTO_HCI where device_id is an integer.
  • Windows gets new constants SOL_RFCOMM, SO_BTH_ENCRYPT, SO_BTH_MTU, SO_BTH_MTU_MAX, SO_BTH_MTU_MIN.
  • Linux gets new constants BDADDR_BREDR, BDADDR_LE_PUBLIC, BDADDR_LE_RANDOM, SOL_BLUETOOTH, SOL_L2CAP, SOL_RFCOMM, SOL_SCO, L2CAP_LM, L2CAP_LM_AUTH, L2CAP_LM_ENCRYPT, L2CAP_LM_MASTER, L2CAP_LM_RELIABLE, L2CAP_LM_SECURE, L2CAP_LM_TRUSTED, BT_CHANNEL_POLICY, BT_CHANNEL_POLICY_BREDR_ONLY, BT_CHANNEL_POLICY_BREDR_PREFERRED, BT_CODEC, BT_DEFER_SETUP, BT_FLUSHABLE, BT_FLUSHABLE_OFF, BT_FLUSHABLE_ON, BT_ISO_QOS, BT_MODE, BT_MODE_BASIC, BT_MODE_ERTM, BT_MODE_EXT_FLOWCTL, BT_MODE_LE_FLOWCTL, BT_MODE_STREAMING, BT_PHY, BT_PHY_BR_1M_1SLOT, BT_PHY_BR_1M_3SLOT, BT_PHY_BR_1M_5SLOT, BT_PHY_EDR_2M_1SLOT, BT_PHY_EDR_2M_3SLOT, BT_PHY_EDR_2M_5SLOT, BT_PHY_EDR_3M_1SLOT, BT_PHY_EDR_3M_3SLOT, BT_PHY_EDR_3M_5SLOT, BT_PHY_LE_1M_RX, BT_PHY_LE_1M_TX, BT_PHY_LE_2M_RX, BT_PHY_LE_2M_TX, BT_PHY_LE_CODED_RX, BT_PHY_LE_CODED_TX, BT_PKT_STATUS, BT_POWER, BT_POWER_FORCE_ACTIVE_OFF, BT_POWER_FORCE_ACTIVE_ON, BT_RCVMTU, BT_SECURITY, BT_SECURITY_FIPS, BT_SECURITY_HIGH, BT_SECURITY_LOW, BT_SECURITY_MEDIUM, BT_SECURITY_SDP, BT_SNDMTU, BT_VOICE, BT_VOICE_CVSD_16BIT, BT_VOICE_TRANSPARENT, BT_VOICE_TRANSPARENT_16BIT, HCI_CHANNEL_CONTROL, HCI_CHANNEL_LOGGING, HCI_CHANNEL_MONITOR, HCI_CHANNEL_RAW, HCI_CHANNEL_USER, HCI_DEV_NONE
  • TODO: need someone with BSD to do a runtime check there

Runtime tests where info above comes from:

Windows 11

Python 3.14.2 (tags/v3.14.2:df79316, Dec  5 2025, 17:18:21) [MSC v.1944 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> [x for x in socket.__all__ if x.startswith("SOL_")]
['SOL_IP', 'SOL_RFCOMM', 'SOL_SOCKET', 'SOL_TCP', 'SOL_UDP']
>>> socket.SOL_RFCOMM
3
>>> [x for x in socket.__all__ if x.startswith("SO_")]
['SO_ACCEPTCONN', 'SO_BROADCAST', 'SO_BTH_ENCRYPT', 'SO_BTH_MTU', 'SO_BTH_MTU_MAX', 'SO_BTH_MTU_MIN', 'SO_DEBUG', 'SO_DONTROUTE', 'SO_ERROR', 'SO_EXCLUSIVEADDRUSE', 'SO_KEEPALIVE', 'SO_LINGER', 'SO_OOBINLINE', 'SO_ORIGINAL_DST', 'SO_RCVBUF', 'SO_RCVLOWAT', 'SO_RCVTIMEO', 'SO_REUSEADDR', 'SO_SNDBUF', 'SO_SNDLOWAT', 'SO_SNDTIMEO', 'SO_TYPE', 'SO_USELOOPBACK']
>>> socket.SO_BTH_ENCRYPT, socket.SO_BTH_MTU, socket.SO_BTH_MTU_MAX, socket.SO_BTH_MTU_MIN
(2, -2147483641, -2147483640, -2147483638)

Debian Testing

Python 3.14.2 (main, Dec  8 2025, 11:53:33) [GCC 15.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> [x for x in socket.__all__ if x.startswith("BDADDR_")]
['BDADDR_ANY', 'BDADDR_BREDR', 'BDADDR_LE_PUBLIC', 'BDADDR_LE_RANDOM', 'BDADDR_LOCAL']
>>> socket.BDADDR_BREDR, socket.BDADDR_LE_PUBLIC, socket.BDADDR_LE_RANDOM
(0, 1, 2)
>>> [x for x in socket.__all__ if x.startswith("SO_")]
['SO_ACCEPTCONN', 'SO_BINDTODEVICE', 'SO_BINDTOIFINDEX', 'SO_BROADCAST', 'SO_DEBUG', 'SO_DOMAIN', 'SO_DONTROUTE', 'SO_ERROR', 'SO_INCOMING_CPU', 'SO_J1939_ERRQUEUE', 'SO_J1939_FILTER', 'SO_J1939_PROMISC', 'SO_J1939_SEND_PRIO', 'SO_KEEPALIVE', 'SO_LINGER', 'SO_MARK', 'SO_OOBINLINE', 'SO_ORIGINAL_DST', 'SO_PASSCRED', 'SO_PASSSEC', 'SO_PEERCRED', 'SO_PEERSEC', 'SO_PRIORITY', 'SO_PROTOCOL', 'SO_RCVBUF', 'SO_RCVLOWAT', 'SO_RCVTIMEO', 'SO_REUSEADDR', 'SO_REUSEPORT', 'SO_SNDBUF', 'SO_SNDLOWAT', 'SO_SNDTIMEO', 'SO_TYPE', 'SO_VM_SOCKETS_BUFFER_MAX_SIZE', 'SO_VM_SOCKETS_BUFFER_MIN_SIZE', 'SO_VM_SOCKETS_BUFFER_SIZE']
>>> {x: eval(f"socket.{x}") for x in socket.__all__ if x.startswith("SOL_")}
{'SOL_ALG': 279, 'SOL_BLUETOOTH': 274, 'SOL_CAN_BASE': 100, 'SOL_CAN_RAW': 101, 'SOL_HCI': 0, 'SOL_IP': 0, 'SOL_L2CAP': 6, 'SOL_RDS': 276, 'SOL_RFCOMM': 18, 'SOL_SCO': 17, 'SOL_SOCKET': 1, 'SOL_TCP': 6, 'SOL_TIPC': 271, 'SOL_UDP': 17}
>>> {x: eval(f"socket.{x}") for x in socket.__all__ if x.startswith("L2CAP_")}
{'L2CAP_LM': 3, 'L2CAP_LM_AUTH': 2, 'L2CAP_LM_ENCRYPT': 4, 'L2CAP_LM_MASTER': 1, 'L2CAP_LM_RELIABLE': 16, 'L2CAP_LM_SECURE': 32, 'L2CAP_LM_TRUSTED': 8}
>>> {x: eval(f"socket.{x}") for x in socket.__all__ if x.startswith("BT_")}
{'BT_CHANNEL_POLICY': 10, 'BT_CHANNEL_POLICY_BREDR_ONLY': 0, 'BT_CHANNEL_POLICY_BREDR_PREFERRED': 1, 'BT_CODEC': 19, 'BT_DEFER_SETUP': 7, 'BT_FLUSHABLE': 8, 'BT_FLUSHABLE_OFF': 0, 'BT_FLUSHABLE_ON': 1, 'BT_ISO_QOS': 17, 'BT_MODE': 15, 'BT_MODE_BASIC': 0, 'BT_MODE_ERTM': 1, 'BT_MODE_EXT_FLOWCTL': 4, 'BT_MODE_LE_FLOWCTL': 3, 'BT_MODE_STREAMING': 2, 'BT_PHY': 14, 'BT_PHY_BR_1M_1SLOT': 1, 'BT_PHY_BR_1M_3SLOT': 2, 'BT_PHY_BR_1M_5SLOT': 4, 'BT_PHY_EDR_2M_1SLOT': 8, 'BT_PHY_EDR_2M_3SLOT': 16, 'BT_PHY_EDR_2M_5SLOT': 32, 'BT_PHY_EDR_3M_1SLOT': 64, 'BT_PHY_EDR_3M_3SLOT': 128, 'BT_PHY_EDR_3M_5SLOT': 256, 'BT_PHY_LE_1M_RX': 1024, 'BT_PHY_LE_1M_TX': 512, 'BT_PHY_LE_2M_RX': 4096, 'BT_PHY_LE_2M_TX': 2048, 'BT_PHY_LE_CODED_RX': 16384, 'BT_PHY_LE_CODED_TX': 8192, 'BT_PKT_STATUS': 16, 'BT_POWER': 9, 'BT_POWER_FORCE_ACTIVE_OFF': 0, 'BT_POWER_FORCE_ACTIVE_ON': 1, 'BT_RCVMTU': 13, 'BT_SECURITY': 4, 'BT_SECURITY_FIPS': 4, 'BT_SECURITY_HIGH': 3, 'BT_SECURITY_LOW': 1, 'BT_SECURITY_MEDIUM': 2, 'BT_SECURITY_SDP': 0, 'BT_SNDMTU': 12, 'BT_VOICE': 11, 'BT_VOICE_CVSD_16BIT': 96, 'BT_VOICE_TRANSPARENT': 3, 'BT_VOICE_TRANSPARENT_16BIT': 99}
>>> {x: eval(f"socket.{x}") for x in socket.__all__ if x.startswith("HCI_")}
{'HCI_CHANNEL_CONTROL': 3, 'HCI_CHANNEL_LOGGING': 4, 'HCI_CHANNEL_MONITOR': 2, 'HCI_CHANNEL_RAW': 0, 'HCI_CHANNEL_USER': 1, 'HCI_DATA_DIR': 1, 'HCI_DEV_NONE': 65535, 'HCI_FILTER': 2, 'HCI_TIME_STAMP': 3}

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu với các mục typeshed cho module Python socket_socket._Address, sử dụng các kết quả runtime Python 3.14 được liệt kê làm tham chiếu cho các tên và giá trị dành riêng cho nền tảng. Xác minh các phần bổ sung cho Windows và Linux, sau đó thực hiện kiểm tra runtime BSD được yêu cầu; hoàn tất khi kiểu địa chỉ và các hằng số khớp với các nền tảng được hỗ trợ.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
tooling
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.