Changes in Jupyter Client¶
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 kernel
command to launch an installed kernel by name (PR #240). - Kernelspecs where the command starts with e.g.
python3
orpython3.6
—matching the versionjupyter_client
is running on—are now launched with the same Python executable as the launching process (PR #306). This extends the special handling ofpython
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 (PR #289). - Kernelspecs now have an optional
metadata
field to hold arbitrary metadata about kernels—see Kernel specs (PR #274). - Make the
KernelRestarter
class used by aKernelManager
configurable (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.json
file. 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_pos
field 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_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, matchingKernelManager.start_kernel()
.- Check types of
buffers
argument 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.executable
will be used rather than resolvingpython
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:
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¶
- 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-prefix
argument 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
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¶
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.