Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-ipyvue for openSUSE:Factory 
checked in at 2023-09-25 20:03:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ipyvue (Old)
 and      /work/SRC/openSUSE:Factory/.python-ipyvue.new.1770 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ipyvue"

Mon Sep 25 20:03:13 2023 rev:7 rq:1113292 version:1.10.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ipyvue/python-ipyvue.changes      
2023-08-18 19:28:46.367360410 +0200
+++ /work/SRC/openSUSE:Factory/.python-ipyvue.new.1770/python-ipyvue.changes    
2023-09-25 20:58:21.637708123 +0200
@@ -1,0 +2,9 @@
+Sun Sep 24 17:44:12 UTC 2023 - Ben Greiner <c...@bnavigator.de>
+
+- Update to 1.10.1
+  * no upstream release notes, listing significant commit messages
+  * feat: support serialization of more event data
+  * fix: non Event objects do not need processing before
+    serialization
+
+-------------------------------------------------------------------

Old:
----
  ipyvue-1.9.2-gh.tar.gz
  ipyvue-1.9.2.tar.gz

New:
----
  ipyvue-1.10.1-gh.tar.gz
  ipyvue-1.10.1.tar.gz

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

Other differences:
------------------
++++++ python-ipyvue.spec ++++++
--- /var/tmp/diff_new_pack.X5igYa/_old  2023-09-25 20:58:22.769749019 +0200
+++ /var/tmp/diff_new_pack.X5igYa/_new  2023-09-25 20:58:22.769749019 +0200
@@ -17,9 +17,9 @@
 
 
 # This is important for versions ending in .0
-%define python3dist_version 1.9.2
+%define python3dist_version 1.10.1
 Name:           python-ipyvue
-Version:        1.9.2
+Version:        1.10.1
 Release:        0
 Summary:        Jupyter widgets base for Vue libraries
 License:        MIT

++++++ ipyvue-1.9.2-gh.tar.gz -> ipyvue-1.10.1-gh.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipyvue-1.9.2/.bumpversion.cfg 
new/ipyvue-1.10.1/.bumpversion.cfg
--- old/ipyvue-1.9.2/.bumpversion.cfg   2023-06-16 14:52:37.000000000 +0200
+++ new/ipyvue-1.10.1/.bumpversion.cfg  2023-09-07 16:55:32.000000000 +0200
@@ -1,6 +1,7 @@
 [bumpversion]
-current_version = 1.9.2
+current_version = 1.10.1
 commit = True
+message = chore: bump version: {current_version} → {new_version}
 tag = True
 parse = 
(?P<major>\d+)(\.(?P<minor>\d+))(\.(?P<patch>\d+))((?P<release>.)(?P<build>\d+))?
 serialize = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipyvue-1.9.2/RELEASE.md new/ipyvue-1.10.1/RELEASE.md
--- old/ipyvue-1.9.2/RELEASE.md 2023-06-16 14:52:37.000000000 +0200
+++ new/ipyvue-1.10.1/RELEASE.md        2023-09-07 16:55:32.000000000 +0200
@@ -1,20 +1,18 @@
-- To release a new version of ipyvue on PyPI:
+# Release a new version of ipyvue on PyPI and NPM:
 
-Update _version.py (set release version, remove 'dev')
-git add the _version.py file and git commit
-`python setup.py sdist upload`
-`python setup.py bdist_wheel upload`
-`git tag -a X.X.X -m 'comment'`
-Update _version.py (add 'dev' and increment minor)
-git add and git commit
-git push
-git push --tags
+- assert you have a remote called "upstream" pointing to 
g...@github.com:widgetti/ipyvue.git
+- assert you have an up-to-date and clean working directory on the branch 
master
+- run `./release.sh [patch | minor | major]`
 
-- To release a new version of jupyter-vue on NPM:
+## Making an alpha release
 
+    $ ./release.sh patch --new-version 1.19.0a1
+
+## Recover from a failed release
+
+If a release fails on CI, and you want to keep the history clean
+```
+# do fix
+$ git rebase -i HEAD~3
+$ git tag v1.19.0 -f &&  git push upstream master v1.19.0 -f
 ```
-# clean out the `dist` and `node_modules` directories
-git clean -fdx
-npm install
-npm publish
-```
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipyvue-1.9.2/ipyvue/_version.py 
new/ipyvue-1.10.1/ipyvue/_version.py
--- old/ipyvue-1.9.2/ipyvue/_version.py 2023-06-16 14:52:37.000000000 +0200
+++ new/ipyvue-1.10.1/ipyvue/_version.py        2023-09-07 16:55:32.000000000 
+0200
@@ -1,2 +1,2 @@
-__version__ = "1.9.2"
+__version__ = "1.10.1"
 semver = "^" + __version__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipyvue-1.9.2/js/package.json 
new/ipyvue-1.10.1/js/package.json
--- old/ipyvue-1.9.2/js/package.json    2023-06-16 14:52:37.000000000 +0200
+++ new/ipyvue-1.10.1/js/package.json   2023-09-07 16:55:32.000000000 +0200
@@ -1,6 +1,6 @@
 {
   "name": "jupyter-vue",
-  "version": "1.9.2",
+  "version": "1.10.1",
   "description": "Jupyter widgets base for Vue libraries",
   "license": "MIT",
   "author": "Mario Buikhuizen, Maarten Breddels",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipyvue-1.9.2/js/src/VueRenderer.js 
new/ipyvue-1.10.1/js/src/VueRenderer.js
--- old/ipyvue-1.9.2/js/src/VueRenderer.js      2023-06-16 14:52:37.000000000 
+0200
+++ new/ipyvue-1.10.1/js/src/VueRenderer.js     2023-09-07 16:55:32.000000000 
+0200
@@ -51,29 +51,34 @@
     };
 }
 
-export function eventToObject(event) {
-    if (event == null) {
-        return event;
-    }
-    let props;
-    switch (event.constructor) {
-        case MouseEvent:
-            props = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey', 'offsetX', 
'offsetY', 'clientX', 'clientY', 'pageX', 'pageY', 'screenX', 'screenY', 
'shiftKey', 'x', 'y'];
-            break;
-        case WheelEvent:
-            props = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey', 'offsetX', 
'offsetY', 'clientX', 'clientY', 'pageX', 'pageY', 'screenX', 'screenY', 
'shiftKey', 'x', 'y', 'wheelDelta', 'wheelDeltaX', 'wheelDeltaY'];
-            break;
-        // TODO: More events
-        default:
-            return event;
+// based on https://stackoverflow.com/a/58416333/5397207
+function pickSerializable(object, depth=0, max_depth=2) {
+    // change max_depth to see more levels, for a touch event, 2 is good
+    if (depth > max_depth)
+        return 'Object';
+
+    const obj = {};
+    for (let key in object) {
+        let value = object[key];
+        if (value instanceof Node)
+            // specify which properties you want to see from the node
+            value = {id: value.id};
+        else if (value instanceof Window)
+            value = 'Window';
+        else if (value instanceof Object)
+            value = pickSerializable(value, depth+1, max_depth);
+
+        obj[key] = value;
     }
 
-    return props.reduce(
-        (result, key) => {
-            result[key] = event[key]; // eslint-disable-line no-param-reassign
-            return result;
-        }, {},
-    );
+    return obj;
+}
+
+export function eventToObject(event) {
+    if (event instanceof Event) {
+        return pickSerializable(event);
+    }
+    return event;
 }
 
 export function vueRender(createElement, model, parentView, slotScopes) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipyvue-1.9.2/release.sh new/ipyvue-1.10.1/release.sh
--- old/ipyvue-1.9.2/release.sh 2023-06-16 14:52:37.000000000 +0200
+++ new/ipyvue-1.10.1/release.sh        2023-09-07 16:55:32.000000000 +0200
@@ -1,6 +1,6 @@
 #!/bin/bash
 set -e -o pipefail
 # usage: ./release minor -n
-version=$(bump2version --dry-run --list $* | grep new_version | sed -r 
s,"^.*=",,)
+version=$(bump2version --dry-run --list $* | grep new_version= | sed -r 
s,"^.*=",,)
 echo Version tag v$version
 bumpversion $* --verbose && git push upstream master v$version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipyvue-1.9.2/tests/ui/test_events.py 
new/ipyvue-1.10.1/tests/ui/test_events.py
--- old/ipyvue-1.9.2/tests/ui/test_events.py    2023-06-16 14:52:37.000000000 
+0200
+++ new/ipyvue-1.10.1/tests/ui/test_events.py   2023-09-07 16:55:32.000000000 
+0200
@@ -9,7 +9,7 @@
 from unittest.mock import MagicMock
 
 
-def test_widget_button(solara_test, page_session: playwright.sync_api.Page):
+def test_event_basics(solara_test, page_session: playwright.sync_api.Page):
     inner = vue.Html(tag="div", children=["Click Me!"])
     outer = vue.Html(tag="dev", children=[inner])
     mock_outer = MagicMock()
@@ -36,3 +36,26 @@
     inner_sel.click()
     page_session.locator("text=Clicked").wait_for()
     mock_outer.assert_called_once()
+
+
+def test_mouse_event(solara_test, page_session: playwright.sync_api.Page):
+    div = vue.Html(tag="div", children=["Click Me!"])
+    last_event_data = None
+
+    def on_click(widget, event, data):
+        nonlocal last_event_data
+        last_event_data = data
+        div.children = ["Clicked"]
+
+    div.on_event("click", on_click)
+    display(div)
+
+    # click in the div
+    box = page_session.locator("text=Click Me!").bounding_box()
+    assert box is not None
+    page_session.mouse.click(box["x"], box["y"])
+
+    page_session.locator("text=Clicked").wait_for()
+    assert last_event_data is not None
+    assert last_event_data["x"] == box["x"]
+    assert last_event_data["y"] == box["y"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipyvue-1.9.2/tests/ui/test_template.py 
new/ipyvue-1.10.1/tests/ui/test_template.py
--- old/ipyvue-1.9.2/tests/ui/test_template.py  2023-06-16 14:52:37.000000000 
+0200
+++ new/ipyvue-1.10.1/tests/ui/test_template.py 2023-09-07 16:55:32.000000000 
+0200
@@ -8,7 +8,7 @@
 import playwright.sync_api
 
 from IPython.display import display
-from traitlets import default, Int
+from traitlets import default, Int, Callable, Unicode
 
 
 class MyTemplate(vue.VueTemplate):
@@ -37,3 +37,36 @@
     widget.wait_for()
     widget.click()
     page_session.locator("text=Clicked 1").wait_for()
+
+
+class MyEventTemplate(vue.VueTemplate):
+    on_custom = Callable()
+    text = Unicode("Click Me").tag(sync=True)
+
+    @default("template")
+    def _default_vue_template(self):
+        return """
+        <template>
+            <div @click="custom_event('not-an-event-object')">{{text}}</div>
+        </template>
+        """
+
+    def vue_custom_event(self, data):
+        self.on_custom(data)
+
+
+def test_template_custom_event(solara_test, page_session: 
playwright.sync_api.Page):
+    last_event_data = None
+
+    def on_custom(data):
+        nonlocal last_event_data
+        last_event_data = data
+        div.text = "Clicked"
+
+    div = MyEventTemplate(on_custom=on_custom)
+
+    display(div)
+
+    page_session.locator("text=Click Me").click()
+    page_session.locator("text=Clicked").wait_for()
+    assert last_event_data == "not-an-event-object"

++++++ ipyvue-1.9.2-gh.tar.gz -> ipyvue-1.10.1.tar.gz ++++++
++++ 21363 lines of diff (skipped)

Reply via email to