From 5a0561030ee83cfcded11d9063052aa99e328b7f Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 18 Mar 2021 10:58:14 -0500 Subject: [PATCH 01/20] Backport PR #605: Fix Handling of shell.should_run_async --- ipykernel/ipkernel.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ipykernel/ipkernel.py b/ipykernel/ipkernel.py index 661627352..ebbe42b34 100644 --- a/ipykernel/ipkernel.py +++ b/ipykernel/ipkernel.py @@ -278,9 +278,16 @@ def run_cell(*args, **kwargs): # default case: runner is asyncio and asyncio is already running # TODO: this should check every case for "are we inside the runner", # not just asyncio + preprocessing_exc_tuple = None + try: + transformed_cell = self.shell.transform_cell(code) + except Exception: + transformed_cell = code + preprocessing_exc_tuple = sys.exc_info() + if ( _asyncio_runner - and should_run_async(code) + and should_run_async(code, transformed_cell=transformed_cell, preprocessing_exc_tuple=preprocessing_exc_tuple) and shell.loop_runner is _asyncio_runner and asyncio.get_event_loop().is_running() ): @@ -372,14 +379,14 @@ def do_complete(self, code, cursor_pos): def _experimental_do_complete(self, code, cursor_pos): """ - Experimental completions from IPython, using Jedi. + Experimental completions from IPython, using Jedi. """ if cursor_pos is None: cursor_pos = len(code) with _provisionalcompleter(): raw_completions = self.shell.Completer.completions(code, cursor_pos) completions = list(_rectify_completions(code, raw_completions)) - + comps = [] for comp in completions: comps.append(dict( From 648ca5a2b75a97a518f3cd1eae8417b9df640f10 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 18 Mar 2021 12:39:26 -0500 Subject: [PATCH 02/20] Release 5.5.1 --- docs/changelog.rst | 8 ++++++-- ipykernel/_version.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index ad06796ca..32573c919 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,9 +4,13 @@ Changes in IPython kernel 5.5 --- +5.5.1 +----- +- Fix Handling of ``shell.should_run_async``. (:ghpull:`605`) + 5.5.0 ----- -- Kernelspec: ensure path is writable before writing ``kernel.json``. (:ghpull:`593`) +- Kernelspec: ensure path is writable before writing ``kernel.json``. (:ghpull:`593`) - Add ``configure_inline_support`` and call it in the shell. (:ghpull:`590`) 5.4 @@ -31,7 +35,7 @@ Changes in IPython kernel - Add github actions, bail on asyncio patch for tornado 6.1. (:ghpull:`564`) - Start testing on Python 3.9. (:ghpull:`551`) -- Fix stack levels for ipykernel's deprecation warnings and stop using some deprecated APIs. (:ghpull:`547`) +- Fix stack levels for ipykernel's deprecation warnings and stop using some deprecated APIs. (:ghpull:`547`) - Add env parameter to kernel installation (:ghpull:`541`) - Fix stop_on_error_timeout blocking other messages in queue. (:ghpull:`539`) - Remove most of the python 2 compat code. (:ghpull:`537`) diff --git a/ipykernel/_version.py b/ipykernel/_version.py index 426163978..b0a349b16 100644 --- a/ipykernel/_version.py +++ b/ipykernel/_version.py @@ -1,4 +1,4 @@ -version_info = (5, 5, 0) +version_info = (5, 5, 1) __version__ = '.'.join(map(str, version_info[:3])) # pep440 is annoying, beta/alpha/rc should _not_ have dots or pip/setuptools From 49c1af45e8f71b79081210ade83a970c7530fdce Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 29 Mar 2021 10:28:44 -0500 Subject: [PATCH 03/20] Merge pull request #618 from MSeal/defaultAbortTimeout Changed default timeout to 0.0 seconds for stop_on_error_timeout --- ipykernel/kernelbase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipykernel/kernelbase.py b/ipykernel/kernelbase.py index aba3223a9..046f3fc59 100644 --- a/ipykernel/kernelbase.py +++ b/ipykernel/kernelbase.py @@ -110,7 +110,7 @@ def _default_ident(self): _poll_interval = Float(0.01).tag(config=True) stop_on_error_timeout = Float( - 0.1, + 0.0, config=True, help="""time (in seconds) to wait for messages to arrive when aborting queued requests after an error. From 741a6d7ee0aa77cb08f6c74a4ebd6d01f97ba77d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 29 Mar 2021 10:38:19 -0500 Subject: [PATCH 04/20] Update changelog for 5.5.2 --- docs/changelog.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 32573c919..299996df8 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,6 +4,10 @@ Changes in IPython kernel 5.5 --- +5.5.2 +----- +- Changed default timeout to 0.0 seconds for stop_on_error_timeout. (:ghpull:`618`) + 5.5.1 ----- - Fix Handling of ``shell.should_run_async``. (:ghpull:`605`) From 7b3187ded6d5e86000483677bbbffba729b09234 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 29 Mar 2021 10:40:47 -0500 Subject: [PATCH 05/20] Release 5.5.2 --- ipykernel/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipykernel/_version.py b/ipykernel/_version.py index b0a349b16..d1924bdac 100644 --- a/ipykernel/_version.py +++ b/ipykernel/_version.py @@ -1,4 +1,4 @@ -version_info = (5, 5, 1) +version_info = (5, 5, 2) __version__ = '.'.join(map(str, version_info[:3])) # pep440 is annoying, beta/alpha/rc should _not_ have dots or pip/setuptools From 65e522aa989e1ffb5a2bc5f6905dbea383899037 Mon Sep 17 00:00:00 2001 From: "Afshin T. Darian" Date: Tue, 30 Mar 2021 14:43:39 +0100 Subject: [PATCH 06/20] Revert Backport of #605: Fix Handling of shell.should_run_async --- ipykernel/ipkernel.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/ipykernel/ipkernel.py b/ipykernel/ipkernel.py index ebbe42b34..9a85a02f2 100644 --- a/ipykernel/ipkernel.py +++ b/ipykernel/ipkernel.py @@ -278,16 +278,9 @@ def run_cell(*args, **kwargs): # default case: runner is asyncio and asyncio is already running # TODO: this should check every case for "are we inside the runner", # not just asyncio - preprocessing_exc_tuple = None - try: - transformed_cell = self.shell.transform_cell(code) - except Exception: - transformed_cell = code - preprocessing_exc_tuple = sys.exc_info() - if ( _asyncio_runner - and should_run_async(code, transformed_cell=transformed_cell, preprocessing_exc_tuple=preprocessing_exc_tuple) + and should_run_async(code) and shell.loop_runner is _asyncio_runner and asyncio.get_event_loop().is_running() ): From 62abab5ef09449b0a9c356b845f49502957c50a8 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 30 Mar 2021 10:14:09 -0500 Subject: [PATCH 07/20] Changelog for 5.5.3 --- docs/changelog.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 299996df8..32f4e1fc4 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,12 +4,20 @@ Changes in IPython kernel 5.5 --- +5.5.3 +----- +- Revert Backport of #605: Fix Handling of ``shell.should_run_async`` (:ghpull:`622`) + 5.5.2 ----- +**Note:** This release was deleted from PyPI since it had breaking changes. + - Changed default timeout to 0.0 seconds for stop_on_error_timeout. (:ghpull:`618`) 5.5.1 ----- +**Note:** This release was deleted from PyPI since it had breaking changes. + - Fix Handling of ``shell.should_run_async``. (:ghpull:`605`) 5.5.0 From d14f3972e25c0db8f594cc042f6636f929d9238d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 30 Mar 2021 11:57:08 -0500 Subject: [PATCH 08/20] Backport PR #625: Run GitHub Actions on all branches --- .github/workflows/ci.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3f3457aa2..0f2dcde98 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,10 +1,6 @@ name: ipykernel tests -on: - push: - branches: [master] - pull_request: - branches: [master] +on: [push, pull_request] jobs: build: From f1347e7867b549a24c630860761c5246f71db134 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Tue, 30 Mar 2021 12:20:51 -0500 Subject: [PATCH 09/20] Release 5.5.3 --- ipykernel/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipykernel/_version.py b/ipykernel/_version.py index d1924bdac..dd305de92 100644 --- a/ipykernel/_version.py +++ b/ipykernel/_version.py @@ -1,4 +1,4 @@ -version_info = (5, 5, 2) +version_info = (5, 5, 3) __version__ = '.'.join(map(str, version_info[:3])) # pep440 is annoying, beta/alpha/rc should _not_ have dots or pip/setuptools From da0f7e35773a83bb79236eef874a09152dbd62fc Mon Sep 17 00:00:00 2001 From: Carlos Cordoba Date: Tue, 4 May 2021 19:36:50 -0500 Subject: [PATCH 10/20] Import configure_inline_support from matplotlib_inline if available This correctly applies the rcParams declared in the inline backend configuration when using "%matplotlib inline". --- ipykernel/zmqshell.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ipykernel/zmqshell.py b/ipykernel/zmqshell.py index 8c9cfecce..1135ea749 100644 --- a/ipykernel/zmqshell.py +++ b/ipykernel/zmqshell.py @@ -600,7 +600,10 @@ def init_magics(self): def enable_matplotlib(self, gui=None): gui, backend = super(ZMQInteractiveShell, self).enable_matplotlib(gui) - from ipykernel.pylab.backend_inline import configure_inline_support + try: + from matplotlib_inline.backend_inline import configure_inline_support + except ImportError: + from ipykernel.pylab.backend_inline import configure_inline_support configure_inline_support(self, backend) From f62c76a91c02aa3eb518fcc4692d823441f59cf6 Mon Sep 17 00:00:00 2001 From: Carlos Cordoba Date: Wed, 5 May 2021 10:03:00 -0500 Subject: [PATCH 11/20] Install stable version of jupyter_client in CIs This is required because the 5.5.x branch doesn't work with the latest version --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0f2dcde98..e3416c18e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,6 +39,7 @@ jobs: - name: Install the Python dependencies run: | pip install --pre --upgrade --upgrade-strategy=eager .[test] codecov + pip install jupyter_client==6.1.* - name: Install matplotlib if: ${{ matrix.os != 'macos' && matrix.python-version != 'pypy3' }} run: | From ff21df68734f4b3b8a45a152f110b6c966be3e0b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 5 May 2021 11:11:13 -0500 Subject: [PATCH 12/20] Add changelog entry for 5.5.4 --- docs/changelog.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 32f4e1fc4..ae04e8e58 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,6 +4,10 @@ Changes in IPython kernel 5.5 --- +5.5.4 +----- +- Import ``configure_inline_support`` from ``matplotlib_inline`` if available (:ghpull:`654`) + 5.5.3 ----- - Revert Backport of #605: Fix Handling of ``shell.should_run_async`` (:ghpull:`622`) From ac29e22d9af2d1e9331db06b2d5e5afe217af36a Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 5 May 2021 11:47:35 -0500 Subject: [PATCH 13/20] Release 5.5.4 --- ipykernel/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipykernel/_version.py b/ipykernel/_version.py index dd305de92..10ed7bc04 100644 --- a/ipykernel/_version.py +++ b/ipykernel/_version.py @@ -1,4 +1,4 @@ -version_info = (5, 5, 3) +version_info = (5, 5, 4) __version__ = '.'.join(map(str, version_info[:3])) # pep440 is annoying, beta/alpha/rc should _not_ have dots or pip/setuptools From dcef3a980cb9db03e21f3439f85a24269f029816 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 13 May 2021 06:00:38 -0500 Subject: [PATCH 14/20] Backport PR #669: Keep preferring SelectorEventLoop on Windows --- ipykernel/kernelapp.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ipykernel/kernelapp.py b/ipykernel/kernelapp.py index ee691508e..fb3caa001 100644 --- a/ipykernel/kernelapp.py +++ b/ipykernel/kernelapp.py @@ -516,14 +516,21 @@ def _init_asyncio_patch(self): Pick the older SelectorEventLoopPolicy on Windows if the known-incompatible default policy is in use. + Support for Proactor via a background thread is available in tornado 6.1, + but it is still preferable to run the Selector in the main thread + instead of the background. + 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 + FIXME: if/when tornado supports the defaults in asyncio without threads, + remove and bump tornado requirement for py38. + Most likely, this will mean a new Python version + where asyncio.ProactorEventLoop supports add_reader and friends. + """ - if sys.platform.startswith("win") and sys.version_info >= (3, 8) and tornado.version_info < (6, 1): + if sys.platform.startswith("win") and sys.version_info >= (3, 8): import asyncio try: from asyncio import ( From 9530897bfd22a91dc8c823cb1a1271febc410843 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 13 May 2021 06:23:27 -0500 Subject: [PATCH 15/20] Update changelog for 5.5.5 --- docs/changelog.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index ae04e8e58..0f92a08ed 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,6 +4,10 @@ Changes in IPython kernel 5.5 --- +5.5.5 +----- +- Keep preferring SelectorEventLoop on Windows. (:ghpull:`669`) + 5.5.4 ----- - Import ``configure_inline_support`` from ``matplotlib_inline`` if available (:ghpull:`654`) From 52aec3af293534ab1d743f01ee9ff9ba8b773906 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 13 May 2021 06:33:25 -0500 Subject: [PATCH 16/20] Release 5.5.5 --- ipykernel/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipykernel/_version.py b/ipykernel/_version.py index 10ed7bc04..7d228ec59 100644 --- a/ipykernel/_version.py +++ b/ipykernel/_version.py @@ -1,4 +1,4 @@ -version_info = (5, 5, 4) +version_info = (5, 5, 5) __version__ = '.'.join(map(str, version_info[:3])) # pep440 is annoying, beta/alpha/rc should _not_ have dots or pip/setuptools From b39e62e3084b4aaf7e709744de5a6fd6f20c2e03 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Thu, 13 May 2021 15:30:29 -0500 Subject: [PATCH 17/20] Backport PR #673: fix keyboard interrupt issue in dispatch_shell --- ipykernel/kernelbase.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ipykernel/kernelbase.py b/ipykernel/kernelbase.py index 046f3fc59..8b228fec9 100644 --- a/ipykernel/kernelbase.py +++ b/ipykernel/kernelbase.py @@ -261,6 +261,9 @@ def dispatch_shell(self, stream, msg): yield gen.maybe_future(handler(stream, idents, msg)) except Exception: self.log.error("Exception in message handler:", exc_info=True) + except KeyboardInterrupt: + # Ctrl-c shouldn't crash the kernel here. + self.log.error("KeyboardInterrupt caught in kernel.") finally: try: self.post_handler_hook() From a19e3af8c0cc2513f916a86dbff373929cef7965 Mon Sep 17 00:00:00 2001 From: carlosperate Date: Wed, 6 Oct 2021 14:46:20 +0100 Subject: [PATCH 18/20] Add ipython_genutils dependency. This was an implicit dependency via Traitlets, but it was removed in version 5.1 and needs to be explicitly included now. https://github.com/ipython/ipykernel/issues/759 --- pyproject.toml | 1 + setup.py | 1 + 2 files changed, 2 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index e220b587e..8f3860225 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,6 @@ [build-system] requires=[ + "ipython_genutils", "setuptools", "wheel", "ipython>=5", diff --git a/setup.py b/setup.py index d9f51c2c7..d254b7639 100644 --- a/setup.py +++ b/setup.py @@ -85,6 +85,7 @@ def run(self): keywords=['Interactive', 'Interpreter', 'Shell', 'Web'], python_requires='>=3.5', install_requires=[ + 'ipython_genutils', 'ipython>=5.0.0', 'traitlets>=4.1.0', 'jupyter_client', From fdc78a118db25652ad8b39826244d7bb7e1c6fc7 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 6 Oct 2021 09:51:58 -0500 Subject: [PATCH 19/20] Add changelog entry for 5.5.6 --- docs/changelog.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 0f92a08ed..bebf84418 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,6 +4,10 @@ Changes in IPython kernel 5.5 --- +5.5.6 +----- +- Add `ipython_genutils` dependency (:ghpull:`778`) + 5.5.5 ----- - Keep preferring SelectorEventLoop on Windows. (:ghpull:`669`) From 41430c1a8eee010da965c00cfbd829e853d23641 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 6 Oct 2021 09:57:30 -0500 Subject: [PATCH 20/20] Release 5.5.6 --- ipykernel/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipykernel/_version.py b/ipykernel/_version.py index 7d228ec59..cf3510d7b 100644 --- a/ipykernel/_version.py +++ b/ipykernel/_version.py @@ -1,4 +1,4 @@ -version_info = (5, 5, 5) +version_info = (5, 5, 6) __version__ = '.'.join(map(str, version_info[:3])) # pep440 is annoying, beta/alpha/rc should _not_ have dots or pip/setuptools