Bluetooth socket additions in Python 3.14
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 55/100
Hướng nghiên cứu
Bắt đầu với các mục typeshed cho module Python socket và _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.
Mô tả
Python 3.14 added some additional constants to the socket module for Bluetooth-related sockets.
Related documentation sections:
- https://docs.python.org/3/library/socket.html#socket-families (have to scroll a bit to get to the
AF_BLUETOOTHbullet point) - https://docs.python.org/3/library/socket.html#socket.AF_BLUETOOTH
Changes needed:
_socket._Addressneeds to addintto the union because of "device_idnot packed in a tuple is now accepted." forBTPROTO_HCIwheredevice_idis 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}
- Ngôn ngữ chính
- Python
- Star
- 5.1k
- Fork
- 2.1k
- Merge trung bình
- 1 ngày 13 giờ
- Pull request đã merge (30 ngày)
- 73
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của python/typeshed
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
project: infrastructure
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
stubs: improvement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Tất cả issue của python/typeshed
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
-
🐛 Bug 🔔 Pending processing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
jumpserver/jumpserver#17584 ·