Hello community, here is the log from the commit of package python-jupyter_ipykernel for openSUSE:Factory checked in at 2018-02-15 13:27:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-jupyter_ipykernel (Old) and /work/SRC/openSUSE:Factory/.python-jupyter_ipykernel.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_ipykernel" Thu Feb 15 13:27:09 2018 rev:7 rq:576765 version:4.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-jupyter_ipykernel/python-jupyter_ipykernel-doc.changes 2018-01-19 11:51:53.483376261 +0100 +++ /work/SRC/openSUSE:Factory/.python-jupyter_ipykernel.new/python-jupyter_ipykernel-doc.changes 2018-02-15 13:27:20.107990204 +0100 @@ -1,0 +2,11 @@ +Thu Jan 18 06:50:10 UTC 2018 - toddrme2...@gmail.com + +- update to version 4.8.9 + * Cleanly shutdown integrated event loops when shutting down the + kernel. (:ghpull:`290`) + * %gui qt now uses Qt 5 by default rather than Qt 4, following a + similar change in terminal IPython. (:ghpull:`293`) + * Fix event loop integration for :mod:`asyncio` when run with + Tornado 5, which uses asyncio where available. (:ghpull:`296`) + +------------------------------------------------------------------- python-jupyter_ipykernel.changes: same change Old: ---- ipykernel-4.7.0.tar.gz New: ---- ipykernel-4.8.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-jupyter_ipykernel-doc.spec ++++++ --- /var/tmp/diff_new_pack.8xvG4C/_old 2018-02-15 13:27:25.167806421 +0100 +++ /var/tmp/diff_new_pack.8xvG4C/_new 2018-02-15 13:27:25.171806276 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-jupyter_ipykernel-doc # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -22,14 +22,14 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-jupyter_ipykernel-doc -Version: 4.7.0 +Version: 4.8.0 Release: 0 Summary: Documentation for python-jupyter_ipykernel License: BSD-3-Clause Group: Development/Languages/Python -Url: http://ipython.org +Url: https://github.com/ipython/ipykernel Source: https://files.pythonhosted.org/packages/source/i/ipykernel/ipykernel-%{version}.tar.gz -BuildRequires: %{python_module jupyter_ipykernel} +BuildRequires: %{python_module jupyter_ipykernel = %{version}} BuildRequires: fdupes BuildRequires: python-rpm-macros %if %{with tests} @@ -42,6 +42,7 @@ # Documentation requirements %if %{with pdf} || %{with html} BuildRequires: python3-Sphinx +BuildRequires: python3-sphinxcontrib-github-alt %endif %if %{with pdf} BuildRequires: python3-Sphinx-latex @@ -66,6 +67,7 @@ %if %{with html} make html rm -rf _build/html/.buildinfo +sed -i 's/\r$//' _build/html/objects.inv %endif %if %{with pdf} make latexpdf ++++++ python-jupyter_ipykernel.spec ++++++ --- /var/tmp/diff_new_pack.8xvG4C/_old 2018-02-15 13:27:25.199805258 +0100 +++ /var/tmp/diff_new_pack.8xvG4C/_new 2018-02-15 13:27:25.199805258 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-jupyter_ipykernel # -# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,12 +18,12 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-jupyter_ipykernel -Version: 4.7.0 +Version: 4.8.0 Release: 0 Summary: IPython Kernel for Jupyter License: BSD-3-Clause Group: Development/Languages/Python -Url: http://ipython.org +Url: https://github.com/ipython/ipykernel Source: https://files.pythonhosted.org/packages/source/i/ipykernel/ipykernel-%{version}.tar.gz BuildRequires: %{python_module devel} BuildRequires: %{python_module jupyter_client} ++++++ ipykernel-4.7.0.tar.gz -> ipykernel-4.8.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/MANIFEST.in new/ipykernel-4.8.0/MANIFEST.in --- old/ipykernel-4.7.0/MANIFEST.in 1970-01-01 01:00:00.000000000 +0100 +++ new/ipykernel-4.8.0/MANIFEST.in 2018-01-17 18:37:33.000000000 +0100 @@ -0,0 +1,24 @@ +include COPYING.md +include CONTRIBUTING.md +include README.md + +# Documentation +graft docs +exclude docs/\#* + +# Examples +graft examples + +# docs subdirs we want to skip +prune docs/_build +prune docs/gh-pages +prune docs/dist + +# Patterns to exclude from any directory +global-exclude *~ +global-exclude *.pyc +global-exclude *.pyo +global-exclude .git +global-exclude .ipynb_checkpoints + +prune data_kernelspec diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/PKG-INFO new/ipykernel-4.8.0/PKG-INFO --- old/ipykernel-4.7.0/PKG-INFO 2017-12-06 13:28:02.000000000 +0100 +++ new/ipykernel-4.8.0/PKG-INFO 2018-01-17 18:37:38.000000000 +0100 @@ -1,11 +1,12 @@ Metadata-Version: 1.1 Name: ipykernel -Version: 4.7.0 +Version: 4.8.0 Summary: IPython Kernel for Jupyter Home-page: http://ipython.org Author: IPython Development Team Author-email: ipython-...@scipy.org License: BSD +Description-Content-Type: UNKNOWN Description: UNKNOWN Keywords: Interactive,Interpreter,Shell,Web Platform: Linux diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/docs/changelog.rst new/ipykernel-4.8.0/docs/changelog.rst --- old/ipykernel-4.7.0/docs/changelog.rst 2017-12-06 13:27:21.000000000 +0100 +++ new/ipykernel-4.8.0/docs/changelog.rst 2018-01-17 18:27:19.000000000 +0100 @@ -1,6 +1,21 @@ Changes in IPython kernel ========================= +4.8 +--- + +4.8.0 +***** + +`4.8.0 on GitHub <https://github.com/ipython/ipykernel/milestones/4.8>`__ + +- Cleanly shutdown integrated event loops when shutting down the kernel. + (:ghpull:`290`) +- ``%gui qt`` now uses Qt 5 by default rather than Qt 4, following a similar + change in terminal IPython. (:ghpull:`293`) +- Fix event loop integration for :mod:`asyncio` when run with Tornado 5, + which uses asyncio where available. (:ghpull:`296`) + 4.7 --- @@ -38,8 +53,10 @@ - Add to API `DisplayPublisher.publish` two new fully backward-compatible keyword-args: + - `update: bool` - `transient: dict` + - Support new `transient` key in `display_data` messages spec for `publish`. For a display data message, `transient` contains data that shouldn't be persisted to files or documents. Add a `display_id` to this `transient` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/docs/conf.py new/ipykernel-4.8.0/docs/conf.py --- old/ipykernel-4.7.0/docs/conf.py 2017-12-05 13:12:24.000000000 +0100 +++ new/ipykernel-4.8.0/docs/conf.py 2018-01-17 18:27:19.000000000 +0100 @@ -33,8 +33,11 @@ extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', + 'sphinxcontrib_github_alt', ] +github_project_url = "https://github.com/ipython/ipykernel" + # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/docs/requirements.txt new/ipykernel-4.8.0/docs/requirements.txt --- old/ipykernel-4.7.0/docs/requirements.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/ipykernel-4.8.0/docs/requirements.txt 2018-01-17 18:27:19.000000000 +0100 @@ -0,0 +1 @@ +sphinxcontrib_github_alt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/ipykernel/_eventloop_macos.py new/ipykernel-4.8.0/ipykernel/_eventloop_macos.py --- old/ipykernel-4.7.0/ipykernel/_eventloop_macos.py 1970-01-01 01:00:00.000000000 +0100 +++ new/ipykernel-4.8.0/ipykernel/_eventloop_macos.py 2018-01-10 12:43:25.000000000 +0100 @@ -0,0 +1,153 @@ +"""Eventloop hook for OS X + +Calls NSApp / CoreFoundation APIs via ctypes. +""" + +# cribbed heavily from IPython.terminal.pt_inputhooks.osx +# obj-c boilerplate from appnope, used under BSD 2-clause + +import ctypes +import ctypes.util +from threading import Event + +objc = ctypes.cdll.LoadLibrary(ctypes.util.find_library('objc')) + +void_p = ctypes.c_void_p + +objc.objc_getClass.restype = void_p +objc.sel_registerName.restype = void_p +objc.objc_msgSend.restype = void_p +objc.objc_msgSend.argtypes = [void_p, void_p] + +msg = objc.objc_msgSend + + +def _utf8(s): + """ensure utf8 bytes""" + if not isinstance(s, bytes): + s = s.encode('utf8') + return s + + +def n(name): + """create a selector name (for ObjC methods)""" + return objc.sel_registerName(_utf8(name)) + + +def C(classname): + """get an ObjC Class by name""" + return objc.objc_getClass(_utf8(classname)) + + +# end obj-c boilerplate from appnope + +# CoreFoundation C-API calls we will use: +CoreFoundation = ctypes.cdll.LoadLibrary(ctypes.util.find_library('CoreFoundation')) + +CFAbsoluteTimeGetCurrent = CoreFoundation.CFAbsoluteTimeGetCurrent +CFAbsoluteTimeGetCurrent.restype = ctypes.c_double + +CFRunLoopGetCurrent = CoreFoundation.CFRunLoopGetCurrent +CFRunLoopGetCurrent.restype = void_p + +CFRunLoopGetMain = CoreFoundation.CFRunLoopGetMain +CFRunLoopGetMain.restype = void_p + +CFRunLoopStop = CoreFoundation.CFRunLoopStop +CFRunLoopStop.restype = None +CFRunLoopStop.argtypes = [void_p] + +CFRunLoopTimerCreate = CoreFoundation.CFRunLoopTimerCreate +CFRunLoopTimerCreate.restype = void_p +CFRunLoopTimerCreate.argtypes = [ + void_p, # allocator (NULL) + ctypes.c_double, # fireDate + ctypes.c_double, # interval + ctypes.c_int, # flags (0) + ctypes.c_int, # order (0) + void_p, # callout + void_p, # context +] + +CFRunLoopAddTimer = CoreFoundation.CFRunLoopAddTimer +CFRunLoopAddTimer.restype = None +CFRunLoopAddTimer.argtypes = [ void_p, void_p, void_p ] + +kCFRunLoopCommonModes = void_p.in_dll(CoreFoundation, 'kCFRunLoopCommonModes') + + +def _NSApp(): + """Return the global NSApplication instance (NSApp)""" + return msg(C('NSApplication'), n('sharedApplication')) + + +def _wake(NSApp): + """Wake the Application""" + event = msg(C('NSEvent'), + n('otherEventWithType:location:modifierFlags:' + 'timestamp:windowNumber:context:subtype:data1:data2:'), + 15, # Type + 0, # location + 0, # flags + 0, # timestamp + 0, # window + None, # context + 0, # subtype + 0, # data1 + 0, # data2 + ) + msg(NSApp, n('postEvent:atStart:'), void_p(event), True) + + +_triggered = Event() + + +def stop(timer=None, loop=None): + """Callback to fire when there's input to be read""" + _triggered.set() + NSApp = _NSApp() + # if NSApp is not running, stop CFRunLoop directly, + # otherwise stop and wake NSApp + if msg(NSApp, n('isRunning')): + msg(NSApp, n('stop:'), NSApp) + _wake(NSApp) + else: + CFRunLoopStop(CFRunLoopGetCurrent()) + + +_c_callback_func_type = ctypes.CFUNCTYPE(None, void_p, void_p) +_c_stop_callback = _c_callback_func_type(stop) + + +def _stop_after(delay): + """Register callback to stop eventloop after a delay""" + timer = CFRunLoopTimerCreate( + None, # allocator + CFAbsoluteTimeGetCurrent() + delay, # fireDate + 0, # interval + 0, # flags + 0, # order + _c_stop_callback, + None, + ) + CFRunLoopAddTimer( + CFRunLoopGetMain(), + timer, + kCFRunLoopCommonModes, + ) + + +def mainloop(duration=1): + """run the Cocoa eventloop for the specified duration (seconds)""" + + _triggered.clear() + NSApp = _NSApp() + _stop_after(duration) + msg(NSApp, n('run')) + if not _triggered.is_set(): + # app closed without firing callback, + # probably due to last window being closed. + # Run the loop manually in this case, + # since there may be events still to process (ipython/ipython#9734) + CoreFoundation.CFRunLoopRun() + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/ipykernel/_version.py new/ipykernel-4.8.0/ipykernel/_version.py --- old/ipykernel-4.7.0/ipykernel/_version.py 2017-12-06 13:27:56.000000000 +0100 +++ new/ipykernel-4.8.0/ipykernel/_version.py 2018-01-17 18:30:25.000000000 +0100 @@ -1,4 +1,4 @@ -version_info = (4, 7, 0) +version_info = (4, 8, 0) __version__ = '.'.join(map(str, version_info)) kernel_protocol_version_info = (5, 1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/ipykernel/eventloops.py new/ipykernel-4.8.0/ipykernel/eventloops.py --- old/ipykernel-4.7.0/ipykernel/eventloops.py 2017-12-06 13:27:21.000000000 +0100 +++ new/ipykernel-4.8.0/ipykernel/eventloops.py 2018-01-10 12:43:25.000000000 +0100 @@ -49,7 +49,7 @@ 'notebook': None, 'ipympl': None, 'widget': None, - None : None, + None: None, } def register_integration(*toolkitnames): @@ -68,6 +68,17 @@ def decorator(func): for name in toolkitnames: loop_map[name] = func + + func.exit_hook = lambda kernel: None + + def exit_decorator(exit_func): + """@func.exit is now a decorator + + to register a function to be called on exit + """ + func.exit_hook = exit_func + + func.exit = exit_decorator return func return decorator @@ -85,7 +96,7 @@ app._in_event_loop = False -@register_integration('qt', 'qt4') +@register_integration('qt4') def loop_qt4(kernel): """Start a kernel with PyQt4 event loop integration.""" @@ -100,13 +111,23 @@ _loop_qt(kernel.app) -@register_integration('qt5') +@loop_qt4.exit +def loop_qt4_exit(kernel): + kernel.app.exit() + + +@register_integration('qt', 'qt5') def loop_qt5(kernel): """Start a kernel with PyQt5 event loop integration.""" os.environ['QT_API'] = 'pyqt5' return loop_qt4(kernel) +@loop_qt5.exit +def loop_qt5_exit(kernel): + kernel.app.exit() + + def _loop_wx(app): """Inner-loop for running the Wx eventloop @@ -171,6 +192,12 @@ _loop_wx(kernel.app) +@loop_wx.exit +def loop_wx_exit(kernel): + import wx + wx.Exit() + + @register_integration('tk') def loop_tk(kernel): """Start a kernel with the Tk event loop.""" @@ -201,6 +228,11 @@ kernel.timer.start() +@loop_tk.exit +def loop_tk_exit(kernel): + kernel.timer.app.destroy() + + @register_integration('gtk') def loop_gtk(kernel): """Start the kernel, coordinating with the GTK event loop""" @@ -208,6 +240,12 @@ gtk_kernel = GTKEmbed(kernel) gtk_kernel.start() + kernel._gtk = gtk_kernel + + +@loop_gtk.exit +def loop_gtk_exit(kernel): + kernel._gtk.stop() @register_integration('gtk3') @@ -217,6 +255,12 @@ gtk_kernel = GTKEmbed(kernel) gtk_kernel.start() + kernel._gtk = gtk_kernel + + +@loop_gtk3.exit +def loop_gtk3_exit(kernel): + kernel._gtk.stop() @register_integration('osx') @@ -224,62 +268,27 @@ """Start the kernel, coordinating with the Cocoa CFRunLoop event loop via the matplotlib MacOSX backend. """ - import matplotlib - if matplotlib.__version__ < '1.1.0': - kernel.log.warn( - "MacOSX backend in matplotlib %s doesn't have a Timer, " - "falling back on Tk for CFRunLoop integration. Note that " - "even this won't work if Tk is linked against X11 instead of " - "Cocoa (e.g. EPD). To use the MacOSX backend in the kernel, " - "you must use matplotlib >= 1.1.0, or a native libtk." - ) - return loop_tk(kernel) - - from matplotlib.backends.backend_macosx import TimerMac, show - - # scale interval for sec->ms - poll_interval = int(1000*kernel._poll_interval) + from ._eventloop_macos import mainloop, stop real_excepthook = sys.excepthook def handle_int(etype, value, tb): """don't let KeyboardInterrupts look like crashes""" + # wake the eventloop when we get a signal + stop() if etype is KeyboardInterrupt: io.raw_print("KeyboardInterrupt caught in CFRunLoop") else: real_excepthook(etype, value, tb) - # add doi() as a Timer to the CFRunLoop - def doi(): - # restore excepthook during IPython code - sys.excepthook = real_excepthook - kernel.do_one_iteration() - # and back: - sys.excepthook = handle_int - - t = TimerMac(poll_interval) - t.add_callback(doi) - t.start() - - # but still need a Poller for when there are no active windows, - # during which time mainloop() returns immediately - poller = zmq.Poller() - if kernel.control_stream: - poller.register(kernel.control_stream.socket, zmq.POLLIN) - for stream in kernel.shell_streams: - poller.register(stream.socket, zmq.POLLIN) - - while True: + while not kernel.shell.exit_now: try: # double nested try/except, to properly catch KeyboardInterrupt # due to pyzmq Issue #130 try: # don't let interrupts during mainloop invoke crash_handler: sys.excepthook = handle_int - show.mainloop() + mainloop(kernel._poll_interval) sys.excepthook = real_excepthook - # use poller if mainloop returned (no windows) - # scale by extra factor of 10, since it's a real poll - poller.poll(10*poll_interval) kernel.do_one_iteration() except: raise @@ -291,20 +300,26 @@ sys.excepthook = real_excepthook +@loop_cocoa.exit +def loop_cocoa_exit(kernel): + from ._eventloop_macos import stop + stop() + + @register_integration('asyncio') def loop_asyncio(kernel): '''Start a kernel with asyncio event loop support.''' import asyncio loop = asyncio.get_event_loop() + # loop is already running (e.g. tornado 5), nothing left to do + if loop.is_running(): + return def kernel_handler(): loop.call_soon(kernel.do_one_iteration) loop.call_later(kernel._poll_interval, kernel_handler) loop.call_soon(kernel_handler) - # loop is already running (e.g. tornado 5), nothing left to do - if loop.is_running(): - return while True: error = None try: @@ -320,6 +335,16 @@ raise error break + +@loop_asyncio.exit +def loop_asyncio_exit(kernel): + """Exit hook for asyncio""" + import asyncio + loop = asyncio.get_event_loop() + if loop.is_running(): + loop.call_soon(loop.stop) + + def enable_gui(gui, kernel=None): """Enable integration with a given GUI""" if gui not in loop_map: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/ipykernel/kernelbase.py new/ipykernel-4.8.0/ipykernel/kernelbase.py --- old/ipykernel-4.7.0/ipykernel/kernelbase.py 2017-12-06 13:27:21.000000000 +0100 +++ new/ipykernel-4.8.0/ipykernel/kernelbase.py 2018-01-17 18:27:19.000000000 +0100 @@ -50,7 +50,8 @@ def _update_eventloop(self, change): """schedule call to eventloop from IOLoop""" loop = ioloop.IOLoop.current() - loop.add_callback(self.enter_eventloop) + if change.new is not None: + loop.add_callback(self.enter_eventloop) session = Instance(Session, allow_none=True) profile_dir = Instance('IPython.core.profiledir.ProfileDir', allow_none=True) @@ -256,7 +257,7 @@ # which may be skipped by entering the eventloop stream.flush(zmq.POLLOUT) # restore default_int_handler - signal(SIGINT, default_int_handler) + self.pre_handler_hook() while self.eventloop is not None: try: self.eventloop(self) @@ -268,6 +269,7 @@ # eventloop exited cleanly, this means we should stop (right?) self.eventloop = None break + self.post_handler_hook() self.log.info("exiting eventloop") def start(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/ipykernel/zmqshell.py new/ipykernel-4.8.0/ipykernel/zmqshell.py --- old/ipykernel-4.7.0/ipykernel/zmqshell.py 2017-12-06 13:27:21.000000000 +0100 +++ new/ipykernel-4.8.0/ipykernel/zmqshell.py 2018-01-10 12:43:25.000000000 +0100 @@ -471,6 +471,10 @@ if change['new']: loop = self.kernel.io_loop loop.call_later(0.1, loop.stop) + if self.kernel.eventloop: + exit_hook = getattr(self.kernel.eventloop, 'exit_hook', None) + if exit_hook: + exit_hook(self.kernel) keepkernel_on_exit = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/ipykernel.egg-info/PKG-INFO new/ipykernel-4.8.0/ipykernel.egg-info/PKG-INFO --- old/ipykernel-4.7.0/ipykernel.egg-info/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 +++ new/ipykernel-4.8.0/ipykernel.egg-info/PKG-INFO 2018-01-17 18:37:38.000000000 +0100 @@ -0,0 +1,21 @@ +Metadata-Version: 1.1 +Name: ipykernel +Version: 4.8.0 +Summary: IPython Kernel for Jupyter +Home-page: http://ipython.org +Author: IPython Development Team +Author-email: ipython-...@scipy.org +License: BSD +Description-Content-Type: UNKNOWN +Description: UNKNOWN +Keywords: Interactive,Interpreter,Shell,Web +Platform: Linux +Platform: Mac OS X +Platform: Windows +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +Classifier: Intended Audience :: Science/Research +Classifier: License :: OSI Approved :: BSD License +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2.7 +Classifier: Programming Language :: Python :: 3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/ipykernel.egg-info/SOURCES.txt new/ipykernel-4.8.0/ipykernel.egg-info/SOURCES.txt --- old/ipykernel-4.7.0/ipykernel.egg-info/SOURCES.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/ipykernel-4.8.0/ipykernel.egg-info/SOURCES.txt 2018-01-17 18:37:38.000000000 +0100 @@ -0,0 +1,85 @@ +CONTRIBUTING.md +COPYING.md +MANIFEST.in +README.md +ipykernel_launcher.py +setup.cfg +setup.py +/home/takluyver/Code/ipykernel/data_kernelspec/kernel.json +/home/takluyver/Code/ipykernel/data_kernelspec/logo-32x32.png +/home/takluyver/Code/ipykernel/data_kernelspec/logo-64x64.png +docs/Makefile +docs/changelog.rst +docs/conf.py +docs/index.rst +docs/make.bat +docs/requirements.txt +examples/embedding/inprocess_qtconsole.py +examples/embedding/inprocess_terminal.py +examples/embedding/internal_ipkernel.py +examples/embedding/ipkernel_qtapp.py +examples/embedding/ipkernel_wxapp.py +ipykernel/__init__.py +ipykernel/__main__.py +ipykernel/_eventloop_macos.py +ipykernel/_version.py +ipykernel/codeutil.py +ipykernel/connect.py +ipykernel/datapub.py +ipykernel/displayhook.py +ipykernel/embed.py +ipykernel/eventloops.py +ipykernel/heartbeat.py +ipykernel/iostream.py +ipykernel/ipkernel.py +ipykernel/jsonutil.py +ipykernel/kernelapp.py +ipykernel/kernelbase.py +ipykernel/kernelspec.py +ipykernel/log.py +ipykernel/parentpoller.py +ipykernel/pickleutil.py +ipykernel/serialize.py +ipykernel/zmqshell.py +ipykernel.egg-info/PKG-INFO +ipykernel.egg-info/SOURCES.txt +ipykernel.egg-info/dependency_links.txt +ipykernel.egg-info/requires.txt +ipykernel.egg-info/top_level.txt +ipykernel/comm/__init__.py +ipykernel/comm/comm.py +ipykernel/comm/manager.py +ipykernel/gui/__init__.py +ipykernel/gui/gtk3embed.py +ipykernel/gui/gtkembed.py +ipykernel/inprocess/__init__.py +ipykernel/inprocess/blocking.py +ipykernel/inprocess/channels.py +ipykernel/inprocess/client.py +ipykernel/inprocess/constants.py +ipykernel/inprocess/ipkernel.py +ipykernel/inprocess/manager.py +ipykernel/inprocess/socket.py +ipykernel/inprocess/tests/__init__.py +ipykernel/inprocess/tests/test_kernel.py +ipykernel/inprocess/tests/test_kernelmanager.py +ipykernel/pylab/__init__.py +ipykernel/pylab/backend_inline.py +ipykernel/pylab/config.py +ipykernel/resources/logo-32x32.png +ipykernel/resources/logo-64x64.png +ipykernel/tests/__init__.py +ipykernel/tests/_asyncio.py +ipykernel/tests/test_connect.py +ipykernel/tests/test_embed_kernel.py +ipykernel/tests/test_eventloop.py +ipykernel/tests/test_io.py +ipykernel/tests/test_jsonutil.py +ipykernel/tests/test_kernel.py +ipykernel/tests/test_kernelspec.py +ipykernel/tests/test_message_spec.py +ipykernel/tests/test_pickleutil.py +ipykernel/tests/test_serialize.py +ipykernel/tests/test_start_kernel.py +ipykernel/tests/test_zmq_shell.py +ipykernel/tests/utils.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/ipykernel.egg-info/dependency_links.txt new/ipykernel-4.8.0/ipykernel.egg-info/dependency_links.txt --- old/ipykernel-4.7.0/ipykernel.egg-info/dependency_links.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/ipykernel-4.8.0/ipykernel.egg-info/dependency_links.txt 2018-01-17 18:37:38.000000000 +0100 @@ -0,0 +1 @@ + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/ipykernel.egg-info/requires.txt new/ipykernel-4.8.0/ipykernel.egg-info/requires.txt --- old/ipykernel-4.7.0/ipykernel.egg-info/requires.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/ipykernel-4.8.0/ipykernel.egg-info/requires.txt 2018-01-17 18:37:38.000000000 +0100 @@ -0,0 +1,17 @@ +ipython>=4.0.0 +traitlets>=4.1.0 +jupyter_client +tornado>=4.0 + +[test] +pytest-cov +nose + +[test:python_version!="3.3"] +pytest>=3.2 + +[test:python_version=="2.7"] +mock + +[test:python_version=="3.3"] +pytest==3.2.* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/ipykernel.egg-info/top_level.txt new/ipykernel-4.8.0/ipykernel.egg-info/top_level.txt --- old/ipykernel-4.7.0/ipykernel.egg-info/top_level.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/ipykernel-4.8.0/ipykernel.egg-info/top_level.txt 2018-01-17 18:37:38.000000000 +0100 @@ -0,0 +1,2 @@ +ipykernel +ipykernel_launcher diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ipykernel-4.7.0/setup.cfg new/ipykernel-4.8.0/setup.cfg --- old/ipykernel-4.7.0/setup.cfg 2017-12-05 13:12:24.000000000 +0100 +++ new/ipykernel-4.8.0/setup.cfg 2018-01-17 18:37:38.000000000 +0100 @@ -1,8 +1,11 @@ [bdist_wheel] -universal=0 +universal = 0 [nosetests] -warningfilters= default |.* |DeprecationWarning |ipykernel.* - error |.*invalid.* |DeprecationWarning |matplotlib.* - - +warningfilters = default |.* |DeprecationWarning |ipykernel.* + error |.*invalid.* |DeprecationWarning |matplotlib.* + +[egg_info] +tag_build = +tag_date = 0 +