Changes in Jupyter Client¶
Define Jupyter protocol version 5.2, resolving ambiguity of
cursor_posfield in the presence of unicode surrogate pairs.
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.
Implement Jupyter protocol version 5.1.
Introduce jupyter run command for running scripts with a kernel, for instance:
jupyter run --kernel python3 myscript.py
BlockingKernelClient.execute_interactive()for running code and capturing or redisplaying its output.
KernelManager.shutdown_wait_timeconfigurable for adjusting the time for a kernel manager to wait after politely requesting shutdown before it resorts to forceful termination.
- 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
- Check types of
Session.send(), so that TypeErrors are raised immediately, rather than in the eventloop.
- In kernelspecs, if the executable is the string
python(as opposed to an absolute path),
sys.executablewill be used rather than resolving
pythonon 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.
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.
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.
- 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
namefield to connection files identifying the kernelspec name, so that consumers of connection files (alternate frontends) can identify the kernelspec in use
KernelSpecManager.get_all_specs()for getting all kernelspecs more efficiently
- various improvements to error messages and documentation
The first release of Jupyter Client as its own package.