Hello community,
here is the log from the commit of package python-jupyter_ipywidgets for
openSUSE:Factory checked in at 2015-10-14 16:45:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_ipywidgets (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_ipywidgets.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_ipywidgets"
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-jupyter_ipywidgets/python-jupyter_ipywidgets.changes
2015-09-30 05:50:36.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.python-jupyter_ipywidgets.new/python-jupyter_ipywidgets.changes
2015-10-14 16:45:15.000000000 +0200
@@ -1,0 +2,11 @@
+Mon Oct 12 13:47:20 UTC 2015 - [email protected]
+
+- Update to 4.0.3
+ * Provide link to example notebooks in the README.md
+ * Correct some bugs in the code
+ * Add __version__ to ipywidgets package
+ * Call correct superclass in AccordionView
+ * Make long description part of setup.py
+ * Remove README.md from manifest
+
+-------------------------------------------------------------------
Old:
----
ipywidgets-4.0.2.tar.gz
New:
----
ipywidgets-4.0.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_ipywidgets.spec ++++++
--- /var/tmp/diff_new_pack.mtI8To/_old 2015-10-14 16:45:15.000000000 +0200
+++ /var/tmp/diff_new_pack.mtI8To/_new 2015-10-14 16:45:15.000000000 +0200
@@ -17,7 +17,7 @@
Name: python-jupyter_ipywidgets
-Version: 4.0.2
+Version: 4.0.3
Release: 0
Summary: IPython HTML widgets for Jupyter
License: BSD-3-Clause
++++++ ipywidgets-4.0.2.tar.gz -> ipywidgets-4.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/PKG-INFO
new/ipywidgets-4.0.3/PKG-INFO
--- old/ipywidgets-4.0.2/PKG-INFO 2015-08-04 00:18:39.000000000 +0200
+++ new/ipywidgets-4.0.3/PKG-INFO 2015-09-21 17:49:07.000000000 +0200
@@ -1,12 +1,33 @@
Metadata-Version: 1.1
Name: ipywidgets
-Version: 4.0.2
+Version: 4.0.3
Summary: IPython HTML widgets for Jupyter
Home-page: http://ipython.org
Author: IPython Development Team
Author-email: [email protected]
License: BSD
-Description: UNKNOWN
+Description:
+ .. image:: https://img.shields.io/pypi/v/ipywidgets.svg
+ :target: https://pypi.python.org/pypi/ipywidgets/
+ :alt: Version Number
+
+ .. image:: https://img.shields.io/pypi/dm/ipywidgets.svg
+ :target: https://pypi.python.org/pypi/ipywidgets/
+ :alt: Number of PyPI downloads
+
+ Interactive HTML Widgets
+ ========================
+
+ Interactive HTML widgets for Jupyter notebooks and the IPython kernel.
+
+ Usage
+ =====
+
+ .. code-block:: python
+
+ from ipywidgets import IntSlider
+ IntSlider()
+
Keywords: Interactive,Interpreter,Shell,Web
Platform: Linux
Platform: Mac OS X
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/README.md
new/ipywidgets-4.0.3/README.md
--- old/ipywidgets-4.0.2/README.md 2015-07-30 18:34:34.000000000 +0200
+++ new/ipywidgets-4.0.3/README.md 2015-09-15 01:32:04.000000000 +0200
@@ -2,7 +2,7 @@
[](https://travis-ci.org/ipython/ipywidgets)
[](https://gitter.im/ipython/ipywidgets?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-Interactive HTML widgets for Jupyter notebooks and the IPython kernel.
+[Interactive HTML
widgets](https://github.com/ipython/ipywidgets/blob/master/examples/Index.ipynb)
for Jupyter notebooks and the IPython kernel.
## Install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/examples/Controller.ipynb
new/ipywidgets-4.0.3/examples/Controller.ipynb
--- old/ipywidgets-4.0.2/examples/Controller.ipynb 1970-01-01
01:00:00.000000000 +0100
+++ new/ipywidgets-4.0.3/examples/Controller.ipynb 2015-09-15
01:32:04.000000000 +0200
@@ -0,0 +1,90 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Using Game Controllers in the Jupyter Notebook"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The controller widget automatically detects connected gamepad and
joysticks"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "from ipywidgets import Controller"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "Controller()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "collapsed": false
+ },
+ "source": [
+ "In the case where multiple controllers are connected, you may address the
controllers by index"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [],
+ "source": [
+ "Controller(index=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.4.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/examples/Image Processing.ipynb
new/ipywidgets-4.0.3/examples/Image Processing.ipynb
--- old/ipywidgets-4.0.2/examples/Image Processing.ipynb 2015-08-03
22:45:16.000000000 +0200
+++ new/ipywidgets-4.0.3/examples/Image Processing.ipynb 2015-09-15
01:32:04.000000000 +0200
@@ -69,7 +69,7 @@
"outputs": [],
"source": [
"def edit_image(image, sigma=0.1, r=1.0, g=1.0, b=1.0):\n",
- " new_image = filter.gaussian_filter(image, sigma=sigma,
multichannel=True)\n",
+ " new_image = filters.gaussian_filter(image, sigma=sigma,
multichannel=True)\n",
" new_image[:,:,0] = r*new_image[:,:,0]\n",
" new_image[:,:,1] = g*new_image[:,:,1]\n",
" new_image[:,:,2] = b*new_image[:,:,2]\n",
@@ -127,7 +127,7 @@
"\n",
"@interact\n",
"def edit_image(image: fixed(i), sigma:(0.0,10.0,0.1)=0.1, r:lims=1.0,
g:lims=1.0, b:lims=1.0):\n",
- " new_image = filter.gaussian_filter(image, sigma=sigma,
multichannel=True)\n",
+ " new_image = filters.gaussian_filter(image, sigma=sigma,
multichannel=True)\n",
" new_image[:,:,0] = r*new_image[:,:,0]\n",
" new_image[:,:,1] = g*new_image[:,:,1]\n",
" new_image[:,:,2] = b*new_image[:,:,2]\n",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/examples/Widget Events.ipynb
new/ipywidgets-4.0.3/examples/Widget Events.ipynb
--- old/ipywidgets-4.0.2/examples/Widget Events.ipynb 2015-08-03
22:45:16.000000000 +0200
+++ new/ipywidgets-4.0.3/examples/Widget Events.ipynb 2015-09-15
01:32:04.000000000 +0200
@@ -99,7 +99,7 @@
}
},
"source": [
- "### on_sumbit"
+ "### on_submit"
]
},
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/ipywidgets/__init__.py
new/ipywidgets-4.0.3/ipywidgets/__init__.py
--- old/ipywidgets-4.0.2/ipywidgets/__init__.py 2015-08-03 19:04:47.000000000
+0200
+++ new/ipywidgets-4.0.3/ipywidgets/__init__.py 2015-09-15 01:32:04.000000000
+0200
@@ -1,6 +1,7 @@
import os
from IPython import get_ipython
+from ._version import version_info, __version__
from .widgets import *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/ipywidgets/_version.py
new/ipywidgets-4.0.3/ipywidgets/_version.py
--- old/ipywidgets-4.0.2/ipywidgets/_version.py 2015-08-04 00:17:54.000000000
+0200
+++ new/ipywidgets-4.0.3/ipywidgets/_version.py 2015-09-21 17:42:15.000000000
+0200
@@ -1,2 +1,2 @@
-version_info = (4, 0, 2)
+version_info = (4, 0, 3)
__version__ = '.'.join(map(str, version_info))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ipywidgets-4.0.2/ipywidgets/static/widgets/css/widgets.min.css
new/ipywidgets-4.0.3/ipywidgets/static/widgets/css/widgets.min.css
--- old/ipywidgets-4.0.2/ipywidgets/static/widgets/css/widgets.min.css
2015-08-04 00:18:36.000000000 +0200
+++ new/ipywidgets-4.0.3/ipywidgets/static/widgets/css/widgets.min.css
2015-09-21 17:49:04.000000000 +0200
@@ -1 +1 @@
-.widget-interact>div,.widget-interact>input{padding:2.5px}.widget-area{display:-webkit-box;-webkit-box-align:stretch;display:-moz-box;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-area
.widget-subarea{padding:.44em .4em .4em
1px;margin-left:6px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;box-align:start;display:-webkit-box;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}.widget-area.connection-problems
.prompt:after{content:"\f127";font-family:'FontAwesome';color:#d9534f;top:3px;padding:3px}.slide-track{border:1px
solid
#CCC;background:#FFF;border-radius:4px}.widget-hslider{padding-left:8px;padding-right:2px;overflow:visible;width:350px;height:5px;max-height:5px;margin-top:13px;margin-bottom:10px;border:1px
solid
#CCC;border-radius:4px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-hslider
.ui-slider{display:-webkit-box;-webkit-box-align:stretch;display:-moz-box;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1;border:0;background:0
0}.widget-hslider .ui-slider
.ui-slider-handle{width:12px;height:28px;margin-top:-8px;border-radius:4px}.widget-hslider
.ui-slider
.ui-slider-range{height:12px;margin-top:-4px}.widget-vslider{padding-bottom:5px;overflow:visible;width:5px;max-width:5px;height:250px;margin-left:12px;border:1px
solid
#CCC;border-radius:4px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}.widget-vslider
.ui-slider{display:-webkit-box;-webkit-box-align:stretch;display:-moz-box;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1;border:0;background:0
0;margin-left:-4px;margin-top:5px}.widget-hbox,.widget-vbox{display:-webkit-box;display:-moz-box}.widget-vslider
.ui-slider
.ui-slider-handle{width:28px;height:12px;margin-left:-9px;border-radius:4px}.widget-vslider
.ui-slider
.ui-slider-range{width:12px;margin-left:-1px}.widget-text{width:350px;margin:0}.widget-listbox{width:350px;margin-bottom:0}.widget-numeric-text{width:150px;margin:0}.widget-hprogress{margin-top:6px;min-width:350px}.widget-hprogress
.progress-bar{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.widget-vprogress{margin-top:6px;min-height:250px;width:12px}.widget-vprogress
.progress-bar{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.widget-combo-btn{min-width:125px}.widget_item
.dropdown-menu li a{color:inherit}.widget-valid{margin:9px 3px
10px}.widget-hbox{-webkit-box-align:stretch;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-hbox
input[type=checkbox]{margin-top:9px;margin-bottom:10px}.widget-hbox
.widget-label{min-width:10ex;padding-right:8px;padding-top:5px;text-align:right;vertical-align:text-top}.widget-hbox
.widget-readout{padding-left:8px;padding-top:5px;text-align:left;vertical-align:text-top}.widget-vbox{-webkit-box-align:stretch;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}.widget-vbox
.widget-label{padding-bottom:5px;text-align:center;vertical-align:text-bottom}.widget-vbox
.widget-readout{padding-top:5px;text-align:center;vertical-align:text-top}.widget-box{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start}.widget-radio-box{display:-webkit-box;-webkit-box-align:stretch;display:-moz-box;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding-top:4px}.widget-radio-box
label{margin-top:0;margin-left:20px}/*# sourceMappingURL=widgets.min.css.map */
\ No newline at end of file
+.widget-area,.widget-hslider{-webkit-box-orient:horizontal;-webkit-box-align:stretch;-moz-box-orient:horizontal;display:flex}.widget-interact>div,.widget-interact>input{padding:2.5px}.widget-area{page-break-inside:avoid;-moz-box-align:stretch;box-orient:horizontal;box-align:stretch;flex-direction:row;align-items:stretch}.widget-area
.widget-subarea,.widget-vslider{-webkit-box-orient:vertical;-moz-box-orient:vertical}.widget-area
.widget-subarea{padding:.44em .4em .4em
1px;margin-left:6px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;flex:2;-webkit-box-align:stretch;-moz-box-align:stretch;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}.widget-area.connection-problems
.prompt:after{content:"\f127";font-family:FontAwesome;color:#d9534f;top:3px;padding:3px}.slide-track{border:1px
solid
#CCC;background:#FFF;border-radius:4px}.widget-hslider{padding-left:8px;padding-right:2px;overflow:visible;width:350px;height:5px;max-height:5px;margin-top:13px;margin-bottom:10px;border:1px
solid
#CCC;background:#FFF;border-radius:4px;-moz-box-align:stretch;box-orient:horizontal;box-align:stretch;flex-direction:row;align-items:stretch}.widget-hslider
.ui-slider{-webkit-box-orient:horizontal;-webkit-box-align:stretch;-moz-box-orient:horizontal;-moz-box-align:stretch;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1;border:0;background:0
0}.widget-hslider .ui-slider
.ui-slider-handle{width:12px;height:28px;margin-top:-8px;border-radius:4px}.widget-hslider
.ui-slider
.ui-slider-range{height:12px;margin-top:-4px}.widget-vslider{padding-bottom:5px;overflow:visible;width:5px;max-width:5px;height:250px;margin-left:12px;border:1px
solid
#CCC;background:#FFF;border-radius:4px;-webkit-box-align:stretch;-moz-box-align:stretch;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch}.widget-vbox,.widget-vslider
.ui-slider{-webkit-box-orient:vertical;-moz-box-orient:vertical;display:flex}.widget-vslider
.ui-slider{-webkit-box-align:stretch;-moz-box-align:stretch;box-orient:vertical;box-align:stretch;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1;border:0;background:0
0;margin-left:-4px;margin-top:5px}.widget-vslider .ui-slider
.ui-slider-handle{width:28px;height:12px;margin-left:-9px;border-radius:4px}.widget-vslider
.ui-slider
.ui-slider-range{width:12px;margin-left:-1px}.widget-text{width:350px;margin:0}.widget-listbox{width:350px;margin-bottom:0}.widget-numeric-text{width:150px;margin:0}.widget-hprogress{margin-top:6px;min-width:350px}.widget-hprogress
.progress-bar{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.widget-vprogress{margin-top:6px;min-height:250px;width:12px}.widget-vprogress
.progress-bar{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none}.widget-combo-btn{min-width:125px}.widget_item
.dropdown-menu li a{color:inherit}.widget-valid{margin:9px 3px
10px}.widget-hbox{-webkit-box-orient:horizontal;-webkit-box-align:stretch;-moz-box-orient:horizontal;-moz-box-align:stretch;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-hbox
input[type=checkbox]{margin-top:9px;margin-bottom:10px}.widget-hbox
.widget-label{min-width:10ex;padding-right:8px;padding-top:5px;text-align:right;vertical-align:text-top}.widget-hbox
.widget-readout{padding-left:8px;padding-top:5px;text-align:left;vertical-align:text-top}.widget-vbox{-webkit-box-align:stretch;-moz-box-align:stretch;box-orient:vertical;box-align:stretch;flex-direction:column;align-items:stretch}.widget-vbox
.widget-label{padding-bottom:5px;text-align:center;vertical-align:text-bottom}.widget-vbox
.widget-readout{padding-top:5px;text-align:center;vertical-align:text-top}.widget-box{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start}.widget-radio-box{-webkit-box-orient:vertical;-webkit-box-align:stretch;-moz-box-orient:vertical;-moz-box-align:stretch;box-orient:vertical;box-align:stretch;display:flex;flex-direction:column;align-items:stretch;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding-top:4px}.widget-radio-box
label{margin-top:0;margin-left:20px}/*# sourceMappingURL=widgets.min.css.map */
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ipywidgets-4.0.2/ipywidgets/static/widgets/css/widgets.min.css.map
new/ipywidgets-4.0.3/ipywidgets/static/widgets/css/widgets.min.css.map
--- old/ipywidgets-4.0.2/ipywidgets/static/widgets/css/widgets.min.css.map
2015-08-04 00:18:36.000000000 +0200
+++ new/ipywidgets-4.0.3/ipywidgets/static/widgets/css/widgets.min.css.map
2015-09-21 17:49:04.000000000 +0200
@@ -1 +1 @@
-{"version":3,"sources":["ipywidgets/static/widgets/css/widgets.css"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"sources":["ipywidgets/static/widgets/css/widgets.css"],"names":[],"mappings":"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"}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ipywidgets-4.0.2/ipywidgets/static/widgets/js/init.js
new/ipywidgets-4.0.3/ipywidgets/static/widgets/js/init.js
--- old/ipywidgets-4.0.2/ipywidgets/static/widgets/js/init.js 2015-05-27
22:24:49.000000000 +0200
+++ new/ipywidgets-4.0.3/ipywidgets/static/widgets/js/init.js 2015-09-15
01:32:04.000000000 +0200
@@ -15,6 +15,7 @@
"nbextensions/widgets/widgets/js/widget_selection",
"nbextensions/widgets/widgets/js/widget_selectioncontainer",
"nbextensions/widgets/widgets/js/widget_string",
+ "nbextensions/widgets/widgets/js/widget_controller",
], function(widgetmanager, widget) {
// Register all of the loaded models and views with the widget manager.
for (var i = 2; i < arguments.length; i++) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ipywidgets-4.0.2/ipywidgets/static/widgets/js/widget_controller.js
new/ipywidgets-4.0.3/ipywidgets/static/widgets/js/widget_controller.js
--- old/ipywidgets-4.0.2/ipywidgets/static/widgets/js/widget_controller.js
1970-01-01 01:00:00.000000000 +0100
+++ new/ipywidgets-4.0.3/ipywidgets/static/widgets/js/widget_controller.js
2015-09-15 01:32:04.000000000 +0200
@@ -0,0 +1,312 @@
+// Copyright (c) Jupyter Development Team.
+// Distributed under the terms of the Modified BSD License.
+
+define([
+ "nbextensions/widgets/widgets/js/widget",
+ "base/js/utils",
+], function(widget, utils) {
+ 'use strict';
+
+ var Button = widget.DOMWidgetView.extend({
+ /* Very simple view for a gamepad button. */
+
+ render : function(){
+ this.$support = $('<div />').css({
+ 'position': 'relative',
+ 'margin': '1px',
+ 'width': '16px',
+ 'height': '16px',
+ 'border': '1px solid black',
+ 'background': 'lightgray',
+ })
+ .appendTo(this.$el);
+ this.$bar = $('<div />')
+ .css({
+ 'position': 'absolute',
+ 'width': '100%',
+ 'bottom': 0,
+ 'background': 'gray',
+ })
+ .appendTo(this.$support);
+ this.$label = $('<div />')
+ .text(this.model.get('description'))
+ .css('text-align', 'center')
+ .appendTo(this.$el);
+ this.update();
+ },
+
+ update : function() {
+ this.$bar.css('height', 100 * this.model.get('value') + '%');
+ },
+
+ });
+
+ var Axis = widget.DOMWidgetView.extend({
+ /* Very simple view for a gamepad axis. */
+
+ render : function() {
+ this.$el.css({
+ 'width': '16px',
+ 'padding': '4px',
+ });
+ this.$support = $('<div />').css({
+ 'position': 'relative',
+ 'margin': '1px',
+ 'width': '4px',
+ 'height': '64px',
+ 'border': '1px solid black',
+ 'background': 'lightgray',
+ })
+ .appendTo(this.$el);
+ this.$bullet = $('<div />')
+ .css({
+ 'position': 'absolute',
+ 'margin': '-4px',
+ 'width': '10px',
+ 'height': '10px',
+ 'background': 'gray',
+ })
+ .appendTo(this.$support);
+ this.$label = $('<div />')
+ .text(this.model.get('description'))
+ .css('text-align', 'center')
+ .appendTo(this.$el);
+ this.update();
+ },
+
+ update : function() {
+ this.$bullet.css('top', 50 * (this.model.get('value') + 1) + '%');
+ },
+
+ });
+
+ var Controller = widget.WidgetModel.extend({
+ /* The Controller model. */
+
+ initialize: function() {
+ if (navigator.getGamepads === void 0) {
+ // Checks if the browser supports the gamepad API
+ this.readout = 'This browser does not support gamepads.';
+ console.error(this.readout);
+ } else {
+ // Start the wait loop, and listen to updates of the only
+ // user-provided attribute, the gamepad index.
+ this.readout = 'Connect gamepad and press any button.';
+ this.wait_loop();
+ }
+ },
+
+ wait_loop: function() {
+ /* Waits for a gamepad to be connected at the provided index.
+ * Once one is connected, it will start the update loop, which
+ * populates the update of axes and button values.
+ */
+ var index = this.get('index');
+ var pad = navigator.getGamepads()[index];
+ if (pad) {
+ this.index = index;
+ var that = this;
+ this.setup(pad).then(function(controls) {
+ that.set(controls);
+ that.save_changes();
+ window.requestAnimationFrame(that.update_loop.bind(that));
+ });
+ } else {
+ window.requestAnimationFrame(this.wait_loop.bind(this));
+ }
+ },
+
+ setup: function(pad) {
+ /* Given a native gamepad object, returns a promise for a
dictionary of
+ * controls, of the form
+ * {
+ * buttons: list of Button models,
+ * axes: list of Axis models,
+ * }
+ */
+ // Set up the main gamepad attributes
+ this.set({
+ name: pad.id,
+ mapping: pad.mapping,
+ connected: pad.connected,
+ timestamp: pad.timestamp,
+ });
+ // Create buttons and axes. When done, start the update loop
+ var that = this;
+ return utils.resolve_promises_dict({
+ buttons: Promise.all(pad.buttons.map(function(btn, index) {
+ return that._create_button_model(index);
+ })),
+ axes: Promise.all(pad.axes.map(function(axis, index) {
+ return that._create_axis_model(index);
+ })),
+ });
+ },
+
+ update_loop: function() {
+ /* Populates axes and button values, until the gamepad is
disconnected.
+ * When the gamepad is disconnected, this.reset_gamepad is called.
+ */
+ var index = this.get('index');
+ var pad = navigator.getGamepads()[index];
+ if (pad && this.index === index) {
+ this.set({
+ timestamp: pad.timestamp,
+ connected: pad.connected,
+ });
+ this.save_changes();
+ this.get('buttons').forEach(function(model, index) {
+ model.set({
+ value: pad.buttons[index].value,
+ pressed: pad.buttons[index].pressed,
+ });
+ model.save_changes();
+ });
+ this.get('axes').forEach(function(model, index) {
+ model.set('value', pad.axes[index]);
+ model.save_changes();
+ });
+ window.requestAnimationFrame(this.update_loop.bind(this));
+ } else {
+ this.reset_gamepad();
+ }
+ },
+
+ reset_gamepad: function() {
+ /* Resets the gamepad attributes, and calls the wait_loop.
+ */
+ this.get('buttons').forEach(function(button) {
+ button.close();
+ });
+ this.get('axes').forEach(function(axis) {
+ axis.close();
+ });
+ this.set({
+ name: '',
+ mapping: '',
+ connected: false,
+ timestamp: 0.0,
+ buttons: [],
+ axes: [],
+ });
+ this.save_changes();
+ window.requestAnimationFrame(this.wait_loop.bind(this));
+ },
+
+ _create_button_model: function(index) {
+ /* Creates a gamepad button widget.
+ */
+ return this.widget_manager.new_widget({
+ model_name: 'WidgetModel',
+ widget_class: 'ipywidgets.widgets.widget_controller.Button',
+ }).then(function(model) {
+ model.set('description', index);
+ return model;
+ });
+ },
+
+ _create_axis_model: function(index) {
+ /* Creates a gamepad axis widget.
+ */
+ return this.widget_manager.new_widget({
+ model_name: 'WidgetModel',
+ widget_class: 'ipywidgets.widgets.widget_controller.Axis',
+ }).then(function(model) {
+ model.set('description', index);
+ return model;
+ });
+ },
+
+ }, {
+
+ serializers: _.extend({
+ buttons: {deserialize: widget.unpack_models},
+ axes: {deserialize: widget.unpack_models},
+ }, widget.WidgetModel.serializers)
+
+ });
+
+ var ControllerView = widget.DOMWidgetView.extend({
+ /* A simple view for a gamepad. */
+
+ initialize: function() {
+ ControllerView.__super__.initialize.apply(this, arguments);
+
+ this.button_views = new widget.ViewList(this.add_button, null,
this);
+ this.listenTo(this.model, 'change:buttons', function(model, value)
{
+ this.button_views.update(value);
+ }, this);
+
+ this.axis_views = new widget.ViewList(this.add_axis, null, this);
+ this.listenTo(this.model, 'change:axes', function(model, value) {
+ this.axis_views.update(value);
+ }, this);
+
+ this.listenTo(this.model, 'change:name', this.update_label, this);
+ },
+
+ render: function(){
+ this.$box = this.$el;
+
+ this.$label = $('<div />')
+ .appendTo(this.$box);
+
+ this.$axis_box = $('<div />')
+ .css('display', 'flex')
+ .appendTo(this.$box);
+
+ this.$button_box = $('<div />')
+ .css('display', 'flex')
+ .appendTo(this.$box);
+
+ this.button_views.update(this.model.get('buttons'));
+ this.axis_views.update(this.model.get('axes'));
+
+ this.update_label();
+ },
+
+ update_label: function() {
+ this.$label.text(this.model.get('name') || this.model.readout);
+ },
+
+ add_button: function(model) {
+ var that = this;
+ var dummy = $('<div/>');
+ that.$button_box.append(dummy);
+ return this.create_child_view(model).then(function(view) {
+ dummy.replaceWith(view.el);
+ that.displayed.then(function() {
+ view.trigger('displayed');
+ });
+ return view;
+ }).catch(utils.reject('Could not add button view', true));
+ },
+
+ add_axis: function(model) {
+ var that = this;
+ var dummy = $('<div/>');
+ that.$axis_box.append(dummy);
+ return this.create_child_view(model).then(function(view) {
+ dummy.replaceWith(view.el);
+ that.displayed.then(function() {
+ view.trigger('displayed');
+ });
+ return view;
+ }).catch(utils.reject('Could not add axis view', true));
+ },
+
+ remove: function() {
+ ControllerView.__super__.remove.apply(this, arguments);
+ this.button_views.remove();
+ this.axis_views.remove();
+ },
+
+ });
+
+ return {
+ ControllerButton: Button,
+ ControllerAxis: Axis,
+ Controller: Controller,
+ ControllerView: ControllerView,
+ };
+});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ipywidgets-4.0.2/ipywidgets/static/widgets/js/widget_selectioncontainer.js
new/ipywidgets-4.0.3/ipywidgets/static/widgets/js/widget_selectioncontainer.js
---
old/ipywidgets-4.0.2/ipywidgets/static/widgets/js/widget_selectioncontainer.js
2015-07-17 00:45:13.000000000 +0200
+++
new/ipywidgets-4.0.3/ipywidgets/static/widgets/js/widget_selectioncontainer.js
2015-09-15 01:32:04.000000000 +0200
@@ -49,7 +49,7 @@
update: function(options) {
this.update_titles();
this.update_selected_index(options);
- return TabView.__super__.update.apply(this);
+ return AccordionView.__super__.update.apply(this);
},
update_titles: function() {
@@ -62,7 +62,7 @@
var accordian = that.containers[page_index];
if (accordian !== undefined) {
accordian
- .find('.panel-heading')
+ .children('.panel-heading')
.find('.accordion-toggle')
.text(title);
}
@@ -77,9 +77,13 @@
if (options === undefined || options.updated_view != this) {
var old_index = this.model.previous('selected_index');
var new_index = this.model.get('selected_index');
-
this.containers[old_index].find('.panel-collapse').collapse('hide');
+ /* old_index can be out of bounds, this check avoids raising
+ a (hrmless) javascript error. */
+ if (0 <= old_index && old_index < this.containers.length) {
+
this.containers[old_index].children('.panel-collapse').collapse('hide');
+ }
if (0 <= new_index && new_index < this.containers.length) {
-
this.containers[new_index].find('.panel-collapse').collapse('show');
+
this.containers[new_index].children('.panel-collapse').collapse('show');
}
}
},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/ipywidgets/widgets/__init__.py
new/ipywidgets-4.0.3/ipywidgets/widgets/__init__.py
--- old/ipywidgets-4.0.2/ipywidgets/widgets/__init__.py 2015-07-31
23:06:56.000000000 +0200
+++ new/ipywidgets-4.0.3/ipywidgets/widgets/__init__.py 2015-09-15
01:32:04.000000000 +0200
@@ -12,5 +12,6 @@
from .widget_selection import RadioButtons, ToggleButtons, Dropdown, Select,
SelectMultiple
from .widget_selectioncontainer import Tab, Accordion
from .widget_string import HTML, Latex, Text, Textarea
+from .widget_controller import Controller
from .interaction import interact, interactive, fixed, interact_manual
from .widget_link import jslink, jsdlink
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/ipywidgets/widgets/interaction.py
new/ipywidgets-4.0.3/ipywidgets/widgets/interaction.py
--- old/ipywidgets-4.0.2/ipywidgets/widgets/interaction.py 2015-07-17
00:45:13.000000000 +0200
+++ new/ipywidgets-4.0.3/ipywidgets/widgets/interaction.py 2015-09-15
01:32:04.000000000 +0200
@@ -218,7 +218,8 @@
manual_button.disabled = True
try:
container.result = f(**container.kwargs)
- display(container.result)
+ if container.result is not None:
+ display(container.result)
except Exception as e:
ip = get_ipython()
if ip is None:
@@ -316,7 +317,8 @@
# so wrap in a lambda
f = lambda *args, **kwargs: __interact_f(*args, **kwargs)
f.widget = w
- display(w)
+ if w is not None:
+ display(w)
return f
else:
# This branch handles the case 3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ipywidgets-4.0.2/ipywidgets/widgets/tests/test_interaction.py
new/ipywidgets-4.0.3/ipywidgets/widgets/tests/test_interaction.py
--- old/ipywidgets-4.0.2/ipywidgets/widgets/tests/test_interaction.py
2015-05-27 22:24:49.000000000 +0200
+++ new/ipywidgets-4.0.3/ipywidgets/widgets/tests/test_interaction.py
2015-09-15 01:32:04.000000000 +0200
@@ -411,6 +411,22 @@
)
@nt.with_setup(clear_display)
+def test_call_interact_on_trait_changed_none_return():
+ def foo(a='default'):
+ pass
+ with patch.object(interaction, 'display', record_display):
+ ifoo = interact(foo)
+ nt.assert_equal(len(displayed), 1)
+ w = displayed[0].children[0]
+ check_widget(w,
+ cls=widgets.Text,
+ value='default',
+ )
+ with patch.object(interaction, 'display', record_display):
+ w.value = 'called'
+ nt.assert_equal(len(displayed), 1)
+
[email protected]_setup(clear_display)
def test_call_interact_kwargs():
def foo(a='default'):
pass
@@ -444,8 +460,11 @@
nt.assert_equal(d['a'], 'hello')
# test that setting trait values calls the function
- w.value = 'called'
+ with patch.object(interaction, 'display', record_display):
+ w.value = 'called'
nt.assert_equal(d['a'], 'called')
+ nt.assert_equal(len(displayed), 2)
+ nt.assert_equal(w.value, displayed[-1])
@nt.with_setup(clear_display)
def test_call_decorated_kwargs_on_trait_change():
@@ -468,8 +487,13 @@
nt.assert_equal(d['a'], 'hello')
# test that setting trait values calls the function
- w.value = 'called'
+ with patch.object(interaction, 'display', record_display):
+ w.value = 'called'
nt.assert_equal(d['a'], 'called')
+ nt.assert_equal(len(displayed), 2)
+ nt.assert_equal(w.value, displayed[-1])
+
+
def test_fixed():
c = interactive(f, a=widgets.fixed(5), b='text')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/ipywidgets-4.0.2/ipywidgets/widgets/widget_controller.py
new/ipywidgets-4.0.3/ipywidgets/widgets/widget_controller.py
--- old/ipywidgets-4.0.2/ipywidgets/widgets/widget_controller.py
1970-01-01 01:00:00.000000000 +0100
+++ new/ipywidgets-4.0.3/ipywidgets/widgets/widget_controller.py
2015-09-15 01:32:04.000000000 +0200
@@ -0,0 +1,50 @@
+"""Controller class.
+
+Represents a Gamepad or Joystick controller.
+"""
+
+# Copyright (c) Jupyter Development Team.
+# Distributed under the terms of the Modified BSD License.
+
+from .widget import Widget, register, widget_serialization
+from traitlets import Bool, Int, Float, Unicode, List, Instance
+
+
+@register('IPython.ControllerButton')
+class Button(Widget):
+ """Represents a gamepad or joystick button"""
+ value = Float(min=0.0, max=1.0, read_only=True, sync=True)
+ pressed = Bool(read_only=True, sync=True)
+
+ _view_name = Unicode('ControllerButton', sync=True)
+
+
+@register('IPython.ControllerAxis')
+class Axis(Widget):
+ """Represents a gamepad or joystick axis"""
+ value = Float(min=-1.0, max=1.0, read_only=True, sync=True)
+
+ _view_name = Unicode('ControllerAxis', sync=True)
+
+
+@register('IPython.Controller')
+class Controller(Widget):
+ """Represents a game controller"""
+ index = Int(sync=True)
+
+ # General information about the gamepad, button and axes mapping, name.
+ # These values are all read-only and set by the JavaScript side.
+ name = Unicode(read_only=True, sync=True)
+ mapping = Unicode(read_only=True, sync=True)
+ connected = Bool(read_only=True, sync=True)
+ timestamp = Float(read_only=True, sync=True)
+
+ # Buttons and axes - read-only
+ buttons = List(trait=Instance(Button), read_only=True,
+ sync=True, **widget_serialization)
+ axes = List(trait=Instance(Axis), read_only=True, sync=True,
+ **widget_serialization)
+
+ _view_name = Unicode('ControllerView', sync=True)
+ _model_name = Unicode('Controller', sync=True)
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/package.json
new/ipywidgets-4.0.3/package.json
--- old/ipywidgets-4.0.2/package.json 2015-08-03 22:58:46.000000000 +0200
+++ new/ipywidgets-4.0.3/package.json 2015-09-21 17:42:23.000000000 +0200
@@ -1,6 +1,6 @@
{
"name": "ipython-widget-deps",
- "version": "4.0.0",
+ "version": "4.0.3",
"description": "IPython widget nodejs build dependencies",
"author": "IPython Developers",
"license": "BSD",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ipywidgets-4.0.2/setup.py
new/ipywidgets-4.0.3/setup.py
--- old/ipywidgets-4.0.2/setup.py 2015-07-31 18:49:13.000000000 +0200
+++ new/ipywidgets-4.0.3/setup.py 2015-09-21 17:37:24.000000000 +0200
@@ -9,6 +9,29 @@
# the name of the package
name = 'ipywidgets'
+LONG_DESCRIPTION = """
+.. image:: https://img.shields.io/pypi/v/ipywidgets.svg
+ :target: https://pypi.python.org/pypi/ipywidgets/
+ :alt: Version Number
+
+.. image:: https://img.shields.io/pypi/dm/ipywidgets.svg
+ :target: https://pypi.python.org/pypi/ipywidgets/
+ :alt: Number of PyPI downloads
+
+Interactive HTML Widgets
+========================
+
+Interactive HTML widgets for Jupyter notebooks and the IPython kernel.
+
+Usage
+=====
+
+.. code-block:: python
+
+ from ipywidgets import IntSlider
+ IntSlider()
+"""
+
#-----------------------------------------------------------------------------
# Minimal Python version sanity check
#-----------------------------------------------------------------------------
@@ -219,6 +242,7 @@
packages = packages,
package_data = package_data,
description = "IPython HTML widgets for Jupyter",
+ long_description = LONG_DESCRIPTION,
author = 'IPython Development Team',
author_email = '[email protected]',
url = 'http://ipython.org',