Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-ypy-websocket for
openSUSE:Factory checked in at 2023-06-13 16:09:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ypy-websocket (Old)
and /work/SRC/openSUSE:Factory/.python-ypy-websocket.new.15902 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ypy-websocket"
Tue Jun 13 16:09:46 2023 rev:2 rq:1092708 version:0.8.4
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-ypy-websocket/python-ypy-websocket.changes
2023-03-24 15:20:41.546972834 +0100
+++
/work/SRC/openSUSE:Factory/.python-ypy-websocket.new.15902/python-ypy-websocket.changes
2023-06-13 16:09:50.163000808 +0200
@@ -1,0 +2,10 @@
+Sun Jun 11 21:15:50 UTC 2023 - Ben Greiner <[email protected]>
+
+- Update to 0.8.4
+ * Keep reference to asyncio tasks #69 (@davidbrochart)
+- Release 0.8.3
+ * Bump y-py >=0.6.0,<0.7.0 #68 (@davidbrochart)
+ * Move pytest.ini entries to pyproject.toml #64 (@bnavigator)
+ * Compare dicts not JSON string with dicts #63 (@bnavigator)
+
+-------------------------------------------------------------------
Old:
----
ypy_websocket-0.8.2.tar.gz
New:
----
ypy_websocket-0.8.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-ypy-websocket.spec ++++++
--- /var/tmp/diff_new_pack.pQroMF/_old 2023-06-13 16:09:50.907005197 +0200
+++ /var/tmp/diff_new_pack.pQroMF/_new 2023-06-13 16:09:50.911005221 +0200
@@ -17,8 +17,8 @@
Name: python-ypy-websocket
-# Don't update until the dep chain for jupyterlab can handle newer versions
-Version: 0.8.2
+# Don't update until the dep chain for jupyterlab can handle newer versions
(python-jupyter-ydoc)
+Version: 0.8.4
Release: 0
Summary: WebSocket connector for Ypy
License: MIT
@@ -32,7 +32,7 @@
BuildRequires: python-rpm-macros
Requires: python-aiofiles >= 22.1.0
Requires: (python-aiosqlite >= 0.17.0 with python-aiosqlite < 1)
-Requires: (python-y-py >= 0.5.3 with python-y-py < 0.6.0)
+Requires: (python-y-py >= 0.6 with python-y-py < 0.7)
BuildArch: noarch
# SECTION test
BuildRequires: %{python_module aiofiles >= 22.1.0}
@@ -40,7 +40,7 @@
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module websockets >= 10.0}
-BuildRequires: %{python_module y-py >= 0.5.3 with %python-y-py < 0.6.0}
+BuildRequires: %{python_module y-py >= 0.6 with %python-y-py < 0.7}
BuildRequires: nodejs
# /SECTION
%python_subpackages
@@ -61,7 +61,7 @@
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%check
-%pytest --asyncio-mode auto
+%pytest
%files %{python_files}
%doc README.md
++++++ node_modules.tar.xz ++++++
++++ 25779 lines of diff (skipped)
++++++ ypy_websocket-0.8.2.tar.gz -> ypy_websocket-0.8.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ypy_websocket-0.8.2/PKG-INFO
new/ypy_websocket-0.8.4/PKG-INFO
--- old/ypy_websocket-0.8.2/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/ypy_websocket-0.8.4/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: ypy-websocket
-Version: 0.8.2
+Version: 0.8.4
Summary: WebSocket connector for Ypy
Project-URL: Homepage, https://github.com/y-crdt/ypy-websocket
Author-email: David Brochart <[email protected]>
@@ -9,7 +9,7 @@
Requires-Python: >=3.7
Requires-Dist: aiofiles<23,>=22.1.0
Requires-Dist: aiosqlite<1,>=0.17.0
-Requires-Dist: y-py<0.6.0,>=0.5.3
+Requires-Dist: y-py<0.7.0,>=0.6.0
Provides-Extra: test
Requires-Dist: mypy; extra == 'test'
Requires-Dist: pre-commit; extra == 'test'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ypy_websocket-0.8.2/pyproject.toml
new/ypy_websocket-0.8.4/pyproject.toml
--- old/ypy_websocket-0.8.2/pyproject.toml 2020-02-02 01:00:00.000000000
+0100
+++ new/ypy_websocket-0.8.4/pyproject.toml 2020-02-02 01:00:00.000000000
+0100
@@ -7,7 +7,6 @@
dynamic = ["version"]
description = "WebSocket connector for Ypy"
readme = "README.md"
-license = "MIT"
requires-python = ">=3.7"
authors = [
{ name = "David Brochart", email = "[email protected]" },
@@ -19,7 +18,7 @@
dependencies = [
"aiofiles >=22.1.0,<23",
"aiosqlite >=0.17.0,<1",
- "y-py >=0.5.3,<0.6.0",
+ "y-py >=0.6.0,<0.7.0",
]
[project.optional-dependencies]
@@ -54,3 +53,6 @@
# black adds spaces around ':'
"E203",
]
+
+[tool.pytest.ini_options]
+asyncio_mode = "auto"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ypy_websocket-0.8.2/tests/test_ypy_yjs.py
new/ypy_websocket-0.8.4/tests/test_ypy_yjs.py
--- old/ypy_websocket-0.8.2/tests/test_ypy_yjs.py 2020-02-02
01:00:00.000000000 +0100
+++ new/ypy_websocket-0.8.4/tests/test_ypy_yjs.py 2020-02-02
01:00:00.000000000 +0100
@@ -1,4 +1,5 @@
import asyncio
+import json
import pytest
import y_py as Y
@@ -70,5 +71,5 @@
await ytest.clock_run()
ycells = ydoc.get_array("cells")
ystate = ydoc.get_map("state")
- assert ycells.to_json() == [{"metadata": {"foo": "bar"}, "source": "1 +
2"}]
- assert ystate.to_json() == {"state": {"dirty": False}}
+ assert json.loads(ycells.to_json()) == [{"metadata": {"foo": "bar"},
"source": "1 + 2"}]
+ assert json.loads(ystate.to_json()) == {"state": {"dirty": False}}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ypy_websocket-0.8.2/ypy_websocket/__init__.py
new/ypy_websocket-0.8.4/ypy_websocket/__init__.py
--- old/ypy_websocket-0.8.2/ypy_websocket/__init__.py 2020-02-02
01:00:00.000000000 +0100
+++ new/ypy_websocket-0.8.4/ypy_websocket/__init__.py 2020-02-02
01:00:00.000000000 +0100
@@ -2,4 +2,4 @@
from .websocket_server import WebsocketServer, YRoom # noqa
from .yutils import YMessageType # noqa
-__version__ = "0.8.2"
+__version__ = "0.8.4"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ypy_websocket-0.8.2/ypy_websocket/websocket_provider.py
new/ypy_websocket-0.8.4/ypy_websocket/websocket_provider.py
--- old/ypy_websocket-0.8.2/ypy_websocket/websocket_provider.py 2020-02-02
01:00:00.000000000 +0100
+++ new/ypy_websocket-0.8.4/ypy_websocket/websocket_provider.py 2020-02-02
01:00:00.000000000 +0100
@@ -24,7 +24,7 @@
self.log = log or logging.getLogger(__name__)
self._update_queue = asyncio.Queue()
ydoc.observe_after_transaction(partial(put_updates,
self._update_queue, ydoc))
- asyncio.create_task(self._run())
+ self._run_task = asyncio.create_task(self._run())
async def _run(self):
await sync(self._ydoc, self._websocket, self.log)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ypy_websocket-0.8.2/ypy_websocket/websocket_server.py
new/ypy_websocket-0.8.4/ypy_websocket/websocket_server.py
--- old/ypy_websocket-0.8.2/ypy_websocket/websocket_server.py 2020-02-02
01:00:00.000000000 +0100
+++ new/ypy_websocket-0.8.4/ypy_websocket/websocket_server.py 2020-02-02
01:00:00.000000000 +0100
@@ -1,7 +1,7 @@
import asyncio
import logging
from functools import partial
-from typing import Callable, Dict, List, Optional
+from typing import Callable, Dict, List, Optional, Set
import y_py as Y
@@ -18,6 +18,7 @@
class YRoom:
+ background_tasks: Set[asyncio.Task]
clients: List
ydoc: Y.YDoc
ystore: Optional[BaseYStore]
@@ -36,6 +37,7 @@
self.clients = []
self._on_message = None
self._broadcast_task = asyncio.create_task(self._broadcast_updates())
+ self.background_tasks = set()
@property
def ready(self) -> bool:
@@ -63,10 +65,14 @@
for client in self.clients:
self.log.debug("Sending Y update to client with endpoint: %s",
client.path)
message = create_update_message(update)
- asyncio.create_task(client.send(message))
+ task = asyncio.create_task(client.send(message))
+ self.background_tasks.add(task)
+ task.add_done_callback(self.background_tasks.discard)
if self.ystore:
self.log.debug("Writing Y update to YStore")
- asyncio.create_task(self.ystore.write(update))
+ task = asyncio.create_task(self.ystore.write(update))
+ self.background_tasks.add(task)
+ task.add_done_callback(self.background_tasks.discard)
def _clean(self):
self._broadcast_task.cancel()
@@ -75,6 +81,7 @@
class WebsocketServer:
auto_clean_rooms: bool
+ background_tasks: Set[asyncio.Task]
rooms: Dict[str, YRoom]
def __init__(self, rooms_ready: bool = True, auto_clean_rooms: bool =
True, log=None):
@@ -82,6 +89,7 @@
self.auto_clean_rooms = auto_clean_rooms
self.log = log or logging.getLogger(__name__)
self.rooms = {}
+ self.background_tasks = set()
def get_room(self, path: str) -> YRoom:
if path not in self.rooms.keys():
@@ -125,9 +133,11 @@
# update our internal state in the background
# changes to the internal state are then forwarded to all
clients
# and stored in the YStore (if any)
- asyncio.create_task(
+ task = asyncio.create_task(
process_sync_message(message[1:], room.ydoc, websocket,
self.log)
)
+ self.background_tasks.add(task)
+ task.add_done_callback(self.background_tasks.discard)
elif message_type == YMessageType.AWARENESS:
# forward awareness messages from this client to all clients,
# including itself, because it's used to keep the connection
alive
@@ -142,7 +152,9 @@
websocket.path,
client.path,
)
- asyncio.create_task(client.send(message))
+ task = asyncio.create_task(client.send(message))
+ self.background_tasks.add(task)
+ task.add_done_callback(self.background_tasks.discard)
# remove this client
room.clients = [c for c in room.clients if c != websocket]
if self.auto_clean_rooms and not room.clients: