python-curio/0001-Add-support-for-Python-3.12.patch

72 lines
2.6 KiB
Diff
Raw Permalink Normal View History

2024-05-09 14:10:37 +08:00
From a5590bb04de3f1f201fd1fd0ce9cfe5825db80ac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=BB=95=E7=A3=8A?= Hugo van Kemenade
Date: Thu, 9 May 2024 14:35:57 +0800
Subject: [PATCH] Add support for Python 3.12
---
README.rst | 2 +-
curio/channel.py | 14 ++++++++++----
curio/ssl.py | 4 ++--
3 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/README.rst b/README.rst
index 945dac8..83f9ee7 100644
--- a/README.rst
+++ b/README.rst
@@ -3,7 +3,7 @@ Curio
Curio is a coroutine-based library for concurrent Python systems
programming using async/await. It provides standard programming
-abstractions such as as tasks, sockets, files, locks, and queues as
+abstractions such as tasks, sockets, files, locks, and queues as
well as some advanced features such as support for structured
concurrency. It works on Unix and Windows and has zero dependencies.
You'll find it to be familiar, small, fast, and fun.
diff --git a/curio/channel.py b/curio/channel.py
index 230427f..556be63 100644
--- a/curio/channel.py
+++ b/curio/channel.py
@@ -28,10 +28,16 @@ from .time import timeout_after, sleep
# Authentication parameters (copied from multiprocessing)
AUTH_MESSAGE_LENGTH = mpc.MESSAGE_LENGTH # 20
-CHALLENGE = mpc.CHALLENGE # b'#CHALLENGE#'
-WELCOME = mpc.WELCOME # b'#WELCOME#'
-FAILURE = mpc.FAILURE # b'#FAILURE#'
-
+try:
+ # Python 3.12+
+ CHALLENGE = mpc._CHALLENGE # b'#CHALLENGE#'
+ WELCOME = mpc._WELCOME # b'#WELCOME#'
+ FAILURE = mpc._FAILURE # b'#FAILURE#'
+except AttributeError:
+ # Python 3.7-3.11
+ CHALLENGE = mpc.CHALLENGE # b'#CHALLENGE#'
+ WELCOME = mpc.WELCOME # b'#WELCOME#'
+ FAILURE = mpc.FAILURE # b'#FAILURE#'
class ConnectionError(CurioError):
diff --git a/curio/ssl.py b/curio/ssl.py
index 37efa08..4619eb1 100644
--- a/curio/ssl.py
+++ b/curio/ssl.py
@@ -27,12 +27,12 @@ from .workers import run_in_thread
from .io import Socket
if _ssl:
- @wraps(_ssl.wrap_socket)
+ @wraps(_ssl.SSLContext.wrap_socket)
async def wrap_socket(sock, *args, do_handshake_on_connect=True, **kwargs):
if isinstance(sock, Socket):
sock = sock._socket
- ssl_sock = _ssl.wrap_socket(sock, *args, do_handshake_on_connect=False, **kwargs)
+ ssl_sock = _ssl.SSLContext.wrap_socket(sock, *args, do_handshake_on_connect=False, **kwargs)
cssl_sock = Socket(ssl_sock)
cssl_sock.do_handshake_on_connect = do_handshake_on_connect
if do_handshake_on_connect and ssl_sock._connected:
--
2.43.0