Changes in Jupyter Client¶
5.3.4¶
Changed secure_write to be imported from jupyter_core with fix for extended usernames in Windows (PR #483).
5.3.3¶
Fixed issue with non-english windows permissions (PR #478). Potential issue still open in use with jupyerlab.
5.3.0¶
New Features:
Multiprocessing and Threading support (PR #437) and (PR #450)
Setup package long_description (PR #411)
Changes:
Control channel now in the public API (PR #447)
Closing Jupyter Client is now faster (PR #420)
Pip support improvements (PR #421)
Breaking changes:
Dropped support for Python 3.3 and 3.4 (upstream packages dropped support already)
5.2.4¶
5.2.3¶
5.2.2¶
Fix
KernelSpecManager.get_all_specs()method in subclasses that only overrideKernelSpecManager.find_kernel_specs()andKernelSpecManager.get_kernel_spec(). See #338 and PR #339.Eliminate occasional error messages during process exit (PR #336).
Improve error message when attempting to bind on invalid address (PR #330).
Add missing direct dependency on tornado (PR #323).
5.2.1¶
5.2¶
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 Kernel specs and Kernel interrupt (PR #294).
New
jupyter kernelcommand to launch an installed kernel by name (PR #240).Kernelspecs where the command starts with e.g.
python3orpython3.6—matching the versionjupyter_clientis running on—are now launched with the same Python executable as the launching process (PR #306). This extends the special handling ofpythonadded 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 (PR #289).Kernelspecs now have an optional
metadatafield to hold arbitrary metadata about kernels—see Kernel specs (PR #274).Make the
KernelRestarterclass used by aKernelManagerconfigurable (PR #290).When killing a kernel on Unix, kill its process group (PR #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 (PR #279).
Avoid unnecessary filesystem operations when finding a kernelspec with
KernelSpecManager.get_kernel_spec()(PR #311).KernelSpecManager.get_all_specs()will no longer raise an exception on encountering an invalidkernel.jsonfile. It will raise a warning and continue (PR #310).Check for non-contiguous buffers before trying to send them through ZMQ (PR #258).
Compatibility with upcoming Tornado version 5.0 (PR #304).
Simplify setup code by always using setuptools (PR #284).
Soften warnings when setting the sticky bit on runtime files fails (PR #286).
Various corrections and improvements to documentation.
5.1¶
Define Jupyter protocol version 5.2, resolving ambiguity of
cursor_posfield in the presence of unicode surrogate pairs.See also
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¶
Update internal protocol version number to 5.1, which should have been done in 5.0.0.
5.0.0¶
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_timeconfigurable 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, matchingKernelManager.start_kernel().Check types of
buffersargument inSession.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.executablewill be used rather than resolvingpythonon 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:
datetimeobjects 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¶
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¶
Adds
--sys-prefixargument to jupyter kernelspec install, for better symmetry with jupyter nbextension install, etc.
4.2¶
4.2.2¶
Another fix for the
start_new_kernel()issue in 4.2.1 affecting slow-starting kernels.
4.2.1¶
Fix regression in 4.2 causing
start_new_kernel()to fail while waiting for kernels to become available.
4.2.0¶
added jupyter kernelspec remove for removing kernelspecs
allow specifying the environment for kernel processes via the
envargumentadded
namefield to connection files identifying the kernelspec name, so that consumers of connection files (alternate frontends) can identify the kernelspec in useadded
KernelSpecManager.get_all_specs()for getting all kernelspecs more efficientlyvarious improvements to error messages and documentation
4.1¶
4.1.0¶
Highlights:
Setuptools fixes for
jupyter kernelspecjupyter kernelspec listincludes pathsadd
KernelManager.blocking_client()provisional implementation of
comm_inforequests from upcoming 5.1 release of the protocol
4.0¶
The first release of Jupyter Client as its own package.