Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-ipywidgets for openSUSE:Factory checked in at 2024-09-16 17:42:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-ipywidgets (Old) and /work/SRC/openSUSE:Factory/.python-ipywidgets.new.29891 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ipywidgets" Mon Sep 16 17:42:39 2024 rev:19 rq:1201256 version:8.1.5 Changes: -------- --- /work/SRC/openSUSE:Factory/python-ipywidgets/python-ipywidgets.changes 2024-07-14 08:54:46.557835315 +0200 +++ /work/SRC/openSUSE:Factory/.python-ipywidgets.new.29891/python-ipywidgets.changes 2024-09-16 17:43:47.490832086 +0200 @@ -1,0 +2,25 @@ +Sun Sep 15 15:49:33 UTC 2024 - Ben Greiner <[email protected]> + +- Update to 4.0.13 + * More Phosphor backward compatibility by @martinRenou in #3942 + ## New features + * Allow interact to use basic type hint annotations by + @corranwebster in #3908 + * Support horizontal orientation of radio buttons by + @DonJayamanne in #3620 + ## Maintenance and bug fixes + * Fix compatibility with pytest 8 by @frenzymadness in #3903 + * HTMLManager: Support both ipywidgets 7 and 8 models by + @martinRenou in #3932 + * Make tests compatible with Python 3.13 by @frenzymadness in + #3924 + * fix: get_metadata deprecated since traitlets 4.1 by + @ManonMarchand in #3894 + * Phosphor widget backward compatibility fixes by @martinRenou in + #3933 + * Remove confusing error message by @martinRenou in #3936 + * Fix wrong tag index in TagsInput when updated via python by + @s-weigand in #3862 +- Drop ipywidgets-pr3903-pytest.patch + +------------------------------------------------------------------- Old: ---- ipywidgets-8.1.3.tar.gz ipywidgets-pr3903-pytest.patch New: ---- ipywidgets-8.1.5.tar.gz BETA DEBUG BEGIN: Old: @s-weigand in #3862 - Drop ipywidgets-pr3903-pytest.patch BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-ipywidgets.spec ++++++ --- /var/tmp/diff_new_pack.wv8URt/_old 2024-09-16 17:43:48.654880204 +0200 +++ /var/tmp/diff_new_pack.wv8URt/_new 2024-09-16 17:43:48.654880204 +0200 @@ -17,15 +17,13 @@ Name: python-ipywidgets -Version: 8.1.3 +Version: 8.1.5 Release: 0 Summary: IPython HTML widgets for Jupyter License: BSD-3-Clause Group: Development/Languages/Python URL: https://github.com/jupyter-widgets/ipywidgets Source0: https://files.pythonhosted.org/packages/source/i/ipywidgets/ipywidgets-%{version}.tar.gz -# PATCH-FIX-UPSTREAM ipywidgets-pr3903-pytest.patch gh#jupyter-widgets/ipywidgets#3903 -Patch0: ipywidgets-pr3903-pytest.patch BuildRequires: %{python_module base >= 3.7} BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} @@ -36,8 +34,8 @@ Requires: python-comm >= 0.1.3 Requires: python-ipython >= 6.1.0 Requires: python-traitlets >= 4.3.1 -Requires: (python-jupyterlab_widgets >= 3.0.11 with python-jupyterlab_widgets < 4) -Requires: (python-widgetsnbextension >= 4.0.11 with python-widgetsnbextension < 5) +Requires: (python-jupyterlab_widgets >= 3.0.12 with python-jupyterlab_widgets < 4) +Requires: (python-widgetsnbextension >= 4.0.12 with python-widgetsnbextension < 5) Provides: python-jupyter_ipywidgets = %{version} Obsoletes: python-jupyter_ipywidgets < %{version} BuildArch: noarch @@ -46,11 +44,11 @@ BuildRequires: %{python_module ipykernel} BuildRequires: %{python_module ipython >= 6.1.0} BuildRequires: %{python_module jsonschema} -BuildRequires: %{python_module jupyterlab_widgets >= 3.0.11 with %python-jupyterlab_widgets < 4} +BuildRequires: %{python_module jupyterlab_widgets >= 3.0.12 with %python-jupyterlab_widgets < 4} BuildRequires: %{python_module pytest >= 3.6.0} BuildRequires: %{python_module pytz} BuildRequires: %{python_module traitlets >= 4.3.1} -BuildRequires: %{python_module widgetsnbextension >= 4.0.11 with %python-widgetsnbextension < 5} +BuildRequires: %{python_module widgetsnbextension >= 4.0.12 with %python-widgetsnbextension < 5} # /SECTION %if "%{python_flavor}" == "python3" || "%{?python_provides}" == "python3" Provides: jupyter-ipywidgets = %{version} ++++++ ipywidgets-8.1.3.tar.gz -> ipywidgets-8.1.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/PKG-INFO new/ipywidgets-8.1.5/PKG-INFO --- old/ipywidgets-8.1.3/PKG-INFO 2024-05-28 11:32:06.282020000 +0200 +++ new/ipywidgets-8.1.5/PKG-INFO 2024-08-22 14:19:20.537261000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: ipywidgets -Version: 8.1.3 +Version: 8.1.5 Summary: Jupyter interactive widgets Home-page: http://jupyter.org Author: Jupyter Development Team @@ -29,8 +29,8 @@ Requires-Dist: comm>=0.1.3 Requires-Dist: ipython>=6.1.0 Requires-Dist: traitlets>=4.3.1 -Requires-Dist: widgetsnbextension~=4.0.11 -Requires-Dist: jupyterlab_widgets~=3.0.11 +Requires-Dist: widgetsnbextension~=4.0.12 +Requires-Dist: jupyterlab_widgets~=3.0.12 Provides-Extra: test Requires-Dist: jsonschema; extra == "test" Requires-Dist: ipykernel; extra == "test" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets/_version.py new/ipywidgets-8.1.5/ipywidgets/_version.py --- old/ipywidgets-8.1.3/ipywidgets/_version.py 2024-05-28 11:31:27.000000000 +0200 +++ new/ipywidgets-8.1.5/ipywidgets/_version.py 2024-08-22 14:18:56.000000000 +0200 @@ -1,7 +1,7 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. -__version__ = '8.1.3' +__version__ = '8.1.5' __protocol_version__ = '2.1.0' __control_protocol_version__ = '1.0.0' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets/widgets/interaction.py new/ipywidgets-8.1.5/ipywidgets/widgets/interaction.py --- old/ipywidgets-8.1.3/ipywidgets/widgets/interaction.py 2024-05-23 12:50:20.000000000 +0200 +++ new/ipywidgets-8.1.5/ipywidgets/widgets/interaction.py 2024-08-22 10:53:14.000000000 +0200 @@ -4,6 +4,7 @@ """Interact with functions using widgets.""" from collections.abc import Iterable, Mapping +from enum import EnumMeta as EnumType from inspect import signature, Parameter from inspect import getcallargs from inspect import getfullargspec as check_argspec @@ -11,8 +12,8 @@ from IPython import get_ipython from . import (Widget, ValueWidget, Text, - FloatSlider, IntSlider, Checkbox, Dropdown, - VBox, Button, DOMWidget, Output) + FloatSlider, FloatText, IntSlider, IntText, Checkbox, + Dropdown, VBox, Button, DOMWidget, Output) from IPython.display import display, clear_output from traitlets import HasTraits, Any, Unicode, observe from numbers import Real, Integral @@ -125,6 +126,8 @@ value = kwargs.pop(name) elif default is not empty: value = default + elif param.annotation: + value = param.annotation else: yield not_found yield (name, value, default) @@ -304,6 +307,12 @@ # ignore failure to set default pass return widget + + # Try type annotation + if isinstance(abbrev, type): + widget = cls.widget_from_annotation(abbrev) + if widget is not None: + return widget # Try single value widget = cls.widget_from_single_value(abbrev) @@ -341,6 +350,22 @@ else: return None + @staticmethod + def widget_from_annotation(t): + """Make widgets from type annotation and optional default value.""" + if t is str: + return Text() + elif t is bool: + return Checkbox() + elif t in {int, Integral}: + return IntText() + elif t in {float, Real}: + return FloatText() + elif isinstance(t, EnumType): + return Dropdown(options={option.name: option for option in t}) + else: + return None + @staticmethod def widget_from_tuple(o): """Make widgets from a tuple abbreviation.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets/widgets/tests/test_docutils.py new/ipywidgets-8.1.5/ipywidgets/widgets/tests/test_docutils.py --- old/ipywidgets-8.1.3/ipywidgets/widgets/tests/test_docutils.py 2024-01-31 14:17:14.000000000 +0100 +++ new/ipywidgets-8.1.5/ipywidgets/widgets/tests/test_docutils.py 2024-08-22 10:53:14.000000000 +0200 @@ -15,7 +15,7 @@ def f(): """ Docstring with value {key} """ - assert f.__doc__ == " Docstring with value 62 " + assert "Docstring with value 62" in f.__doc__ def test_unused_keys(self): snippets = {'key': '62', 'other-key': 'unused'} @@ -24,4 +24,4 @@ def f(): """ Docstring with value {key} """ - assert f.__doc__ == " Docstring with value 62 " + assert "Docstring with value 62" in f.__doc__ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets/widgets/tests/test_interaction.py new/ipywidgets-8.1.5/ipywidgets/widgets/tests/test_interaction.py --- old/ipywidgets-8.1.3/ipywidgets/widgets/tests/test_interaction.py 2024-05-23 12:50:20.000000000 +0200 +++ new/ipywidgets-8.1.5/ipywidgets/widgets/tests/test_interaction.py 2024-08-22 10:53:14.000000000 +0200 @@ -6,6 +6,7 @@ from unittest.mock import patch import os +from enum import Enum from collections import OrderedDict import pytest @@ -19,11 +20,20 @@ # Utility stuff #----------------------------------------------------------------------------- -from .utils import setup, teardown - def f(**kwargs): pass + +class Color(Enum): + red = 0 + green = 1 + blue = 2 + + +def g(a: str, b: bool, c: int, d: float, e: Color) -> None: + pass + + displayed = [] @pytest.fixture() def clear_display(): @@ -624,3 +634,27 @@ with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), '../../', 'state.schema.json')) as f: schema = json.load(f) jsonschema.validate(state, schema) + +def test_type_hints(): + c = interactive(g) + + assert len(c.children) == 6 + + check_widget_children( + c, + a={'cls': widgets.Text}, + b={'cls': widgets.Checkbox}, + c={'cls': widgets.IntText}, + d={'cls': widgets.FloatText}, + e={ + 'cls': widgets.Dropdown, + 'options': { + 'red': Color.red, + 'green': Color.green, + 'blue': Color.blue, + }, + '_options_labels': ("red", "green", "blue"), + '_options_values': (Color.red, Color.green, Color.blue), + }, + ) + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets/widgets/tests/test_link.py new/ipywidgets-8.1.5/ipywidgets/widgets/tests/test_link.py --- old/ipywidgets-8.1.3/ipywidgets/widgets/tests/test_link.py 2024-01-31 14:17:14.000000000 +0100 +++ new/ipywidgets-8.1.5/ipywidgets/widgets/tests/test_link.py 2024-08-22 10:53:13.000000000 +0200 @@ -4,7 +4,6 @@ import pytest from .. import jslink, jsdlink, ToggleButton -from .utils import setup, teardown def test_jslink_args(): with pytest.raises(TypeError): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets/widgets/tests/test_send_state.py new/ipywidgets-8.1.5/ipywidgets/widgets/tests/test_send_state.py --- old/ipywidgets-8.1.3/ipywidgets/widgets/tests/test_send_state.py 2024-05-23 12:50:20.000000000 +0200 +++ new/ipywidgets-8.1.5/ipywidgets/widgets/tests/test_send_state.py 2024-08-22 10:53:13.000000000 +0200 @@ -3,7 +3,7 @@ from traitlets import Bool, Tuple, List -from .utils import setup, teardown, DummyComm +from .utils import setup from ..widget import Widget diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets/widgets/tests/test_set_state.py new/ipywidgets-8.1.5/ipywidgets/widgets/tests/test_set_state.py --- old/ipywidgets-8.1.3/ipywidgets/widgets/tests/test_set_state.py 2024-05-23 12:50:20.000000000 +0200 +++ new/ipywidgets-8.1.5/ipywidgets/widgets/tests/test_set_state.py 2024-08-22 10:53:13.000000000 +0200 @@ -6,7 +6,7 @@ from traitlets import Bool, Tuple, List, Instance, CFloat, CInt, Float, Int, TraitError, observe -from .utils import setup, teardown +from .utils import setup import ipywidgets from ipywidgets import Widget diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets/widgets/tests/utils.py new/ipywidgets-8.1.5/ipywidgets/widgets/tests/utils.py --- old/ipywidgets-8.1.3/ipywidgets/widgets/tests/utils.py 2024-05-23 12:50:20.000000000 +0200 +++ new/ipywidgets-8.1.5/ipywidgets/widgets/tests/utils.py 2024-08-22 10:53:13.000000000 +0200 @@ -12,7 +12,7 @@ NEW_COMM_PACKAGE = False import ipykernel.comm - +import pytest class DummyComm(): comm_id = 'a-b-c-d' @@ -87,10 +87,10 @@ setattr(Widget, attr, value) _widget_attrs.clear() [email protected](autouse=True) def setup(): setup_test_comm() - -def teardown(): + yield teardown_test_comm() def call_method(method, *args, **kwargs): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets/widgets/widget.py new/ipywidgets-8.1.5/ipywidgets/widgets/widget.py --- old/ipywidgets-8.1.3/ipywidgets/widgets/widget.py 2024-05-23 12:50:20.000000000 +0200 +++ new/ipywidgets-8.1.5/ipywidgets/widgets/widget.py 2024-08-22 10:53:14.000000000 +0200 @@ -684,7 +684,7 @@ """Dynamically add trait attributes to the Widget.""" super().add_traits(**traits) for name, trait in traits.items(): - if trait.get_metadata('sync'): + if 'sync' in trait.metadata: self.keys.append(name) self.send_state(name) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets/widgets/widget_selection.py new/ipywidgets-8.1.5/ipywidgets/widgets/widget_selection.py --- old/ipywidgets-8.1.3/ipywidgets/widgets/widget_selection.py 2024-05-23 12:50:20.000000000 +0200 +++ new/ipywidgets-8.1.5/ipywidgets/widgets/widget_selection.py 2024-08-22 11:28:40.000000000 +0200 @@ -478,6 +478,10 @@ _view_name = Unicode('RadioButtonsView').tag(sync=True) _model_name = Unicode('RadioButtonsModel').tag(sync=True) + orientation = CaselessStrEnum( + values=['horizontal', 'vertical'], default_value='vertical', + help="Vertical or horizontal.").tag(sync=True) + @register @doc_subst(_doc_snippets) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets.egg-info/PKG-INFO new/ipywidgets-8.1.5/ipywidgets.egg-info/PKG-INFO --- old/ipywidgets-8.1.3/ipywidgets.egg-info/PKG-INFO 2024-05-28 11:32:06.000000000 +0200 +++ new/ipywidgets-8.1.5/ipywidgets.egg-info/PKG-INFO 2024-08-22 14:19:20.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: ipywidgets -Version: 8.1.3 +Version: 8.1.5 Summary: Jupyter interactive widgets Home-page: http://jupyter.org Author: Jupyter Development Team @@ -29,8 +29,8 @@ Requires-Dist: comm>=0.1.3 Requires-Dist: ipython>=6.1.0 Requires-Dist: traitlets>=4.3.1 -Requires-Dist: widgetsnbextension~=4.0.11 -Requires-Dist: jupyterlab_widgets~=3.0.11 +Requires-Dist: widgetsnbextension~=4.0.12 +Requires-Dist: jupyterlab_widgets~=3.0.12 Provides-Extra: test Requires-Dist: jsonschema; extra == "test" Requires-Dist: ipykernel; extra == "test" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/ipywidgets.egg-info/requires.txt new/ipywidgets-8.1.5/ipywidgets.egg-info/requires.txt --- old/ipywidgets-8.1.3/ipywidgets.egg-info/requires.txt 2024-05-28 11:32:06.000000000 +0200 +++ new/ipywidgets-8.1.5/ipywidgets.egg-info/requires.txt 2024-08-22 14:19:20.000000000 +0200 @@ -1,8 +1,8 @@ comm>=0.1.3 ipython>=6.1.0 traitlets>=4.3.1 -widgetsnbextension~=4.0.11 -jupyterlab_widgets~=3.0.11 +widgetsnbextension~=4.0.12 +jupyterlab_widgets~=3.0.12 [test] jsonschema diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipywidgets-8.1.3/setup.cfg new/ipywidgets-8.1.5/setup.cfg --- old/ipywidgets-8.1.3/setup.cfg 2024-05-28 11:32:06.282020000 +0200 +++ new/ipywidgets-8.1.5/setup.cfg 2024-08-22 14:19:20.538261000 +0200 @@ -34,8 +34,8 @@ comm>=0.1.3 ipython>=6.1.0 traitlets>=4.3.1 - widgetsnbextension~=4.0.11 - jupyterlab_widgets~=3.0.11 + widgetsnbextension~=4.0.12 + jupyterlab_widgets~=3.0.12 [options.extras_require] test =
