Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-python-engineio for
openSUSE:Factory checked in at 2025-12-29 15:16:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-engineio (Old)
and /work/SRC/openSUSE:Factory/.python-python-engineio.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-python-engineio"
Mon Dec 29 15:16:48 2025 rev:13 rq:1324594 version:4.13.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-python-engineio/python-python-engineio.changes
2025-11-12 21:14:34.514606320 +0100
+++
/work/SRC/openSUSE:Factory/.python-python-engineio.new.1928/python-python-engineio.changes
2025-12-29 15:17:30.928763822 +0100
@@ -1,0 +2,11 @@
+Sun Dec 28 20:25:12 UTC 2025 - Dirk Müller <[email protected]>
+
+- update to 4.13.0:
+ * Apply escaping rules when parsing cookie values (commit)
+ * Several minor improvements to the aiohttp integration #419
+ * Clarify logging behavior in documentation #421 (commit)
+ * Address deprecation warnings #422 (commit)
+ * Add 3.14 and pypy-3.11 CI builds (commit)
+ * Drop Python 3.8 and 3.9 from CI builds (commit)
+
+-------------------------------------------------------------------
Old:
----
python-engineio-4.12.3.tar.gz
New:
----
python-engineio-4.13.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-python-engineio.spec ++++++
--- /var/tmp/diff_new_pack.ZEBSEE/_old 2025-12-29 15:17:33.180856372 +0100
+++ /var/tmp/diff_new_pack.ZEBSEE/_new 2025-12-29 15:17:33.192856864 +0100
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-python-engineio
-Version: 4.12.3
+Version: 4.13.0
Release: 0
Summary: EngineIO server
License: MIT
++++++ python-engineio-4.12.3.tar.gz -> python-engineio-4.13.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/.github/workflows/tests.yml
new/python-engineio-4.13.0/.github/workflows/tests.yml
--- old/python-engineio-4.12.3/.github/workflows/tests.yml 2025-09-28
08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/.github/workflows/tests.yml 2025-12-24
23:34:59.000000000 +0100
@@ -22,14 +22,7 @@
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
- python: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 'pypy-3.10']
- exclude:
- # pypy3 currently fails to run on Windows
- - os: windows-latest
- python: pypy-3.8
- # the loop fails to close in the Mac version of 3.9
- - os: macos-latest
- python: '3.9'
+ python: ['3.10', '3.11', '3.12', '3.13', '3.14', 'pypy-3.11']
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/CHANGES.md
new/python-engineio-4.13.0/CHANGES.md
--- old/python-engineio-4.12.3/CHANGES.md 2025-09-28 08:29:18.000000000
+0200
+++ new/python-engineio-4.13.0/CHANGES.md 2025-12-24 23:34:59.000000000
+0100
@@ -1,5 +1,14 @@
# python-engineio change log
+**Release 4.13.0** - 2025-12-24
+
+- Apply escaping rules when parsing cookie values
([commit](https://github.com/miguelgrinberg/python-engineio/commit/04e7c4dd4792d1f551b71930ec771fbb96cdaaf2))
+- Several minor improvements to the aiohttp integration
[#419](https://github.com/miguelgrinberg/python-engineio/issues/419)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/f7cb71c9d7ef961e839f0eb1e570d76b4ce481da))
(thanks **PaulWasTaken**!)
+- Clarify logging behavior in documentation
[#421](https://github.com/miguelgrinberg/python-engineio/issues/421)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/7fe1771e7463960f6ef08f9bcc22b42c8df1012b))
(thanks **ZipFile**!)
+- Address deprecation warnings
[#422](https://github.com/miguelgrinberg/python-engineio/issues/422)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/b90cbf2b981c301968611b495dd548c4b0153223))
+- Add 3.14 and pypy-3.11 CI builds
([commit](https://github.com/miguelgrinberg/python-engineio/commit/df3d9741495d93f4ad0f2ec9f7b3a1d795f2234c))
+- Drop Python 3.8 and 3.9 from CI builds
([commit](https://github.com/miguelgrinberg/python-engineio/commit/697b50f5bbc68b2416778d537ed88fefc8b004f0))
+
**Release 4.12.3** - 2025-09-28
- Reset client queue upon disconnection
[#414](https://github.com/miguelgrinberg/python-engineio/issues/414)
([commit](https://github.com/miguelgrinberg/python-engineio/commit/af57bf235b824f7f179a68ef61a03d76a2c56655))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/docs/client.rst
new/python-engineio-4.13.0/docs/client.rst
--- old/python-engineio-4.12.3/docs/client.rst 2025-09-28 08:29:18.000000000
+0200
+++ new/python-engineio-4.13.0/docs/client.rst 2025-12-24 23:34:59.000000000
+0100
@@ -199,9 +199,13 @@
# asyncio
eio = engineio.AsyncClient(logger=True)
-The ``logger`` argument can be set to ``True`` to output logs to ``stderr``, or
-to an object compatible with Python's ``logging`` package where the logs should
-be emitted to. A value of ``False`` disables logging.
+The ``logger`` argument controls logging behavior:
+
+* ``True``: Enables log output to ``stderr`` at the ``INFO`` level.
+* ``False``: Enables log output to ``stderr`` at the ``ERROR`` level. This is
+ the default.
+* A ``logging.Logger`` instance: Uses the provided logger without additional
+ configuration.
Logging can help identify the cause of connection problems, unexpected
disconnections and other issues.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/docs/server.rst
new/python-engineio-4.13.0/docs/server.rst
--- old/python-engineio-4.12.3/docs/server.rst 2025-09-28 08:29:18.000000000
+0200
+++ new/python-engineio-4.13.0/docs/server.rst 2025-12-24 23:34:59.000000000
+0100
@@ -350,9 +350,13 @@
# asyncio
eio = engineio.AsyncServer(logger=True)
-The ``logger`` argument can be set to ``True`` to output logs to ``stderr``, or
-to an object compatible with Python's ``logging`` package where the logs should
-be emitted to. A value of ``False`` disables logging.
+The ``logger`` argument controls logging behavior:
+
+* ``True``: Enables log output to ``stderr`` at the ``INFO`` level.
+* ``False``: Enables log output to ``stderr`` at the ``ERROR`` level. This is
+ the default.
+* A ``logging.Logger`` instance: Uses the provided logger without additional
+ configuration.
Logging can help identify the cause of connection problems, 400 responses,
bad performance and other issues.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.12.3/examples/client/asyncio/latency_client.py
new/python-engineio-4.13.0/examples/client/asyncio/latency_client.py
--- old/python-engineio-4.12.3/examples/client/asyncio/latency_client.py
2025-09-28 08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/examples/client/asyncio/latency_client.py
2025-12-24 23:34:59.000000000 +0100
@@ -2,7 +2,6 @@
import time
import engineio
-loop = asyncio.get_event_loop()
eio = engineio.AsyncClient()
start_timer = None
@@ -33,4 +32,4 @@
if __name__ == '__main__':
- loop.run_until_complete(start_client())
+ asyncio.run(start_client())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.12.3/examples/client/asyncio/simple_client.py
new/python-engineio-4.13.0/examples/client/asyncio/simple_client.py
--- old/python-engineio-4.12.3/examples/client/asyncio/simple_client.py
2025-09-28 08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/examples/client/asyncio/simple_client.py
2025-12-24 23:34:59.000000000 +0100
@@ -2,7 +2,6 @@
import signal
import engineio
-loop = asyncio.get_event_loop()
eio = engineio.AsyncClient()
exit_event = asyncio.Event()
original_signal_handler = None
@@ -50,4 +49,4 @@
if __name__ == '__main__':
original_signal_handler = signal.signal(signal.SIGINT, signal_handler)
- loop.run_until_complete(start_client())
+ asyncio.run(start_client())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/pyproject.toml
new/python-engineio-4.13.0/pyproject.toml
--- old/python-engineio-4.12.3/pyproject.toml 2025-09-28 08:29:18.000000000
+0200
+++ new/python-engineio-4.13.0/pyproject.toml 2025-12-24 23:34:59.000000000
+0100
@@ -1,6 +1,6 @@
[project]
name = "python-engineio"
-version = "4.12.3"
+version = "4.13.0"
license = {text = "MIT"}
authors = [{name = "Miguel Grinberg", email = "[email protected]"}]
description = "Engine.IO server and client for Python"
@@ -10,7 +10,7 @@
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
]
-requires-python = ">=3.6"
+requires-python = ">=3.8"
dependencies = ["simple-websocket >= 0.10.0"]
[project.readme]
@@ -26,8 +26,15 @@
"requests >= 2.21.0",
"websocket-client >= 0.54.0",
]
-asyncio_client = ["aiohttp >= 3.4"]
-docs = ["sphinx"]
+asyncio_client = [
+ "aiohttp >= 3.4"
+]
+dev = [
+ "tox",
+]
+docs = [
+ "sphinx",
+]
[tool.setuptools]
zip-safe = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/src/engineio/async_client.py
new/python-engineio-4.13.0/src/engineio/async_client.py
--- old/python-engineio-4.12.3/src/engineio/async_client.py 2025-09-28
08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/src/engineio/async_client.py 2025-12-24
23:34:59.000000000 +0100
@@ -1,4 +1,6 @@
import asyncio
+from http.cookies import SimpleCookie
+import inspect
import signal
import ssl
import threading
@@ -319,16 +321,16 @@
# extract any new cookies passed in a header so that they can also be
# sent the the WebSocket route
- cookies = {}
for header, value in headers.items():
if header.lower() == 'cookie':
- cookies = dict(
- [cookie.split('=', 1) for cookie in value.split('; ')])
+ ck = SimpleCookie(headers[header])
+ self.http.cookie_jar.update_cookies(
+ {k: m.value for k, m in ck.items()})
del headers[header]
break
- self.http.cookie_jar.update_cookies(cookies)
- extra_options = {'timeout': self.request_timeout}
+ extra_options = {
+ 'timeout': aiohttp.ClientWSTimeout(ws_close=self.request_timeout)}
if not self.ssl_verify:
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
@@ -468,7 +470,7 @@
run_async = kwargs.pop('run_async', False)
ret = None
if event in self.handlers:
- if asyncio.iscoroutinefunction(self.handlers[event]) is True:
+ if inspect.iscoroutinefunction(self.handlers[event]) is True:
if run_async:
task = self.start_background_task(self.handlers[event],
*args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.12.3/src/engineio/async_drivers/aiohttp.py
new/python-engineio-4.13.0/src/engineio/async_drivers/aiohttp.py
--- old/python-engineio-4.12.3/src/engineio/async_drivers/aiohttp.py
2025-09-28 08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/src/engineio/async_drivers/aiohttp.py
2025-12-24 23:34:59.000000000 +0100
@@ -1,6 +1,5 @@
-import asyncio
+import inspect
import sys
-from urllib.parse import urlsplit
from aiohttp.web import Response, WebSocketResponse
@@ -22,12 +21,8 @@
"""This function takes the arguments passed to the request handler and
uses them to generate a WSGI compatible environ dictionary.
"""
- message = request._message
- payload = request._payload
-
- uri_parts = urlsplit(message.path)
environ = {
- 'wsgi.input': payload,
+ 'wsgi.input': request.content,
'wsgi.errors': sys.stderr,
'wsgi.version': (1, 0),
'wsgi.async': True,
@@ -35,10 +30,10 @@
'wsgi.multiprocess': False,
'wsgi.run_once': False,
'SERVER_SOFTWARE': 'aiohttp',
- 'REQUEST_METHOD': message.method,
- 'QUERY_STRING': uri_parts.query or '',
- 'RAW_URI': message.path,
- 'SERVER_PROTOCOL': 'HTTP/%s.%s' % message.version,
+ 'REQUEST_METHOD': request.method,
+ 'QUERY_STRING': request.query_string or '',
+ 'RAW_URI': request.path_qs,
+ 'SERVER_PROTOCOL': f'HTTP/{request.version[0]}.{request.version[1]}',
'REMOTE_ADDR': '127.0.0.1',
'REMOTE_PORT': '0',
'SERVER_NAME': 'aiohttp',
@@ -46,7 +41,7 @@
'aiohttp.request': request
}
- for hdr_name, hdr_value in message.headers.items():
+ for hdr_name, hdr_value in request.headers.items():
hdr_name = hdr_name.upper()
if hdr_name == 'CONTENT-TYPE':
environ['CONTENT_TYPE'] = hdr_value
@@ -63,9 +58,7 @@
environ['wsgi.url_scheme'] = environ.get('HTTP_X_FORWARDED_PROTO', 'http')
- path_info = uri_parts.path
-
- environ['PATH_INFO'] = path_info
+ environ['PATH_INFO'] = request.path
environ['SCRIPT_NAME'] = ''
return environ
@@ -105,7 +98,7 @@
f = self._sock.send_bytes
else:
f = self._sock.send_str
- if asyncio.iscoroutinefunction(f):
+ if inspect.iscoroutinefunction(f):
await f(message)
else:
f(message)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.12.3/src/engineio/async_drivers/asgi.py
new/python-engineio-4.13.0/src/engineio/async_drivers/asgi.py
--- old/python-engineio-4.12.3/src/engineio/async_drivers/asgi.py
2025-09-28 08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/src/engineio/async_drivers/asgi.py
2025-12-24 23:34:59.000000000 +0100
@@ -1,6 +1,6 @@
+import inspect
import os
import sys
-import asyncio
from engineio.static_files import get_static_file
@@ -102,7 +102,7 @@
if self.on_startup:
try:
await self.on_startup() \
- if asyncio.iscoroutinefunction(self.on_startup) \
+ if inspect.iscoroutinefunction(self.on_startup) \
else self.on_startup()
except:
await send({'type': 'lifespan.startup.failed'})
@@ -112,7 +112,7 @@
if self.on_shutdown:
try:
await self.on_shutdown() \
- if asyncio.iscoroutinefunction(self.on_shutdown) \
+ if inspect.iscoroutinefunction(self.on_shutdown) \
else self.on_shutdown()
except:
await send({'type': 'lifespan.shutdown.failed'})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-engineio-4.12.3/src/engineio/async_drivers/tornado.py
new/python-engineio-4.13.0/src/engineio/async_drivers/tornado.py
--- old/python-engineio-4.12.3/src/engineio/async_drivers/tornado.py
2025-09-28 08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/src/engineio/async_drivers/tornado.py
2025-12-24 23:34:59.000000000 +0100
@@ -1,4 +1,5 @@
import asyncio
+import inspect
import sys
from urllib.parse import urlsplit
from .. import exceptions
@@ -24,7 +25,7 @@
async def get(self, *args, **kwargs):
if self.request.headers.get('Upgrade', '').lower() == 'websocket':
ret = super().get(*args, **kwargs)
- if asyncio.iscoroutine(ret):
+ if inspect.iscoroutine(ret):
await ret
else:
await engineio_server.handle_request(self)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/src/engineio/async_server.py
new/python-engineio-4.13.0/src/engineio/async_server.py
--- old/python-engineio-4.12.3/src/engineio/async_server.py 2025-09-28
08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/src/engineio/async_server.py 2025-12-24
23:34:59.000000000 +0100
@@ -1,4 +1,5 @@
import asyncio
+import inspect
import urllib
from . import base_server
@@ -212,7 +213,7 @@
Note: this method is a coroutine.
"""
translate_request = self._async['translate_request']
- if asyncio.iscoroutinefunction(translate_request):
+ if inspect.iscoroutinefunction(translate_request):
environ = await translate_request(*args, **kwargs)
else:
environ = translate_request(*args, **kwargs)
@@ -427,7 +428,7 @@
async def _make_response(self, response_dict, environ):
cors_headers = self._cors_headers(environ)
make_response = self._async['make_response']
- if asyncio.iscoroutinefunction(make_response):
+ if inspect.iscoroutinefunction(make_response):
response = await make_response(
response_dict['status'],
response_dict['headers'] + cors_headers,
@@ -502,7 +503,7 @@
run_async = kwargs.pop('run_async', False)
ret = None
if event in self.handlers:
- if asyncio.iscoroutinefunction(self.handlers[event]):
+ if inspect.iscoroutinefunction(self.handlers[event]):
async def run_async_handler():
try:
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/src/engineio/client.py
new/python-engineio-4.13.0/src/engineio/client.py
--- old/python-engineio-4.12.3/src/engineio/client.py 2025-09-28
08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/src/engineio/client.py 2025-12-24
23:34:59.000000000 +0100
@@ -1,11 +1,12 @@
from base64 import b64encode
-from engineio.json import JSONDecodeError
+from http.cookies import SimpleCookie
import logging
import queue
import ssl
import threading
import time
import urllib
+from engineio.json import JSONDecodeError
try:
import requests
@@ -268,8 +269,10 @@
extra_options = {}
if self.http:
# cookies
- cookies = '; '.join([f"{cookie.name}={cookie.value}"
- for cookie in self.http.cookies])
+ ck = SimpleCookie()
+ for cookie in self.http.cookies:
+ ck[cookie.name] = cookie.value
+ cookies = ck.output(header='', sep=';').strip()
for header, value in headers.items():
if header.lower() == 'cookie':
if cookies:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/tests/async/test_aiohttp.py
new/python-engineio-4.13.0/tests/async/test_aiohttp.py
--- old/python-engineio-4.12.3/tests/async/test_aiohttp.py 2025-09-28
08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/tests/async/test_aiohttp.py 2025-12-24
23:34:59.000000000 +0100
@@ -1,5 +1,8 @@
from unittest import mock
+import yarl
+from aiohttp.web import Request
+
from engineio.async_drivers import aiohttp as async_aiohttp
@@ -12,18 +15,28 @@
app.router.add_post.assert_any_call('/foo', mock_server.handle_request)
def test_translate_request(self):
- request = mock.MagicMock()
- request._message.method = 'PUT'
- request._message.path = '/foo/bar?baz=1'
- request._message.version = (1, 1)
- request._message.headers = {
+ message = mock.MagicMock()
+ message.url = yarl.URL('https://example.com/foo/bar?baz=1')
+ message.method = 'PUT'
+ message.path = '/foo/bar?baz=1'
+ message.version = (1, 1)
+ message.headers = {
'a': 'b',
'c-c': 'd',
'c_c': 'e',
'content-type': 'application/json',
'content-length': 123,
}
- request._payload = b'hello world'
+
+ request = Request(
+ message,
+ payload=b'hello world',
+ protocol=mock.MagicMock(),
+ payload_writer=mock.MagicMock(),
+ task=mock.MagicMock(),
+ loop=mock.MagicMock(),
+ )
+
environ = async_aiohttp.translate_request(request)
expected_environ = {
'REQUEST_METHOD': 'PUT',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/tests/async/test_client.py
new/python-engineio-4.13.0/tests/async/test_client.py
--- old/python-engineio-4.12.3/tests/async/test_client.py 2025-09-28
08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/tests/async/test_client.py 2025-12-24
23:34:59.000000000 +0100
@@ -24,6 +24,10 @@
client.queue.put = mock.AsyncMock()
client.queue.join = mock.AsyncMock()
+ @staticmethod
+ def mock_ws_timeout(ws_close):
+ return ws_close
+
async def test_is_asyncio_based(self):
c = async_client.AsyncClient()
assert c.is_asyncio_based()
@@ -500,6 +504,8 @@
assert c in base_client.connected_clients
@mock.patch('engineio.client.time.time', return_value=123.456)
+ @mock.patch('engineio.async_client.aiohttp.ClientWSTimeout',
+ new=mock_ws_timeout)
async def test_websocket_connection_failed(self, _time):
c = async_client.AsyncClient()
c.http = mock.MagicMock(closed=False)
@@ -541,6 +547,8 @@
)
@mock.patch('engineio.client.time.time', return_value=123.456)
+ @mock.patch('engineio.async_client.aiohttp.ClientWSTimeout',
+ new=mock_ws_timeout)
async def test_websocket_upgrade_failed(self, _time):
c = async_client.AsyncClient()
c.http = mock.MagicMock(closed=False)
@@ -568,6 +576,8 @@
await c.connect('http://foo', transports=['websocket'])
@mock.patch('engineio.client.time.time', return_value=123.456)
+ @mock.patch('engineio.async_client.aiohttp.ClientWSTimeout',
+ new=mock_ws_timeout)
async def test_websocket_connection_successful(self, _time):
c = async_client.AsyncClient()
c.http = mock.MagicMock(closed=False)
@@ -649,6 +659,8 @@
assert kwargs['ssl'].verify_mode == ssl.CERT_NONE
@mock.patch('engineio.client.time.time', return_value=123.456)
+ @mock.patch('engineio.async_client.aiohttp.ClientWSTimeout',
+ new=mock_ws_timeout)
async def test_websocket_connection_with_cookies(self, _time):
c = async_client.AsyncClient()
c.http = mock.MagicMock(closed=False)
@@ -682,6 +694,8 @@
)
@mock.patch('engineio.client.time.time', return_value=123.456)
+ @mock.patch('engineio.async_client.aiohttp.ClientWSTimeout',
+ new=mock_ws_timeout)
async def test_websocket_connection_with_cookie_header(self, _time):
c = async_client.AsyncClient()
c.http = mock.MagicMock(closed=False)
@@ -714,10 +728,12 @@
timeout=5,
)
c.http.cookie_jar.update_cookies.assert_called_once_with(
- {'key': 'value', 'key2': 'value2', 'key3': '"value3="'}
+ {'key': 'value', 'key2': 'value2', 'key3': 'value3='}
)
@mock.patch('engineio.client.time.time', return_value=123.456)
+ @mock.patch('engineio.async_client.aiohttp.ClientWSTimeout',
+ new=mock_ws_timeout)
async def test_websocket_connection_with_cookies_and_headers(self, _time):
c = async_client.AsyncClient()
c.http = mock.MagicMock(closed=False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-engineio-4.12.3/tox.ini
new/python-engineio-4.13.0/tox.ini
--- old/python-engineio-4.12.3/tox.ini 2025-09-28 08:29:18.000000000 +0200
+++ new/python-engineio-4.13.0/tox.ini 2025-12-24 23:34:59.000000000 +0100
@@ -1,15 +1,14 @@
[tox]
-envlist=flake8,py38,py39,py310,py311,py312,py313,pypy3,docs
+envlist=flake8,py310,py311,py312,py313,py314,pypy3,docs
skip_missing_interpreters=True
[gh-actions]
python =
- 3.8: py38
- 3.9: py39
3.10: py310
3.11: py311
3.12: py312
3.13: py313
+ 3.14: py314
pypy-3: pypy3
[testenv]