Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-Flask-SocketIO for
openSUSE:Factory checked in at 2026-03-03 15:31:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Flask-SocketIO (Old)
and /work/SRC/openSUSE:Factory/.python-Flask-SocketIO.new.29461 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Flask-SocketIO"
Tue Mar 3 15:31:57 2026 rev:11 rq:1335928 version:5.6.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-Flask-SocketIO/python-Flask-SocketIO.changes
2025-04-22 17:29:30.922187308 +0200
+++
/work/SRC/openSUSE:Factory/.python-Flask-SocketIO.new.29461/python-Flask-SocketIO.changes
2026-03-03 15:32:55.809998307 +0100
@@ -1,0 +2,8 @@
+Tue Mar 3 00:04:45 UTC 2026 - Steve Kowalik <[email protected]>
+
+- Update to 5.6.1:
+ * Session fixes for Flask >= 3.1.3
+ * Use Flask test client's own `environ` dict if it is available
+- Update Requires to reflect reality.
+
+-------------------------------------------------------------------
Old:
----
flask_socketio-5.5.1.tar.gz
New:
----
flask_socketio-5.6.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-Flask-SocketIO.spec ++++++
--- /var/tmp/diff_new_pack.SnrdO6/_old 2026-03-03 15:32:56.790038903 +0100
+++ /var/tmp/diff_new_pack.SnrdO6/_new 2026-03-03 15:32:56.794039068 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-Flask-SocketIO
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,20 +18,25 @@
%{?sle15_python_module_pythons}
Name: python-Flask-SocketIO
-Version: 5.5.1
+Version: 5.6.1
Release: 0
Summary: SocketIO integration for Flask applications
License: MIT
URL: https://github.com/miguelgrinberg/Flask-SocketIO/
Source:
https://files.pythonhosted.org/packages/source/f/flask-socketio/flask_socketio-%{version}.tar.gz
-BuildRequires: %{python_module Flask >= 0.9}
+BuildRequires: %{python_module Flask >= 2.1}
+BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module python-socketio >= 5.12.0}
BuildRequires: %{python_module redis}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
-Requires: python-Flask >= 0.9
+Requires: python-Flask >= 2.1
+Requires: python-Jinja2
+Requires: python-Werkzeug
+Requires: python-blinker
+Requires: python-click
Requires: python-python-socketio >= 5.12.0
BuildArch: noarch
%python_subpackages
++++++ flask_socketio-5.5.1.tar.gz -> flask_socketio-5.6.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/flask_socketio-5.5.1/PKG-INFO
new/flask_socketio-5.6.1/PKG-INFO
--- old/flask_socketio-5.5.1/PKG-INFO 2025-01-06 20:49:36.721017600 +0100
+++ new/flask_socketio-5.6.1/PKG-INFO 2026-02-21 14:07:14.259131400 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: Flask-SocketIO
-Version: 5.5.1
+Version: 5.6.1
Summary: Socket.IO integration for Flask applications
Author-email: Miguel Grinberg <[email protected]>
Project-URL: Homepage, https://github.com/miguelgrinberg/flask-socketio
@@ -10,13 +10,27 @@
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
-Requires-Python: >=3.6
+Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
-Requires-Dist: Flask>=0.9
+Requires-Dist: blinker
+Requires-Dist: click
+Requires-Dist: flask
+Requires-Dist: Flask>=2.1.0
+Requires-Dist: jinja2
Requires-Dist: python-socketio>=5.12.0
+Requires-Dist: werkzeug
Provides-Extra: docs
Requires-Dist: sphinx; extra == "docs"
+Requires-Dist: furo; extra == "docs"
+Provides-Extra: dev
+Requires-Dist: flask-login; extra == "dev"
+Requires-Dist: flask-session; extra == "dev"
+Requires-Dist: pytest; extra == "dev"
+Requires-Dist: pytest-cov; extra == "dev"
+Requires-Dist: redis; extra == "dev"
+Requires-Dist: tox; extra == "dev"
+Dynamic: license-file
Flask-SocketIO
==============
@@ -25,16 +39,6 @@
Socket.IO integration for Flask applications.
-Sponsors
---------
-
-The following organizations are funding this project:
-
-<br>[Socket.IO](https://socket.io)
| [Add your company here!](https://github.com/sponsors/miguelgrinberg)|
--|-
-
-Many individual sponsors also support this project through small ongoing
contributions. Why not [join them](https://github.com/sponsors/miguelgrinberg)?
-
Installation
------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/flask_socketio-5.5.1/README.md
new/flask_socketio-5.6.1/README.md
--- old/flask_socketio-5.5.1/README.md 2024-10-27 12:44:21.000000000 +0100
+++ new/flask_socketio-5.6.1/README.md 2026-02-21 11:52:17.000000000 +0100
@@ -5,16 +5,6 @@
Socket.IO integration for Flask applications.
-Sponsors
---------
-
-The following organizations are funding this project:
-
-<br>[Socket.IO](https://socket.io)
| [Add your company here!](https://github.com/sponsors/miguelgrinberg)|
--|-
-
-Many individual sponsors also support this project through small ongoing
contributions. Why not [join them](https://github.com/sponsors/miguelgrinberg)?
-
Installation
------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/flask_socketio-5.5.1/docs/conf.py
new/flask_socketio-5.6.1/docs/conf.py
--- old/flask_socketio-5.5.1/docs/conf.py 2024-10-27 12:44:21.000000000
+0100
+++ new/flask_socketio-5.6.1/docs/conf.py 2026-02-21 11:51:19.000000000
+0100
@@ -77,20 +77,14 @@
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
-html_theme = 'alabaster'
+html_theme = 'furo'
+html_title = 'Flask-SocketIO'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
html_theme_options = {
- 'github_user': 'miguelgrinberg',
- 'github_repo': 'flask-socketio',
- 'github_banner': True,
- 'github_button': True,
- 'github_type': 'star',
- 'fixed_sidebar': True,
-
}
# Add any paths that contain custom static files (such as style sheets) here,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/flask_socketio-5.5.1/docs/getting_started.rst
new/flask_socketio-5.6.1/docs/getting_started.rst
--- old/flask_socketio-5.5.1/docs/getting_started.rst 2024-12-18
19:07:08.000000000 +0100
+++ new/flask_socketio-5.6.1/docs/getting_started.rst 2025-01-07
00:44:24.000000000 +0100
@@ -17,15 +17,32 @@
if __name__ == '__main__':
socketio.run(app)
-The ``init_app()`` style of initialization is also supported. To start the
-web server simply execute your script. Note the way the web server is started.
-The ``socketio.run()`` function encapsulates the start up of the web server and
-replaces the ``app.run()`` standard Flask development server start up. When the
-application is in debug mode the Werkzeug development server is still used and
-configured properly inside ``socketio.run()``. In production mode the eventlet
-web server is used if available, else the gevent web server is used. If
-eventlet and gevent are not installed, the Werkzeug development web server is
-used.
+The ``init_app()`` style of initialization is also supported::
+
+ from flask import Flask, render_template
+ from flask_socketio import SocketIO
+
+ socketio = SocketIO()
+
+ def create_app():
+ app = Flask(__name__)
+ app.config['SECRET_KEY'] = 'secret!'
+ socketio.init_app(app)
+ return app
+
+ if __name__ == '__main__':
+ app = create_app()
+ socketio.run(app)
+
+
+To start the web server simply execute your script. Note the way the web server
+is started. The ``socketio.run()`` function encapsulates the start up of the
+web server and replaces the ``app.run()`` standard Flask development server
+start up. When the application is in debug mode the Werkzeug development server
+is still used and configured properly inside ``socketio.run()``. In production
+mode the eventlet web server is used if available, else the gevent web server
+is used. If eventlet and gevent are not installed, the Werkzeug development web
+server is used.
The ``flask run`` command introduced in Flask 0.11 can be used to start a
Flask-SocketIO development server based on Werkzeug, but this method of
starting
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/flask_socketio-5.5.1/docs/intro.rst
new/flask_socketio-5.6.1/docs/intro.rst
--- old/flask_socketio-5.5.1/docs/intro.rst 2024-10-27 12:44:21.000000000
+0100
+++ new/flask_socketio-5.6.1/docs/intro.rst 2026-02-21 11:51:19.000000000
+0100
@@ -11,30 +11,28 @@
Requirements
------------
-Flask-SocketIO is compatible with Python 3.6+. The asynchronous services that
+Flask-SocketIO is compatible with Python 3.8+. The asynchronous services that
this package relies on can be selected among three choices:
-- `eventlet <http://eventlet.net/>`_ is the best performant option, with
- support for long-polling and WebSocket transports.
+- The ``threading`` package from the Python standard library is the easier and
+ most compatible solution, with full support of long-polling and WebSocket
+ transports. The Flask development web server can be used during development,
+ and Gunicorn in multi-threaded mode can be used in production deployments.
- `gevent <http://www.gevent.org/>`_ is supported in a number of different
- configurations. The long-polling transport is fully supported with the
- gevent package, but unlike eventlet, gevent does not have native WebSocket
- support. To add support for WebSocket there are currently two options.
- Installing the `gevent-websocket
<https://pypi.python.org/pypi/gevent-websocket/>`_
- package adds WebSocket support to gevent or one can use the `uWSGI
- <https://uwsgi-docs.readthedocs.io/en/latest/>`_ web server, which
- comes with WebSocket functionality. The use of gevent is also a performant
- option, but slightly lower than eventlet.
-- The Flask development server based on Werkzeug can be used as well, with the
- caveat that this web server is intended only for development use, so it
- should only be used to simplify the development workflow and not for
- production.
+ configurations, also with support for the long-polling and WebSocket
+ transports. The Flask development web server, gevent's own web server,
+ Gunicorn (with the gevent worker) and uWSGI (in gevent mode) are all
+ supported when using ``gevent``.
+- `eventlet <http://eventlet.net/>`_ used to be a good option with support for
+ long-polling and WebSocket transports, but it is not actively maintained
+ anymore, so ``gevent`` should be preferred. The Flask development web server,
+ eventlet's own web server and Gunicorn (with the eventlet worker) are all
+ supported when using ``eventlet``.
The extension automatically detects which asynchronous framework to use based
-on what is installed. Preference is given to eventlet, followed by gevent.
-For WebSocket support in gevent, uWSGI is preferred, followed by
-gevent-websocket. If neither eventlet nor gevent are installed, then the Flask
-development server is used.
+on what is installed. Preference is given to eventlet, followed by gevent. If
+neither eventlet nor gevent are installed, Python's ``threading`` package is
+used.
If using multiple processes, a message queue service must be configured to
allow the servers to coordinate operations such as broadcasting. The supported
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/flask_socketio-5.5.1/pyproject.toml
new/flask_socketio-5.6.1/pyproject.toml
--- old/flask_socketio-5.5.1/pyproject.toml 2025-01-06 20:49:35.000000000
+0100
+++ new/flask_socketio-5.6.1/pyproject.toml 2026-02-21 14:07:12.000000000
+0100
@@ -1,6 +1,6 @@
[project]
name = "Flask-SocketIO"
-version = "5.5.1"
+version = "5.6.1"
authors = [
{ name = "Miguel Grinberg", email = "[email protected]" },
]
@@ -12,10 +12,15 @@
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
-requires-python = ">=3.6"
+requires-python = ">=3.8"
dependencies = [
- "Flask >= 0.9",
+ "blinker",
+ "click",
+ "flask",
+ "Flask >= 2.1.0",
+ "jinja2",
"python-socketio >= 5.12.0",
+ "werkzeug",
]
[project.readme]
@@ -29,6 +34,15 @@
[project.optional-dependencies]
docs = [
"sphinx",
+ "furo",
+]
+dev = [
+ "flask-login",
+ "flask-session",
+ "pytest",
+ "pytest-cov",
+ "redis",
+ "tox",
]
[tool.setuptools]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/flask_socketio-5.5.1/src/Flask_SocketIO.egg-info/PKG-INFO
new/flask_socketio-5.6.1/src/Flask_SocketIO.egg-info/PKG-INFO
--- old/flask_socketio-5.5.1/src/Flask_SocketIO.egg-info/PKG-INFO
2025-01-06 20:49:36.000000000 +0100
+++ new/flask_socketio-5.6.1/src/Flask_SocketIO.egg-info/PKG-INFO
2026-02-21 14:07:14.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: Flask-SocketIO
-Version: 5.5.1
+Version: 5.6.1
Summary: Socket.IO integration for Flask applications
Author-email: Miguel Grinberg <[email protected]>
Project-URL: Homepage, https://github.com/miguelgrinberg/flask-socketio
@@ -10,13 +10,27 @@
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
-Requires-Python: >=3.6
+Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
-Requires-Dist: Flask>=0.9
+Requires-Dist: blinker
+Requires-Dist: click
+Requires-Dist: flask
+Requires-Dist: Flask>=2.1.0
+Requires-Dist: jinja2
Requires-Dist: python-socketio>=5.12.0
+Requires-Dist: werkzeug
Provides-Extra: docs
Requires-Dist: sphinx; extra == "docs"
+Requires-Dist: furo; extra == "docs"
+Provides-Extra: dev
+Requires-Dist: flask-login; extra == "dev"
+Requires-Dist: flask-session; extra == "dev"
+Requires-Dist: pytest; extra == "dev"
+Requires-Dist: pytest-cov; extra == "dev"
+Requires-Dist: redis; extra == "dev"
+Requires-Dist: tox; extra == "dev"
+Dynamic: license-file
Flask-SocketIO
==============
@@ -25,16 +39,6 @@
Socket.IO integration for Flask applications.
-Sponsors
---------
-
-The following organizations are funding this project:
-
-<br>[Socket.IO](https://socket.io)
| [Add your company here!](https://github.com/sponsors/miguelgrinberg)|
--|-
-
-Many individual sponsors also support this project through small ongoing
contributions. Why not [join them](https://github.com/sponsors/miguelgrinberg)?
-
Installation
------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/flask_socketio-5.5.1/src/Flask_SocketIO.egg-info/requires.txt
new/flask_socketio-5.6.1/src/Flask_SocketIO.egg-info/requires.txt
--- old/flask_socketio-5.5.1/src/Flask_SocketIO.egg-info/requires.txt
2025-01-06 20:49:36.000000000 +0100
+++ new/flask_socketio-5.6.1/src/Flask_SocketIO.egg-info/requires.txt
2026-02-21 14:07:14.000000000 +0100
@@ -1,5 +1,19 @@
-Flask>=0.9
+blinker
+click
+flask
+Flask>=2.1.0
+jinja2
python-socketio>=5.12.0
+werkzeug
+
+[dev]
+flask-login
+flask-session
+pytest
+pytest-cov
+redis
+tox
[docs]
sphinx
+furo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/flask_socketio-5.5.1/src/flask_socketio/__init__.py
new/flask_socketio-5.6.1/src/flask_socketio/__init__.py
--- old/flask_socketio-5.5.1/src/flask_socketio/__init__.py 2024-12-18
19:04:05.000000000 +0100
+++ new/flask_socketio-5.6.1/src/flask_socketio/__init__.py 2026-02-21
14:07:12.000000000 +0100
@@ -84,18 +84,23 @@
:param client_manager: The client manager instance that will manage the
client list. When this is omitted, the client list
is stored in an in-memory structure, so the use of
- multiple connected servers is not possible. In most
- cases, this argument does not need to be set
- explicitly.
+ multiple connected servers is not possible.
:param logger: To enable logging set to ``True`` or pass a logger object to
use. To disable logging set to ``False``. The default is
- ``False``. Note that fatal errors will be logged even when
+ ``False``. Note that fatal errors are logged even when
``logger`` is ``False``.
- :param json: An alternative json module to use for encoding and decoding
+ :param serializer: The serialization method to use when transmitting
+ packets. Valid values are ``'default'``, ``'pickle'``,
+ ``'msgpack'`` and ``'cbor'``. Alternatively, a subclass
+ of the :class:`Packet` class with custom implementations
+ of the ``encode()`` and ``decode()`` methods can be
+ provided. Client and server must use compatible
+ serializers.
+ :param json: An alternative JSON module to use for encoding and decoding
packets. Custom json modules must have ``dumps`` and ``loads``
functions that are compatible with the standard library
- versions. To use the same json encoder and decoder as a Flask
- application, use ``flask.json``.
+ versions. This is a process-wide setting, all instantiated
+ servers and clients must use the same JSON module.
:param async_handlers: If set to ``True``, event handlers for a client are
executed in separate threads. To run handlers for a
client synchronously, set to ``False``. The default
@@ -110,17 +115,22 @@
connect handler and your client is confused when it
receives events before the connection acceptance.
In any other case use the default of ``False``.
+ :param namespaces: a list of namespaces that are accepted, in addition to
+ any namespaces for which handlers have been defined. The
+ default is `['/']`, which always accepts connections to
+ the default namespace. Set to `'*'` to accept all
+ namespaces.
The Engine.IO server configuration supports the following settings:
:param async_mode: The asynchronous model to use. See the Deployment
section in the documentation for a description of the
- available options. Valid async modes are ``threading``,
- ``eventlet``, ``gevent`` and ``gevent_uwsgi``. If this
- argument is not given, ``eventlet`` is tried first, then
- ``gevent_uwsgi``, then ``gevent``, and finally
- ``threading``. The first async mode that has all its
- dependencies installed is then one that is chosen.
+ available options. Valid async modes are "threading",
+ "eventlet", "gevent" and "gevent_uwsgi". If this
+ argument is not given, "eventlet" is tried first, then
+ "gevent_uwsgi", then "gevent", and finally "threading".
+ The first async mode that has all its dependencies
+ installed is the one that is chosen.
:param ping_interval: The interval in seconds at which the server pings
the client. The default is 25 seconds. For advanced
control, a two element tuple can be given, where
@@ -128,10 +138,12 @@
is a grace period added by the server.
:param ping_timeout: The time in seconds that the client waits for the
server to respond before disconnecting. The default
- is 5 seconds.
- :param max_http_buffer_size: The maximum size of a message when using the
- polling transport. The default is 1,000,000
- bytes.
+ is 20 seconds.
+ :param max_http_buffer_size: The maximum size that is accepted for incoming
+ messages. The default is 1,000,000 bytes. In
+ spite of its name, the value set in this
+ argument is enforced for HTTP long-polling and
+ WebSocket connections.
:param allow_upgrades: Whether to allow transport upgrades or not. The
default is ``True``.
:param http_compression: Whether to compress packages when using the
@@ -140,7 +152,7 @@
is greater than this value. The default is
1024 bytes.
:param cookie: If set to a string, it is the name of the HTTP cookie the
- server sends back to the client containing the client
+ server sends back tot he client containing the client
session id. If set to a dictionary, the ``'name'`` key
contains the cookie name and other keys define cookie
attributes, where the value of each attribute can be a
@@ -150,15 +162,18 @@
:param cors_allowed_origins: Origin or list of origins that are allowed to
connect to this server. Only the same origin
is allowed by default. Set this argument to
- ``'*'`` to allow all origins, or to ``[]`` to
- disable CORS handling.
+ ``'*'`` or ``['*']`` to allow all origins, or
+ to ``[]`` to disable CORS handling.
:param cors_credentials: Whether credentials (cookies, authentication) are
- allowed in requests to this server. The default is
- ``True``.
+ allowed in requests to this server. The default
+ is ``True``.
:param monitor_clients: If set to ``True``, a background task will ensure
inactive clients are closed. Set to ``False`` to
disable the monitoring task (not recommended). The
default is ``True``.
+ :param transports: The list of allowed transports. Valid transports
+ are ``'polling'`` and ``'websocket'``. Defaults to
+ ``['polling', 'websocket']``.
:param engineio_logger: To enable Engine.IO logging set to ``True`` or pass
a logger object to use. To disable logging set to
``False``. The default is ``False``. Note that
@@ -278,7 +293,6 @@
def decorator(handler):
@wraps(handler)
def _handler(sid, *args):
- nonlocal namespace
real_ns = namespace
if namespace == '*':
real_ns = sid
@@ -807,13 +821,22 @@
environ['saved_session'] = _ManagedSession(flask.session)
session_obj = environ['saved_session']
if hasattr(flask, 'globals') and \
- hasattr(flask.globals, 'request_ctx'):
- # update session for Flask >= 2.2
- ctx = flask.globals.request_ctx._get_current_object()
+ hasattr(flask.globals, 'app_ctx'):
+ if hasattr(flask.globals.app_ctx, 'session'):
+ # get context for flask >= 3.2
+ ctx = flask.globals.app_ctx._get_current_object()
+ else:
+ # get context for Flask >= 2.2, < 3.2
+ ctx = flask.globals.request_ctx._get_current_object()
else: # pragma: no cover
- # update session for Flask < 2.2
+ # get context for Flask < 2.2
ctx = flask._request_ctx_stack.top
- ctx.session = session_obj
+ if hasattr(ctx, '_session'):
+ # update session for Flask >= 3.1.3
+ ctx._session = session_obj
+ else:
+ # update session for Flask < 3.1.3
+ ctx.session = session_obj
else:
# let Flask handle the user session
# for cookie based sessions, this effectively freezes the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/flask_socketio-5.5.1/src/flask_socketio/test_client.py
new/flask_socketio-5.6.1/src/flask_socketio/test_client.py
--- old/flask_socketio-5.5.1/src/flask_socketio/test_client.py 2024-12-12
19:43:06.000000000 +0100
+++ new/flask_socketio-5.6.1/src/flask_socketio/test_client.py 2025-12-25
20:21:44.000000000 +0100
@@ -2,7 +2,7 @@
from socketio import packet
from socketio.pubsub_manager import PubSubManager
-from werkzeug.test import EnvironBuilder
+from flask.testing import EnvironBuilder
class SocketIOTestClient:
@@ -128,8 +128,16 @@
if query_string[0] != '?':
query_string = '?' + query_string
url += query_string
- environ = EnvironBuilder(url, headers=headers).get_environ()
+ if self.flask_test_client:
+ # let Flask's test client build an environ dictionary
+ req = self.flask_test_client._request_from_builder_args(
+ args=(), kwargs={'path': url, 'headers': headers})
+ environ = req.environ
+ else:
+ environ = EnvironBuilder(
+ self.app, path=url, headers=headers).get_environ()
environ['flask.app'] = self.app
+
if self.flask_test_client:
# inject cookies from Flask
if hasattr(self.flask_test_client, '_add_cookies_to_wsgi'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/flask_socketio-5.5.1/tox.ini
new/flask_socketio-5.6.1/tox.ini
--- old/flask_socketio-5.5.1/tox.ini 2024-10-27 12:44:21.000000000 +0100
+++ new/flask_socketio-5.6.1/tox.ini 2026-02-21 11:51:19.000000000 +0100
@@ -1,20 +1,20 @@
[tox]
-envlist=flake8,py38,py39,py310,py311,py312,pypy3,docs
+envlist=flake8,py310,py311,py312,py313,py314,pypy3,docs
skip_missing_interpreters=True
[gh-actions]
python =
- 3.6: py36
- 3.7: py37
- 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]
commands=
pip install -e .
+ pip install "flask{env:FLASK_VERSION:}" "werkzeug{env:FLASK_VERSION:}"
pytest -p no:logging --cov=flask_socketio --cov-branch
--cov-report=term-missing --cov-report=xml
deps=
pytest
@@ -31,6 +31,7 @@
changedir=docs
deps=
sphinx
+ furo
allowlist_externals=
make
commands=