NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #416 most downloaded on PyPI
A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor.
Last release 4 months ago
05 Jun 2026
Release timing varies
gaps range from 3 weeks to 12 months
Nearly every release is documented
notes for 40 of 40 stable releases
4 versions withdrawn
withdrawn after publishing
7 years old
46 releases · first in 2020
One column per quarter.
Maintenance and upkeep improvements
@flaky.flaky decorate with pytest marker #334 (@mgorny, @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)
@a-detiste (activity) | @Carreau (activity) | @krassowski (activity) | @mgorny (activity) | @minrk (activity) | @Yann-P (activity)
Allow display_id to be None #338 ( @davidbrochart , @YannickJadoul , @slayoo )
display_id to be None #338 (@davidbrochart, @YannickJadoul, @slayoo)The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.
(GitHub contributors page for this release)
@davidbrochart (activity) | @slayoo (activity) | @YannickJadoul (activity)
Drop Python 3.9, test 3.14 and pypy-3.11 #337 ( @davidbrochart )
The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.
(GitHub contributors page for this release)
@davidbrochart (activity) | @dgrahn (activity) | @drorspei (activity)
Drop Python 3.8, test PyPy 3.10 #323 ( @davidbrochart )
avoid deprecation warning for py313 #320 ( @lucascolley )
Optionally write out executed notebook in jupyter-execute #307 ( @wpk-nist-gov )
Maintenance and upkeep improvements
Maintenance and upkeep improvements
Maintenance and upkeep improvements
include stream output in CellExecutionError #282 ( @minrk )
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @kxxt | @minrk | @pre-commit-ci
Fix test stability #276 (@blink1073)
Allow space after In #264 (@davidbrochart)
Remove nest-asyncio #259 (@davidbrochart)
Handle client 8 support #253 (@blink1073)
Fix tests compatibility with IPython 8.5.0 #251 (@frenzymadness)
Fix tests for ipywidgets 8 #246 (@frenzymadness)
Start new client if needed in blocking setup_kernel #241 (@davidbrochart)
Start new client if needed #239 (@davidbrochart)
Make sure kernel is cleaned up in case an error occurred while starting kernel client #234 (@CiprianAnton)
Clean up docs and typings #230 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @chrisjsewell | @davidbrochart | @meeseeksmachine
Fix documentation generation #228 (@davidbrochart)
[pre-commit.ci] pre-commit autoupdate #225 (@pre-commit-ci)
Fix typings and update mypy settings #220 (@blink1073)
Drop ipython_genutils #209 (@davidbrochart)
Require traitlets>=5.0.0 #204 (@davidbrochart)
Pin ipython<8 in tests #198 (@davidbrochart)
Fix ipywidgets version in tests #192 (@martinRenou)
(GitHub contributors page for this release)
@davidbrochart | @frenzymadness | @kianmeng | @martinRenou | @takluyver
Remove jupyter-run, keep jupyter-execute #180 (@davidbrochart)
No merged PRs
No merged PRs
Changed jupyter execute to jupyter run #173 (@palewire)
jupyter execute to jupyter run #173 (@palewire)Added CLI to README #170 (@palewire)
skip-execution cell tag functionality #151 (@chrisjsewell)Replace km.cleanup with km.cleanup_resources #152 (@davidbrochart)
km.cleanup with km.cleanup_resources #152 (@davidbrochart)IPYKERNEL_CELL_NAME = <IPY-INPUT> #147 (@davidbrochart)Fix ipykernel's stop_on_error value to take into account raises-exception tag and force_raise_errors #137
stop_on_error value to take into account raises-exception tag and force_raise_errors #137Set minimum python version supported to 3.6.1 to avoid 3.6.0 issues
allow_error_names option was added for a more specific scope of allow_errors to be appliedUpdate kernel client class JIT if it's the synchronous version
Move language_info retrieval before cell execution #102
language_info retrieval before cell execution #102(async_)start_new_kernel_client is now split into (async_)start_new_kernel and (async_)start_new_kernel_clientNothing published for this version
These patch releases were removed due to backwards incompatible changes that should have been a minor release. If you were using these versions for th…
These patch releases were removed due to backwards incompatible changes that should have been a minor release. If you were using these versions for the couple days they were up, move to 0.5.0 and you shouldn't have any issues.
Python type hinting added to most interfaces! #83
Use KernelManager's graceful shutdown rather than KILLing kernels #64
async_execute now has a reset_kc argument to control if the client is reset upon execution request #53OSError: [WinError 6] The handle is invalid for windows/python<3.7 #77extra_arguments are now configurable by config settings #66Nothing published for this version
Nothing published for this version
Check that a kernel manager exists before cleaning up the kernel #61
The (async_)start_new_kernel_client method now supports starting a new client when its kernel manager (self.km) is a MultiKernelManager. The method no
(async_)start_new_kernel_client method now supports starting a new client when its kernel manager (self.km) is a MultiKernelManager. The method now returns the kernel id in addition to the kernel client. If the kernel manager was a KernelManager, the returned kernel id is None. #51reset_kc option to reset_execution_trackers, so that the kernel client can be reset and a new one created in calls to (async_)execute #44Async support is now available on the client. Methods that support async have an async_ prefix and can be awaited #10 #35 #37 #38
async_ prefix and can be awaited #10 #35 #37 #38Initial release -- moved out of nbconvert 6.0.0-a0
Your coding agent can read these notes before it upgrades. Set up the MCP server →