Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-python-socketio for 
openSUSE:Factory checked in at 2025-12-29 15:16:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-socketio (Old)
 and      /work/SRC/openSUSE:Factory/.python-python-socketio.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-python-socketio"

Mon Dec 29 15:16:41 2025 rev:16 rq:1324590 version:5.16.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-python-socketio/python-python-socketio.changes
    2025-12-10 15:34:30.768336427 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-python-socketio.new.1928/python-python-socketio.changes
  2025-12-29 15:17:23.932476461 +0100
@@ -1,0 +2,9 @@
+Sun Dec 28 19:45:40 UTC 2025 - Dirk Müller <[email protected]>
+
+- update to 5.16.0:
+  * Address deprecation warnings (commit)
+  * Drop Python 3.8 and 3.9 from CI builds (commit)
+  * Restore support multiple arguments via pubsub emits #1540
+    (commit)
+
+-------------------------------------------------------------------

Old:
----
  python_socketio-5.15.0.tar.gz

New:
----
  python_socketio-5.16.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-python-socketio.spec ++++++
--- /var/tmp/diff_new_pack.JAZB1a/_old  2025-12-29 15:17:24.540501435 +0100
+++ /var/tmp/diff_new_pack.JAZB1a/_new  2025-12-29 15:17:24.540501435 +0100
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-python-socketio
-Version:        5.15.0
+Version:        5.16.0
 Release:        0
 Summary:        SocketIO server
 License:        MIT

++++++ python_socketio-5.15.0.tar.gz -> python_socketio-5.16.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-socketio-5.15.0/.github/workflows/tests.yml 
new/python-socketio-5.16.0/.github/workflows/tests.yml
--- old/python-socketio-5.15.0/.github/workflows/tests.yml      2025-11-22 
19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/.github/workflows/tests.yml      2025-12-25 
00:51:21.000000000 +0100
@@ -16,7 +16,7 @@
     strategy:
       matrix:
         os: [windows-latest, macos-latest, ubuntu-latest]
-        python: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14', 
'pypy-3.11']
+        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-socketio-5.15.0/CHANGES.md 
new/python-socketio-5.16.0/CHANGES.md
--- old/python-socketio-5.15.0/CHANGES.md       2025-11-22 19:38:45.000000000 
+0100
+++ new/python-socketio-5.16.0/CHANGES.md       2025-12-25 00:51:21.000000000 
+0100
@@ -1,5 +1,14 @@
 # python-socketio change log
 
+**Release 5.16.0** - 2025-12-24
+
+- Address deprecation warnings 
([commit](https://github.com/miguelgrinberg/python-socketio/commit/b235699d9b06564753c570b76055997e9d62a938))
+- Drop Python 3.8 and 3.9 from CI builds 
([commit](https://github.com/miguelgrinberg/python-socketio/commit/d0728d2f74538762dd551fa9cd0cd1fd5aedfa37))
+
+**Release 5.15.1** - 2025-12-16
+
+- Restore support multiple arguments via pubsub emits 
[#1540](https://github.com/miguelgrinberg/python-socketio/issues/1540) 
([commit](https://github.com/miguelgrinberg/python-socketio/commit/c279f26bb8c9887c4ca99d4d81ad331c4844438c))
+
 **Release 5.15.0** - 2025-11-22
 
 - Retry initial Redis connection 
[#1534](https://github.com/miguelgrinberg/python-socketio/issues/1536) ([commit 
#1](https://github.com/miguelgrinberg/python-socketio/commit/1e903e173a2d7b04599c4f7f9630c1abbb531fad)
 [commit 
#2](https://github.com/miguelgrinberg/python-socketio/commit/5e898a9b93526e6e667767e54c60f4c84589989d))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-socketio-5.15.0/examples/server/wsgi/django_socketio/requirements.txt
 
new/python-socketio-5.16.0/examples/server/wsgi/django_socketio/requirements.txt
--- 
old/python-socketio-5.15.0/examples/server/wsgi/django_socketio/requirements.txt
    2025-11-22 19:38:45.000000000 +0100
+++ 
new/python-socketio-5.16.0/examples/server/wsgi/django_socketio/requirements.txt
    2025-12-25 00:51:21.000000000 +0100
@@ -1,6 +1,6 @@
 asgiref==3.6.0
 bidict==0.22.1
-Django==4.2.26
+Django==4.2.27
 gunicorn==23.0.0
 h11==0.16.0
 python-engineio
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-socketio-5.15.0/pyproject.toml 
new/python-socketio-5.16.0/pyproject.toml
--- old/python-socketio-5.15.0/pyproject.toml   2025-11-22 19:38:45.000000000 
+0100
+++ new/python-socketio-5.16.0/pyproject.toml   2025-12-25 00:51:21.000000000 
+0100
@@ -1,6 +1,6 @@
 [project]
 name = "python-socketio"
-version = "5.15.0"
+version = "5.16.0"
 license = {text = "MIT"}
 authors = [
     { name = "Miguel Grinberg", email = "[email protected]" },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-socketio-5.15.0/src/socketio/async_admin.py 
new/python-socketio-5.16.0/src/socketio/async_admin.py
--- old/python-socketio-5.15.0/src/socketio/async_admin.py      2025-11-22 
19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/src/socketio/async_admin.py      2025-12-25 
00:51:21.000000000 +0100
@@ -1,6 +1,7 @@
 import asyncio
 from datetime import datetime, timezone
 import functools
+import inspect
 import os
 import socket
 import time
@@ -124,7 +125,7 @@
             elif isinstance(self.auth, list):
                 authenticated = client_auth in self.auth
             else:
-                if asyncio.iscoroutinefunction(self.auth):
+                if inspect.iscoroutinefunction(self.auth):
                     authenticated = await self.auth(client_auth)
                 else:
                     authenticated = self.auth(client_auth)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-socketio-5.15.0/src/socketio/async_client.py 
new/python-socketio-5.16.0/src/socketio/async_client.py
--- old/python-socketio-5.15.0/src/socketio/async_client.py     2025-11-22 
19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/src/socketio/async_client.py     2025-12-25 
00:51:21.000000000 +0100
@@ -1,4 +1,5 @@
 import asyncio
+import inspect
 import logging
 import random
 
@@ -375,7 +376,7 @@
         callables."""
         if not callable(value):
             return value
-        if asyncio.iscoroutinefunction(value):
+        if inspect.iscoroutinefunction(value):
             return await value()
         return value()
 
@@ -437,7 +438,7 @@
         else:
             del self.callbacks[namespace][id]
         if callback is not None:
-            if asyncio.iscoroutinefunction(callback):
+            if inspect.iscoroutinefunction(callback):
                 await callback(*data)
             else:
                 callback(*data)
@@ -464,7 +465,7 @@
         # first see if we have an explicit handler for the event
         handler, args = self._get_event_handler(event, namespace, args)
         if handler:
-            if asyncio.iscoroutinefunction(handler):
+            if inspect.iscoroutinefunction(handler):
                 try:
                     try:
                         ret = await handler(*args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-socketio-5.15.0/src/socketio/async_manager.py 
new/python-socketio-5.16.0/src/socketio/async_manager.py
--- old/python-socketio-5.15.0/src/socketio/async_manager.py    2025-11-22 
19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/src/socketio/async_manager.py    2025-12-25 
00:51:21.000000000 +0100
@@ -1,4 +1,5 @@
 import asyncio
+import inspect
 
 from engineio import packet as eio_packet
 from socketio import packet
@@ -113,7 +114,7 @@
             del self.callbacks[sid][id]
         if callback is not None:
             ret = callback(*data)
-            if asyncio.iscoroutine(ret):
+            if inspect.iscoroutine(ret):
                 try:
                     await ret
                 except asyncio.CancelledError:  # pragma: no cover
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-socketio-5.15.0/src/socketio/async_namespace.py 
new/python-socketio-5.16.0/src/socketio/async_namespace.py
--- old/python-socketio-5.15.0/src/socketio/async_namespace.py  2025-11-22 
19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/src/socketio/async_namespace.py  2025-12-25 
00:51:21.000000000 +0100
@@ -1,4 +1,5 @@
 import asyncio
+import inspect
 
 from socketio import base_namespace
 
@@ -32,7 +33,7 @@
         handler_name = 'on_' + (event or '')
         if hasattr(self, handler_name):
             handler = getattr(self, handler_name)
-            if asyncio.iscoroutinefunction(handler) is True:
+            if inspect.iscoroutinefunction(handler) is True:
                 try:
                     try:
                         ret = await handler(*args)
@@ -213,7 +214,7 @@
         handler_name = 'on_' + (event or '')
         if hasattr(self, handler_name):
             handler = getattr(self, handler_name)
-            if asyncio.iscoroutinefunction(handler) is True:
+            if inspect.iscoroutinefunction(handler) is True:
                 try:
                     try:
                         ret = await handler(*args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-socketio-5.15.0/src/socketio/async_pubsub_manager.py 
new/python-socketio-5.16.0/src/socketio/async_pubsub_manager.py
--- old/python-socketio-5.15.0/src/socketio/async_pubsub_manager.py     
2025-11-22 19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/src/socketio/async_pubsub_manager.py     
2025-12-25 00:51:21.000000000 +0100
@@ -66,6 +66,10 @@
             callback = (room, namespace, id)
         else:
             callback = None
+        if isinstance(data, tuple):
+            data = list(data)
+        else:
+            data = [data]
         binary = Packet.data_is_binary(data)
         if binary:
             data, attachments = Packet.deconstruct_binary(data)
@@ -155,6 +159,11 @@
         if message.get('binary'):
             attachments = [base64.b64decode(a) for a in data[1:]]
             data = Packet.reconstruct_binary(data[0], attachments)
+        if isinstance(data, list):
+            if len(data) == 1:
+                data = data[0]
+            else:
+                data = tuple(data)
         await super().emit(message['event'], data,
                            namespace=message.get('namespace'),
                            room=message.get('room'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-socketio-5.15.0/src/socketio/async_server.py 
new/python-socketio-5.16.0/src/socketio/async_server.py
--- old/python-socketio-5.15.0/src/socketio/async_server.py     2025-11-22 
19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/src/socketio/async_server.py     2025-12-25 
00:51:21.000000000 +0100
@@ -1,4 +1,5 @@
 import asyncio
+import inspect
 
 import engineio
 
@@ -637,7 +638,7 @@
         # first see if we have an explicit handler for the event
         handler, args = self._get_event_handler(event, namespace, args)
         if handler:
-            if asyncio.iscoroutinefunction(handler):
+            if inspect.iscoroutinefunction(handler):
                 try:
                     try:
                         ret = await handler(*args)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-socketio-5.15.0/src/socketio/pubsub_manager.py 
new/python-socketio-5.16.0/src/socketio/pubsub_manager.py
--- old/python-socketio-5.15.0/src/socketio/pubsub_manager.py   2025-11-22 
19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/src/socketio/pubsub_manager.py   2025-12-25 
00:51:21.000000000 +0100
@@ -63,6 +63,10 @@
             callback = (room, namespace, id)
         else:
             callback = None
+        if isinstance(data, tuple):
+            data = list(data)
+        else:
+            data = [data]
         binary = Packet.data_is_binary(data)
         if binary:
             data, attachments = Packet.deconstruct_binary(data)
@@ -151,6 +155,11 @@
         if message.get('binary'):
             attachments = [base64.b64decode(a) for a in data[1:]]
             data = Packet.reconstruct_binary(data[0], attachments)
+        if isinstance(data, list):
+            if len(data) == 1:
+                data = data[0]
+            else:
+                data = tuple(data)
         super().emit(message['event'], data,
                      namespace=message.get('namespace'),
                      room=message.get('room'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-socketio-5.15.0/tests/async/test_pubsub_manager.py 
new/python-socketio-5.16.0/tests/async/test_pubsub_manager.py
--- old/python-socketio-5.15.0/tests/async/test_pubsub_manager.py       
2025-11-22 19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/tests/async/test_pubsub_manager.py       
2025-12-25 00:51:21.000000000 +0100
@@ -58,7 +58,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': False,
-                'data': 'bar',
+                'data': ['bar'],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': None,
@@ -74,7 +74,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': True,
-                'data': [{'_placeholder': True, 'num': 0}, 'YmFy'],
+                'data': [[{'_placeholder': True, 'num': 0}], 'YmFy'],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': None,
@@ -88,7 +88,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': True,
-                'data': [{'foo': {'_placeholder': True, 'num': 0}}, 'YmFy'],
+                'data': [[{'foo': {'_placeholder': True, 'num': 0}}], 'YmFy'],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': None,
@@ -104,7 +104,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': True,
-                'data': [{'_placeholder': True, 'num': 0}, 'YmFy'],
+                'data': [[{'_placeholder': True, 'num': 0}], 'YmFy'],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': None,
@@ -118,7 +118,87 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': True,
-                'data': [{'foo': {'_placeholder': True, 'num': 0}}, 'YmFy'],
+                'data': [[{'foo': {'_placeholder': True, 'num': 0}}], 'YmFy'],
+                'namespace': '/',
+                'room': None,
+                'skip_sid': None,
+                'callback': None,
+                'host_id': '123456',
+            }
+        )
+
+    async def test_emit_list(self):
+        await self.pm.emit('foo', [1, 'two'])
+        self.pm._publish.assert_awaited_once_with(
+            {
+                'method': 'emit',
+                'event': 'foo',
+                'binary': False,
+                'data': [[1, 'two']],
+                'namespace': '/',
+                'room': None,
+                'skip_sid': None,
+                'callback': None,
+                'host_id': '123456',
+            }
+        )
+        await self.pm.emit('foo', [1, b'two', 'three'])
+        self.pm._publish.assert_awaited_with(
+            {
+                'method': 'emit',
+                'event': 'foo',
+                'binary': True,
+                'data': [
+                    [[1, {'_placeholder': True, 'num': 0}, 'three']], 'dHdv',
+                ],
+                'namespace': '/',
+                'room': None,
+                'skip_sid': None,
+                'callback': None,
+                'host_id': '123456',
+            }
+        )
+
+    async def test_emit_no_arguments(self):
+        await self.pm.emit('foo', ())
+        self.pm._publish.assert_awaited_once_with(
+            {
+                'method': 'emit',
+                'event': 'foo',
+                'binary': False,
+                'data': [],
+                'namespace': '/',
+                'room': None,
+                'skip_sid': None,
+                'callback': None,
+                'host_id': '123456',
+            }
+        )
+
+    async def test_emit_multiple_arguments(self):
+        await self.pm.emit('foo', (1, 'two'))
+        self.pm._publish.assert_awaited_once_with(
+            {
+                'method': 'emit',
+                'event': 'foo',
+                'binary': False,
+                'data': [1, 'two'],
+                'namespace': '/',
+                'room': None,
+                'skip_sid': None,
+                'callback': None,
+                'host_id': '123456',
+            }
+        )
+        await self.pm.emit('foo', (1, b'two', 'three'))
+        self.pm._publish.assert_awaited_with(
+            {
+                'method': 'emit',
+                'event': 'foo',
+                'binary': True,
+                'data': [
+                    [1, {'_placeholder': True, 'num': 0}, 'three'], 'dHdv',
+                ],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': None,
@@ -135,7 +215,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': False,
-                'data': 'bar',
+                'data': ['bar'],
                 'namespace': '/',
                 'room': sid,
                 'skip_sid': None,
@@ -151,7 +231,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': False,
-                'data': 'bar',
+                'data': ['bar'],
                 'namespace': '/baz',
                 'room': None,
                 'skip_sid': None,
@@ -167,7 +247,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': False,
-                'data': 'bar',
+                'data': ['bar'],
                 'namespace': '/',
                 'room': 'baz',
                 'skip_sid': None,
@@ -183,7 +263,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': False,
-                'data': 'bar',
+                'data': ['bar'],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': 'baz',
@@ -202,7 +282,7 @@
                     'method': 'emit',
                     'event': 'foo',
                     'binary': False,
-                    'data': 'bar',
+                    'data': ['bar'],
                     'namespace': '/',
                     'room': 'baz',
                     'skip_sid': None,
@@ -297,6 +377,20 @@
         with mock.patch.object(
             async_manager.AsyncManager, 'emit'
         ) as super_emit:
+            await self.pm._handle_emit({'event': 'foo', 'data': ['bar']})
+            super_emit.assert_awaited_once_with(
+                'foo',
+                'bar',
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+
+    async def test_handle_legacy_emit(self):
+        with mock.patch.object(
+            async_manager.AsyncManager, 'emit'
+        ) as super_emit:
             await self.pm._handle_emit({'event': 'foo', 'data': 'bar'})
             super_emit.assert_awaited_once_with(
                 'foo',
@@ -314,6 +408,37 @@
             await self.pm._handle_emit({
                 'event': 'foo',
                 'binary': True,
+                'data': [[{'_placeholder': True, 'num': 0}], 'YmFy'],
+            })
+            super_emit.assert_awaited_once_with(
+                'foo',
+                b'bar',
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+            await self.pm._handle_emit({
+                'event': 'foo',
+                'binary': True,
+                'data': [[{'foo': {'_placeholder': True, 'num': 0}}], 'YmFy'],
+            })
+            super_emit.assert_awaited_with(
+                'foo',
+                {'foo': b'bar'},
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+
+    async def test_handle_legacy_emit_binary(self):
+        with mock.patch.object(
+            async_manager.AsyncManager, 'emit'
+        ) as super_emit:
+            await self.pm._handle_emit({
+                'event': 'foo',
+                'binary': True,
                 'data': [{'_placeholder': True, 'num': 0}, 'YmFy'],
             })
             super_emit.assert_awaited_once_with(
@@ -335,6 +460,78 @@
                 namespace=None,
                 room=None,
                 skip_sid=None,
+                callback=None,
+            )
+
+    async def test_handle_emit_list(self):
+        with mock.patch.object(
+            async_manager.AsyncManager, 'emit'
+        ) as super_emit:
+            await self.pm._handle_emit({'event': 'foo', 'data': [[1, 'two']]})
+            super_emit.assert_awaited_once_with(
+                'foo',
+                [1, 'two'],
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+            await self.pm._handle_emit({
+                'event': 'foo',
+                'binary': True,
+                'data': [
+                    [[1, {'_placeholder': True, 'num': 0}, 'three']], 'dHdv'
+                ]
+            })
+            super_emit.assert_awaited_with(
+                'foo',
+                [1, b'two', 'three'],
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+
+    async def test_handle_emit_no_arguments(self):
+        with mock.patch.object(
+            async_manager.AsyncManager, 'emit'
+        ) as super_emit:
+            await self.pm._handle_emit({'event': 'foo', 'data': []})
+            super_emit.assert_awaited_once_with(
+                'foo',
+                (),
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+
+    async def test_handle_emit_multiple_arguments(self):
+        with mock.patch.object(
+            async_manager.AsyncManager, 'emit'
+        ) as super_emit:
+            await self.pm._handle_emit({'event': 'foo', 'data': [1, 'two']})
+            super_emit.assert_awaited_once_with(
+                'foo',
+                (1, 'two'),
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+            await self.pm._handle_emit({
+                'event': 'foo',
+                'binary': True,
+                'data': [
+                    [1, {'_placeholder': True, 'num': 0}, 'three'], 'dHdv'
+                ]
+            })
+            super_emit.assert_awaited_with(
+                'foo',
+                (1, b'two', 'three'),
+                namespace=None,
+                room=None,
+                skip_sid=None,
                 callback=None,
             )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-socketio-5.15.0/tests/common/test_pubsub_manager.py 
new/python-socketio-5.16.0/tests/common/test_pubsub_manager.py
--- old/python-socketio-5.15.0/tests/common/test_pubsub_manager.py      
2025-11-22 19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/tests/common/test_pubsub_manager.py      
2025-12-25 00:51:21.000000000 +0100
@@ -70,7 +70,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': False,
-                'data': 'bar',
+                'data': ['bar'],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': None,
@@ -86,7 +86,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': True,
-                'data': [{'_placeholder': True, 'num': 0}, 'YmFy'],
+                'data': [[{'_placeholder': True, 'num': 0}], 'YmFy'],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': None,
@@ -100,7 +100,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': True,
-                'data': [{'foo': {'_placeholder': True, 'num': 0}}, 'YmFy'],
+                'data': [[{'foo': {'_placeholder': True, 'num': 0}}], 'YmFy'],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': None,
@@ -116,7 +116,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': True,
-                'data': [{'_placeholder': True, 'num': 0}, 'YmFy'],
+                'data': [[{'_placeholder': True, 'num': 0}], 'YmFy'],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': None,
@@ -130,7 +130,87 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': True,
-                'data': [{'foo': {'_placeholder': True, 'num': 0}}, 'YmFy'],
+                'data': [[{'foo': {'_placeholder': True, 'num': 0}}], 'YmFy'],
+                'namespace': '/',
+                'room': None,
+                'skip_sid': None,
+                'callback': None,
+                'host_id': '123456',
+            }
+        )
+
+    def test_emit_list(self):
+        self.pm.emit('foo', [1, 'two'])
+        self.pm._publish.assert_called_once_with(
+            {
+                'method': 'emit',
+                'event': 'foo',
+                'binary': False,
+                'data': [[1, 'two']],
+                'namespace': '/',
+                'room': None,
+                'skip_sid': None,
+                'callback': None,
+                'host_id': '123456',
+            }
+        )
+        self.pm.emit('foo', [1, b'two', 'three'])
+        self.pm._publish.assert_called_with(
+            {
+                'method': 'emit',
+                'event': 'foo',
+                'binary': True,
+                'data': [
+                    [[1, {'_placeholder': True, 'num': 0}, 'three']], 'dHdv',
+                ],
+                'namespace': '/',
+                'room': None,
+                'skip_sid': None,
+                'callback': None,
+                'host_id': '123456',
+            }
+        )
+
+    def test_emit_no_arguments(self):
+        self.pm.emit('foo', ())
+        self.pm._publish.assert_called_once_with(
+            {
+                'method': 'emit',
+                'event': 'foo',
+                'binary': False,
+                'data': [],
+                'namespace': '/',
+                'room': None,
+                'skip_sid': None,
+                'callback': None,
+                'host_id': '123456',
+            }
+        )
+
+    def test_emit_multiple_arguments(self):
+        self.pm.emit('foo', (1, 'two'))
+        self.pm._publish.assert_called_once_with(
+            {
+                'method': 'emit',
+                'event': 'foo',
+                'binary': False,
+                'data': [1, 'two'],
+                'namespace': '/',
+                'room': None,
+                'skip_sid': None,
+                'callback': None,
+                'host_id': '123456',
+            }
+        )
+        self.pm.emit('foo', (1, b'two', 'three'))
+        self.pm._publish.assert_called_with(
+            {
+                'method': 'emit',
+                'event': 'foo',
+                'binary': True,
+                'data': [
+                    [1, {'_placeholder': True, 'num': 0}, 'three'], 'dHdv',
+                ],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': None,
@@ -147,7 +227,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': False,
-                'data': 'bar',
+                'data': ['bar'],
                 'namespace': '/',
                 'room': sid,
                 'skip_sid': None,
@@ -163,7 +243,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': False,
-                'data': 'bar',
+                'data': ['bar'],
                 'namespace': '/baz',
                 'room': None,
                 'skip_sid': None,
@@ -179,7 +259,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': False,
-                'data': 'bar',
+                'data': ['bar'],
                 'namespace': '/',
                 'room': 'baz',
                 'skip_sid': None,
@@ -195,7 +275,7 @@
                 'method': 'emit',
                 'event': 'foo',
                 'binary': False,
-                'data': 'bar',
+                'data': ['bar'],
                 'namespace': '/',
                 'room': None,
                 'skip_sid': 'baz',
@@ -214,7 +294,7 @@
                     'method': 'emit',
                     'event': 'foo',
                     'binary': False,
-                    'data': 'bar',
+                    'data': ['bar'],
                     'namespace': '/',
                     'room': 'baz',
                     'skip_sid': None,
@@ -306,6 +386,18 @@
 
     def test_handle_emit(self):
         with mock.patch.object(manager.Manager, 'emit') as super_emit:
+            self.pm._handle_emit({'event': 'foo', 'data': ['bar']})
+            super_emit.assert_called_once_with(
+                'foo',
+                'bar',
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+
+    def test_handle_legacy_emit(self):
+        with mock.patch.object(manager.Manager, 'emit') as super_emit:
             self.pm._handle_emit({'event': 'foo', 'data': 'bar'})
             super_emit.assert_called_once_with(
                 'foo',
@@ -321,6 +413,35 @@
             self.pm._handle_emit({
                 'event': 'foo',
                 'binary': True,
+                'data': [[{'_placeholder': True, 'num': 0}], 'YmFy'],
+            })
+            super_emit.assert_called_once_with(
+                'foo',
+                b'bar',
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+            self.pm._handle_emit({
+                'event': 'foo',
+                'binary': True,
+                'data': [[{'foo': {'_placeholder': True, 'num': 0}}], 'YmFy'],
+            })
+            super_emit.assert_called_with(
+                'foo',
+                {'foo': b'bar'},
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+
+    def test_handle_legacy_emit_binary(self):
+        with mock.patch.object(manager.Manager, 'emit') as super_emit:
+            self.pm._handle_emit({
+                'event': 'foo',
+                'binary': True,
                 'data': [{'_placeholder': True, 'num': 0}, 'YmFy'],
             })
             super_emit.assert_called_once_with(
@@ -342,6 +463,72 @@
                 namespace=None,
                 room=None,
                 skip_sid=None,
+                callback=None,
+            )
+
+    def test_handle_emit_list(self):
+        with mock.patch.object(manager.Manager, 'emit') as super_emit:
+            self.pm._handle_emit({'event': 'foo', 'data': [[1, 'two']]})
+            super_emit.assert_called_once_with(
+                'foo',
+                [1, 'two'],
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+            self.pm._handle_emit({
+                'event': 'foo',
+                'binary': True,
+                'data': [
+                    [[1, {'_placeholder': True, 'num': 0}, 'three']], 'dHdv'
+                ],
+            })
+            super_emit.assert_called_with(
+                'foo',
+                [1, b'two', 'three'],
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+
+    def test_handle_emit_no_arguments(self):
+        with mock.patch.object(manager.Manager, 'emit') as super_emit:
+            self.pm._handle_emit({'event': 'foo', 'data': []})
+            super_emit.assert_called_once_with(
+                'foo',
+                (),
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+
+    def test_handle_emit_multiple_arguments(self):
+        with mock.patch.object(manager.Manager, 'emit') as super_emit:
+            self.pm._handle_emit({'event': 'foo', 'data': [1, 'two']})
+            super_emit.assert_called_once_with(
+                'foo',
+                (1, 'two'),
+                namespace=None,
+                room=None,
+                skip_sid=None,
+                callback=None,
+            )
+            self.pm._handle_emit({
+                'event': 'foo',
+                'binary': True,
+                'data': [
+                    [1, {'_placeholder': True, 'num': 0}, 'three'], 'dHdv'
+                ],
+            })
+            super_emit.assert_called_with(
+                'foo',
+                (1, b'two', 'three'),
+                namespace=None,
+                room=None,
+                skip_sid=None,
                 callback=None,
             )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-socketio-5.15.0/tox.ini 
new/python-socketio-5.16.0/tox.ini
--- old/python-socketio-5.15.0/tox.ini  2025-11-22 19:38:45.000000000 +0100
+++ new/python-socketio-5.16.0/tox.ini  2025-12-25 00:51:21.000000000 +0100
@@ -1,11 +1,9 @@
 [tox]
-envlist=flake8,py{38,39,310,311,312,313,314},docs
+envlist=flake8,py{310,311,312,313,314},docs
 skip_missing_interpreters=True
 
 [gh-actions]
 python =
-    3.8: py38
-    3.9: py39
     3.10: py310
     3.11: py311
     3.12: py312

Reply via email to