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 - toddrme2...@gmail.com + +- 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: ipython-...@scipy.org 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 @@ [![Build Status](https://travis-ci.org/ipython/ipywidgets.svg?branch=master)](https://travis-ci.org/ipython/ipywidgets) [![Join the chat at https://gitter.im/ipython/ipywidgets](https://badges.gitter.im/Join%20Chat.svg)](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":"AAgBA,qBACA,uBACE,QAAS,MAEX,aAoBE,QAAkC,YAElC,kBAAmB,QACnB,QAAS,SAET,eAAgB,QAChB,QAAS,IACT,WAAY,WACZ,UAAW,QAEX,QAAwD,KACxD,eAAgB,IAChB,YAAa,QAEf,6BACE,QAAS,MAAO,KAAM,KAAM,IAC5B,YAAa,IACb,WAAY,WACZ,gBAAiB,WACjB,mBAAoB,WAEpB,iBAAoF,EACpF,cAAe,EACf,SAAU,EAMV,UAAW,MAIX,QAA6J,YAE7J,kBAAmB,QACnB,QAAS,SACT,gBAAiB,SACjB,eAAgB,QAChB,QAAS,IACT,WAAY,SACZ,UAAW,QAEX,QAAmL,KACnL,eAAgB,OAChB,YAAa,QAEf,+CACE,QAAS,QACT,YAAa,cACb,MAAO,QACP,IAAK,IACL,QAAS,IAIX,aAEE,OAAkD,IAAI,MAAM,KAC5D,WAAY,KACZ,cAAe,IAGjB,gBAGE,aAmBgB,IAChB,cAAe,IACf,SAAU,QAEV,MAAyD,MACzD,OAAQ,IACR,WAAY,IACZ,WAAY,KACZ,cAAe,KAGf,OAAyL,IAAI,MAAM,KAEnM,cAAe,IAIf,QAAyjB,YACzjB,mBAAoB,WACpB,kBAAmB,QACnB,QAAS,SACT,gBAAiB,WACjB,eAAgB,QAChB,QAAS,IACT,WAAY,WACZ,UAAW,QAEX,QAA0P,KAC1P,eAAgB,IAChB,YAAa,QAEf,2BAGE,QAAgkB,YAEhkB,kBAAmB,QACnB,QAAS,SAET,eAAgB,QAChB,QAAS,IACT,WAAY,WACZ,UAAW,QAEX,QAAoU,KACpU,eAAgB,IAChB,YAAa,QAEb,iBAAgW,EAChW,cAAe,EACf,SAAU,EAEV,KAA0W,EAC1W,OAAQ,EACR,eAEF,6CACE,MAAO,KACP,OAAQ,KACR,WAAY,KACZ,cAAe,IAEjB,4CACE,OAAQ,KACR,WAAY,KAEd,gBAGE,eACgB,IAChB,SAAU,QAEV,MAAyD,IACzD,UAAW,IACX,OAAQ,MACR,YAAa,KAGb,OAAyL,IAAI,MAAM,KAEnM,cAAe,IAIf,QAAyjB,YACzjB,mBAAoB,SACpB,kBAAmB,QACnB,QAAS,SACT,gBAAiB,SACjB,eAAgB,QAChB,QAAS,IACT,WAAY,SACZ,UAAW,QAEX,QAA0P,KAC1P,eAAgB,OAChB,YAAa,QAEf,2BAGE,QAAgkB,YAEhkB,kBAAmB,QACnB,QAAS,SAET,eAAgB,QAChB,QAAS,IACT,WAAY,SACZ,UAAW,QAEX,QAAoU,KACpU,eAAgB,OAChB,YAAa,QAEb,iBAAgW,EAChW,cAAe,EACf,SAAU,EAEV,KAA0W,EAC1W,OAAQ,EACR,eACA,YAAa,KACb,WAAY,IAoEd,aAmCA,aAhCE,QAA07C,YAG17C,QAAS,SAxEX,6CACE,MAAO,KACP,OAAQ,KACR,YAAa,KACb,cAAe,IAEjB,4CACE,MAAO,KACP,YAAa,KAEf,aAEE,MAAwa,MACxa,OAAQ,EAEV,gBAEE,MAAsb,MACtb,cAAe,EAEjB,qBAEE,MAAyf,MACzf,OAAQ,EAEV,kBAEE,WAAihB,IACjhB,UAAW,MAEb,gCAEE,mBAA8jB,KAC9jB,gBAAiB,KACjB,eAAgB,KAChB,cAAe,KACf,WAAY,KAEd,kBAEE,WAAykB,IACzkB,WAAY,MACZ,MAAO,KAET,gCAEE,mBAAsnB,KACtnB,gBAAiB,KACjB,eAAgB,KAChB,cAAe,KACf,WAAY,KAEd,kBAGE,UAA8zC,MAEh0C,iCACE,MAAO,QAET,cACE,AACA,AACA,AACA,OAHY,IAGE,IAFC,KAIjB,aAKE,kBAAmB,QAGnB,eAAgB,QAChB,QAAS,IACT,WAAY,WACZ,UAAW,QAEX,QAAiwB,KACjwB,eAAgB,IAChB,YAAa,QAEf,kCACE,WAAY,IACZ,cAAe,KAEjB,2BAEE,UAA0xB,KAC1xB,cAAe,IACf,YAAa,IACb,WAAY,MACZ,eAAgB,SAElB,6BACE,aAAc,IACd,YAAa,IACb,WAAY,KACZ,eAAgB,SAElB,aAKE,kBAAmB,QAGnB,eAAgB,QAChB,QAAS,IACT,WAAY,SACZ,UAAW,QAEX,QAAw1B,KACx1B,eAAgB,OAChB,YAAa,QAEf,2BAEE,eAAo3B,IACp3B,WAAY,OACZ,eAAgB,YAElB,6BAEE,YAAs4B,IACt4B,WAAY,OACZ,eAAgB,SAElB,YAEE,WAA+4B,WAC/4B,gBAAiB,WACjB,mBAAoB,WAEpB,kBAAy6B,MACz6B,eAAgB,MAChB,UAAW,MAEX,YAAy7B,WAE37B,kBAGE,QAAw7D,YAEx7D,kBAAmB,QACnB,QAAS,SAET,eAAgB,QAChB,QAAS,IACT,WAAY,SACZ,UAAW,QAEX,QAAggC,KAChgC,eAAgB,OAChB,YAAa,QACb,WAAY,WACZ,gBAAiB,WACjB,mBAAoB,WACpB,YAAa,IAEf,wBACE,WAAY,EACZ,YAAa"} \ 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) + +@nt.with_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 = 'ipython-...@scipy.org', url = 'http://ipython.org',