Hello community,

here is the log from the commit of package python-ipykernel for 
openSUSE:Factory checked in at 2020-01-30 09:38:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ipykernel (Old)
 and      /work/SRC/openSUSE:Factory/.python-ipykernel.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ipykernel"

Thu Jan 30 09:38:31 2020 rev:4 rq:768074 version:5.1.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ipykernel/python-ipykernel.changes        
2019-11-22 10:23:48.553302121 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-ipykernel.new.26092/python-ipykernel.changes 
    2020-01-30 09:39:07.313416930 +0100
@@ -1,0 +2,9 @@
+Tue Jan 28 15:46:11 UTC 2020 - Todd R <toddrme2...@gmail.com>
+
+- Update to 5.1.4
+  * Fix pickle issues when using inline matplotlib backend
+  * Fix an error during kernel shutdown
+  * Fix compatibility issues with Python 3.8
+  * Remove some dead code
+
+-------------------------------------------------------------------

Old:
----
  ipykernel-5.1.3.tar.gz

New:
----
  ipykernel-5.1.4.tar.gz

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

Other differences:
------------------
++++++ python-ipykernel.spec ++++++
--- /var/tmp/diff_new_pack.rnC6ZS/_old  2020-01-30 09:39:08.853417754 +0100
+++ /var/tmp/diff_new_pack.rnC6ZS/_new  2020-01-30 09:39:08.857417757 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-ipykernel
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define         skip_python2 1
 Name:           python-ipykernel
-Version:        5.1.3
+Version:        5.1.4
 Release:        0
 Summary:        IPython Kernel for Jupyter
 License:        BSD-3-Clause

++++++ ipykernel-5.1.3.tar.gz -> ipykernel-5.1.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/.gitignore 
new/ipykernel-5.1.4/.gitignore
--- old/ipykernel-5.1.3/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/ipykernel-5.1.4/.gitignore      2018-09-01 09:48:16.000000000 +0200
@@ -0,0 +1,26 @@
+MANIFEST
+build
+cover
+dist
+_build
+docs/man/*.gz
+docs/source/api/generated
+docs/source/config/options
+docs/source/interactive/magics-generated.txt
+docs/gh-pages
+IPython/html/notebook/static/mathjax
+IPython/html/static/style/*.map
+*.py[co]
+__pycache__
+*.egg-info
+*~
+*.bak
+.ipynb_checkpoints
+.tox
+.DS_Store
+\#*#
+.#*
+.coverage
+
+data_kernelspec
+.pytest_cache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/.mailmap new/ipykernel-5.1.4/.mailmap
--- old/ipykernel-5.1.3/.mailmap        1970-01-01 01:00:00.000000000 +0100
+++ new/ipykernel-5.1.4/.mailmap        2015-04-09 10:09:32.000000000 +0200
@@ -0,0 +1,149 @@
+A. J. Holyoake <a.j.holyo...@gmail.com> ajholyoake <a.j.holyo...@gmail.com>
+Aaron Culich <acul...@gmail.com> Aaron Culich <acul...@eecs.berkeley.edu>
+Aron Ahmadia <a...@ahmadia.net> ahmadia <a...@ahmadia.net>
+Benjamin Ragan-Kelley <benjami...@gmail.com> <minrk@Mercury.local>
+Benjamin Ragan-Kelley <benjami...@gmail.com> Min RK
+Benjamin Ragan-Kelley <benjami...@gmail.com> MinRK <benjami...@gmail.com>
+Barry Wark <barryw...@gmail.com> Barry Wark <barrywarkatgmaildotcom>
+Ben Edwards <bedwa...@cs.unm.edu> Ben Edwards <bedwards@sausage.(none)>
+Bradley M. Froehle <brad.froe...@gmail.com> Bradley M. Froehle 
<bfroe...@math.berkeley.edu>
+Bradley M. Froehle <brad.froe...@gmail.com> Bradley Froehle 
<brad.froe...@gmail.com>
+Brandon Parsons <bran...@parsonstx.com> Brandon Parsons 
<brandon.pars...@hp.com>
+Brian E. Granger <elliso...@gmail.com> Brian Granger
+Brian E. Granger <elliso...@gmail.com> Brian Granger <>
+Brian E. Granger <elliso...@gmail.com> bgranger <>
+Brian E. Granger <elliso...@gmail.com> bgranger <bgranger@red>
+Christoph Gohlke <cgoh...@uci.edu> cgohlke <cgoh...@uci.edu>
+Cyrille Rossant <cyrille.ross...@gmail.com> rossant <rossant@github>
+Damián Avila <damianavil...@yahoo.com.ar> damianavila 
<damianavil...@yahoo.com.ar>
+Damián Avila <damianavil...@yahoo.com.ar> damianavila <damianav...@gmail.com>
+Damon Allen <damontal...@gmail.com> damontallen <damontal...@gmail.com>
+Darren Dale <dsdal...@gmail.com> darren.dale <>
+Darren Dale <dsdal...@gmail.com> Darren Dale <>
+Dav Clark <davcl...@berkeley.edu> Dav Clark <>
+Dav Clark <davcl...@berkeley.edu> Dav Clark <davcl...@gmail.com>
+David Hirschfeld <david.hirschf...@gazprom-mt.com> dhirschfeld 
<david.hirschf...@gazprom-mt.com>
+David P. Sanders <dpsand...@gmail.com> David P. Sanders 
<dpsand...@ciencias.unam.mx>
+David Warde-Farley <warde...@iro.umontreal.ca> David Warde-Farley <>
+Doug Blank <dbl...@cs.brynmawr.edu> Doug Blank <doug.bl...@gmail.com>
+Eugene Van den Bulke <eugene.van-den-bu...@gmail.com> Eugene Van den Bulke 
<eugene.vandenbu...@gmail.com> 
+Evan Patterson <epatt...@enthought.com> 
<epatters@EPattersons-MacBook-Pro.local>
+Evan Patterson <epatt...@enthought.com> <epatters@evan-laptop.localdomain>
+Evan Patterson <epatt...@enthought.com> <epatt...@caltech.edu>
+Evan Patterson <epatt...@enthought.com> <ejpatt...@gmail.com>
+Evan Patterson <epatt...@enthought.com> epatters <ejpatt...@gmail.com>
+Evan Patterson <epatt...@enthought.com> epatters <epatt...@enthought.com>
+Ernie French <ernestfre...@gmail.com> Ernie French <er...@gqpbj.com>
+Ernie French <ernestfre...@gmail.com> ernie french <ernestfre...@gmail.com>
+Ernie French <ernestfre...@gmail.com> ernop <ernestfre...@gmail.com>
+Fernando Perez <fernando.pe...@berkeley.edu> <fperez....@gmail.com>
+Fernando Perez <fernando.pe...@berkeley.edu> Fernando Perez 
<fernando.pe...@berkeley.edu>
+Fernando Perez <fernando.pe...@berkeley.edu> fperez <>
+Fernando Perez <fernando.pe...@berkeley.edu> fptest <>
+Fernando Perez <fernando.pe...@berkeley.edu> fptest1 <>
+Fernando Perez <fernando.pe...@berkeley.edu> Fernando Perez 
<fernando.pe...@berkeley.edu>
+Fernando Perez <fernando.pe...@berkeley.edu> Fernando Perez <>
+Fernando Perez <fernando.pe...@berkeley.edu> Fernando Perez <fperez@maqroll>
+Frank Murphy <fpmur...@mtu.edu> Frank Murphy <fmur...@arbor.net>
+Gabriel Becker <gmbec...@ucdavis.edu> gmbecker <gmbec...@ucdavis.edu>
+Gael Varoquaux <gael.varoqu...@normalesup.org> gael.varoquaux <>
+Gael Varoquaux <gael.varoqu...@normalesup.org> gvaroquaux 
<gvaroquaux@gvaroquaux-desktop>
+Gael Varoquaux <gael.varoqu...@normalesup.org> Gael Varoquaux <>
+Ingolf Becker <ingolf.bec...@googlemail.com> watercrossing 
<ingolf.bec...@googlemail.com>
+Jake Vanderplas <jake...@gmail.com> Jake Vanderplas 
<vanderp...@astro.washington.edu>
+Jakob Gager <jakob.ga...@gmail.com> jakobgager <jakob.ga...@gmail.com>
+Jakob Gager <jakob.ga...@gmail.com> jakobgager <ga...@ilsb.tuwien.ac.at>
+Jakob Gager <jakob.ga...@gmail.com> jakobgager <jakobga...@hotmail.com>
+Jason Grout <jgro...@bloomberg.net> <jason.gr...@drake.edu>
+Jason Grout <jgro...@bloomberg.net> <jason-git...@creativetrax.com>
+Jason Gors <jason.gors.w...@gmail.com> jason gors <jason.gors.w...@gmail.com>
+Jason Gors <jason.gors.w...@gmail.com> jgors <jason.gors.w...@gmail.com>
+Jens Hedegaard Nielsen <jenshniel...@gmail.com> Jens Hedegaard Nielsen 
<jhn@jhn-Znote.(none)>
+Jens Hedegaard Nielsen <jenshniel...@gmail.com> Jens H Nielsen 
<jenshniel...@gmail.com>
+Jens Hedegaard Nielsen <jenshniel...@gmail.com> Jens H. Nielsen 
<jenshniel...@gmail.com>
+Jez Ng <jezr...@gmail.com> Jez Ng <m...@jezng.com>
+Jonathan Frederic <jdfre...@calpoly.edu> Jonathan Frederic 
<jonathan@LifebookMint.(none)>
+Jonathan Frederic <jdfre...@calpoly.edu> Jonathan Frederic 
<jon.fre...@gmail.com>
+Jonathan Frederic <jdfre...@calpoly.edu> Jonathan Frederic 
<xh3xx.go...@gmail.com>
+Jonathan Frederic <jdfre...@calpoly.edu> jon <jon.fre...@gmail.com>
+Jonathan Frederic <jdfre...@calpoly.edu> U-Jon-PC\Jon <Jon@Jon-PC.(none)>
+Jonathan March <jma...@enthought.com> Jonathan March <j...@marchray.net>
+Jonathan March <jma...@enthought.com> jdmarch <j...@marchray.net>
+Jörgen Stenarson <jorgen.stenar...@kroywen.se> Jörgen Stenarson 
<jorgen.stenar...@bostream.nu>
+Jörgen Stenarson <jorgen.stenar...@kroywen.se> Jorgen Stenarson 
<jorgen.stenar...@bostream.nu>
+Jörgen Stenarson <jorgen.stenar...@kroywen.se> Jorgen Stenarson <>
+Jörgen Stenarson <jorgen.stenar...@kroywen.se> jstenar 
<jorgen.stenar...@bostream.nu>
+Jörgen Stenarson <jorgen.stenar...@kroywen.se> jstenar <>
+Jörgen Stenarson <jorgen.stenar...@kroywen.se> Jörgen Stenarson 
<jorgen.stenar...@kroywen.se>
+Juergen Hasch <pyt...@elbonia.de> juhasch <pyt...@elbonia.de>
+Juergen Hasch <pyt...@elbonia.de> juhasch <ha...@vmbox.fritz.box>
+Julia Evans <ju...@jvns.ca> Julia Evans <ju...@stripe.com>
+Kester Tong <kest...@google.com> KesterTong <kest...@google.com>
+Kyle Kelley <rgb...@gmail.com> Kyle Kelley <kyle.kel...@rackspace.com>
+Kyle Kelley <rgb...@gmail.com> rgbkrk <rgb...@gmail.com>
+Laurent Dufréchou <laurent.dufrec...@gmail.com> <laurent.dufrec...@gmail.com>
+Laurent Dufréchou <laurent.dufrec...@gmail.com> <laurent@Pep>
+Laurent Dufréchou <laurent.dufrec...@gmail.com> laurent dufrechou <>
+Laurent Dufréchou <laurent.dufrec...@gmail.com> laurent.dufrechou <>
+Laurent Dufréchou <laurent.dufrec...@gmail.com> Laurent Dufrechou <>
+Laurent Dufréchou <laurent.dufrec...@gmail.com> laurent.dufrec...@gmail.com <>
+Laurent Dufréchou <laurent.dufrec...@gmail.com> ldufrechou <ldufrechou@PEP>
+Lorena Pantano <lorena.pant...@gmail.com> Lorena <lorena.pant...@gmail.com>
+Luis Pedro Coelho <l...@luispedro.org> Luis Pedro Coelho <l...@cmu.edu>
+Marc Molla <marcmo...@gmail.com> marcmolla <marcmo...@gmail.com>
+Martín Gaitán <gai...@gmail.com> Martín Gaitán <gai...@phasety.com>
+Matthias Bussonnier <bussonniermatth...@gmail.com> Matthias BUSSONNIER 
<bussonniermatth...@gmail.com>
+Matthias Bussonnier <bussonniermatth...@gmail.com> Bussonnier Matthias 
<bussonniermatth...@gmail.com>
+Matthias Bussonnier <bussonniermatth...@gmail.com> Matthias BUSSONNIER 
<bussonniermatth...@umr168-curn-1-24x-6561.curie.fr>
+Matthias Bussonnier <bussonniermatth...@gmail.com> Matthias Bussonnier 
<carreau@Aspire.(none)>
+Michael Droettboom <mdb...@gmail.com> Michael Droettboom <md...@stsci.edu>
+Nicholas Bollweg <nick.boll...@gmail.com> Nicholas Bollweg (Nick) 
<nick.boll...@gmail.com>
+Nicolas Rougier <nicolas.roug...@inria.fr> <nicolas.roug...@inria.fr>
+Nikolay Koldunov <koldun...@gmail.com> Nikolay Koldunov 
<nikolay.koldu...@zmaw.de>
+Omar Andrés Zapata Mesa <andresete.ch...@gmail.com> Omar Andres Zapata Mesa 
<andresete.ch...@gmail.com>
+Omar Andrés Zapata Mesa <andresete.ch...@gmail.com> Omar Andres Zapata Mesa 
<omazapa@tuxhome>
+Pankaj Pandey <panka...@gmail.com> Pankaj Pandey <pan...@enthought.com>
+Pascal Schetelat <pascal.schete...@gmail.com> pascal-schetelat 
<pascal.schete...@gmail.com>
+Paul Ivanov <p...@berkeley.edu> Paul Ivanov <pivanov...@gmail.com>
+Pauli Virtanen <pauli.virta...@iki.fi> Pauli Virtanen <>
+Pauli Virtanen <pauli.virta...@iki.fi> Pauli Virtanen <p...@iki.fi>
+Pierre Gerold <pierre.ger...@laposte.net> Pierre Gerold <ger...@crans.org>
+Pietro Berkes <pber...@enthought.com> Pietro Berkes 
<pietro.ber...@googlemail.com>
+Piti Ongmongkolkul <piti...@gmail.com> piti118 <piti...@gmail.com>
+Prabhu Ramachandran <pra...@enthought.com> Prabhu Ramachandran <>
+Puneeth Chaganti <puncha...@gmail.com> Puneeth Chaganti 
<puncha...@muse-amuse.in>
+Robert Kern <robert.k...@gmail.com> rkern <>
+Robert Kern <robert.k...@gmail.com> Robert Kern <rk...@enthought.com>
+Robert Kern <robert.k...@gmail.com> Robert Kern <rkern@Sacrilege.local>
+Robert Kern <robert.k...@gmail.com> Robert Kern <>
+Robert Marchman <bo.march...@gmail.com> Robert Marchman 
<robert.l.march...@dartmouth.edu>
+Satrajit Ghosh <sa...@mit.edu> Satrajit Ghosh <sa...@ba5.mit.edu>
+Satrajit Ghosh <sa...@mit.edu> Satrajit Ghosh <satrajit.gh...@gmail.com>
+Scott Sanderson <scout...@gmail.com> Scott Sanderson 
<ssander...@quantopian.com>
+smithj1 <smithj1@LMC-022896.local> smithj1 <smit...@lmc-022896.swisscom.com>
+smithj1 <smithj1@LMC-022896.local> smithj1 <smithj1@lmc-022896.local>
+Steven Johnson <steven.john...@drake.edu> stevenJohnson 
<steven.john...@drake.edu>
+Steven Silvester <steven.silves...@ieee.org> blink1073 
<steven.silves...@ieee.org>
+S. Weber <s8we...@c4.usr.sh> s8weber <s8we...@c5.usr.sh>
+Stefan van der Walt <ste...@sun.ac.za> Stefan van der Walt <b...@mentat.za.net>
+Silvia Vinyes <silvia.vin...@gmail.com> Silvia <silvia@silvia-U44SG.(none)>
+Silvia Vinyes <silvia.vin...@gmail.com> silviav12 <silvia.vin...@gmail.com>
+Sylvain Corlay <scor...@bloomberg.net> <sylvain.cor...@gmail.com>
+Sylvain Corlay <scor...@bloomberg.net> sylvain.corlay 
<sylvain.cor...@gmail.com>
+Ted Drain <ted.dr...@gmail.com> TD22057 <ted.dr...@gmail.com>
+Théophile Studer <theo.stu...@gmail.com> Théophile Studer 
<stu...@users.noreply.github.com>
+Thomas Kluyver <tak...@gmail.com> Thomas <tak...@gmail.com>
+Thomas Spura <toms...@fedoraproject.org> Thomas Spura <thomas.sp...@gmail.com>
+Timo Paulssen <timona...@perpetuum-immobile.de> timo 
<timona...@perpetuum-immobile.de>
+vds <vds@VIVIAN> vds2212 <vds2212@VIVIAN>
+vds <vds@VIVIAN> vds <vds@vivian>
+Ville M. Vainio <vivai...@gmail.com> <vivainio2@WN-W0941>
+Ville M. Vainio <vivai...@gmail.com> ville <ville@VILLE-PC>
+Ville M. Vainio <vivai...@gmail.com> ville <ville@ville-desktop>
+Ville M. Vainio <vivai...@gmail.com> vivainio <>
+Ville M. Vainio <vivai...@gmail.com> Ville M. Vainio <vivainio@villev>
+Ville M. Vainio <vivai...@gmail.com> Ville M. Vainio <vivainio@ville_vmw>
+Walter Doerwald <wal...@livinglogic.de> walter.doerwald <>
+Walter Doerwald <wal...@livinglogic.de> Walter Doerwald <>
+W. Trevor King <wk...@tremily.us> W. Trevor King <wk...@drexel.edu>
+Yoval P. <yo...@gmx.com> y-p <yo...@gmx.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/.travis.yml 
new/ipykernel-5.1.4/.travis.yml
--- old/ipykernel-5.1.3/.travis.yml     1970-01-01 01:00:00.000000000 +0100
+++ new/ipykernel-5.1.4/.travis.yml     2019-12-10 14:00:44.000000000 +0100
@@ -0,0 +1,47 @@
+language: python
+python:
+  - "nightly"
+  - 3.8
+  - 3.7
+  - 3.6
+  - 3.5
+sudo: false
+dist: xenial
+install:
+  - |
+    # pip install
+    pip install --upgrade setuptools pip
+    pip install --pre --upgrade --upgrade-strategy=eager .[test] codecov
+  - |
+    # install matplotlib
+    if [[ "$TRAVIS_PYTHON_VERSION" == "3.6" ]]; then
+      pip install matplotlib curio trio
+    fi
+  - |
+    # pin tornado
+    if [[ ! -z "$TORNADO" ]]; then
+      pip install tornado=="$TORNADO"
+    fi
+  - |
+    # pin IPython
+    if [[ ! -z "$IPYTHON" ]]; then
+      if [[ "$IPYTHON" == "master" ]]; then
+        SPEC=git+https://github.com/ipython/ipython#egg=ipython
+      else
+        SPEC="ipython==$IPYTHON"
+      fi
+      pip install --upgrade --pre "$SPEC"
+    fi
+  - pip freeze
+script:
+  - jupyter kernelspec list
+  - pytest --cov ipykernel --durations 10 -v ipykernel
+after_success:
+  - codecov
+matrix:
+  include:
+    - python: 3.6
+      env:
+        - IPYTHON=master
+  allow_failures:
+    - python: "nightly"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/PKG-INFO new/ipykernel-5.1.4/PKG-INFO
--- old/ipykernel-5.1.3/PKG-INFO        2019-10-20 13:55:39.000000000 +0200
+++ new/ipykernel-5.1.4/PKG-INFO        2020-01-27 11:37:26.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: ipykernel
-Version: 5.1.3
+Version: 5.1.4
 Summary: IPython Kernel for Jupyter
 Home-page: https://ipython.org
 Author: IPython Development Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/appveyor.yml 
new/ipykernel-5.1.4/appveyor.yml
--- old/ipykernel-5.1.3/appveyor.yml    1970-01-01 01:00:00.000000000 +0100
+++ new/ipykernel-5.1.4/appveyor.yml    2018-09-14 10:31:39.000000000 +0200
@@ -0,0 +1,33 @@
+build: false
+shallow_clone: false
+skip_branch_with_pr: true
+clone_depth: 1
+
+environment:
+
+  matrix:
+    - python: "C:/Python36-x64"
+    - python: "C:/Python36"
+
+cache:
+  - C:\Users\appveyor\AppData\Local\pip\Cache
+
+init:
+  - cmd: set PATH=%python%;%python%\scripts;%PATH%
+install:
+  - cmd: |
+        python -m pip install --upgrade setuptools pip wheel
+        pip --version
+  - cmd: |
+        pip install --pre -e .
+        pip install ipykernel[test]
+  - cmd: |
+        pip install matplotlib numpy
+        pip freeze
+  - cmd: python -c "import ipykernel.kernelspec; 
ipykernel.kernelspec.install(user=True)"
+test_script:
+  - cmd: pytest -v --cov ipykernel ipykernel
+
+on_success:
+  - cmd: pip install codecov
+  - cmd: codecov
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/docs/changelog.rst 
new/ipykernel-5.1.4/docs/changelog.rst
--- old/ipykernel-5.1.3/docs/changelog.rst      2019-10-20 13:54:46.000000000 
+0200
+++ new/ipykernel-5.1.4/docs/changelog.rst      2020-01-27 11:36:40.000000000 
+0100
@@ -4,6 +4,17 @@
 5.1
 ---
 
+5.1.4
+*****
+
+5.1.4 Includes a few bugfixes,
+especially for compatibility with Python 3.8 on Windows.
+
+- Fix pickle issues when using inline matplotlib backend (:ghpull:`476`)
+- Fix an error during kernel shutdown (:ghpull:`463`)
+- Fix compatibility issues with Python 3.8 (:ghpull:`456`, :ghpull:`461`)
+- Remove some dead code (:ghpull:`474`, :ghpull:`467`)
+
 5.1.3
 *****
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ipykernel-5.1.3/examples/Embedding/inprocess_qtconsole.py 
new/ipykernel-5.1.4/examples/Embedding/inprocess_qtconsole.py
--- old/ipykernel-5.1.3/examples/Embedding/inprocess_qtconsole.py       
1970-01-01 01:00:00.000000000 +0100
+++ new/ipykernel-5.1.4/examples/Embedding/inprocess_qtconsole.py       
2015-04-09 10:09:32.000000000 +0200
@@ -0,0 +1,46 @@
+from __future__ import print_function
+import os
+
+from IPython.qt.console.rich_ipython_widget import RichIPythonWidget
+from IPython.qt.inprocess import QtInProcessKernelManager
+from IPython.lib import guisupport
+
+
+def print_process_id():
+    print('Process ID is:', os.getpid())
+
+
+def main():
+    # Print the ID of the main process
+    print_process_id()
+
+    app = guisupport.get_app_qt4()
+
+    # Create an in-process kernel
+    # >>> print_process_id()
+    # will print the same process ID as the main process
+    kernel_manager = QtInProcessKernelManager()
+    kernel_manager.start_kernel()
+    kernel = kernel_manager.kernel
+    kernel.gui = 'qt4'
+    kernel.shell.push({'foo': 43, 'print_process_id': print_process_id})
+
+    kernel_client = kernel_manager.client()
+    kernel_client.start_channels()
+
+    def stop():
+        kernel_client.stop_channels()
+        kernel_manager.shutdown_kernel()
+        app.exit()
+
+    control = RichIPythonWidget()
+    control.kernel_manager = kernel_manager
+    control.kernel_client = kernel_client
+    control.exit_requested.connect(stop)
+    control.show()
+
+    guisupport.start_event_loop_qt4(app)
+
+
+if __name__ == '__main__':
+    main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ipykernel-5.1.3/examples/Embedding/inprocess_terminal.py 
new/ipykernel-5.1.4/examples/Embedding/inprocess_terminal.py
--- old/ipykernel-5.1.3/examples/Embedding/inprocess_terminal.py        
1970-01-01 01:00:00.000000000 +0100
+++ new/ipykernel-5.1.4/examples/Embedding/inprocess_terminal.py        
2015-04-09 10:09:32.000000000 +0200
@@ -0,0 +1,31 @@
+from __future__ import print_function
+import os
+
+from IPython.kernel.inprocess import InProcessKernelManager
+from IPython.terminal.console.interactiveshell import 
ZMQTerminalInteractiveShell
+
+
+def print_process_id():
+    print('Process ID is:', os.getpid())
+
+
+def main():
+    print_process_id()
+
+    # Create an in-process kernel
+    # >>> print_process_id()
+    # will print the same process ID as the main process
+    kernel_manager = InProcessKernelManager()
+    kernel_manager.start_kernel()
+    kernel = kernel_manager.kernel
+    kernel.gui = 'qt4'
+    kernel.shell.push({'foo': 43, 'print_process_id': print_process_id})
+    client = kernel_manager.client()
+    client.start_channels()
+
+    shell = ZMQTerminalInteractiveShell(manager=kernel_manager, client=client)
+    shell.mainloop()
+
+
+if __name__ == '__main__':
+    main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ipykernel-5.1.3/examples/Embedding/internal_ipkernel.py 
new/ipykernel-5.1.4/examples/Embedding/internal_ipkernel.py
--- old/ipykernel-5.1.3/examples/Embedding/internal_ipkernel.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/ipykernel-5.1.4/examples/Embedding/internal_ipkernel.py 2015-09-22 
09:39:51.000000000 +0200
@@ -0,0 +1,55 @@
+#-----------------------------------------------------------------------------
+# Imports
+#-----------------------------------------------------------------------------
+
+import sys
+
+from IPython.lib.kernel import connect_qtconsole
+from IPython.kernel.zmq.kernelapp import IPKernelApp
+
+#-----------------------------------------------------------------------------
+# Functions and classes
+#-----------------------------------------------------------------------------
+def mpl_kernel(gui):
+    """Launch and return an IPython kernel with matplotlib support for the 
desired gui
+    """
+    kernel = IPKernelApp.instance()
+    kernel.initialize(['python', '--matplotlib=%s' % gui,
+                       #'--log-level=10'
+                       ])
+    return kernel
+
+
+class InternalIPKernel(object):
+
+    def init_ipkernel(self, backend):
+        # Start IPython kernel with GUI event loop and mpl support
+        self.ipkernel = mpl_kernel(backend)
+        # To create and track active qt consoles
+        self.consoles = []
+        
+        # This application will also act on the shell user namespace
+        self.namespace = self.ipkernel.shell.user_ns
+
+        # Example: a variable that will be seen by the user in the shell, and
+        # that the GUI modifies (the 'Counter++' button increments it):
+        self.namespace['app_counter'] = 0
+        #self.namespace['ipkernel'] = self.ipkernel  # dbg
+
+    def print_namespace(self, evt=None):
+        print("\n***Variables in User namespace***")
+        for k, v in self.namespace.items():
+            if not k.startswith('_'):
+                print('%s -> %r' % (k, v))
+        sys.stdout.flush()
+
+    def new_qt_console(self, evt=None):
+        """start a new qtconsole connected to our kernel"""
+        return connect_qtconsole(self.ipkernel.abs_connection_file, 
profile=self.ipkernel.profile)
+
+    def count(self, evt=None):
+        self.namespace['app_counter'] += 1
+
+    def cleanup_consoles(self, evt=None):
+        for c in self.consoles:
+            c.kill()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/examples/Embedding/ipkernel_qtapp.py 
new/ipykernel-5.1.4/examples/Embedding/ipkernel_qtapp.py
--- old/ipykernel-5.1.3/examples/Embedding/ipkernel_qtapp.py    1970-01-01 
01:00:00.000000000 +0100
+++ new/ipykernel-5.1.4/examples/Embedding/ipkernel_qtapp.py    2015-04-09 
10:09:32.000000000 +0200
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+"""Example integrating an IPython kernel into a GUI App.
+
+This trivial GUI application internally starts an IPython kernel, to which Qt
+consoles can be connected either by the user at the command line or started
+from the GUI itself, via a button.  The GUI can also manipulate one variable in
+the kernel's namespace, and print the namespace to the console.
+
+Play with it by running the script and then opening one or more consoles, and
+pushing the 'Counter++' and 'Namespace' buttons.
+
+Upon exit, it should automatically close all consoles opened from the GUI.
+
+Consoles attached separately from a terminal will not be terminated, though
+they will notice that their kernel died.
+"""
+#-----------------------------------------------------------------------------
+# Imports
+#-----------------------------------------------------------------------------
+
+from PyQt4 import Qt
+
+from internal_ipkernel import InternalIPKernel
+
+#-----------------------------------------------------------------------------
+# Functions and classes
+#-----------------------------------------------------------------------------
+class SimpleWindow(Qt.QWidget, InternalIPKernel):
+
+    def __init__(self, app):
+        Qt.QWidget.__init__(self)
+        self.app = app
+        self.add_widgets()
+        self.init_ipkernel('qt')
+
+    def add_widgets(self):
+        self.setGeometry(300, 300, 400, 70)
+        self.setWindowTitle('IPython in your app')
+
+        # Add simple buttons:
+        console = Qt.QPushButton('Qt Console', self)
+        console.setGeometry(10, 10, 100, 35)
+        self.connect(console, Qt.SIGNAL('clicked()'), self.new_qt_console)
+
+        namespace = Qt.QPushButton('Namespace', self)
+        namespace.setGeometry(120, 10, 100, 35)
+        self.connect(namespace, Qt.SIGNAL('clicked()'), self.print_namespace)
+
+        count = Qt.QPushButton('Count++', self)
+        count.setGeometry(230, 10, 80, 35)
+        self.connect(count, Qt.SIGNAL('clicked()'), self.count)
+
+        # Quit and cleanup
+        quit = Qt.QPushButton('Quit', self)
+        quit.setGeometry(320, 10, 60, 35)
+        self.connect(quit, Qt.SIGNAL('clicked()'), Qt.qApp, Qt.SLOT('quit()'))
+
+        self.app.connect(self.app, Qt.SIGNAL("lastWindowClosed()"),
+                         self.app, Qt.SLOT("quit()"))
+
+        self.app.aboutToQuit.connect(self.cleanup_consoles)
+
+#-----------------------------------------------------------------------------
+# Main script
+#-----------------------------------------------------------------------------
+
+if __name__ == "__main__":
+    app = Qt.QApplication([]) 
+    # Create our window
+    win = SimpleWindow(app)
+    win.show()
+    
+    # Very important, IPython-specific step: this gets GUI event loop
+    # integration going, and it replaces calling app.exec_()
+    win.ipkernel.start()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/examples/Embedding/ipkernel_wxapp.py 
new/ipykernel-5.1.4/examples/Embedding/ipkernel_wxapp.py
--- old/ipykernel-5.1.3/examples/Embedding/ipkernel_wxapp.py    1970-01-01 
01:00:00.000000000 +0100
+++ new/ipykernel-5.1.4/examples/Embedding/ipkernel_wxapp.py    2015-04-09 
10:09:32.000000000 +0200
@@ -0,0 +1,119 @@
+#!/usr/bin/env python
+"""Example integrating an IPython kernel into a GUI App.
+
+This trivial GUI application internally starts an IPython kernel, to which Qt
+consoles can be connected either by the user at the command line or started
+from the GUI itself, via a button.  The GUI can also manipulate one variable in
+the kernel's namespace, and print the namespace to the console.
+
+Play with it by running the script and then opening one or more consoles, and
+pushing the 'Counter++' and 'Namespace' buttons.
+
+Upon exit, it should automatically close all consoles opened from the GUI.
+
+Consoles attached separately from a terminal will not be terminated, though
+they will notice that their kernel died.
+
+Ref: Modified from wxPython source code wxPython/samples/simple/simple.py
+"""
+#-----------------------------------------------------------------------------
+# Imports
+#-----------------------------------------------------------------------------
+import sys
+
+import wx
+
+from internal_ipkernel import InternalIPKernel
+
+#-----------------------------------------------------------------------------
+# Functions and classes
+#-----------------------------------------------------------------------------
+
+class MyFrame(wx.Frame, InternalIPKernel):
+    """
+    This is MyFrame.  It just shows a few controls on a wxPanel,
+    and has a simple menu.
+    """
+
+    def __init__(self, parent, title):
+        wx.Frame.__init__(self, parent, -1, title,
+                          pos=(150, 150), size=(350, 285))
+
+        # Create the menubar
+        menuBar = wx.MenuBar()
+
+        # and a menu 
+        menu = wx.Menu()
+
+        # add an item to the menu, using \tKeyName automatically
+        # creates an accelerator, the third param is some help text
+        # that will show up in the statusbar
+        menu.Append(wx.ID_EXIT, "E&xit\tAlt-X", "Exit this simple sample")
+
+        # bind the menu event to an event handler
+        self.Bind(wx.EVT_MENU, self.OnTimeToClose, id=wx.ID_EXIT)
+
+        # and put the menu on the menubar
+        menuBar.Append(menu, "&File")
+        self.SetMenuBar(menuBar)
+
+        self.CreateStatusBar()
+
+        # Now create the Panel to put the other controls on.
+        panel = wx.Panel(self)
+
+        # and a few controls
+        text = wx.StaticText(panel, -1, "Hello World!")
+        text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
+        text.SetSize(text.GetBestSize())
+        qtconsole_btn = wx.Button(panel, -1, "Qt Console")
+        ns_btn = wx.Button(panel, -1, "Namespace")
+        count_btn = wx.Button(panel, -1, "Count++")
+        close_btn = wx.Button(panel, -1, "Quit")
+
+        # bind the button events to handlers
+        self.Bind(wx.EVT_BUTTON, self.new_qt_console, qtconsole_btn)
+        self.Bind(wx.EVT_BUTTON, self.print_namespace, ns_btn)
+        self.Bind(wx.EVT_BUTTON, self.count, count_btn)
+        self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, close_btn)
+
+        # Use a sizer to layout the controls, stacked vertically and with
+        # a 10 pixel border around each
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        for ctrl in [text, qtconsole_btn, ns_btn, count_btn, close_btn]:
+            sizer.Add(ctrl, 0, wx.ALL, 10)
+        panel.SetSizer(sizer)
+        panel.Layout()
+
+        # Start the IPython kernel with gui support
+        self.init_ipkernel('wx')
+
+    def OnTimeToClose(self, evt):
+        """Event handler for the button click."""
+        print("See ya later!")
+        sys.stdout.flush()
+        self.cleanup_consoles(evt)
+        self.Close()
+        # Not sure why, but our IPython kernel seems to prevent normal WX
+        # shutdown, so an explicit exit() call is needed.
+        sys.exit()
+
+
+class MyApp(wx.App):
+    def OnInit(self):
+        frame = MyFrame(None, "Simple wxPython App")
+        self.SetTopWindow(frame)
+        frame.Show(True)
+        self.ipkernel = frame.ipkernel
+        return True
+
+#-----------------------------------------------------------------------------
+# Main script
+#-----------------------------------------------------------------------------
+
+if __name__ == '__main__':
+    app = MyApp(redirect=False, clearSigInt=False)
+
+    # Very important, IPython-specific step: this gets GUI event loop
+    # integration going, and it replaces calling app.MainLoop()
+    app.ipkernel.start()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ipykernel-5.1.3/examples/embedding/inprocess_qtconsole.py 
new/ipykernel-5.1.4/examples/embedding/inprocess_qtconsole.py
--- old/ipykernel-5.1.3/examples/embedding/inprocess_qtconsole.py       
2019-10-20 13:54:46.000000000 +0200
+++ new/ipykernel-5.1.4/examples/embedding/inprocess_qtconsole.py       
1970-01-01 01:00:00.000000000 +0100
@@ -1,46 +0,0 @@
-from __future__ import print_function
-import os
-
-from IPython.qt.console.rich_ipython_widget import RichIPythonWidget
-from IPython.qt.inprocess import QtInProcessKernelManager
-from IPython.lib import guisupport
-
-
-def print_process_id():
-    print('Process ID is:', os.getpid())
-
-
-def main():
-    # Print the ID of the main process
-    print_process_id()
-
-    app = guisupport.get_app_qt4()
-
-    # Create an in-process kernel
-    # >>> print_process_id()
-    # will print the same process ID as the main process
-    kernel_manager = QtInProcessKernelManager()
-    kernel_manager.start_kernel()
-    kernel = kernel_manager.kernel
-    kernel.gui = 'qt4'
-    kernel.shell.push({'foo': 43, 'print_process_id': print_process_id})
-
-    kernel_client = kernel_manager.client()
-    kernel_client.start_channels()
-
-    def stop():
-        kernel_client.stop_channels()
-        kernel_manager.shutdown_kernel()
-        app.exit()
-
-    control = RichIPythonWidget()
-    control.kernel_manager = kernel_manager
-    control.kernel_client = kernel_client
-    control.exit_requested.connect(stop)
-    control.show()
-
-    guisupport.start_event_loop_qt4(app)
-
-
-if __name__ == '__main__':
-    main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ipykernel-5.1.3/examples/embedding/inprocess_terminal.py 
new/ipykernel-5.1.4/examples/embedding/inprocess_terminal.py
--- old/ipykernel-5.1.3/examples/embedding/inprocess_terminal.py        
2019-10-20 13:54:46.000000000 +0200
+++ new/ipykernel-5.1.4/examples/embedding/inprocess_terminal.py        
1970-01-01 01:00:00.000000000 +0100
@@ -1,31 +0,0 @@
-from __future__ import print_function
-import os
-
-from IPython.kernel.inprocess import InProcessKernelManager
-from IPython.terminal.console.interactiveshell import 
ZMQTerminalInteractiveShell
-
-
-def print_process_id():
-    print('Process ID is:', os.getpid())
-
-
-def main():
-    print_process_id()
-
-    # Create an in-process kernel
-    # >>> print_process_id()
-    # will print the same process ID as the main process
-    kernel_manager = InProcessKernelManager()
-    kernel_manager.start_kernel()
-    kernel = kernel_manager.kernel
-    kernel.gui = 'qt4'
-    kernel.shell.push({'foo': 43, 'print_process_id': print_process_id})
-    client = kernel_manager.client()
-    client.start_channels()
-
-    shell = ZMQTerminalInteractiveShell(manager=kernel_manager, client=client)
-    shell.mainloop()
-
-
-if __name__ == '__main__':
-    main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ipykernel-5.1.3/examples/embedding/internal_ipkernel.py 
new/ipykernel-5.1.4/examples/embedding/internal_ipkernel.py
--- old/ipykernel-5.1.3/examples/embedding/internal_ipkernel.py 2019-10-20 
13:54:46.000000000 +0200
+++ new/ipykernel-5.1.4/examples/embedding/internal_ipkernel.py 1970-01-01 
01:00:00.000000000 +0100
@@ -1,55 +0,0 @@
-#-----------------------------------------------------------------------------
-# Imports
-#-----------------------------------------------------------------------------
-
-import sys
-
-from IPython.lib.kernel import connect_qtconsole
-from IPython.kernel.zmq.kernelapp import IPKernelApp
-
-#-----------------------------------------------------------------------------
-# Functions and classes
-#-----------------------------------------------------------------------------
-def mpl_kernel(gui):
-    """Launch and return an IPython kernel with matplotlib support for the 
desired gui
-    """
-    kernel = IPKernelApp.instance()
-    kernel.initialize(['python', '--matplotlib=%s' % gui,
-                       #'--log-level=10'
-                       ])
-    return kernel
-
-
-class InternalIPKernel(object):
-
-    def init_ipkernel(self, backend):
-        # Start IPython kernel with GUI event loop and mpl support
-        self.ipkernel = mpl_kernel(backend)
-        # To create and track active qt consoles
-        self.consoles = []
-        
-        # This application will also act on the shell user namespace
-        self.namespace = self.ipkernel.shell.user_ns
-
-        # Example: a variable that will be seen by the user in the shell, and
-        # that the GUI modifies (the 'Counter++' button increments it):
-        self.namespace['app_counter'] = 0
-        #self.namespace['ipkernel'] = self.ipkernel  # dbg
-
-    def print_namespace(self, evt=None):
-        print("\n***Variables in User namespace***")
-        for k, v in self.namespace.items():
-            if not k.startswith('_'):
-                print('%s -> %r' % (k, v))
-        sys.stdout.flush()
-
-    def new_qt_console(self, evt=None):
-        """start a new qtconsole connected to our kernel"""
-        return connect_qtconsole(self.ipkernel.abs_connection_file, 
profile=self.ipkernel.profile)
-
-    def count(self, evt=None):
-        self.namespace['app_counter'] += 1
-
-    def cleanup_consoles(self, evt=None):
-        for c in self.consoles:
-            c.kill()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/examples/embedding/ipkernel_qtapp.py 
new/ipykernel-5.1.4/examples/embedding/ipkernel_qtapp.py
--- old/ipykernel-5.1.3/examples/embedding/ipkernel_qtapp.py    2019-10-20 
13:54:46.000000000 +0200
+++ new/ipykernel-5.1.4/examples/embedding/ipkernel_qtapp.py    1970-01-01 
01:00:00.000000000 +0100
@@ -1,75 +0,0 @@
-#!/usr/bin/env python
-"""Example integrating an IPython kernel into a GUI App.
-
-This trivial GUI application internally starts an IPython kernel, to which Qt
-consoles can be connected either by the user at the command line or started
-from the GUI itself, via a button.  The GUI can also manipulate one variable in
-the kernel's namespace, and print the namespace to the console.
-
-Play with it by running the script and then opening one or more consoles, and
-pushing the 'Counter++' and 'Namespace' buttons.
-
-Upon exit, it should automatically close all consoles opened from the GUI.
-
-Consoles attached separately from a terminal will not be terminated, though
-they will notice that their kernel died.
-"""
-#-----------------------------------------------------------------------------
-# Imports
-#-----------------------------------------------------------------------------
-
-from PyQt4 import Qt
-
-from internal_ipkernel import InternalIPKernel
-
-#-----------------------------------------------------------------------------
-# Functions and classes
-#-----------------------------------------------------------------------------
-class SimpleWindow(Qt.QWidget, InternalIPKernel):
-
-    def __init__(self, app):
-        Qt.QWidget.__init__(self)
-        self.app = app
-        self.add_widgets()
-        self.init_ipkernel('qt')
-
-    def add_widgets(self):
-        self.setGeometry(300, 300, 400, 70)
-        self.setWindowTitle('IPython in your app')
-
-        # Add simple buttons:
-        console = Qt.QPushButton('Qt Console', self)
-        console.setGeometry(10, 10, 100, 35)
-        self.connect(console, Qt.SIGNAL('clicked()'), self.new_qt_console)
-
-        namespace = Qt.QPushButton('Namespace', self)
-        namespace.setGeometry(120, 10, 100, 35)
-        self.connect(namespace, Qt.SIGNAL('clicked()'), self.print_namespace)
-
-        count = Qt.QPushButton('Count++', self)
-        count.setGeometry(230, 10, 80, 35)
-        self.connect(count, Qt.SIGNAL('clicked()'), self.count)
-
-        # Quit and cleanup
-        quit = Qt.QPushButton('Quit', self)
-        quit.setGeometry(320, 10, 60, 35)
-        self.connect(quit, Qt.SIGNAL('clicked()'), Qt.qApp, Qt.SLOT('quit()'))
-
-        self.app.connect(self.app, Qt.SIGNAL("lastWindowClosed()"),
-                         self.app, Qt.SLOT("quit()"))
-
-        self.app.aboutToQuit.connect(self.cleanup_consoles)
-
-#-----------------------------------------------------------------------------
-# Main script
-#-----------------------------------------------------------------------------
-
-if __name__ == "__main__":
-    app = Qt.QApplication([]) 
-    # Create our window
-    win = SimpleWindow(app)
-    win.show()
-    
-    # Very important, IPython-specific step: this gets GUI event loop
-    # integration going, and it replaces calling app.exec_()
-    win.ipkernel.start()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/examples/embedding/ipkernel_wxapp.py 
new/ipykernel-5.1.4/examples/embedding/ipkernel_wxapp.py
--- old/ipykernel-5.1.3/examples/embedding/ipkernel_wxapp.py    2019-10-20 
13:54:46.000000000 +0200
+++ new/ipykernel-5.1.4/examples/embedding/ipkernel_wxapp.py    1970-01-01 
01:00:00.000000000 +0100
@@ -1,119 +0,0 @@
-#!/usr/bin/env python
-"""Example integrating an IPython kernel into a GUI App.
-
-This trivial GUI application internally starts an IPython kernel, to which Qt
-consoles can be connected either by the user at the command line or started
-from the GUI itself, via a button.  The GUI can also manipulate one variable in
-the kernel's namespace, and print the namespace to the console.
-
-Play with it by running the script and then opening one or more consoles, and
-pushing the 'Counter++' and 'Namespace' buttons.
-
-Upon exit, it should automatically close all consoles opened from the GUI.
-
-Consoles attached separately from a terminal will not be terminated, though
-they will notice that their kernel died.
-
-Ref: Modified from wxPython source code wxPython/samples/simple/simple.py
-"""
-#-----------------------------------------------------------------------------
-# Imports
-#-----------------------------------------------------------------------------
-import sys
-
-import wx
-
-from internal_ipkernel import InternalIPKernel
-
-#-----------------------------------------------------------------------------
-# Functions and classes
-#-----------------------------------------------------------------------------
-
-class MyFrame(wx.Frame, InternalIPKernel):
-    """
-    This is MyFrame.  It just shows a few controls on a wxPanel,
-    and has a simple menu.
-    """
-
-    def __init__(self, parent, title):
-        wx.Frame.__init__(self, parent, -1, title,
-                          pos=(150, 150), size=(350, 285))
-
-        # Create the menubar
-        menuBar = wx.MenuBar()
-
-        # and a menu 
-        menu = wx.Menu()
-
-        # add an item to the menu, using \tKeyName automatically
-        # creates an accelerator, the third param is some help text
-        # that will show up in the statusbar
-        menu.Append(wx.ID_EXIT, "E&xit\tAlt-X", "Exit this simple sample")
-
-        # bind the menu event to an event handler
-        self.Bind(wx.EVT_MENU, self.OnTimeToClose, id=wx.ID_EXIT)
-
-        # and put the menu on the menubar
-        menuBar.Append(menu, "&File")
-        self.SetMenuBar(menuBar)
-
-        self.CreateStatusBar()
-
-        # Now create the Panel to put the other controls on.
-        panel = wx.Panel(self)
-
-        # and a few controls
-        text = wx.StaticText(panel, -1, "Hello World!")
-        text.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
-        text.SetSize(text.GetBestSize())
-        qtconsole_btn = wx.Button(panel, -1, "Qt Console")
-        ns_btn = wx.Button(panel, -1, "Namespace")
-        count_btn = wx.Button(panel, -1, "Count++")
-        close_btn = wx.Button(panel, -1, "Quit")
-
-        # bind the button events to handlers
-        self.Bind(wx.EVT_BUTTON, self.new_qt_console, qtconsole_btn)
-        self.Bind(wx.EVT_BUTTON, self.print_namespace, ns_btn)
-        self.Bind(wx.EVT_BUTTON, self.count, count_btn)
-        self.Bind(wx.EVT_BUTTON, self.OnTimeToClose, close_btn)
-
-        # Use a sizer to layout the controls, stacked vertically and with
-        # a 10 pixel border around each
-        sizer = wx.BoxSizer(wx.VERTICAL)
-        for ctrl in [text, qtconsole_btn, ns_btn, count_btn, close_btn]:
-            sizer.Add(ctrl, 0, wx.ALL, 10)
-        panel.SetSizer(sizer)
-        panel.Layout()
-
-        # Start the IPython kernel with gui support
-        self.init_ipkernel('wx')
-
-    def OnTimeToClose(self, evt):
-        """Event handler for the button click."""
-        print("See ya later!")
-        sys.stdout.flush()
-        self.cleanup_consoles(evt)
-        self.Close()
-        # Not sure why, but our IPython kernel seems to prevent normal WX
-        # shutdown, so an explicit exit() call is needed.
-        sys.exit()
-
-
-class MyApp(wx.App):
-    def OnInit(self):
-        frame = MyFrame(None, "Simple wxPython App")
-        self.SetTopWindow(frame)
-        frame.Show(True)
-        self.ipkernel = frame.ipkernel
-        return True
-
-#-----------------------------------------------------------------------------
-# Main script
-#-----------------------------------------------------------------------------
-
-if __name__ == '__main__':
-    app = MyApp(redirect=False, clearSigInt=False)
-
-    # Very important, IPython-specific step: this gets GUI event loop
-    # integration going, and it replaces calling app.MainLoop()
-    app.ipkernel.start()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/ipykernel/_version.py 
new/ipykernel-5.1.4/ipykernel/_version.py
--- old/ipykernel-5.1.3/ipykernel/_version.py   2019-10-20 13:55:13.000000000 
+0200
+++ new/ipykernel-5.1.4/ipykernel/_version.py   2020-01-27 11:33:05.000000000 
+0100
@@ -1,4 +1,4 @@
-version_info = (5, 1, 3)
+version_info = (5, 1, 4)
 __version__ = '.'.join(map(str, version_info[:3]))
 
 # pep440 is annoying, beta/alpha/rc should _not_ have dots or pip/setuptools
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/ipykernel/iostream.py 
new/ipykernel-5.1.4/ipykernel/iostream.py
--- old/ipykernel-5.1.3/ipykernel/iostream.py   2019-10-20 13:54:46.000000000 
+0200
+++ new/ipykernel-5.1.4/ipykernel/iostream.py   2019-12-10 14:00:44.000000000 
+0100
@@ -338,7 +338,7 @@
 
         send will happen in the background thread
         """
-        if self.pub_thread.thread.is_alive():
+        if self.pub_thread and self.pub_thread.thread is not None and 
self.pub_thread.thread.is_alive():
             # request flush on the background thread
             self.pub_thread.schedule(self._flush)
             # wait for flush to actually get through, if we can.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/ipykernel/kernelapp.py 
new/ipykernel-5.1.4/ipykernel/kernelapp.py
--- old/ipykernel-5.1.3/ipykernel/kernelapp.py  2019-10-20 13:54:46.000000000 
+0200
+++ new/ipykernel-5.1.4/ipykernel/kernelapp.py  2020-01-27 11:30:51.000000000 
+0100
@@ -488,18 +488,6 @@
         if self.shell:
             self.shell.configurables.append(self)
 
-    def init_extensions(self):
-        super(IPKernelApp, self).init_extensions()
-        # BEGIN HARDCODED WIDGETS HACK
-        # Ensure ipywidgets extension is loaded if available
-        extension_man = self.shell.extension_manager
-        if 'ipywidgets' not in extension_man.loaded:
-            try:
-                extension_man.load_extension('ipywidgets')
-            except ImportError as e:
-                self.log.debug('ipywidgets package not installed.  Widgets 
will not be available.')
-        # END HARDCODED WIDGETS HACK
-
     def configure_tornado_logger(self):
         """ Configure the tornado logging.Logger.
 
@@ -514,13 +502,45 @@
         handler.setFormatter(formatter)
         logger.addHandler(handler)
 
+    def _init_asyncio_patch(self):
+        """set default asyncio policy to be compatible with tornado
+
+        Tornado 6 (at least) is not compatible with the default
+        asyncio implementation on Windows
+
+        Pick the older SelectorEventLoopPolicy on Windows
+        if the known-incompatible default policy is in use.
+
+        do this as early as possible to make it a low priority and overrideable
+
+        ref: https://github.com/tornadoweb/tornado/issues/2608
+
+        FIXME: if/when tornado supports the defaults in asyncio,
+               remove and bump tornado requirement for py38
+        """
+        if sys.platform.startswith("win") and sys.version_info >= (3, 8):
+            import asyncio
+            try:
+                from asyncio import (
+                    WindowsProactorEventLoopPolicy,
+                    WindowsSelectorEventLoopPolicy,
+                )
+            except ImportError:
+                pass
+                # not affected
+            else:
+                if type(asyncio.get_event_loop_policy()) is 
WindowsProactorEventLoopPolicy:
+                    # WindowsProactorEventLoopPolicy is not compatible with 
tornado 6
+                    # fallback to the pre-3.8 default of Selector
+                    
asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())
+
     @catch_config_error
     def initialize(self, argv=None):
+        self._init_asyncio_patch()
         super(IPKernelApp, self).initialize(argv)
         if self.subapp is not None:
             return
-        # register zmq IOLoop with tornado
-        zmq_ioloop.install()
+
         self.init_blackhole()
         self.init_connection_file()
         self.init_poller()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/ipykernel/pylab/backend_inline.py 
new/ipykernel-5.1.4/ipykernel/pylab/backend_inline.py
--- old/ipykernel-5.1.3/ipykernel/pylab/backend_inline.py       2019-10-20 
13:54:46.000000000 +0200
+++ new/ipykernel-5.1.4/ipykernel/pylab/backend_inline.py       2020-01-27 
11:30:51.000000000 +0100
@@ -6,7 +6,11 @@
 from __future__ import print_function
 
 import matplotlib
-from matplotlib.backends.backend_agg import new_figure_manager, 
FigureCanvasAgg # analysis: ignore
+from matplotlib.backends.backend_agg import (
+    new_figure_manager,
+    FigureCanvasAgg,
+    new_figure_manager_given_figure,
+) # analysis: ignore
 from matplotlib import colors
 from matplotlib._pylab_helpers import Gcf
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/ipykernel/serialize.py 
new/ipykernel-5.1.4/ipykernel/serialize.py
--- old/ipykernel-5.1.3/ipykernel/serialize.py  2019-10-20 13:54:46.000000000 
+0200
+++ new/ipykernel-5.1.4/ipykernel/serialize.py  2020-01-27 11:30:51.000000000 
+0100
@@ -6,16 +6,10 @@
 import warnings
 warnings.warn("ipykernel.serialize is deprecated. It has moved to 
ipyparallel.serialize", DeprecationWarning)
 
-try:
-    import cPickle
-    pickle = cPickle
-except:
-    cPickle = None
-    import pickle
+import pickle
 
 from itertools import chain
 
-from ipython_genutils.py3compat import PY3, buffer_to_bytes_py2
 from ipykernel.pickleutil import (
     can, uncan, can_sequence, uncan_sequence, CannedObject,
     istype, sequence_types, PICKLE_PROTOCOL,
@@ -23,9 +17,6 @@
 from jupyter_client.session import MAX_ITEMS, MAX_BYTES
 
 
-if PY3:
-    buffer = memoryview
-
 #-----------------------------------------------------------------------------
 # Serialization Functions
 #-----------------------------------------------------------------------------
@@ -44,8 +35,6 @@
             # because pickling buffer objects just results in broken pointers
             elif isinstance(buf, memoryview):
                 obj.buffers[i] = buf.tobytes()
-            elif isinstance(buf, buffer):
-                obj.buffers[i] = bytes(buf)
     return buffers
 
 def _restore_buffers(obj, buffers):
@@ -109,7 +98,7 @@
     (newobj, bufs) : unpacked object, and the list of remaining unused buffers.
     """
     bufs = list(buffers)
-    pobj = buffer_to_bytes_py2(bufs.pop(0))
+    pobj = bufs.pop(0)
     canned = pickle.loads(pobj)
     if istype(canned, sequence_types) and len(canned) < MAX_ITEMS:
         for c in canned:
@@ -164,9 +153,9 @@
     Returns: original f,args,kwargs"""
     bufs = list(bufs) # allow us to pop
     assert len(bufs) >= 2, "not enough buffers!"
-    pf = buffer_to_bytes_py2(bufs.pop(0))
+    pf = bufs.pop(0)
     f = uncan(pickle.loads(pf), g)
-    pinfo = buffer_to_bytes_py2(bufs.pop(0))
+    pinfo = bufs.pop(0)
     info = pickle.loads(pinfo)
     arg_bufs, kwarg_bufs = bufs[:info['narg_bufs']], bufs[info['narg_bufs']:]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/ipykernel.egg-info/PKG-INFO 
new/ipykernel-5.1.4/ipykernel.egg-info/PKG-INFO
--- old/ipykernel-5.1.3/ipykernel.egg-info/PKG-INFO     2019-10-20 
13:55:39.000000000 +0200
+++ new/ipykernel-5.1.4/ipykernel.egg-info/PKG-INFO     2020-01-27 
11:37:25.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: ipykernel
-Version: 5.1.3
+Version: 5.1.4
 Summary: IPython Kernel for Jupyter
 Home-page: https://ipython.org
 Author: IPython Development Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/ipykernel.egg-info/SOURCES.txt 
new/ipykernel-5.1.4/ipykernel.egg-info/SOURCES.txt
--- old/ipykernel-5.1.3/ipykernel.egg-info/SOURCES.txt  2019-10-20 
13:55:39.000000000 +0200
+++ new/ipykernel-5.1.4/ipykernel.egg-info/SOURCES.txt  2020-01-27 
11:37:26.000000000 +0100
@@ -1,9 +1,14 @@
+.gitignore
+.mailmap
+.travis.yml
 CONTRIBUTING.md
 COPYING.md
 MANIFEST.in
 README.md
+appveyor.yml
 ipykernel_launcher.py
 pyproject.toml
+readthedocs.yml
 setup.cfg
 setup.py
 docs/Makefile
@@ -12,11 +17,11 @@
 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
+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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-5.1.3/readthedocs.yml 
new/ipykernel-5.1.4/readthedocs.yml
--- old/ipykernel-5.1.3/readthedocs.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/ipykernel-5.1.4/readthedocs.yml 2018-09-01 09:48:16.000000000 +0200
@@ -0,0 +1,4 @@
+python:
+  version: 3.5
+  pip_install: true
+requirements_file: docs/requirements.txt


Reply via email to