- Important files creation now checks umask permissions (
469
).
- Fix bug with control channel socket introduced in 5.3.0 (
456
).
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)
- Prevent creating new console windows on Windows (
346
) - Fix interrupts on Python 3.7 on Windows (
408
)
- Fix hang on close in
.ThreadedKernelClient
(used in QtConsole) when using tornado with asyncio (default behavior of tornado 5, see352
). - Fix errors when using deprecated
.KernelManager.kernel_cmd
(343
,344
).
- Fix
.KernelSpecManager.get_all_specs
method in subclasses that only override.KernelSpecManager.find_kernel_specs
and.KernelSpecManager.get_kernel_spec
. See338
and339
. - 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
).
- Add parenthesis to conditional pytest requirement to work around a bug in the
wheel
package, that generate a.whl
which otherwise always depends onpytest
see324
and325
.
- 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
andmsging_interrupt
(294
).
- Kernels can now opt to be interrupted by a message sent on the control channel instead of a system signal. See
- New
jupyter kernel
command to launch an installed kernel by name (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 (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 (289
). - Kernelspecs now have an optional
metadata
field to hold arbitrary metadata about kernels—seekernelspecs
(274
). - Make the
KernelRestarter
class used by aKernelManager
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 invalidkernel.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.
Define Jupyter protocol version 5.2, resolving ambiguity of
cursor_pos
field in the presence of unicode surrogate pairs.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.
- Update internal protocol version number to 5.1, which should have been done in 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 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 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:
- :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.
- 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.
- Adds
--sys-prefix
argument tojupyter kernelspec install
, for better symmetry withjupyter nbextension install
, etc.
- Another fix for the
start_new_kernel
issue in 4.2.1 affecting slow-starting kernels.
- Fix regression in 4.2 causing
start_new_kernel
to fail while waiting for kernels to become available.
- 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
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
The first release of Jupyter Client as its own package.