- Added kernel_protocol_version to kernelspec #1097 (@JohanMabille, @SylvainCorlay)
- Faster message serialization #1064 (@fleming79, @Carreau, @henryiii, @krassowski, @minrk, @rgbkrk)
- Path resolution by kernel manager and providers #1005 (@krassowski, @rgbkrk)
- chore: update some parts of the pre-commit #1093 (@henryiii, @minrk, @rgbkrk)
- Fix flaky client tests by waiting for first request's reply #1091 (@rgbkrk)
- Re-enable qtconsole in downstream checks #1090 (@rgbkrk)
- Fix channel cleanup by closing streams before stopping ioloop thread #1089 (@rgbkrk)
- Fix downstream workflow #1087 (@rgbkrk)
- Skip mypy on PyPy to avoid librt compilation issues #1086 (@rgbkrk)
- Upgrade to version 5.5 #1096 (@JohanMabille, @SylvainCorlay)
- Update messaging spec #1095 (@JohanMabille, @minrk, @rgbkrk)
The following people contributed discussions, new ideas, code and documentation contributions, and review. See our definition of contributors.
(GitHub contributors page for this release)
@Carreau (activity) | @ccordoba12 (activity) | @fleming79 (activity) | @henryiii (activity) | @JohanMabille (activity) | @krassowski (activity) | @minrk (activity) | @rgbkrk (activity) | @SylvainCorlay (activity)
- allow configuring client_class and client_factory #1081 (@rgbkrk)
- Support date serialization in messages #1060 (@sebwills)
- feat: added
--missingflag to list and remove subcommands #1056 (@wpk-nist-gov) - Set protocol version to 5.4 #1054 (@JamesWrigley)
- don't include link-local addresses (169.254) in public_ips #1040 (@minrk)
- jupyter-run: avoid traceback for NoSuchKernel #994 (@minrk)
- upgrade pypy #1082 (@rgbkrk)
- Some tests import anyio (depending on ipykernel version). #1078 (@Carreau)
- Drop 3.9, Start testing on 3.14 and 3.14-free-threaded, get tests passing again #1076 (@Carreau)
- Attempt to fix CI #1068 (@ianthomas23)
- Revert test changes of PR 1034 #1067 (@ianthomas23)
- Drop Python 3.8, update Python versions in tests #1044 (@davidbrochart)
- [Docs] Use extension:filetype mapping in sphinx configuration #1075 (@Carreau)
- Update _load_ips_psutil() docstring #1050 (@cben)
- Add messaging docs for optional features and kernel subshells #1045 (@ianthomas23)
- Clean changelog heading #965 (@krassowski)
(GitHub contributors page for this release)
@blink1073 | @Carreau | @cben | @davidbrochart | @ianthomas23 | @JamesWrigley | @kevin-bates | @krassowski | @minrk | @rgbkrk | @sebwills | @takluyver | @tmaxwell-anthropic | @wpk-nist-gov
- Support psutil for finding network addresses #1033 (@juliangilbey)
- use simpler isoparse from dateutil to parse ISO-8601 timestamps #1032 (@minrk)
- Avoid a DeprecationWarning on Python 3.13+ #1027 (@hroncok)
- Fix docs check #1038 (@minrk)
- fix invocation of pip for nbconvert downstream #1037 (@minrk)
- test on python 3.13-dev #1036 (@andife)
- Support ipykernel's use of anyio in test_signal_kernel_subprocesses #1034 (@ianthomas23)
(GitHub contributors page for this release)
@andife | @hroncok | @ianthomas23 | @juliangilbey | @minrk
- Use non-blocking zmq Poller #1023 (@fcollonval)
(GitHub contributors page for this release)
- Update Release Scripts #1016 (@blink1073)
- chore: update pre-commit hooks #1008 (@pre-commit-ci)
- chore: update pre-commit hooks #1002 (@pre-commit-ci)
- Bump actions/setup-python from 4 to 5 #1000 (@dependabot)
- chore: update pre-commit hooks #999 (@pre-commit-ci)
- Bump conda-incubator/setup-miniconda from 2 to 3 #998 (@dependabot)
- chore: update pre-commit hooks #996 (@pre-commit-ci)
- Fix docs reference #1017 (@blink1073)
- Add docs about packaging kernels #1013 (@blink1073)
- Clarify what a restart means #966 (@mlucool)
(GitHub contributors page for this release)
@blink1073 | @dependabot | @mlucool | @pre-commit-ci | @Zsailer
- Fix possibly not defined tracker #991 (@davidbrochart)
- BUG: Fix Kwarg only in update_env #989 (@Carreau)
- Update typing for traitlets 5.13 #995 (@blink1073)
- Use ruff format #992 (@blink1073)
- Unused
*argsinKernelManager's__init__#986 (@Carreau)
(GitHub contributors page for this release)
@blink1073 | @Carreau | @davidbrochart
- Enable strict typing #984 (@blink1073)
- Update typings for mypy 1.6 #983 (@blink1073)
(GitHub contributors page for this release)
- Test on python 3.12 #978 (@blink1073)
- Update typing for traitlets 5.11 #977 (@blink1073)
- chore: update pre-commit hooks #975 (@pre-commit-ci)
- Update typings for traitlets 5.10.1 #974 (@blink1073)
- Do not use datetime.utcnow() that is deprecated in Python 3.12 #972 (@ellert)
- Use sp-repo-review #971 (@blink1073)
- Bump actions/checkout from 3 to 4 #968 (@dependabot)
(GitHub contributors page for this release)
@blink1073 | @dependabot | @ellert | @pre-commit-ci
- Support external kernels #961 (@davidbrochart)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @jkitchin | @kevin-bates | @pre-commit-ci | @tmaxwell-anthropic
(GitHub contributors page for this release)
- Use local coverage #945 (@blink1073)
- Add more project URLs #944 (@fcollonval)
(GitHub contributors page for this release)
@blink1073 | @fcollonval | @minrk | @pre-commit-ci
(GitHub contributors page for this release)
@blink1073 | @brichet | @minrk | @pre-commit-ci
- Fix kernelspec print output #933 (@minrk)
- Don't emit a trailng newline in base64-encoded data like 'image/png' #931 (@xl0)
- Add license #934 (@dcsaba89)
- Improving jsonutil tests #929 (@andrehora)
(GitHub contributors page for this release)
@andrehora | @blink1073 | @dcsaba89 | @kevin-bates | @minrk | @pre-commit-ci | @xl0
- Add papermill downstream check and fix kernel client replies #925 (@blink1073)
- Adopt more ruff rules #924 (@blink1073)
- Prefer print in kernelspecapp #923 (@blink1073)
(GitHub contributors page for this release)
- Fix json_output in kernelspec app #921 (@blink1073)
(GitHub contributors page for this release)
This release is primarily focused on improving asyncio support, while aiming to have minimal API changes.
- Remove nest-asyncio dependency #835 (@blink1073)
- Allow interrupt during restart of pending kernels #898 (@blink1073)
- Fix connection reconciliation to handle restarts #882 (@kevin-bates)
- Reconcile connection information #879 (@kevin-bates)
- Workaround for launch bug #861 (@blink1073)
- Defer creation of ready future #858 (@blink1073)
- Fix handling of initial ready promise #854 (@blink1073)
- Revert "Fix pending kernels again" #853 (@blink1073)
- Fix pending kernels again #845 (@blink1073)
- Use pytest_asyncio fixture #826 (@davidbrochart)
- MAINT: Don't format log in log call. #919 (@Carreau)
- Remove deprecated zmq imports #915 (@blink1073)
- MAINT: consistently use relative imports. #912 (@Carreau)
- Sync lint deps #911 (@blink1073)
- MAINT: Proper typing and cast #906 (@Carreau)
- MAINT: [async]start_kernel should only take kwarg only. #905 (@Carreau)
- Add more ci checks #903 (@blink1073)
- Allow releasing from repo #899 (@blink1073)
- Fix jupyter_core pinning #896 (@ophie200)
- Adopt ruff and reduce pre-commit usage #895 (@blink1073)
- Use pytest-jupyter #891 (@blink1073)
- Import ensure_async and run_sync from jupyter_core #889 (@davidbrochart)
- Use base setup dependency type #888 (@blink1073)
- More CI Cleanup #886 (@blink1073)
- More coverage #885 (@blink1073)
- Clean up workflow and pyproject #884 (@blink1073)
- Add more coverage #877 (@blink1073)
- Add coverage config #876 (@blink1073)
- Bump actions/setup-python from 2 to 4 #874 (@dependabot)
- Bump actions/checkout from 2 to 3 #873 (@dependabot)
- Use platform dirs in tests #872 (@blink1073)
- Clean up types and remove use of entrypoints #871 (@blink1073)
- Add dependabot #870 (@blink1073)
- Support Python 3.8-3.11 #866 (@blink1073)
- Fix assertion in
TestSession.test_serialize#860 (@samrat) - Maintenance cleanup #856 (@blink1073)
- Ignore warnings in prereleases test #844 (@blink1073)
- Use hatch for version #837 (@blink1073)
- Move tests to top level #834 (@blink1073)
- Fix nbconvert downstream test #827 (@blink1073)
- Reflect current protocol version in documentation #918 (@SylvainCorlay)
- Add full api docs #908 (@blink1073)
- Add more ci checks #903 (@blink1073)
- Switch to pydata sphinx theme #840 (@blink1073)
(GitHub contributors page for this release)
@arogozhnikov | @blink1073 | @Carreau | @ccordoba12 | @davidbrochart | @dependabot | @kevin-bates | @meeseeksdev | @minrk | @ophie200 | @pre-commit-ci | @samrat | @SylvainCorlay | @Zsailer
- Allow releasing from repo #899 (@blink1073)
(GitHub contributors page for this release)
- Allow interrupt during restart of pending kernels #898 (@blink1073)
(GitHub contributors page for this release)
- Fix jupyter_core pinning #896 (@ophie200)
- Adopt ruff and reduce pre-commit usage #895 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @ophie200 | @pre-commit-ci
No merged PRs
- Use pytest-jupyter #891 (@blink1073)
- Import ensure_async and run_sync from jupyter_core #889 (@davidbrochart)
- Use base setup dependency type #888 (@blink1073)
- More CI Cleanup #886 (@blink1073)
- More coverage #885 (@blink1073)
- Clean up workflow and pyproject #884 (@blink1073)
(GitHub contributors page for this release)
@arogozhnikov | @blink1073 | @davidbrochart | @kevin-bates | @pre-commit-ci
- Fix connection reconciliation to handle restarts #882 (@kevin-bates)
- Add more coverage #877 (@blink1073)
(GitHub contributors page for this release)
- Reconcile connection information #879 (@kevin-bates)
- Add coverage config #876 (@blink1073)
- Bump actions/setup-python from 2 to 4 #874 (@dependabot)
- Bump actions/checkout from 2 to 3 #873 (@dependabot)
- Clean up types and remove use of entrypoints #871 (@blink1073)
- Add dependabot #870 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @dependabot | @kevin-bates | @pre-commit-ci
- Use platform dirs in tests #872 (@blink1073)
- Support Python 3.8-3.11 #866 (@blink1073)
(GitHub contributors page for this release)
- Workaround for launch bug #861 (@blink1073)
- Defer creation of ready future #858 (@blink1073)
- Fix assertion in
TestSession.test_serialize#860 (@samrat) - Maintenance cleanup #856 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @pre-commit-ci | @samrat
- Remove nest-asyncio dependency #835 (@blink1073)
- Fix handling of initial ready promise #854 (@blink1073)
- Use pytest_asyncio fixture #826 (@davidbrochart)
- Ignore warnings in prereleases test #844 (@blink1073)
- Use hatch for version #837 (@blink1073)
- Move tests to top level #834 (@blink1073)
- Fix nbconvert downstream test #827 (@blink1073)
- Switch to pydata sphinx theme #840 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @davidbrochart | @minrk | @pre-commit-ci | @Zsailer
- Use tornado 6.2's PeriodicCallback in restarter #822 (@vidartf)
- Make _stdin_hook_default async #814 (@davidbrochart)
- [pre-commit.ci] pre-commit autoupdate #824 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #821 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #820 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #818 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #816 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #815 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #812 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #810 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #809 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #807 (@pre-commit-ci)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @helioz11 | @pre-commit-ci | @vidartf
- Revert latest changes to
ThreadedZMQSocketChannelbecause they break Qtconsole #803 (@ccordoba12)
- Fix sphinx 5.0 support #804 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #799 (@pre-commit-ci)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @pre-commit-ci
(GitHub contributors page for this release)
- [pre-commit.ci] pre-commit autoupdate #792 (@pre-commit-ci)
- Use hatch backend #789 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #788 (@pre-commit-ci)
- Use flit build backend #781 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @joouha | @pre-commit-ci
- Check that channels exist before asking if they are alive #785 (@ccordoba12)
- Unicode error correction using Error Handler #779 (@hxawax)
- Allow bot PRs to be automatically labeled #784 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #783 (@pre-commit-ci)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @hxawax | @pre-commit-ci
- Fix shutdown and cleanup behavior #772 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #773 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #770 (@pre-commit-ci)
- Improve mypy config #769 (@blink1073)
- Clean up pre-commit #768 (@blink1073)
(GitHub contributors page for this release)
- Include py.typed file #766 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #765 (@pre-commit-ci)
- More Cleanup #764 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @echarles | @pre-commit-ci
- Handle Warnings #760 (@blink1073)
(GitHub contributors page for this release)
- Json packer: handle TypeError and fallback to old json_clean #752 (@martinRenou)
- Prefer sending signals to kernel process group #743 (@kevin-bates)
- Mock is not needed #758 (@hroncok)
- Add pytest opts and clean up workflows #757 (@blink1073)
- Clean up dependency handling #750 (@blink1073)
- Use built in run cancellation #742 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @echarles | @hroncok | @kevin-bates | @martinRenou | @you-n-g
(GitHub contributors page for this release)
- Test against all kernels in jupyter kernel test and clean up CI #731 (@blink1073)
- Replace master with main #729 (@davidbrochart)
- [DOC] improve kernel provisioner doc #730 (@abzymeinsjtu)
- add changelog for message spec #525 (@minrk)
(GitHub contributors page for this release)
@abzymeinsjtu | @blink1073 | @BoPeng | @davidbrochart | @minrk | @rgbkrk | @willingc | @Zsailer
- Add support for pending kernels #712 (@blink1073)
- Enforce labels on PRs #720 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @ci4ic4 | @davidbrochart | @kevin-bates | @vidartf
- Fallback to the old ipykernel "json_clean" if we are not able to serialize a JSON message #708 (@martinRenou)
- Add test for serializing bytes #707 (@martinRenou)
(GitHub contributors page for this release)
- Use logger.warning instead of deprecated warn method #700 (@kevin-bates)
(GitHub contributors page for this release)
- Fix json_default so that it's closer to what ipykernel had before #698 (@martinRenou)
- Clean up the pending task #697 (@shingo78)
- fix kernel can only restart once issue #695 (@mofanke)
- Prevent failure if kernel is not found when shutting it down #694 (@martinRenou)
(GitHub contributors page for this release)
@davidbrochart | @martinRenou | @mofanke | @shingo78
- Address missing
local-provisionerscenario #692 (@kevin-bates) - use
load_connection_info(info)when constructing a blocking client #688 (@minrk)
(GitHub contributors page for this release)
- Improve migration guide #685 (@davidbrochart)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @dhirschfeld | @jankatins | @kevin-bates | @minrk | @takluyver | @yuvipanda
- Use formal method names when called internally #683 (@kevin-bates)
(GitHub contributors page for this release)
The 7.0 release brings a major feature in Kernel Provisioners, which enable the ability for third parties to manage the lifecycle of a kernel's runtime environment.
Being a major release, there are some backward incompatible changes. Please see the migration guide for further details.
- Kernel Provisioning - initial implementation #612 (@kevin-bates)
- Fix up some async method aliases in KernelManager #670 (@kevin-bates)
- Support
answer_yeswhen removing kernel specs #659 (@davidbrochart) - Include process ID in message ID #655 (@takluyver)
- Fix qtconsole issues #638 (@davidbrochart)
- Added debugger key in
kernel_info_reply#486 (@JohanMabille) - Prepare for use with Jupyter Releaser #676 (@afshin)
- Force install
jupyter_clientmaster #675 (@davidbrochart) - Fix project name #674 (@vidartf)
- Rename trait to
allowed_kernelspecs#672 (@blink1073) - Remove block parameter from
get_msg()#671 (@davidbrochart) - Only import
nest_asynciolocally #665 (@SylvainCorlay) - Use a default serializer that is not only for date types #664 (@martinRenou)
- Updated
debug_info_response#657 (@JohanMabille) - Do not block on exit #651 (@impact27)
- Update test kernel with native coroutine, remove
async_generatordependency #646 (@kevin-bates) setup.pyand CI improvements #645 (@dolfinus)- Test downstream projects #644 (@davidbrochart)
- Remove deprecations in kernel manager #643 (@kevin-bates)
- Add
block=Trueback toget_msg()#641 (@davidbrochart) - Pin
python>=3.6.1#636 (@davidbrochart) - Use
pre-commit#631 (@davidbrochart) - Attempt CI with
ipykernel6.0 prerelease #629 (@SylvainCorlay) - Make
KernelManagersubclass tests DRY #628 (@davidbrochart) - Add tests to ensure MultiKernelManager subclass methods are called #627 (@kevin-bates)
- Add type annotations, refactor sync/async #623 (@davidbrochart)
- Create migration guide #681 (@blink1073)
- Update changelog for 7.0.0rc0 #673 (@blink1073)
- Added documentation for
richInspectVariablesrequest #654 (@JohanMabille) - Change to
edit_magicpayload #652 (@yitzchak) - Added missing documentation for the inspectVariables request and resp… #649 (@JohanMabille)
- Add status field to other replies in documentation #648 (@yitzchak)
(GitHub contributors page for this release)
@afshin | @blink1073 | @Carreau | @ccordoba12 | @davidbrochart | @dhirschfeld | @dolfinus | @echarles | @impact27 | @JohanMabille | @kevin-bates | @martinRenou | @mattip | @minrk | @MSeal | @SylvainCorlay | @takluyver | @vidartf | @yitzchak
- Yanked (PyPI) and marked as broken (conda)
- Yanked (PyPI) and marked as broken (conda)
- Shutdown request sequence has been modified to be more graceful, it
now is preceded by interrupt, and will also send a
SIGTERMbefore forcibly killing the kernel. #620 - Removal of
ipython_genutilsas a dependency. It was implicit before; but required by at least traitlets thus avoiding issues. We are working on completely removing it from all jupyter dependencies; as it might lead to issues packaging for Python 3.10, and was mostly used for compatibility with python 2. (#620, #605) - Address a race condition between
shutdown_kerneland restarter. (#607.)
See the full list of pull-requests
- Move jedi pinning to test requirements #599
- Add change parameter needed for observer method of kernel_spec_manager trait #598
- Pin jedi<=0.17.2 #596
- Doc updates (#563, #564, #587)
- Fix path to the connection file #568
- Code cleanup (#574, #579)
- Silence kill_kernel when no process is present #576
- Remove extra_env and corresponding test #581
- Add documentation dependencies to setup.py #582
- Fix for Windows localhost IP addresses #584
- Drop Travis CI, add GitHub Actions #586
- Adapt KernelManager._kernel_spec_manager_changed to observe #588
- Allow use ~/ in the kernel's command or its arguments #589
- Change wait_for_ready logic #592
- Fix test_session with msgpack v1 #594
- Removed warnings in more cases for KernelManagers that use new cleanup method #560
- Some improved tests with a conversion to pytest pattern #561
- Gracefully Close ZMQ Context upon kernel shutdown to fix memory leak #548
- Fix for chained exceptions to preserve stacks (#552, #554)
- Fix start_kernel error when passing kernel_id #547
- Update to releasing docs #543
(Deleted release with incorrect local files)
- Add AsyncKernelClient client_class to AsyncKernelManager #542
- Doc fix for xeus hyperlinks #540
- Doc typo fix #539
- Fixed a bug causing clients to sometimes hang after a stop call was made #536
This release includes support for asyncio patterns! Downstream tools should soon have releases to additionally support async patterns.
- AsyncKernelManager and AsyncMultiKernelManager are now available for async jupyter_client interactions (#528, #529)
- Removed unused sphinx dependency (#518, #518).
- Added install instructions for pip to documentation #521
- Improved docs around version protocol and messaging (#522, #526)
The git history had to be reworked heavily in merging 5.x and master, so a link to all the changes at once in github had been left out as it's just confusing.
An exciting change in this release is some async support (huge thanks to @davidbrochart for doing most of the work)! See linked PR below for more details, we're working on integrating this into nbclient as well in the near future.
New Features:
- Added async API #506
Changes:
- Python 3.8 testing and support added #509
- Session.msg_id optimization #493
- Only cache ports if the cache_ports flag is set to True #492
- Removed direct dependency on pywin32 as this is now in jupyter core #489
Fixes:
- Prevent two kernels to have the same ports #490
Docs:
- Document the handling of error in do_execute #500
Breaking changes:
- Dropped support for Python 2.7!
- Changed secure_write to be imported from jupyter_core with fix for extended usernames in Windows #483.
- Fixed issue with non-english windows permissions #478. Potential issue still open in use with jupyerlab.
- Important files creation now checks umask permissions #469.
- Fix bug with control channel socket introduced in 5.3.0 #456.
New Features:
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)
- Fix hang on close in
.ThreadedKernelClient(used in QtConsole) when using tornado with asyncio (default behavior of tornado 5, see #352). - Fix errors when using deprecated
.KernelManager.kernel_cmd(#343, #344).
- Fix
.KernelSpecManager.get_all_specsmethod in subclasses that only override.KernelSpecManager.find_kernel_specsand.KernelSpecManager.get_kernel_spec. See #338 and #339. - 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
wheelpackage, that generate a.whlwhich otherwise always depends onpytestsee #324and #325.
- 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
kernelspecsandmsging_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 kernelcommand to launch an installed kernel by name #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 #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 #289. - Kernelspecs now have an optional
metadatafield to hold arbitrary metadata about kernels---seekernelspecs#274. - Make the
KernelRestarterclass used by aKernelManagerconfigurable #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_specswill no longer raise an exception on encountering an invalidkernel.jsonfile. 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_posfield in the presence of unicode surrogate pairs.::: {.seealso}
cursor_pos_unicode_note::: -
Add
Session.clonefor 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 runcommand for running scripts with a kernel, for instance:jupyter run --kernel python3 myscript.py -
New method
.BlockingKernelClient.execute_interactivefor 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_kernelpasses through additional options to the underlying Popen, matchingKernelManager.start_kernel.- Check types of
buffersargument 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.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:
- :py
.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.
- Add
.KernelClient.load_connection_infoon 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-prefixargument tojupyter kernelspec install, for better symmetry withjupyter nbextension install, etc.
- Another fix for the
start_new_kernelissue in 4.2.1 affecting slow-starting kernels.
- Fix regression in 4.2 causing
start_new_kernelto fail while waiting for kernels to become available.
- added
jupyter kernelspec removefor 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_specsfor getting all kernelspecs more efficiently - various improvements to error messages and documentation
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
The first release of Jupyter Client as its own package.