Skip to content

Commit ffe0bbc

Browse files
committed
Add Python 3.15 socket and SSL updates
1 parent f74b24b commit ffe0bbc

7 files changed

Lines changed: 73 additions & 25 deletions

File tree

stdlib/@tests/stubtest_allowlists/darwin-py315.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
_pyrepl.fancy_termios
66
_pyrepl.unix_console
77
_pyrepl.unix_eventqueue
8+
(_socket.SO_BINDTODEVICE)?
89
ctypes.c_double_complex._type_
910
ctypes.c_float_complex._type_
1011
ctypes.c_longdouble_complex._type_
@@ -25,3 +26,4 @@ profiling.sampling.live_collector.widgets
2526
readline.get_pre_input_hook
2627
resource.RLIM_SAVED_CUR
2728
resource.RLIM_SAVED_MAX
29+
socket.__all__

stdlib/@tests/stubtest_allowlists/linux-py315.txt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,18 @@ _socket.CAN_ISOTP_FORCE_RXSTMIN
2626
_socket.CAN_ISOTP_FORCE_TXSTMIN
2727
_socket.CAN_ISOTP_HALF_DUPLEX
2828
_socket.CAN_ISOTP_LISTEN_MODE
29-
_socket.CAN_ISOTP_LL_OPTS
30-
_socket.CAN_ISOTP_OPTS
31-
_socket.CAN_ISOTP_RECV_FC
29+
(_socket.CAN_ISOTP_LL_OPTS)?
30+
(_socket.CAN_ISOTP_OPTS)?
31+
(_socket.CAN_ISOTP_RECV_FC)?
3232
_socket.CAN_ISOTP_RX_EXT_ADDR
3333
_socket.CAN_ISOTP_RX_PADDING
34-
_socket.CAN_ISOTP_RX_STMIN
34+
(_socket.CAN_ISOTP_RX_STMIN)?
3535
_socket.CAN_ISOTP_SF_BROADCAST
3636
_socket.CAN_ISOTP_TX_PADDING
37-
_socket.CAN_ISOTP_TX_STMIN
37+
(_socket.CAN_ISOTP_TX_STMIN)?
3838
_socket.CAN_ISOTP_WAIT_TX_DONE
3939
_socket.IPV6_HDRINCL
40-
_socket.SOL_CAN_ISOTP
40+
(_socket.SOL_CAN_ISOTP)?
4141
ctypes.c_double_complex._type_
4242
ctypes.c_float_complex._type_
4343
ctypes.c_longdouble_complex._type_
@@ -118,16 +118,16 @@ socket.CAN_ISOTP_FORCE_RXSTMIN
118118
socket.CAN_ISOTP_FORCE_TXSTMIN
119119
socket.CAN_ISOTP_HALF_DUPLEX
120120
socket.CAN_ISOTP_LISTEN_MODE
121-
socket.CAN_ISOTP_LL_OPTS
122-
socket.CAN_ISOTP_OPTS
123-
socket.CAN_ISOTP_RECV_FC
121+
(socket.CAN_ISOTP_LL_OPTS)?
122+
(socket.CAN_ISOTP_OPTS)?
123+
(socket.CAN_ISOTP_RECV_FC)?
124124
socket.CAN_ISOTP_RX_EXT_ADDR
125125
socket.CAN_ISOTP_RX_PADDING
126-
socket.CAN_ISOTP_RX_STMIN
126+
(socket.CAN_ISOTP_RX_STMIN)?
127127
socket.CAN_ISOTP_SF_BROADCAST
128128
socket.CAN_ISOTP_TX_PADDING
129-
socket.CAN_ISOTP_TX_STMIN
129+
(socket.CAN_ISOTP_TX_STMIN)?
130130
socket.CAN_ISOTP_WAIT_TX_DONE
131131
socket.IPV6_HDRINCL
132-
socket.SOL_CAN_ISOTP
132+
(socket.SOL_CAN_ISOTP)?
133133
socket.__all__

stdlib/@tests/stubtest_allowlists/py315.txt

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,6 @@ _pyrepl.utils
3939
_pyrepl.windows_console
4040
_pyrepl.windows_eventqueue
4141
_sqlite3.SQLITE_KEYWORDS
42-
_ssl.HAS_PSK_TLS13
43-
_ssl._SSLContext.get_groups
44-
_ssl._SSLContext.set_ciphersuites
45-
_ssl._SSLContext.set_client_sigalgs
46-
_ssl._SSLContext.set_groups
47-
_ssl._SSLContext.set_server_sigalgs
48-
_ssl.get_sigalgs
4942
_struct.Struct.pack_into
5043
_struct.pack
5144
_struct.pack_into
@@ -288,12 +281,6 @@ sqlite3.dbapi2.SQLITE_KEYWORDS
288281
sre_compile
289282
sre_constants
290283
sre_parse
291-
ssl.SSLObject.client_sigalg
292-
ssl.SSLObject.group
293-
ssl.SSLObject.server_sigalg
294-
ssl.SSLSocket.client_sigalg
295-
ssl.SSLSocket.group
296-
ssl.SSLSocket.server_sigalg
297284
symtable.symtable
298285
sys.__jit
299286
sys._monitoring

stdlib/_socket.pyi

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,13 @@ if sys.platform == "linux":
437437
CAN_RAW_JOIN_FILTERS: Final[int]
438438
# Availability: Linux >= 2.6.25
439439
CAN_ISOTP: Final[int]
440+
if sys.version_info >= (3, 15):
441+
SOL_CAN_ISOTP: Final[int]
442+
CAN_ISOTP_OPTS: Final[int]
443+
CAN_ISOTP_RECV_FC: Final[int]
444+
CAN_ISOTP_TX_STMIN: Final[int]
445+
CAN_ISOTP_RX_STMIN: Final[int]
446+
CAN_ISOTP_LL_OPTS: Final[int]
440447
# Availability: Linux >= 5.4
441448
CAN_J1939: Final[int]
442449

stdlib/_ssl.pyi

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ if sys.version_info < (3, 12):
5757
def RAND_status() -> bool: ...
5858
def get_default_verify_paths() -> tuple[str, str, str, str]: ...
5959

60+
if sys.version_info >= (3, 15):
61+
def get_sigalgs() -> list[str]: ...
62+
6063
if sys.platform == "win32":
6164
_EnumRetType: TypeAlias = list[tuple[bytes, str, set[str] | bool]]
6265
def enum_certificates(store_name: str) -> _EnumRetType: ...
@@ -101,6 +104,12 @@ class _SSLContext:
101104
def set_ciphers(self, cipherlist: str, /) -> None: ...
102105
def set_default_verify_paths(self) -> None: ...
103106
def set_ecdh_curve(self, name: str, /) -> None: ...
107+
if sys.version_info >= (3, 15):
108+
def get_groups(self, /, *, include_aliases: bool = False) -> list[str]: ...
109+
def set_ciphersuites(self, ciphersuites: str, /) -> None: ...
110+
def set_client_sigalgs(self, sigalgslist: str, /) -> None: ...
111+
def set_groups(self, grouplist: str, /) -> None: ...
112+
def set_server_sigalgs(self, sigalgslist: str, /) -> None: ...
104113
if sys.version_info >= (3, 13):
105114
def set_psk_client_callback(self, callback: Callable[[str | None], tuple[str | None, bytes]] | None) -> None: ...
106115
def set_psk_server_callback(
@@ -271,6 +280,8 @@ HAS_ECDH: Final[bool]
271280
HAS_NPN: Final[bool]
272281
if sys.version_info >= (3, 13):
273282
HAS_PSK: Final[bool]
283+
if sys.version_info >= (3, 15):
284+
HAS_PSK_TLS13: Final[bool]
274285
HAS_ALPN: Final[bool]
275286
HAS_SSLv2: Final[bool]
276287
HAS_SSLv3: Final[bool]

stdlib/socket.pyi

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -776,6 +776,24 @@ if sys.platform == "linux":
776776
from _socket import CAN_RAW_ERR_FILTER as CAN_RAW_ERR_FILTER
777777

778778
__all__ += ["CAN_RAW_ERR_FILTER"]
779+
if sys.version_info >= (3, 15):
780+
from _socket import (
781+
CAN_ISOTP_LL_OPTS as CAN_ISOTP_LL_OPTS,
782+
CAN_ISOTP_OPTS as CAN_ISOTP_OPTS,
783+
CAN_ISOTP_RECV_FC as CAN_ISOTP_RECV_FC,
784+
CAN_ISOTP_RX_STMIN as CAN_ISOTP_RX_STMIN,
785+
CAN_ISOTP_TX_STMIN as CAN_ISOTP_TX_STMIN,
786+
SOL_CAN_ISOTP as SOL_CAN_ISOTP,
787+
)
788+
789+
__all__ += [
790+
"CAN_ISOTP_LL_OPTS",
791+
"CAN_ISOTP_OPTS",
792+
"CAN_ISOTP_RECV_FC",
793+
"CAN_ISOTP_RX_STMIN",
794+
"CAN_ISOTP_TX_STMIN",
795+
"SOL_CAN_ISOTP",
796+
]
779797

780798
if sys.platform == "linux":
781799
from _socket import (

stdlib/ssl.pyi

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ from typing_extensions import Never, Self, deprecated
3333
if sys.version_info >= (3, 13):
3434
from _ssl import HAS_PSK as HAS_PSK
3535

36+
if sys.version_info >= (3, 15):
37+
from _ssl import HAS_PSK_TLS13 as HAS_PSK_TLS13
38+
3639
if sys.version_info >= (3, 14):
3740
from _ssl import HAS_PHA as HAS_PHA
3841

@@ -299,6 +302,11 @@ class SSLSocket(socket.socket):
299302
def cipher(self) -> tuple[str, str, int] | None: ...
300303
def shared_ciphers(self) -> list[tuple[str, str, int]] | None: ...
301304
def compression(self) -> str | None: ...
305+
if sys.version_info >= (3, 15):
306+
def group(self) -> str | None: ...
307+
def client_sigalg(self) -> str | None: ...
308+
def server_sigalg(self) -> str | None: ...
309+
302310
def get_channel_binding(self, cb_type: str = "tls-unique") -> bytes | None: ...
303311
def selected_alpn_protocol(self) -> str | None: ...
304312
@deprecated("Deprecated since Python 3.10. Use ALPN instead.")
@@ -385,6 +393,13 @@ class SSLContext(_SSLContext):
385393
@overload
386394
def get_ca_certs(self, binary_form: bool = False) -> Any: ...
387395
def get_ciphers(self) -> list[_Cipher]: ...
396+
if sys.version_info >= (3, 15):
397+
def set_ciphersuites(self, ciphersuites: str, /) -> None: ...
398+
def get_groups(self, /, *, include_aliases: bool = False) -> list[str]: ...
399+
def set_groups(self, grouplist: str, /) -> None: ...
400+
def set_client_sigalgs(self, sigalgs: str, /) -> None: ...
401+
def set_server_sigalgs(self, sigalgs: str, /) -> None: ...
402+
388403
def set_default_verify_paths(self) -> None: ...
389404
def set_ciphers(self, cipherlist: str, /) -> None: ...
390405
def set_alpn_protocols(self, alpn_protocols: Iterable[str]) -> None: ...
@@ -457,6 +472,11 @@ class SSLObject:
457472
def cipher(self) -> tuple[str, str, int] | None: ...
458473
def shared_ciphers(self) -> list[tuple[str, str, int]] | None: ...
459474
def compression(self) -> str | None: ...
475+
if sys.version_info >= (3, 15):
476+
def group(self) -> str | None: ...
477+
def client_sigalg(self) -> str | None: ...
478+
def server_sigalg(self) -> str | None: ...
479+
460480
def pending(self) -> int: ...
461481
def do_handshake(self) -> None: ...
462482
def unwrap(self) -> None: ...
@@ -490,6 +510,9 @@ SSL_ERROR_ZERO_RETURN: Final = SSLErrorNumber.SSL_ERROR_ZERO_RETURN # undocumen
490510

491511
def get_protocol_name(protocol_code: int) -> str: ...
492512

513+
if sys.version_info >= (3, 15):
514+
def get_sigalgs() -> list[str]: ...
515+
493516
PEM_FOOTER: Final[str]
494517
PEM_HEADER: Final[str]
495518
SOCK_STREAM: Final = socket.SOCK_STREAM

0 commit comments

Comments
 (0)