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 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
envargument - added
namefield 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 listincludes paths- add
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.