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 2021-10-26 20:13:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-socketio (Old)
and /work/SRC/openSUSE:Factory/.python-python-socketio.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-python-socketio"
Tue Oct 26 20:13:43 2021 rev:4 rq:927348 version:5.4.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-python-socketio/python-python-socketio.changes
2021-10-06 19:50:05.652060926 +0200
+++
/work/SRC/openSUSE:Factory/.python-python-socketio.new.1890/python-python-socketio.changes
2021-10-26 20:14:22.950031635 +0200
@@ -1,0 +2,7 @@
+Sat Oct 23 16:21:35 UTC 2021 - Axel Braun <[email protected]>
+
+- version 5.4.1
+ * Catch-all event handlers (commit)
+ * Implement disconnect method for external processes #684 (commit)
+
+-------------------------------------------------------------------
Old:
----
python-socketio-5.4.0.tar.gz
New:
----
python-socketio-5.4.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-python-socketio.spec ++++++
--- /var/tmp/diff_new_pack.6ttSnF/_old 2021-10-26 20:14:23.378031862 +0200
+++ /var/tmp/diff_new_pack.6ttSnF/_new 2021-10-26 20:14:23.378031862 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python3-%{**}}
%define skip_python2 1
Name: python-python-socketio
-Version: 5.4.0
+Version: 5.4.1
Release: 0
Summary: SocketIO server
License: MIT
++++++ python-socketio-5.4.0.tar.gz -> python-socketio-5.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-socketio-5.4.0/.github/ISSUE_TEMPLATE/config.yml
new/python-socketio-5.4.1/.github/ISSUE_TEMPLATE/config.yml
--- old/python-socketio-5.4.0/.github/ISSUE_TEMPLATE/config.yml 2021-08-02
01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/.github/ISSUE_TEMPLATE/config.yml 2021-10-14
21:19:50.000000000 +0200
@@ -1,5 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: GitHub Discussions
- url: https://github.com/miguelgrinberg/Flask-SocketIO/discussions
+ url: https://github.com/miguelgrinberg/python-socketio/discussions
about: Ask questions here.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/CHANGES.md
new/python-socketio-5.4.1/CHANGES.md
--- old/python-socketio-5.4.0/CHANGES.md 2021-08-02 01:15:24.000000000
+0200
+++ new/python-socketio-5.4.1/CHANGES.md 2021-10-14 21:19:50.000000000
+0200
@@ -1,5 +1,10 @@
# python-socketio change log
+**Release 5.4.1** - 2021-10-14
+
+- Catch-all event handlers
([commit](https://github.com/miguelgrinberg/python-socketio/commit/28569d48ad74d5414a0d2a8f69d7540dbdddf066))
+- Implement disconnect method for external processes
[#684](https://github.com/miguelgrinberg/python-socketio/issues/684)
([commit](https://github.com/miguelgrinberg/python-socketio/commit/a830c9f7887df715227f4284f30e8d62680e58ce))
+
**Release 5.4.0** - 2021-08-02
- Support msgpack and custom packet serializers
[#749](https://github.com/miguelgrinberg/python-socketio/issues/749)
([commit](https://github.com/miguelgrinberg/python-socketio/commit/5159e84c49daaf2da0579bfc6ee954a9c738a076))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/docs/client.rst
new/python-socketio-5.4.1/docs/client.rst
--- old/python-socketio-5.4.0/docs/client.rst 2021-08-02 01:15:24.000000000
+0200
+++ new/python-socketio-5.4.1/docs/client.rst 2021-10-14 21:19:50.000000000
+0200
@@ -65,6 +65,28 @@
async def message(data):
print('I received a message!')
+Catch-All Event Handlers
+------------------------
+
+A "catch-all" event handler is invoked for any events that do not have an
+event handler. You can define a catch-all handler using ``'*'`` as event name::
+
+ @sio.on('*')
+ def catch_all(event, sid, data):
+ pass
+
+Asyncio clients can also use a coroutine::
+
+ @sio.on('*')
+ async def catch_all(event, sid, data):
+ pass
+
+A catch-all event handler receives the event name as a first argument. The
+remaining arguments are the same as for a regular event handler.
+
+Connect, Connect Error and Disconnect Event Handlers
+----------------------------------------------------
+
The ``connect``, ``connect_error`` and ``disconnect`` events are special; they
are invoked automatically when a client connects or disconnects from the
server::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/docs/server.rst
new/python-socketio-5.4.1/docs/server.rst
--- old/python-socketio-5.4.0/docs/server.rst 2021-08-02 01:15:24.000000000
+0200
+++ new/python-socketio-5.4.1/docs/server.rst 2021-10-14 21:19:50.000000000
+0200
@@ -178,6 +178,28 @@
client connection. All the events sent by a given client will have the same
``sid`` value.
+Catch-All Event Handlers
+------------------------
+
+A "catch-all" event handler is invoked for any events that do not have an
+event handler. You can define a catch-all handler using ``'*'`` as event name::
+
+ @sio.on('*')
+ def catch_all(event, sid, data):
+ pass
+
+Asyncio servers can also use a coroutine::
+
+ @sio.on('*')
+ async def catch_all(event, sid, data):
+ pass
+
+A catch-all event handler receives the event name as a first argument. The
+remaining arguments are the same as for a regular event handler.
+
+Connect and Disconnect Event Handlers
+-------------------------------------
+
The ``connect`` and ``disconnect`` events are special; they are invoked
automatically when a client connects or disconnects from the server::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/setup.cfg
new/python-socketio-5.4.1/setup.cfg
--- old/python-socketio-5.4.0/setup.cfg 2021-08-02 01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/setup.cfg 2021-10-14 21:19:50.000000000 +0200
@@ -1,6 +1,6 @@
[metadata]
name = python-socketio
-version = 5.4.0
+version = 5.4.1
author = Miguel Grinberg
author_email = [email protected]
description = Socket.IO server and client for Python
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/src/socketio/asyncio_client.py
new/python-socketio-5.4.1/src/socketio/asyncio_client.py
--- old/python-socketio-5.4.0/src/socketio/asyncio_client.py 2021-08-02
01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/src/socketio/asyncio_client.py 2021-10-14
21:19:50.000000000 +0200
@@ -418,15 +418,22 @@
async def _trigger_event(self, event, namespace, *args):
"""Invoke an application event handler."""
# first see if we have an explicit handler for the event
- if namespace in self.handlers and event in self.handlers[namespace]:
- if asyncio.iscoroutinefunction(self.handlers[namespace][event]):
- try:
- ret = await self.handlers[namespace][event](*args)
- except asyncio.CancelledError: # pragma: no cover
- ret = None
- else:
- ret = self.handlers[namespace][event](*args)
- return ret
+ if namespace in self.handlers:
+ handler = None
+ if event in self.handlers[namespace]:
+ handler = self.handlers[namespace][event]
+ elif '*' in self.handlers[namespace]:
+ handler = self.handlers[namespace]['*']
+ args = (event, *args)
+ if handler:
+ if asyncio.iscoroutinefunction(handler):
+ try:
+ ret = await handler(*args)
+ except asyncio.CancelledError: # pragma: no cover
+ ret = None
+ else:
+ ret = handler(*args)
+ return ret
# or else, forward the event to a namepsace handler if one exists
elif namespace in self.namespace_handlers:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/src/socketio/asyncio_server.py
new/python-socketio-5.4.1/src/socketio/asyncio_server.py
--- old/python-socketio-5.4.0/src/socketio/asyncio_server.py 2021-08-02
01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/src/socketio/asyncio_server.py 2021-10-14
21:19:50.000000000 +0200
@@ -524,16 +524,22 @@
async def _trigger_event(self, event, namespace, *args):
"""Invoke an application event handler."""
# first see if we have an explicit handler for the event
- if namespace in self.handlers and event in self.handlers[namespace]:
- if asyncio.iscoroutinefunction(self.handlers[namespace][event]) \
- is True:
- try:
- ret = await self.handlers[namespace][event](*args)
- except asyncio.CancelledError: # pragma: no cover
- ret = None
- else:
- ret = self.handlers[namespace][event](*args)
- return ret
+ if namespace in self.handlers:
+ handler = None
+ if event in self.handlers[namespace]:
+ handler = self.handlers[namespace][event]
+ elif '*' in self.handlers[namespace]:
+ handler = self.handlers[namespace]['*']
+ args = (event, *args)
+ if handler:
+ if asyncio.iscoroutinefunction(handler):
+ try:
+ ret = await handler(*args)
+ except asyncio.CancelledError: # pragma: no cover
+ ret = None
+ else:
+ ret = handler(*args)
+ return ret
# or else, forward the event to a namepsace handler if one exists
elif namespace in self.namespace_handlers:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/src/socketio/client.py
new/python-socketio-5.4.1/src/socketio/client.py
--- old/python-socketio-5.4.0/src/socketio/client.py 2021-08-02
01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/src/socketio/client.py 2021-10-14
21:19:50.000000000 +0200
@@ -609,8 +609,11 @@
def _trigger_event(self, event, namespace, *args):
"""Invoke an application event handler."""
# first see if we have an explicit handler for the event
- if namespace in self.handlers and event in self.handlers[namespace]:
- return self.handlers[namespace][event](*args)
+ if namespace in self.handlers:
+ if event in self.handlers[namespace]:
+ return self.handlers[namespace][event](*args)
+ elif '*' in self.handlers[namespace]:
+ return self.handlers[namespace]['*'](event, *args)
# or else, forward the event to a namespace handler if one exists
elif namespace in self.namespace_handlers:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/src/socketio/pubsub_manager.py
new/python-socketio-5.4.1/src/socketio/pubsub_manager.py
--- old/python-socketio-5.4.0/src/socketio/pubsub_manager.py 2021-08-02
01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/src/socketio/pubsub_manager.py 2021-10-14
21:19:50.000000000 +0200
@@ -75,6 +75,10 @@
self._publish({'method': 'disconnect', 'sid': sid,
'namespace': namespace or '/'})
+ def disconnect(self, sid, namespace=None):
+ self._publish({'method': 'disconnect', 'sid': sid,
+ 'namespace': namespace or '/'})
+
def close_room(self, room, namespace=None):
self._publish({'method': 'close_room', 'room': room,
'namespace': namespace or '/'})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/src/socketio/server.py
new/python-socketio-5.4.1/src/socketio/server.py
--- old/python-socketio-5.4.0/src/socketio/server.py 2021-08-02
01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/src/socketio/server.py 2021-10-14
21:19:50.000000000 +0200
@@ -732,8 +732,11 @@
def _trigger_event(self, event, namespace, *args):
"""Invoke an application event handler."""
# first see if we have an explicit handler for the event
- if namespace in self.handlers and event in self.handlers[namespace]:
- return self.handlers[namespace][event](*args)
+ if namespace in self.handlers:
+ if event in self.handlers[namespace]:
+ return self.handlers[namespace][event](*args)
+ elif '*' in self.handlers[namespace]:
+ return self.handlers[namespace]['*'](event, *args)
# or else, forward the event to a namespace handler if one exists
elif namespace in self.namespace_handlers:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-socketio-5.4.0/tests/asyncio/test_asyncio_client.py
new/python-socketio-5.4.1/tests/asyncio/test_asyncio_client.py
--- old/python-socketio-5.4.0/tests/asyncio/test_asyncio_client.py
2021-08-02 01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/tests/asyncio/test_asyncio_client.py
2021-10-14 21:19:50.000000000 +0200
@@ -833,16 +833,24 @@
def test_trigger_event(self):
c = asyncio_client.AsyncClient()
handler = mock.MagicMock()
+ catchall_handler = mock.MagicMock()
c.on('foo', handler)
+ c.on('*', catchall_handler)
_run(c._trigger_event('foo', '/', 1, '2'))
+ _run(c._trigger_event('bar', '/', 1, '2', 3))
handler.assert_called_once_with(1, '2')
+ catchall_handler.assert_called_once_with('bar', 1, '2', 3)
def test_trigger_event_namespace(self):
c = asyncio_client.AsyncClient()
handler = AsyncMock()
+ catchall_handler = AsyncMock()
c.on('foo', handler, namespace='/bar')
+ c.on('*', catchall_handler, namespace='/bar')
_run(c._trigger_event('foo', '/bar', 1, '2'))
+ _run(c._trigger_event('bar', '/bar', 1, '2', 3))
handler.mock.assert_called_once_with(1, '2')
+ catchall_handler.mock.assert_called_once_with('bar', 1, '2', 3)
def test_trigger_event_class_namespace(self):
c = asyncio_client.AsyncClient()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-socketio-5.4.0/tests/asyncio/test_asyncio_server.py
new/python-socketio-5.4.1/tests/asyncio/test_asyncio_server.py
--- old/python-socketio-5.4.0/tests/asyncio/test_asyncio_server.py
2021-08-02 01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/tests/asyncio/test_asyncio_server.py
2021-10-14 21:19:50.000000000 +0200
@@ -618,18 +618,28 @@
s = asyncio_server.AsyncServer(async_handlers=False)
sid = s.manager.connect('123', '/')
handler = AsyncMock()
- s.on('my message', handler)
+ catchall_handler = AsyncMock()
+ s.on('msg', handler)
+ s.on('*', catchall_handler)
+ _run(s._handle_eio_message('123', '2["msg","a","b"]'))
_run(s._handle_eio_message('123', '2["my message","a","b","c"]'))
- handler.mock.assert_called_once_with(sid, 'a', 'b', 'c')
+ handler.mock.assert_called_once_with(sid, 'a', 'b')
+ catchall_handler.mock.assert_called_once_with(
+ 'my message', sid, 'a', 'b', 'c')
def test_handle_event_with_namespace(self, eio):
eio.return_value.send = AsyncMock()
s = asyncio_server.AsyncServer(async_handlers=False)
sid = s.manager.connect('123', '/foo')
handler = mock.MagicMock()
- s.on('my message', handler, namespace='/foo')
+ catchall_handler = mock.MagicMock()
+ s.on('msg', handler, namespace='/foo')
+ s.on('*', catchall_handler, namespace='/foo')
+ _run(s._handle_eio_message('123', '2/foo,["msg","a","b"]'))
_run(s._handle_eio_message('123', '2/foo,["my message","a","b","c"]'))
- handler.assert_called_once_with(sid, 'a', 'b', 'c')
+ handler.assert_called_once_with(sid, 'a', 'b')
+ catchall_handler.assert_called_once_with(
+ 'my message', sid, 'a', 'b', 'c')
def test_handle_event_with_disconnected_namespace(self, eio):
eio.return_value.send = AsyncMock()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/tests/common/test_client.py
new/python-socketio-5.4.1/tests/common/test_client.py
--- old/python-socketio-5.4.0/tests/common/test_client.py 2021-08-02
01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/tests/common/test_client.py 2021-10-14
21:19:50.000000000 +0200
@@ -934,16 +934,24 @@
def test_trigger_event(self):
c = client.Client()
handler = mock.MagicMock()
+ catchall_handler = mock.MagicMock()
c.on('foo', handler)
+ c.on('*', catchall_handler)
c._trigger_event('foo', '/', 1, '2')
+ c._trigger_event('bar', '/', 1, '2', 3)
handler.assert_called_once_with(1, '2')
+ catchall_handler.assert_called_once_with('bar', 1, '2', 3)
def test_trigger_event_namespace(self):
c = client.Client()
handler = mock.MagicMock()
+ catchall_handler = mock.MagicMock()
c.on('foo', handler, namespace='/bar')
+ c.on('*', catchall_handler, namespace='/bar')
c._trigger_event('foo', '/bar', 1, '2')
+ c._trigger_event('bar', '/bar', 1, '2', 3)
handler.assert_called_once_with(1, '2')
+ catchall_handler.assert_called_once_with('bar', 1, '2', 3)
def test_trigger_event_class_namespace(self):
c = client.Client()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-socketio-5.4.0/tests/common/test_pubsub_manager.py
new/python-socketio-5.4.1/tests/common/test_pubsub_manager.py
--- old/python-socketio-5.4.0/tests/common/test_pubsub_manager.py
2021-08-02 01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/tests/common/test_pubsub_manager.py
2021-10-14 21:19:50.000000000 +0200
@@ -169,6 +169,12 @@
{'method': 'disconnect', 'sid': sid, 'namespace': '/foo'}
)
+ def test_disconnect(self):
+ self.pm.disconnect('foo')
+ self.pm._publish.assert_called_once_with(
+ {'method': 'disconnect', 'sid': 'foo', 'namespace': '/'}
+ )
+
def test_close_room(self):
self.pm.close_room('foo')
self.pm._publish.assert_called_once_with(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-socketio-5.4.0/tests/common/test_server.py
new/python-socketio-5.4.1/tests/common/test_server.py
--- old/python-socketio-5.4.0/tests/common/test_server.py 2021-08-02
01:15:24.000000000 +0200
+++ new/python-socketio-5.4.1/tests/common/test_server.py 2021-10-14
21:19:50.000000000 +0200
@@ -546,17 +546,27 @@
s = server.Server(async_handlers=False)
s.manager.connect('123', '/')
handler = mock.MagicMock()
- s.on('my message', handler)
+ catchall_handler = mock.MagicMock()
+ s.on('msg', handler)
+ s.on('*', catchall_handler)
+ s._handle_eio_message('123', '2["msg","a","b"]')
s._handle_eio_message('123', '2["my message","a","b","c"]')
- handler.assert_called_once_with('1', 'a', 'b', 'c')
+ handler.assert_called_once_with('1', 'a', 'b')
+ catchall_handler.assert_called_once_with(
+ 'my message', '1', 'a', 'b', 'c')
def test_handle_event_with_namespace(self, eio):
s = server.Server(async_handlers=False)
s.manager.connect('123', '/foo')
handler = mock.MagicMock()
- s.on('my message', handler, namespace='/foo')
+ catchall_handler = mock.MagicMock()
+ s.on('msg', handler, namespace='/foo')
+ s.on('*', catchall_handler, namespace='/foo')
+ s._handle_eio_message('123', '2/foo,["msg","a","b"]')
s._handle_eio_message('123', '2/foo,["my message","a","b","c"]')
- handler.assert_called_once_with('1', 'a', 'b', 'c')
+ handler.assert_called_once_with('1', 'a', 'b')
+ catchall_handler.assert_called_once_with(
+ 'my message', '1', 'a', 'b', 'c')
def test_handle_event_with_disconnected_namespace(self, eio):
s = server.Server(async_handlers=False)