Hello community,

here is the log from the commit of package python-ipywidgets for 
openSUSE:Factory checked in at 2019-08-13 13:10:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ipywidgets (Old)
 and      /work/SRC/openSUSE:Factory/.python-ipywidgets.new.9556 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ipywidgets"

Tue Aug 13 13:10:39 2019 rev:3 rq:722220 version:7.5.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ipywidgets/python-ipywidgets.changes      
2019-07-30 12:36:54.186953403 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-ipywidgets.new.9556/python-ipywidgets.changes
    2019-08-13 13:10:42.537609081 +0200
@@ -1,0 +2,13 @@
+Sun Aug 11 01:36:21 UTC 2019 - Todd R <[email protected]>
+
+- Update to 7.5.1
+  * Add $el to BoxView and ControllerView
+  * Fix setting a selection index when having duplicate values
+  * Fixup build of documentation
+  * Fix controls base dep
+  * Reduce count of deprecation warnings
+  * Update LayoutTemplate example
+  * update html manager
+  * js integrity
+
+-------------------------------------------------------------------

Old:
----
  ipywidgets-7.5.0.tar.gz

New:
----
  ipywidgets-7.5.1.tar.gz

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

Other differences:
------------------
++++++ python-ipywidgets.spec ++++++
--- /var/tmp/diff_new_pack.ia8IU1/_old  2019-08-13 13:10:43.421608599 +0200
+++ /var/tmp/diff_new_pack.ia8IU1/_new  2019-08-13 13:10:43.425608597 +0200
@@ -18,7 +18,7 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-ipywidgets
-Version:        7.5.0
+Version:        7.5.1
 Release:        0
 Summary:        IPython HTML widgets for Jupyter
 License:        BSD-3-Clause

++++++ ipywidgets-7.5.0.tar.gz -> ipywidgets-7.5.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipywidgets-7.5.0/PKG-INFO 
new/ipywidgets-7.5.1/PKG-INFO
--- old/ipywidgets-7.5.0/PKG-INFO       2019-07-02 01:03:33.000000000 +0200
+++ new/ipywidgets-7.5.1/PKG-INFO       2019-07-29 20:54:30.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: ipywidgets
-Version: 7.5.0
+Version: 7.5.1
 Summary: IPython HTML widgets for Jupyter
 Home-page: http://ipython.org
 Author: IPython Development Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipywidgets-7.5.0/docs/source/changelog.md 
new/ipywidgets-7.5.1/docs/source/changelog.md
--- old/ipywidgets-7.5.0/docs/source/changelog.md       2019-07-02 
00:54:05.000000000 +0200
+++ new/ipywidgets-7.5.1/docs/source/changelog.md       2019-07-29 
20:37:42.000000000 +0200
@@ -13,7 +13,12 @@
 - New `AppLayout` and `GridLayout` templates for positioning interactive 
widgets. [#2333](https://github.com/jupyter-widgets/ipywidgets/pull/2333)
 - New `FileUpload` widget allowing users to upload files from the browser. 
[#2258](https://github.com/jupyter-widgets/ipywidgets/pull/2258)
 - New `ComboBox` widget. 
[#2390](https://github.com/jupyter-widgets/ipywidgets/pull/2390)
-- JupyterLab CSS variables are now exposed by default even in the case of the 
classic notebook. 
[2418](https://github.com/jupyter-widgets/ipywidgets/pull/2418)
+- JupyterLab CSS variables are now exposed by default even in the case of the 
classic notebook. 
[#2418](https://github.com/jupyter-widgets/ipywidgets/pull/2418)
+
+### Updates for Widget Maintainers
+
+Custom widget maintainers will need to update their `@jupyter-widgets/base` 
dependency version to work in JupyterLab 1.0. For example, if you had a 
dependency on `@jupyter-widgets/base` version `^1.1`, update to `^1.1 || ^2` 
for your widget to work in classic notebook, JupyterLab 0.35, and JupyterLab 
1.0. See [#2472](https://github.com/jupyter-widgets/ipywidgets/pull/2472) for 
background.
+
 
 7.4
 ---
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipywidgets-7.5.0/docs/source/conf.py 
new/ipywidgets-7.5.1/docs/source/conf.py
--- old/ipywidgets-7.5.0/docs/source/conf.py    2019-07-02 00:54:05.000000000 
+0200
+++ new/ipywidgets-7.5.1/docs/source/conf.py    2019-07-29 20:37:42.000000000 
+0200
@@ -39,7 +39,7 @@
     'sphinx.ext.intersphinx',
     'sphinx.ext.mathjax',
     'nbsphinx',
-    'jupyter_sphinx.embed_widgets',
+    'jupyter_sphinx.execute',
     'IPython.sphinxext.ipython_console_highlighting',
 ]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/ipywidgets-7.5.0/docs/source/examples/Layout 
Templates.ipynb" "new/ipywidgets-7.5.1/docs/source/examples/Layout 
Templates.ipynb"
--- "old/ipywidgets-7.5.0/docs/source/examples/Layout Templates.ipynb"  
2019-07-02 00:54:05.000000000 +0200
+++ "new/ipywidgets-7.5.1/docs/source/examples/Layout Templates.ipynb"  
2019-07-29 20:37:42.000000000 +0200
@@ -10,6 +10,29 @@
    ]
   },
   {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Utils widgets\n",
+    "from ipywidgets import Button, Layout, jslink, IntText, IntSlider\n",
+    "\n",
+    "def create_expanded_button(description, button_style):\n",
+    "    return Button(description=description, button_style=button_style, 
layout=Layout(height='auto', width='auto'))\n",
+    "\n",
+    "top_left_button = create_expanded_button(\"Top left\", 'info')\n",
+    "top_right_button = create_expanded_button(\"Top right\", 'success')\n",
+    "bottom_left_button = create_expanded_button(\"Bottom left\", 'danger')\n",
+    "bottom_right_button = create_expanded_button(\"Bottom right\", 
'warning')\n",
+    "\n",
+    "top_left_text = IntText(description='Top left', 
layout=Layout(width='auto', height='auto'))\n",
+    "top_right_text = IntText(description='Top right', 
layout=Layout(width='auto', height='auto'))\n",
+    "bottom_left_slider = IntSlider(description='Bottom left', 
layout=Layout(width='auto', height='auto'))\n",
+    "bottom_right_slider = IntSlider(description='Bottom right', 
layout=Layout(width='auto', height='auto'))"
+   ]
+  },
+  {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
@@ -25,96 +48,53 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "834592dc51ca4ea0a905b8cbdbd43e8b",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "TwoByTwoLayout(children=(Button(description='Top left', 
layout=Layout(grid_area='top-left'), style=ButtonStyle…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "from ipywidgets import TwoByTwoLayout, Button, Layout\n",
-    "\n",
+    "from ipywidgets import TwoByTwoLayout\n",
     "\n",
-    "TwoByTwoLayout(top_left=Button(description=\"Top left\"),\n",
-    "               top_right=Button(description=\"Top right\"),\n",
-    "               bottom_left=Button(description=\"Bottom left\"),\n",
-    "               bottom_right=Button(description=\"Bottom right\"))"
+    "TwoByTwoLayout(top_left=top_left_button,\n",
+    "               top_right=top_right_button,\n",
+    "               bottom_left=bottom_left_button,\n",
+    "               bottom_right=bottom_right_button)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "If you don't define a widget for some of the slots, the layout will 
automatically re-configure itself by merging neighbouring cells (to avoid it, 
you can pass `merge=False` in the argument)."
+    "If you don't define a widget for some of the slots, the layout will 
automatically re-configure itself by merging neighbouring cells"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "TwoByTwoLayout(top_left=top_left_button,\n",
+    "               bottom_left=bottom_left_button,\n",
+    "               bottom_right=bottom_right_button)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "c9a9c0c068fb4e8eb8e74e362d9979fc",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "TwoByTwoLayout(children=(Button(description='Top left', 
layout=Layout(grid_area='top-left'), style=ButtonStyle…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
    "source": [
-    "TwoByTwoLayout(top_left=Button(description=\"Top left\"),\n",
-    "               bottom_left=Button(description=\"Bottom left\"),\n",
-    "               bottom_right=Button(description=\"Bottom right\",\n",
-    "                                   layout=Layout(height='auto'))\n",
-    "              )"
+    "You can pass `merge=False` in the argument of the `TwoByTwoLayout` 
constructor if you don't want this behavior"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "e998151521874ecaa12a73b46e92f31a",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "TwoByTwoLayout(children=(Button(description='Top left', 
layout=Layout(grid_area='top-left'), style=ButtonStyle…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "TwoByTwoLayout(top_left=Button(description=\"Top left\"),\n",
-    "               bottom_left=Button(description=\"Bottom left\"),\n",
-    "               bottom_right=Button(description=\"Bottom right\",\n",
-    "                                   layout=Layout(height='auto')),\n",
-    "               merge=False\n",
-    "              )"
+    "TwoByTwoLayout(top_left=top_left_button,\n",
+    "               bottom_left=bottom_left_button,\n",
+    "               bottom_right=bottom_right_button,\n",
+    "               merge=False)"
    ]
   },
   {
@@ -126,71 +106,46 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "layout_2x2 = TwoByTwoLayout(top_left=top_left_button,\n",
+    "                            bottom_left=bottom_left_button,\n",
+    "                            bottom_right=bottom_right_button)\n",
+    "layout_2x2"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "67c298023e584e6daaf2e5c9dcbaac4d",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "TwoByTwoLayout(children=(Button(description='Top left', 
layout=Layout(grid_area='top-left'), style=ButtonStyle…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "layout_2x2 = TwoByTwoLayout(top_left=Button(description=\"Top left\"),\n",
-    "                            bottom_left=Button(description=\"Bottom 
left\"),\n",
-    "                            bottom_right=Button(description=\"Bottom 
right\"))\n",
-    "                            \n",
-    "layout_2x2.top_right = Button(description=\"Top right\")\n",
-    "display(layout_2x2)"
+    "layout_2x2.top_right = top_right_button"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "You can also use the [linking feature](Widget 
Events.ipynb#Linking-Widgets) of widgets to update some property of a widget 
based on another widget:"
+    "You can also use the linking feature of widgets to update some property 
of a widget based on another widget:"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "d9083e84c3094c8a8dc5128fa6c59b8a",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "TwoByTwoLayout(children=(IntText(value=25, 
layout=Layout(grid_area='top-left')), IntText(value=0, layout=Layou…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "from ipywidgets import jslink, IntText, IntSlider\n",
-    "\n",
-    "app = TwoByTwoLayout(top_left=IntText(), top_right=IntText(),\n",
-    "                     bottom_left=IntSlider(), 
bottom_right=IntSlider())\n",
+    "app = TwoByTwoLayout(top_left=top_left_text, top_right=top_right_text,\n",
+    "                     bottom_left=bottom_left_slider, 
bottom_right=bottom_right_slider)\n",
     "                     \n",
     "link_left = jslink((app.top_left, 'value'), (app.bottom_left, 
'value'))\n",
     "link_right = jslink((app.top_right, 'value'), (app.bottom_right, 
'value'))\n",
     "app.bottom_right.value = 30\n",
     "app.top_left.value = 25\n",
-    "display(app)"
+    "app"
    ]
   },
   {
@@ -202,7 +157,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -212,7 +167,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -232,49 +187,34 @@
     "ax_y = bq.Axis(scale=y_sc, tick_format='0.2f', orientation='vertical')\n",
     "\n",
     "fig = bq.Figure(marks=[bar], axes=[ax_x, ax_y], padding_x=0.025, 
padding_y=0.025,\n",
-    "                layout=Layout(width='auto', height='100%'))"
+    "                layout=Layout(width='auto', height='90%'))"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
-   "metadata": {
-    "scrolled": true
-   },
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "827ad50fbf01496e9b95d105428af1c8",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "TwoByTwoLayout(children=(FloatSlider(value=0.0, description='Min: ', 
layout=Layout(grid_area='top-left', heigh…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
    "source": [
     "from ipywidgets import FloatSlider\n",
     "\n",
     "max_slider = FloatSlider(min=0, max=10, default_value=2, 
description=\"Max: \",\n",
-    "                         layout=Layout(width='300px', height='20px'))\n",
+    "                         layout=Layout(width='auto', height='auto'))\n",
     "min_slider = FloatSlider(min=-1, max=10, description=\"Min: \",\n",
-    "                         layout=Layout(width='300px', height='20px'))\n",
+    "                         layout=Layout(width='auto', height='auto'))\n",
     "app = TwoByTwoLayout(top_left=min_slider,\n",
     "                     bottom_left=max_slider, \n",
     "                     bottom_right=fig,\n",
-    "                     align_items=\"center\",\n",
-    "                     width='80%', height='300px')\n",
+    "                     align_items=\"center\", \n",
+    "                     height='700px')\n",
+    "\n",
     "jslink((y_sc, 'max'), (max_slider, 'value'))\n",
     "jslink((y_sc, 'min'), (min_slider, 'value'))\n",
     "jslink((min_slider, 'max'), (max_slider, 'value'))\n",
     "jslink((max_slider, 'min'), (min_slider, 'value'))\n",
+    "\n",
     "max_slider.value = 1.5\n",
-    "display(app)"
+    "app"
    ]
   },
   {
@@ -293,7 +233,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -302,41 +242,28 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "714b034d17384ad7a41febaaae4fdaa0",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(description='Header', 
layout=Layout(grid_area='header', height='auto', width='auto'…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "header        = Button(description=\"Header\",\n",
-    "                       layout=Layout(width=\"auto\", height=\"auto\"))\n",
-    "left_sidebar  = Button(description=\"Left Sidebar\",\n",
-    "                       layout=Layout(width=\"auto\", height=\"auto\"))\n",
-    "center        = Button(description=\"Center\",\n",
-    "                       layout=Layout(width=\"auto\", height=\"auto\"))\n",
-    "right_sidebar = Button(description=\"Right Sidebar\", \n",
-    "                       layout=Layout(width=\"auto\", height=\"auto\"))\n",
-    "footer        = Button(description=\"Footer\", \n",
-    "                       layout=Layout(width=\"auto\", height=\"auto\"))\n",
-    "\n",
-    "AppLayout(header=header,\n",
-    "          left_sidebar=left_sidebar,\n",
-    "          center=center,\n",
-    "          right_sidebar=right_sidebar,\n",
-    "          footer=footer)"
+    "header_button = create_expanded_button('Header', 'success')\n",
+    "left_button = create_expanded_button('Left', 'info')\n",
+    "center_button = create_expanded_button('Center', 'warning')\n",
+    "right_button = create_expanded_button('Right', 'info')\n",
+    "footer_button = create_expanded_button('Footer', 'success')"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "AppLayout(header=header_button,\n",
+    "          left_sidebar=left_button,\n",
+    "          center=center_button,\n",
+    "          right_sidebar=right_button,\n",
+    "          footer=footer_button)"
    ]
   },
   {
@@ -348,208 +275,93 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "e11ddd4c7e724a9f88c0ad290adcac14",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(layout=Layout(grid_area='center', 
height='auto', width='auto'), style=ButtonStyle()…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "header        = Button(layout=Layout(width=\"auto\", height=\"auto\"))\n",
-    "left_sidebar  = Button(layout=Layout(width=\"auto\", height=\"auto\"))\n",
-    "center        = Button(layout=Layout(width=\"auto\", height=\"auto\"))\n",
-    "right_sidebar = Button(layout=Layout(width=\"auto\", height=\"auto\"))\n",
-    "footer        = Button(layout=Layout(width=\"auto\", height=\"auto\"))\n",
-    "\n",
     "AppLayout(header=None,\n",
     "          left_sidebar=None,\n",
-    "          center=center,\n",
+    "          center=center_button,\n",
     "          right_sidebar=None,\n",
     "          footer=None)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "c03ea61df13e409db3ee2dc0bee4a5a6",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(layout=Layout(grid_area='header', 
height='auto', width='auto'), style=ButtonStyle()…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "AppLayout(header=header,\n",
-    "          left_sidebar=left_sidebar,\n",
-    "          center=center,\n",
-    "          right_sidebar=right_sidebar,\n",
+    "AppLayout(header=header_button,\n",
+    "          left_sidebar=left_button,\n",
+    "          center=center_button,\n",
+    "          right_sidebar=right_button,\n",
     "          footer=None)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "e565bcd93da842f895edff893e23b491",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(layout=Layout(grid_area='left-sidebar', 
height='auto', width='auto'), style=ButtonS…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "AppLayout(header=None,\n",
-    "          left_sidebar=left_sidebar,\n",
-    "          center=center,\n",
-    "          right_sidebar=right_sidebar,\n",
+    "          left_sidebar=left_button,\n",
+    "          center=center_button,\n",
+    "          right_sidebar=right_button,\n",
     "          footer=None)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "f9efd1e549084ec48e596f568112dd31",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(layout=Layout(grid_area='header', 
height='auto', width='auto'), style=ButtonStyle()…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "AppLayout(header=header,\n",
-    "          left_sidebar=left_sidebar,\n",
-    "          center=center,\n",
+    "AppLayout(header=header_button,\n",
+    "          left_sidebar=left_button,\n",
+    "          center=center_button,\n",
     "          right_sidebar=None,\n",
-    "          footer=footer)"
+    "          footer=footer_button)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "529221aa094440cf8e13aa433e85e8f4",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(layout=Layout(grid_area='header', 
height='auto', width='auto'), style=ButtonStyle()…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "AppLayout(header=header,\n",
+    "AppLayout(header=header_button,\n",
     "          left_sidebar=None,\n",
-    "          center=center,\n",
-    "          right_sidebar=right_sidebar,\n",
-    "          footer=footer)"
+    "          center=center_button,\n",
+    "          right_sidebar=right_button,\n",
+    "          footer=footer_button)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
-   "metadata": {
-    "scrolled": false
-   },
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "e4e83f1bdb7d4786a71e0a2269ac5f59",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(layout=Layout(grid_area='header', 
height='auto', width='auto'), style=ButtonStyle()…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
    "source": [
-    "AppLayout(header=header,\n",
+    "AppLayout(header=header_button,\n",
     "          left_sidebar=None,\n",
-    "          center=center,\n",
+    "          center=center_button,\n",
     "          right_sidebar=None,\n",
-    "          footer=footer)"
+    "          footer=footer_button)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 17,
-   "metadata": {
-    "scrolled": false
-   },
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "19847fa4c2c94f40b470d444abad1e9b",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(layout=Layout(grid_area='header', 
height='auto', width='auto'), style=ButtonStyle()…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
    "source": [
-    "AppLayout(header=header,\n",
-    "          left_sidebar=left_sidebar,\n",
+    "AppLayout(header=header_button,\n",
+    "          left_sidebar=left_button,\n",
     "          center=None,\n",
-    "          right_sidebar=right_sidebar,\n",
-    "          footer=footer)"
+    "          right_sidebar=right_button,\n",
+    "          footer=footer_button)"
    ]
   },
   {
@@ -561,32 +373,15 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
-   "metadata": {
-    "scrolled": true
-   },
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "6f343ee4f1394f5c9c2d1f0272e2170b",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(layout=Layout(grid_area='header', 
height='auto', width='auto'), style=ButtonStyle()…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
    "source": [
-    "AppLayout(header=header,\n",
-    "          left_sidebar=left_sidebar,\n",
-    "          center=center,\n",
-    "          right_sidebar=right_sidebar,\n",
-    "          footer=footer,\n",
+    "AppLayout(header=header_button,\n",
+    "          left_sidebar=left_button,\n",
+    "          center=center_button,\n",
+    "          right_sidebar=right_button,\n",
+    "          footer=footer_button,\n",
     "          pane_widths=[3, 3, 1],\n",
     "          pane_heights=[1, 5, '60px'])"
    ]
@@ -609,24 +404,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "3644fcf399a1494a8743b47bc4d1dba9",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "GridspecLayout(children=(Button(layout=Layout(grid_area='widget001', 
height='auto', width='auto'), style=Butto…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "from ipywidgets import GridspecLayout\n",
     "\n",
@@ -634,7 +414,7 @@
     "\n",
     "for i in range(4):\n",
     "    for j in range(3):\n",
-    "        grid[i, j] = Button(layout=Layout(width='auto', 
height='auto'))\n",
+    "        grid[i, j] = create_expanded_button('Button {} - {}'.format(i, 
j), 'warning')\n",
     "grid"
    ]
   },
@@ -647,32 +427,15 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
-   "metadata": {
-    "scrolled": true
-   },
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "65e2d6841e234c6483f320717bcef6db",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "GridspecLayout(children=(Button(layout=Layout(grid_area='widget001', 
height='auto', width='auto'), style=Butto…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
    "source": [
     "grid = GridspecLayout(4, 3, height='300px')\n",
-    "grid[:3, 1:] = Button(layout=Layout(width='auto', height='auto'))\n",
-    "grid[:, 0] = Button(layout=Layout(width='auto', height='auto'))\n",
-    "grid[3, 1] = Button(layout=Layout(width='auto', height='auto'))\n",
-    "grid[3, 2] = Button(layout=Layout(width='auto', height='auto'))\n",
+    "grid[:3, 1:] = create_expanded_button('One', 'success')\n",
+    "grid[:, 0] = create_expanded_button('Two', 'info')\n",
+    "grid[3, 1] = create_expanded_button('Three', 'warning')\n",
+    "grid[3, 2] = create_expanded_button('Four', 'danger')\n",
     "grid"
    ]
   },
@@ -685,36 +448,29 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "44c719d7539a484eb3714c970b4568e3",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "GridspecLayout(children=(Button(layout=Layout(grid_area='widget001', 
height='auto', width='auto'), style=Butto…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "grid = GridspecLayout(4, 3, height='300px')\n",
-    "grid[:3, 1:] = Button(layout=Layout(width='auto', height='auto'))\n",
-    "grid[:, 0] = Button(layout=Layout(width='auto', height='auto'))\n",
-    "grid[3, 1] = Button(layout=Layout(width='auto', height='auto'))\n",
-    "grid[3, 2] = Button(layout=Layout(width='auto', height='auto'))\n",
+    "grid[:3, 1:] = create_expanded_button('One', 'success')\n",
+    "grid[:, 0] = create_expanded_button('Two', 'info')\n",
+    "grid[3, 1] = create_expanded_button('Three', 'warning')\n",
+    "grid[3, 2] = create_expanded_button('Four', 'danger')\n",
     "\n",
-    "grid[0, 0].description = \"I am a Button\"\n",
     "grid"
    ]
   },
   {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "grid[0, 0].description = \"I am the blue one\""
+   ]
+  },
+  {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
@@ -731,37 +487,45 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "6a685dc9bd41492e95ffa9b748b56396",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "GridspecLayout(children=(Button(layout=Layout(grid_area='widget001', 
height='auto', width='auto'), style=Butto…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "grid = GridspecLayout(4, 3, height='300px')\n",
-    "grid[:3, 1:] = Button(layout=Layout(width='auto', height='auto'))\n",
-    "grid[:, 0] = Button(layout=Layout(width='auto', height='auto'))\n",
-    "grid[3, 1] = Button(layout=Layout(width='auto', height='auto'))\n",
-    "grid[3, 2] = Button(layout=Layout(width='auto', height='auto'))\n",
+    "grid[:3, 1:] = create_expanded_button('One', 'info')\n",
+    "grid[:, 0] = create_expanded_button('Two', 'info')\n",
+    "grid[3, 1] = create_expanded_button('Three', 'info')\n",
+    "grid[3, 2] = create_expanded_button('Four', 'info')\n",
     "\n",
-    "grid[0, 0] = Button(description=\"New button\",\n",
-    "                    layout=Layout(width='auto', height='auto'))\n",
     "grid"
    ]
   },
   {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "grid[3, 1] = create_expanded_button('New button!!', 'danger')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**Note**: Slices are supported in this context."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "grid[:3, 1:] = create_expanded_button('I am new too!!!!!', 'warning')"
+   ]
+  },
+  {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
@@ -784,24 +548,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "1a10a8ba419b4a988b3a3d394086609c",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "GridspecLayout(children=(Figure(fig_margin={'top': 0, 'bottom': 0, 
'left': 0, 'right': 0}, layout=Layout(grid_…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "import bqplot as bq\n",
     "import numpy as np\n",
@@ -858,29 +607,14 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 24,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "c9aed2be34724a48a70c58d1fbfc3b4e",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(layout=Layout(grid_area='left-sidebar', 
height='auto', width='auto'), style=ButtonS…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "AppLayout(header=None,\n",
-    "          left_sidebar=left_sidebar,\n",
-    "          center=center,\n",
-    "          right_sidebar=right_sidebar,\n",
+    "          left_sidebar=left_button,\n",
+    "          center=center_button,\n",
+    "          right_sidebar=right_button,\n",
     "          footer=None,\n",
     "          height=\"200px\", width=\"50%\")"
    ]
@@ -894,29 +628,14 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 25,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "561ae8a344474df29a4483f4d5d40fe5",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "AppLayout(children=(Button(layout=Layout(grid_area='left-sidebar', 
height='auto', width='auto'), style=ButtonS…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "AppLayout(header=None,\n",
-    "          left_sidebar=left_sidebar,\n",
-    "          center=center,\n",
-    "          right_sidebar=right_sidebar,\n",
+    "          left_sidebar=left_button,\n",
+    "          center=center_button,\n",
+    "          right_sidebar=right_button,\n",
     "          footer=None,\n",
     "          height=\"200px\", width=\"50%\",\n",
     "          grid_gap=\"10px\")"
@@ -931,28 +650,13 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 26,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "e413ac0b82b04291b667cd6b9c6be9cd",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "TwoByTwoLayout(children=(Button(layout=Layout(grid_area='top-left'), 
style=ButtonStyle()), Button(layout=Layou…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
     "from ipywidgets import Text, HTML\n",
-    "TwoByTwoLayout(top_left=Button(), top_right=Button(),\n",
-    "               bottom_right=Button(),\n",
+    "TwoByTwoLayout(top_left=top_left_button, top_right=top_right_button,\n",
+    "               bottom_right=bottom_right_button,\n",
     "               justify_items='center',\n",
     "               width=\"50%\",\n",
     "               align_items='center')"
@@ -967,27 +671,12 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 27,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "application/vnd.jupyter.widget-view+json": {
-       "model_id": "55795dcb7daa4f03aec5eb235c540b08",
-       "version_major": 2,
-       "version_minor": 0
-      },
-      "text/plain": [
-       "TwoByTwoLayout(children=(Button(layout=Layout(grid_area='top-left'), 
style=ButtonStyle()), Button(layout=Layou…"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "TwoByTwoLayout(top_left=Button(), top_right=Button(),\n",
-    "               bottom_right=Button(),\n",
+    "TwoByTwoLayout(top_left=top_left_button, top_right=top_right_button,\n",
+    "               bottom_right=bottom_right_button,\n",
     "               justify_items='center',\n",
     "               width=\"50%\",\n",
     "               align_items='top')"
@@ -997,24 +686,12 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## Example"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
+    "## Example\n",
+    "\n",
     "In this [notebook](Layout%20Example.ipynb) you will find a full example 
using `AppLayout`.\n",
     "\n",
     "![](images/applayout-weather.png)"
    ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
   }
  ],
  "metadata": {
@@ -1033,7 +710,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.2"
+   "version": "3.7.3"
   },
   "widgets": {
    "application/vnd.jupyter.widget-state+json": {
@@ -125200,5 +124877,5 @@
   }
  },
  "nbformat": 4,
- "nbformat_minor": 2
+ "nbformat_minor": 4
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/ipywidgets-7.5.0/docs/source/examples/Widget 
List.ipynb" "new/ipywidgets-7.5.1/docs/source/examples/Widget List.ipynb"
--- "old/ipywidgets-7.5.0/docs/source/examples/Widget List.ipynb"       
2019-07-02 00:54:05.000000000 +0200
+++ "new/ipywidgets-7.5.1/docs/source/examples/Widget List.ipynb"       
2019-07-29 20:37:42.000000000 +0200
@@ -1582,6 +1582,25 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
+    "### GridBox\n",
+    "\n",
+    "This box uses the HTML Grid specification to lay out its children in two 
dimensional grid. The example below lays out the 8 items inside in 3 columns 
and as many rows as needed to accommodate the items."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "items = [widgets.Label(str(i)) for i in range(8)]\n",
+    "widgets.GridBox(items, 
layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
     "### Accordion"
    ]
   },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipywidgets-7.5.0/ipywidgets/_version.py 
new/ipywidgets-7.5.1/ipywidgets/_version.py
--- old/ipywidgets-7.5.0/ipywidgets/_version.py 2019-07-02 01:02:48.000000000 
+0200
+++ new/ipywidgets-7.5.1/ipywidgets/_version.py 2019-07-29 20:53:32.000000000 
+0200
@@ -1,7 +1,7 @@
 # Copyright (c) Jupyter Development Team.
 # Distributed under the terms of the Modified BSD License.
 
-version_info = (7, 5, 0, 'final', 0)
+version_info = (7, 5, 1, 'final', 0)
 
 _specifier_ = {'alpha': 'a', 'beta': 'b', 'candidate': 'rc', 'final': ''}
 
@@ -14,4 +14,4 @@
 __jupyter_widgets_controls_version__ = '1.5.0'
 
 # A compatible @jupyter-widgets/html-manager npm package semver range
-__html_manager_version__ = '^0.14.0'
+__html_manager_version__ = '^0.18.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ipywidgets-7.5.0/ipywidgets/widgets/tests/test_widget_selection.py 
new/ipywidgets-7.5.1/ipywidgets/widgets/tests/test_widget_selection.py
--- old/ipywidgets-7.5.0/ipywidgets/widgets/tests/test_widget_selection.py      
2019-07-02 00:54:05.000000000 +0200
+++ new/ipywidgets-7.5.1/ipywidgets/widgets/tests/test_widget_selection.py      
2019-07-29 20:37:42.000000000 +0200
@@ -65,3 +65,32 @@
         assert select.value == 4
         assert select.label == '4'
         assert observations == [0]
+
+    def test_duplicate(self):
+        select = Select(options=['first', 1, 'dup', 'dup'])
+        observations = []
+        def f(change):
+            observations.append(change.new)
+        select.observe(f, 'index')
+        select.index = 3
+        assert select.index == 3
+        assert select.value == 'dup'
+        assert select.label == 'dup'
+        assert observations == [3]
+        select.index = 2
+        assert select.index == 2
+        assert select.value == 'dup'
+        assert select.label == 'dup'
+        assert observations == [3, 2]
+        select.index = 0
+        assert select.index == 0
+        assert select.value == 'first'
+        assert select.label == 'first'
+        assert observations == [3, 2, 0]
+
+        # picks the first matching value
+        select.value = 'dup'
+        assert select.index == 2
+        assert select.value == 'dup'
+        assert select.label == 'dup'
+        assert observations == [3, 2, 0, 2]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipywidgets-7.5.0/ipywidgets/widgets/widget.py 
new/ipywidgets-7.5.1/ipywidgets/widgets/widget.py
--- old/ipywidgets-7.5.0/ipywidgets/widgets/widget.py   2019-07-02 
00:54:05.000000000 +0200
+++ new/ipywidgets-7.5.1/ipywidgets/widgets/widget.py   2019-07-29 
20:37:42.000000000 +0200
@@ -8,12 +8,14 @@
 """
 
 from contextlib import contextmanager
-import collections
-import sys
+try:
+    from collections.abc import Iterable
+except ImportError:
+    # Python 2.7
+    from collections import Iterable
 
 from IPython.core.getipython import get_ipython
 from ipykernel.comm import Comm
-from traitlets.utils.importstring import import_item
 from traitlets import (
     HasTraits, Unicode, Dict, Instance, List, Int, Set, Bytes, observe, 
default, Container,
     Undefined)
@@ -21,7 +23,7 @@
 from IPython.display import display
 from json import loads as jsonloads, dumps as jsondumps
 
-from base64 import standard_b64decode, standard_b64encode
+from base64 import standard_b64encode
 
 from .._version import __protocol_version__, __jupyter_widgets_base_version__
 PROTOCOL_VERSION_MAJOR = __protocol_version__.split('.')[0]
@@ -505,7 +507,7 @@
             keys = self.keys
         elif isinstance(key, string_types):
             keys = [key]
-        elif isinstance(key, collections.Iterable):
+        elif isinstance(key, Iterable):
             keys = key
         else:
             raise ValueError("key must be a string, an iterable of keys, or 
None")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipywidgets-7.5.0/ipywidgets/widgets/widget_link.py 
new/ipywidgets-7.5.1/ipywidgets/widgets/widget_link.py
--- old/ipywidgets-7.5.0/ipywidgets/widgets/widget_link.py      2019-07-02 
00:54:05.000000000 +0200
+++ new/ipywidgets-7.5.1/ipywidgets/widgets/widget_link.py      2019-07-29 
20:37:42.000000000 +0200
@@ -29,7 +29,7 @@
         # and throw it away in a new, less informative TraitError
         if trait is None:
             raise TypeError("No such trait: %s" % trait_repr)
-        elif not trait.get_metadata('sync'):
+        elif not trait.metadata.get('sync'):
             raise TypeError("%s cannot be synced" % trait_repr)
         return value
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ipywidgets-7.5.0/ipywidgets/widgets/widget_selection.py 
new/ipywidgets-7.5.1/ipywidgets/widgets/widget_selection.py
--- old/ipywidgets-7.5.0/ipywidgets/widgets/widget_selection.py 2019-07-02 
00:54:05.000000000 +0200
+++ new/ipywidgets-7.5.1/ipywidgets/widgets/widget_selection.py 2019-07-29 
20:37:42.000000000 +0200
@@ -244,7 +244,12 @@
 
     @observe('value')
     def _propagate_value(self, change):
-        index = self._options_values.index(change.new) if change.new is not 
None else None
+        if change.new is None:
+            index = None
+        elif self.index is not None and self._options_values[self.index] == 
change.new:
+            index = self.index
+        else:
+            index = self._options_values.index(change.new)
         if self.index != index:
             self.index = index
 
@@ -256,7 +261,12 @@
 
     @observe('label')
     def _propagate_label(self, change):
-        index = self._options_labels.index(change.new) if change.new is not 
None else None
+        if change.new is None:
+            index = None
+        elif self.index is not None and self._options_labels[self.index] == 
change.new:
+            index = self.index
+        else:
+            index = self._options_labels.index(change.new)
         if self.index != index:
             self.index = index
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipywidgets-7.5.0/ipywidgets/widgets/widget_upload.py 
new/ipywidgets-7.5.1/ipywidgets/widgets/widget_upload.py
--- old/ipywidgets-7.5.0/ipywidgets/widgets/widget_upload.py    2019-07-02 
00:54:05.000000000 +0200
+++ new/ipywidgets-7.5.1/ipywidgets/widgets/widget_upload.py    2019-07-29 
20:37:42.000000000 +0200
@@ -6,8 +6,9 @@
 Represents a file upload button.
 """
 
-import zlib
-from traitlets import observe, validate, default, Unicode, Dict, List, Int, 
Bool, Bytes, TraitError, CaselessStrEnum
+from traitlets import (
+    observe, default, Unicode, Dict, List, Int, Bool, Bytes, CaselessStrEnum
+)
 
 from .widget_description import DescriptionWidget
 from .valuewidget import ValueWidget
@@ -25,7 +26,7 @@
     return output
 
 
-@register()
+@register
 class FileUpload(DescriptionWidget, ValueWidget, CoreWidget):
     """
     Upload file(s) from browser to Python kernel as bytes
@@ -42,8 +43,10 @@
         values=['primary', 'success', 'info', 'warning', 'danger', ''], 
default_value='',
         help="""Use a predefined styling for the button.""").tag(sync=True)
     style = InstanceDict(ButtonStyle).tag(sync=True, **widget_serialization)
-    metadata = List(Dict, help='List of file metadata').tag(sync=True)
-    data = List(Bytes, help='List of file content (bytes)').tag(sync=True, 
from_json=content_from_json)
+    metadata = List(Dict(), help='List of file metadata').tag(sync=True)
+    data = List(Bytes(), help='List of file content (bytes)').tag(
+        sync=True, from_json=content_from_json
+    )
     error = Unicode(help='Error message').tag(sync=True)
     value = Dict(read_only=True)
 

++++++ ipywidgets.pdf ++++++
(binary differes)

++++++ ipywidgets.zip ++++++
Binary files /var/tmp/diff_new_pack.ia8IU1/_old and 
/var/tmp/diff_new_pack.ia8IU1/_new differ


Reply via email to