Changes in Jupyter Client {#changelog}#

8.0.2#

(Full Changelog)

Bugs fixed#

  • Add papermill downstream check and fix kernel client replies #925 (@blink1073)

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073

8.0.1#

(Full Changelog)

Bugs fixed#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073

8.0.0#

(Full Changelog)

This release is primarily focused on improving asyncio support, while aiming to have minimal API changes.

Enhancements made#

Bugs fixed#

Maintenance and upkeep improvements#

Documentation improvements#

Contributors to this release#

(GitHub contributors page for this release)

@arogozhnikov | @blink1073 | @Carreau | @ccordoba12 | @davidbrochart | @dependabot | @kevin-bates | @meeseeksdev | @minrk | @ophie200 | @pre-commit-ci | @samrat | @SylvainCorlay | @Zsailer

8.0.0rc0#

(Full Changelog)

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073

8.0.0b3#

(Full Changelog)

Bugs fixed#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073

8.0.0b2#

(Full Changelog)

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @davidbrochart | @ophie200 | @pre-commit-ci

8.0.0b1#

No merged PRs

8.0.0b0#

(Full Changelog)

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@arogozhnikov | @blink1073 | @davidbrochart | @kevin-bates | @pre-commit-ci

8.0.0a4#

(Full Changelog)

Bugs fixed#

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @kevin-bates

8.0.0a3#

(Full Changelog)

Bugs fixed#

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @dependabot | @kevin-bates | @pre-commit-ci

8.0.0a2#

(Full Changelog)

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @pre-commit-ci

8.0.0a1#

(Full Changelog)

Bugs fixed#

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @pre-commit-ci | @samrat

8.0.0a0#

(Full Changelog)

Enhancements made#

Bugs fixed#

Maintenance and upkeep improvements#

Documentation improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @ccordoba12 | @davidbrochart | @minrk | @pre-commit-ci | @Zsailer

7.3.5#

(Full Changelog)

Enhancements made#

Bugs fixed#

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @davidbrochart | @helioz11 | @pre-commit-ci | @vidartf

7.3.4#

(Full Changelog)

Bugs fixed#

  • Revert latest changes to ThreadedZMQSocketChannel because they break Qtconsole #803 (@ccordoba12)

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @ccordoba12 | @pre-commit-ci

7.3.3#

(Full Changelog)

Bugs fixed#

  • Add local-provisioner entry point to pyproject.toml Fixes #800 #801 (@utkonos)

Contributors to this release#

(GitHub contributors page for this release)

@utkonos

7.3.2#

(Full Changelog)

Enhancements made#

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @joouha | @pre-commit-ci

7.3.1#

(Full Changelog)

Bugs fixed#

  • Check that channels exist before asking if they are alive #785 (@ccordoba12)

  • Unicode error correction using Error Handler #779 (@hxawax)

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @ccordoba12 | @hxawax | @pre-commit-ci

7.3.0#

(Full Changelog)

Bugs fixed#

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @pre-commit-ci

7.2.2#

(Full Changelog)

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @davidbrochart | @echarles | @pre-commit-ci

7.2.1#

(Full Changelog)

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073

7.2.0#

(Full Changelog)

Enhancements made#

Bugs fixed#

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @davidbrochart | @echarles | @hroncok | @kevin-bates | @martinRenou | @you-n-g

7.1.2#

(Full Changelog)

Bugs fixed#

  • Await kernel.ready in _async_shutdown_kernel #740 (@jtpio)

Contributors to this release#

(GitHub contributors page for this release)

@jtpio | @Zsailer

7.1.1#

(Full Changelog)

Enhancements made#

  • Further improvements to pending kernels managment #732 (@Zsailer)

Maintenance and upkeep improvements#

Documentation improvements#

Contributors to this release#

(GitHub contributors page for this release)

@abzymeinsjtu | @blink1073 | @BoPeng | @davidbrochart | @minrk | @rgbkrk | @willingc | @Zsailer

7.1.0#

(Full Changelog)

Enhancements made#

Bugs fixed#

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @ci4ic4 | @davidbrochart | @kevin-bates | @vidartf

7.0.6#

(Full Changelog)

Bugs fixed#

  • Fallback to the old ipykernel “json_clean” if we are not able to serialize a JSON message #708 (@martinRenou)

Other merged PRs#

Contributors to this release#

(GitHub contributors page for this release)

@martinRenou

7.0.5#

(Full Changelog)

Bugs fixed#

  • avoid use of deprecated zmq.utils.jsonapi #703 (@minrk)

Maintenance and upkeep improvements#

Contributors to this release#

(GitHub contributors page for this release)

@kevin-bates | @minrk

7.0.4#

(Full Changelog)

Bugs fixed#

Contributors to this release#

(GitHub contributors page for this release)

@davidbrochart | @martinRenou | @mofanke | @shingo78

7.0.3#

(Full Changelog)

Bugs fixed#

  • Address missing local-provisioner scenario #692 (@kevin-bates)

  • use load_connection_info(info) when constructing a blocking client #688 (@minrk)

Contributors to this release#

(GitHub contributors page for this release)

@kevin-bates | @minrk

7.0.2#

(Full Changelog)

Bugs fixed#

  • Don’t set event loop policy on Windows at import time #686 (@minrk)

Documentation improvements#

Contributors to this release#

(GitHub contributors page for this release)

@blink1073 | @davidbrochart | @dhirschfeld | @jankatins | @kevin-bates | @minrk | @takluyver | @yuvipanda

7.0.1#

(Full Changelog)

Merged PRs#

Contributors to this release#

(GitHub contributors page for this release)

@kevin-bates

7.0.0#

(Full Changelog)

Summary#

The 7.0 release brings a major feature in Kernel Provisioners, which enable the ability for third parties to manage the lifecycle of a kernel’s runtime environment.

Being a major release, there are some backward incompatible changes. Please see the migration guide for further details.

Enhancements made#

Bugs fixed#

Maintenance and upkeep improvements#

Documentation improvements#

Contributors to this release#

(GitHub contributors page for this release)

@afshin | @blink1073 | @Carreau | @ccordoba12 | @davidbrochart | @dhirschfeld | @dolfinus | @echarles | @impact27 | @JohanMabille | @kevin-bates | @martinRenou | @mattip | @minrk | @MSeal | @SylvainCorlay | @takluyver | @vidartf | @yitzchak

6.2.0#

  • Yanked (PyPI) and marked as broken (conda)

6.1.13#

  • Yanked (PyPI) and marked as broken (conda)

6.1.12#

  • Shutdown request sequence has been modified to be more graceful, it now is preceded by interrupt, and will also send a SIGTERM before forcibly killing the kernel. #620

  • Removal of ipython_genutils as a dependency. It was implicit before; but required by at least traitlets thus avoiding issues. We are working on completely removing it from all jupyter dependencies; as it might lead to issues packaging for Python 3.10, and was mostly used for compatibility with python 2. (#620, #605)

  • Address a race condition between shutdown_kernel and restarter. (#607.)

See the full list of pull-requests

6.1.11#

  • Move jedi pinning to test requirements #599

6.1.10#

  • Add change parameter needed for observer method of kernel_spec_manager trait #598

6.1.9#

  • Pin jedi<=0.17.2 #596

6.1.8#

  • Doc updates (#563, #564, #587)

  • Fix path to the connection file #568

  • Code cleanup (#574, #579)

  • Silence kill_kernel when no process is present #576

  • Remove extra_env and corresponding test #581

  • Add documentation dependencies to setup.py #582

  • Fix for Windows localhost IP addresses #584

  • Drop Travis CI, add GitHub Actions #586

  • Adapt KernelManager._kernel_spec_manager_changed to observe #588

  • Allow use ~/ in the kernel’s command or its arguments #589

  • Change wait_for_ready logic #592

  • Fix test_session with msgpack v1 #594

6.1.6#

  • Removed warnings in more cases for KernelManagers that use new cleanup method #560

  • Some improved tests with a conversion to pytest pattern #561

6.1.5#

  • Gracefully Close ZMQ Context upon kernel shutdown to fix memory leak #548

  • Fix for chained exceptions to preserve stacks (#552, #554)

  • Fix start_kernel error when passing kernel_id #547

  • Update to releasing docs #543

6.1.4#

(Deleted release with incorrect local files)

6.1.3#

  • Add AsyncKernelClient client_class to AsyncKernelManager #542

  • Doc fix for xeus hyperlinks #540

  • Doc typo fix #539

6.1.2#

  • Fixed a bug causing clients to sometimes hang after a stop call was made #536

6.1.1#

  • Subprocess kill action fix for async execution #535

  • Doc fix for xeus kernel list #534

6.1.0#

This release includes support for asyncio patterns! Downstream tools should soon have releases to additionally support async patterns.

  • AsyncKernelManager and AsyncMultiKernelManager are now available for async jupyter_client interactions (#528, #529)

  • Removed unused sphinx dependency (#518, #518).

  • Added install instructions for pip to documentation #521

  • Improved docs around version protocol and messaging (#522, #526)

6.0.0#

The git history had to be reworked heavily in merging 5.x and master, so a link to all the changes at once in github had been left out as it’s just confusing.

An exciting change in this release is some async support (huge thanks to @davidbrochart for doing most of the work)! See linked PR below for more details, we’re working on integrating this into nbclient as well in the near future.

New Features:

  • Added async API #506

Changes:

  • Python 3.8 testing and support added #509

  • Session.msg_id optimization #493

  • Only cache ports if the cache_ports flag is set to True #492

  • Removed direct dependency on pywin32 as this is now in jupyter core #489

Fixes:

  • Prevent two kernels to have the same ports #490

Docs:

  • Document the handling of error in do_execute #500

Breaking changes:

  • Dropped support for Python 2.7!

5.3.5#

5.3.4#

  • Changed secure_write to be imported from jupyter_core with fix for extended usernames in Windows #483.

5.3.3#

  • Fixed issue with non-english windows permissions #478. Potential issue still open in use with jupyerlab.

5.3.2#

  • Important files creation now checks umask permissions #469.

5.3.1#

  • Fix bug with control channel socket introduced in 5.3.0 #456.

5.3.0#

5.3.0 on GitHub

New Features:

  • Multiprocessing and Threading support #437 and #450

  • Setup package long_description #411

Changes:

  • Control channel now in the public API #447

  • Closing Jupyter Client is now faster #420

  • Pip support improvements #421

Breaking changes:

  • Dropped support for Python 3.3 and 3.4 (upstream packages dropped support already)

5.2.4#

5.2.4 on GitHub

  • Prevent creating new console windows on Windows #346

  • Fix interrupts on Python 3.7 on Windows #408

5.2.3#

5.2.3 on GitHub

  • Fix hang on close in .ThreadedKernelClient (used in QtConsole) when using tornado with asyncio (default behavior of tornado 5, see #352).

  • Fix errors when using deprecated .KernelManager.kernel_cmd (#343, #344).

5.2.2#

5.2.2 on GitHub

  • Fix .KernelSpecManager.get_all_specs method in subclasses that only override .KernelSpecManager.find_kernel_specs and .KernelSpecManager.get_kernel_spec. See #338 and #339.

  • Eliminate occasional error messages during process exit #336.

  • Improve error message when attempting to bind on invalid address #330.

  • Add missing direct dependency on tornado #323.

5.2.1#

5.2.1 on GitHub

  • Add parenthesis to conditional pytest requirement to work around a bug in the wheel package, that generate a .whl which otherwise always depends on pytest see #324and #325.

5.2#

5.2 on GitHub

  • Define Jupyter protocol version 5.3:

    • Kernels can now opt to be interrupted by a message sent on the control channel instead of a system signal. See kernelspecs and msging_interrupt #294.

  • New jupyter kernel command to launch an installed kernel by name #240.

  • Kernelspecs where the command starts with e.g. python3 or python3.6—matching the version jupyter_client is running on—are now launched with the same Python executable as the launching process #306. This extends the special handling of python added in 5.0.

  • Command line arguments specified by a kernelspec can now include {resource_dir}, which will be substituted with the kernelspec resource directory path when the kernel is launched #289.

  • Kernelspecs now have an optional metadata field to hold arbitrary metadata about kernels—see kernelspecs #274.

  • Make the KernelRestarter class used by a KernelManager configurable #290.

  • When killing a kernel on Unix, kill its process group #314.

  • If a kernel dies soon after starting, reassign random ports before restarting it, in case one of the previously chosen ports has been bound by another process #279.

  • Avoid unnecessary filesystem operations when finding a kernelspec with .KernelSpecManager.get_kernel_spec #311.

  • .KernelSpecManager.get_all_specs will no longer raise an exception on encountering an invalid kernel.json file. It will raise a warning and continue #310.

  • Check for non-contiguous buffers before trying to send them through ZMQ #258.

  • Compatibility with upcoming Tornado version 5.0 #304.

  • Simplify setup code by always using setuptools #284.

  • Soften warnings when setting the sticky bit on runtime files fails #286.

  • Various corrections and improvements to documentation.

5.1#

5.1 on GitHub

  • Define Jupyter protocol version 5.2, resolving ambiguity of cursor_pos field in the presence of unicode surrogate pairs.

    ::: {.seealso} cursor_pos_unicode_note :::

  • Add Session.clone for making a copy of a Session object without sharing the digest history. Reusing a single Session object to connect multiple sockets to the same IOPub peer can cause digest collisions.

  • Avoid global references preventing garbage collection of background threads.

5.0#

5.0.1#

5.0.1 on GitHub

  • Update internal protocol version number to 5.1, which should have been done in 5.0.0.

5.0.0#

5.0.0 on GitHub

New features:

  • Implement Jupyter protocol version 5.1.

  • Introduce jupyter run command for running scripts with a kernel, for instance:

    jupyter run --kernel python3 myscript.py
    
  • New method .BlockingKernelClient.execute_interactive for running code and capturing or redisplaying its output.

  • New KernelManager.shutdown_wait_time configurable for adjusting the time for a kernel manager to wait after politely requesting shutdown before it resorts to forceful termination.

Fixes:

  • Set sticky bit on connection-file directory to avoid getting cleaned up.

  • jupyter_client.launcher.launch_kernel passes through additional options to the underlying Popen, matching KernelManager.start_kernel.

  • Check types of buffers argument in .Session.send, so that TypeErrors are raised immediately, rather than in the eventloop.

Changes:

  • In kernelspecs, if the executable is the string python (as opposed to an absolute path), sys.executable will be used rather than resolving python on PATH. This should enable Python-based kernels to install kernelspecs as part of wheels.

  • kernelspec names are now validated. They should only include ascii letters and numbers, plus period, hyphen, and underscore.

Backward-incompatible changes:

  • :py.datetime objects returned in parsed messages are now always timezone-aware. Timestamps in messages without timezone info are interpreted as the local timezone, as this was the behavior in earlier versions.

4.4#

4.4.0#

4.4 on GitHub

  • Add .KernelClient.load_connection_info on KernelClient, etc. for loading connection info directly from a dict, not just from files.

  • Include parent headers when adapting messages from older protocol implementations (treats parent headers the same as headers).

  • Compatibility fixes in tests for recent changes in ipykernel.

4.3#

4.3.0#

4.3 on GitHub

  • Adds --sys-prefix argument to jupyter kernelspec install, for better symmetry with jupyter nbextension install, etc.

4.2#

4.2.2#

4.2.2 on GitHub

  • Another fix for the start_new_kernel issue in 4.2.1 affecting slow-starting kernels.

4.2.1#

4.2.1 on GitHub

  • Fix regression in 4.2 causing start_new_kernel to fail while waiting for kernels to become available.

4.2.0#

4.2.0 on GitHub

  • added jupyter kernelspec remove for removing kernelspecs

  • allow specifying the environment for kernel processes via the env argument

  • added name field to connection files identifying the kernelspec name, so that consumers of connection files (alternate frontends) can identify the kernelspec in use

  • added KernelSpecManager.get_all_specs for getting all kernelspecs more efficiently

  • various improvements to error messages and documentation

4.1#

4.1.0#

4.1.0 on GitHub

Highlights:

  • Setuptools fixes for jupyter kernelspec

  • jupyter kernelspec list includes paths

  • add KernelManager.blocking_client

  • provisional implementation of comm_info requests from upcoming 5.1 release of the protocol

4.0#

The first release of Jupyter Client as its own package.