aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoletdjnz <coletdjnz@protonmail.com>2024-08-21 19:17:26 +1200
committerGitHub <noreply@github.com>2024-08-21 19:17:26 +1200
commit6f9e6537434562d513d0c9b68ced8a61ade94a64 (patch)
tree16844137e51a51f0314677a99c9d7097307240bd
parentf0bb28504c8c2b75ee3e5796aed50de2a7f90a1b (diff)
[rh:websockets] Upgrade websockets to 13.0 (#10815)
Fixes CI hanging Authored by: coletdjnz
-rw-r--r--.github/workflows/core.yml1
-rw-r--r--.github/workflows/quick-test.yml1
-rw-r--r--pyproject.toml2
-rw-r--r--test/test_websockets.py8
-rw-r--r--yt_dlp/networking/_websockets.py5
5 files changed, 8 insertions, 9 deletions
diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml
index fdfdebc65..21a64efa9 100644
--- a/.github/workflows/core.yml
+++ b/.github/workflows/core.yml
@@ -55,6 +55,7 @@ jobs:
- name: Install test requirements
run: python3 ./devscripts/install_deps.py --include test --include curl-cffi
- name: Run tests
+ timeout-minutes: 15
continue-on-error: False
run: |
python3 -m yt_dlp -v || true # Print debug head
diff --git a/.github/workflows/quick-test.yml b/.github/workflows/quick-test.yml
index 3afb51a30..fe2a7e923 100644
--- a/.github/workflows/quick-test.yml
+++ b/.github/workflows/quick-test.yml
@@ -17,6 +17,7 @@ jobs:
- name: Install test requirements
run: python3 ./devscripts/install_deps.py --include test
- name: Run tests
+ timeout-minutes: 15
run: |
python3 -m yt_dlp -v || true
python3 ./devscripts/run_tests.py core
diff --git a/pyproject.toml b/pyproject.toml
index d5480e1c6..fe6894a42 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -49,7 +49,7 @@ dependencies = [
"pycryptodomex",
"requests>=2.32.2,<3",
"urllib3>=1.26.17,<3",
- "websockets>=12.0",
+ "websockets>=13.0",
]
[project.optional-dependencies]
diff --git a/test/test_websockets.py b/test/test_websockets.py
index 43f20ac65..06112cc0b 100644
--- a/test/test_websockets.py
+++ b/test/test_websockets.py
@@ -88,7 +88,7 @@ def create_wss_websocket_server():
certfn = os.path.join(TEST_DIR, 'testcert.pem')
sslctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
sslctx.load_cert_chain(certfn, None)
- return create_websocket_server(ssl_context=sslctx)
+ return create_websocket_server(ssl=sslctx)
MTLS_CERT_DIR = os.path.join(TEST_DIR, 'testdata', 'certificate')
@@ -103,7 +103,7 @@ def create_mtls_wss_websocket_server():
sslctx.load_verify_locations(cafile=cacertfn)
sslctx.load_cert_chain(certfn, None)
- return create_websocket_server(ssl_context=sslctx)
+ return create_websocket_server(ssl=sslctx)
def create_legacy_wss_websocket_server():
@@ -112,7 +112,7 @@ def create_legacy_wss_websocket_server():
sslctx.maximum_version = ssl.TLSVersion.TLSv1_2
sslctx.set_ciphers('SHA1:AESCCM:aDSS:eNULL:aNULL')
sslctx.load_cert_chain(certfn, None)
- return create_websocket_server(ssl_context=sslctx)
+ return create_websocket_server(ssl=sslctx)
def ws_validate_and_send(rh, req):
@@ -139,7 +139,7 @@ class TestWebsSocketRequestHandlerConformance:
cls.wss_thread, cls.wss_port = create_wss_websocket_server()
cls.wss_base_url = f'wss://127.0.0.1:{cls.wss_port}'
- cls.bad_wss_thread, cls.bad_wss_port = create_websocket_server(ssl_context=ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER))
+ cls.bad_wss_thread, cls.bad_wss_port = create_websocket_server(ssl=ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER))
cls.bad_wss_host = f'wss://127.0.0.1:{cls.bad_wss_port}'
cls.mtls_wss_thread, cls.mtls_wss_port = create_mtls_wss_websocket_server()
diff --git a/yt_dlp/networking/_websockets.py b/yt_dlp/networking/_websockets.py
index 492af1154..21b765b91 100644
--- a/yt_dlp/networking/_websockets.py
+++ b/yt_dlp/networking/_websockets.py
@@ -47,10 +47,7 @@ from websockets.uri import parse_uri
# 2: "AttributeError: 'ClientConnection' object has no attribute 'recv_events_exc'. Did you mean: 'recv_events'?"
import websockets.sync.connection # isort: split
with contextlib.suppress(Exception):
- # > 12.0
websockets.sync.connection.Connection.recv_exc = None
- # 12.0
- websockets.sync.connection.Connection.recv_events_exc = None
class WebsocketsResponseAdapter(WebSocketResponse):
@@ -162,7 +159,7 @@ class WebsocketsRH(WebSocketRequestHandler):
additional_headers=headers,
open_timeout=timeout,
user_agent_header=None,
- ssl_context=ssl_ctx if wsuri.secure else None,
+ ssl=ssl_ctx if wsuri.secure else None,
close_timeout=0, # not ideal, but prevents yt-dlp hanging
)
return WebsocketsResponseAdapter(conn, url=request.url)