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:
-
-![Socket.IO](https://images.opencollective.com/socketio/050e5eb/logo/64.png)<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:
-
-![Socket.IO](https://images.opencollective.com/socketio/050e5eb/logo/64.png)<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:
-
-![Socket.IO](https://images.opencollective.com/socketio/050e5eb/logo/64.png)<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=

Reply via email to