NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #327 most downloaded on PyPI
Jupyter protocol implementation and client libraries
Last release 1 months ago
28 Aug 2026
Release timing varies
gaps range from 2 weeks to 1.2 years
Nearly every release is documented
notes for 59 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
11 years old
100 releases · first in 2015
Support curve encryption over IPC too #1126 ( @krassowski , @Carreau )
KernelManager.client #1136 (@aryansk, @krassowski)kernel_dirs help text to describe first-wins precedence #1139 (@MsfPablo, @claude, @krassowski)supported_encryption format with JEP in docs #1127 (@krassowski, @Carreau)The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.
(GitHub contributors page for this release)
@aryansk (activity) | @Carreau (activity) | @claude (activity) | @krassowski (activity) | @minrk (activity) | @MsfPablo (activity) | @Yann-P (activity)
One column per quarter.
Fix restart with curve encryption enabled #1124 ( @krassowski , @Carreau , @fleming79 )
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) | @fleming79 (activity) | @krassowski (activity)
Add ZMQ Curve for transport encryption #1110 ( @krassowski , @Carreau , @minrk )
3.14t testing until msgpack supports it #1113 (@Carreau, @krassowski)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) | @JohanMabille (activity) | @krassowski (activity) | @minrk (activity)
Added kernel_protocol_version to kernelspec #1097 ( @JohanMabille , @SylvainCorlay )
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 )
--missing flag to list and remove subcommands #1056 (@wpk-nist-gov)(GitHub contributors page for this release)
@blink1073 | @Carreau | @cben | @davidbrochart | @ianthomas23 | @JamesWrigley | @kevin-bates | @krassowski | @minrk | @rgbkrk | @sebwills | @takluyver | @tmaxwell-anthropic | @wpk-nist-gov
Avoid a DeprecationWarning on Python 3.13+ #1027 ( @hroncok )
(GitHub contributors page for this release)
@andife | @hroncok | @ianthomas23 | @juliangilbey | @minrk
Use non-blocking zmq Poller #1023 ( @fcollonval )
Maintenance and upkeep improvements
(GitHub contributors page for this release)
@blink1073 | @dependabot | @mlucool | @pre-commit-ci | @Zsailer
Fix possibly not defined tracker #991 ( @davidbrochart )
*args in KernelManager's __init__ #986 (@Carreau)Allow to update kernels env in between restart. #987 ( @Carreau )
Do not use datetime.utcnow() that is deprecated in Python 3.12 #972 ( @ellert )
Support external kernels #961 (@davidbrochart)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @jkitchin | @kevin-bates | @pre-commit-ci | @tmaxwell-anthropic
Allow kwargs when writting connection_file #953 (@fecet)
use c.f.Future to wait across threads #940 (@minrk)
ThreadedZMQStream: close stream before socket #936 (@minrk)
Fix kernelspec print output #933 (@minrk)
(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)
Fix json_output in kernelspec app #921 (@blink1073)
Remove deprecated zmq imports #915 (@blink1073)
This release is primarily focused on improving asyncio support, while aiming to have minimal API changes.
TestSession.test_serialize #860 (@samrat)(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)
Allow interrupt during restart of pending kernels #898 (@blink1073)
Fix jupyter_core pinning #896 (@ophie200)
No merged PRs
No merged PRs
Use pytest-jupyter #891 (@blink1073)
(GitHub contributors page for this release)
@arogozhnikov | @blink1073 | @davidbrochart | @kevin-bates | @pre-commit-ci
Fix connection reconciliation to handle restarts #882 (@kevin-bates)
Reconcile connection information #879 (@kevin-bates)
Use platform dirs in tests #872 (@blink1073)
Workaround for launch bug #861 (@blink1073)
TestSession.test_serialize #860 (@samrat)Remove nest-asyncio dependency #835 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @davidbrochart | @minrk | @pre-commit-ci | @Zsailer
\[7.x\] Remove deprecated zmq imports #916 (@blink1073)
Make sure loop is marked with nest_asyncio #893 (@impact27)
Fix connection reconciliation to handle restarts #882 (@kevin-bates)
Reconcile connection information #879 (@kevin-bates)
\[7.x\] Handle Jupyter Core Warning #875 (@blink1073)
Workaround for launch bug #861 (@blink1073)
Defer creation of ready future #858 (@blink1073)
Fix ready promise and session send #852 (@blink1073)
Revert "Backport PR #845: Fix pending kernels again" #851 (@blink1073)
Backport PR #845: Fix pending kernels again #848 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @davidbrochart | @minrk | @Zsailer
add AsyncKernelClient to doc/api/client.rst #819 (@helioz11)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @helioz11 | @pre-commit-ci | @vidartf
Revert latest changes to ThreadedZMQSocketChannel because they break Qtconsole #803 (@ccordoba12)
ThreadedZMQSocketChannel because they break Qtconsole #803 (@ccordoba12)Add local-provisioner entry point to pyproject.toml Fixes #800 #801 (@utkonos)
Correct Any type annotations. #791 (@joouha)
Check that channels exist before asking if they are alive #785 (@ccordoba12)
Fix shutdown and cleanup behavior #772 (@blink1073)
Include py.typed file #766 (@blink1073)
Handle Warnings #760 (@blink1073)
Update consoleapp.py #733 (@you-n-g)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @echarles | @hroncok | @kevin-bates | @martinRenou | @you-n-g
Await kernel.ready in _async_shutdown_kernel #740 (@jtpio)
Further improvements to pending kernels managment #732 (@Zsailer)
(GitHub contributors page for this release)
@abzymeinsjtu | @blink1073 | @BoPeng | @davidbrochart | @minrk | @rgbkrk | @willingc | @Zsailer
Add support for pending kernels #712 (@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)
avoid use of deprecated zmq.utils.jsonapi #703 (@minrk)
Fix json_default so that it's closer to what ipykernel had before #698 (@martinRenou)
Address missing local-provisioner scenario #692 (@kevin-bates)
local-provisioner scenario #692 (@kevin-bates)load_connection_info(info) when constructing a blocking client #688 (@minrk)Don't set event loop policy on Windows at import time #686 (@minrk)
(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)
Being a major release, there are some backward incompatible changes. Please see the migration guide for further details.
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.
answer_yes when removing kernel specs #659 (@davidbrochart)kernel_info_reply #486 (@JohanMabille)jupyter_client master #675 (@davidbrochart)allowed_kernelspecs #672 (@blink1073)get_msg() #671 (@davidbrochart)nest_asyncio locally #665 (@SylvainCorlay)debug_info_response #657 (@JohanMabille)async_generator dependency #646 (@kevin-bates)setup.py and CI improvements #645 (@dolfinus)block=True back to get_msg() #641 (@davidbrochart)python>=3.6.1 #636 (@davidbrochart)pre-commit #631 (@davidbrochart)ipykernel 6.0 prerelease #629 (@SylvainCorlay)KernelManager subclass tests DRY #628 (@davidbrochart)richInspectVariables request #654 (@JohanMabille)edit_magic payload #652 (@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
Prepare for use with Jupyter Releaser #676 (@afshin)
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →