NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #316 most downloaded on PyPI
The Jupyter Notebook format
Last release 1 months ago
17 Aug 2026
Ships unpredictably
gaps range from 1 weeks to 2.3 years
Most releases are documented
notes for 29 of 36 stable releases
3 versions withdrawn
withdrawn after publishing
11 years old
43 releases · first in 2015
disable pendingdeprecationWarnings for now #458 ( @Carreau )
The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.
One column per quarter.
…on creation) and are now emitting a PendingDeprecationWarning to indicate or wish to move to a context manager API and avoid resouce leaking. Again th…
NotebookNotary's stores are regularly note .close()d, so we introduce the ability to use it at a context manger once, (as .store is opened on creation) and are now emitting a PendingDeprecationWarning to indicate or wish to move to a context manager API and avoid resouce leaking. Again this is a PendingDeprecationWarning, please let us know if the current context manager API is problematic.
The following people contributed discussions, new ideas, code and documentation contributions, and review.
See our definition of contributors.
(GitHub contributors page for this release)
@blink1073 (activity) | @Carreau (activity) | @claude (activity) | @crypdick (activity) | @jasongrout (activity) | @LecrisUT (activity) | @rgbkrk (activity)
Maintenance and upkeep improvements
Revert PR #378 (Simplify NotebookNotary._data_dir_default) #397 ( @krassowski )
Maintenance and upkeep improvements
No merged PRs
No merged PRs
Update Release Scripts #394 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @Carreau | @cmd-ntrf | @dependabot | @pre-commit-ci | @pydanny
Fix version handling #372 ( @blink1073 )
Fix deprecation warning when importing from jsonschema #368 ( @eladkal )
Maintenance and upkeep improvements
Add strip_invalid_metadata argument to validator normalize method #355 (@jonabc)
(GitHub contributors page for this release)
@blink1073 | @dcsaba89 | @jonabc | @pre-commit-ci | @rschroll | @westurner
Undeprecate validate(nb, relax_add_props=True) #343 (@minrk)
Only require nbformat_minor for v4 #342 (@minrk)
Expose more attributes for typing #337 (@blink1073)
Fix deprecation warning suggestion by @martinRenou in https://github.com/jupyter/nbformat/pull/311
Release 5.7.0
Full Changelog: https://github.com/jupyter/nbformat/compare/5.6.1...5.7.0
Fix handling of __version__ on Python 3.7.
__version__ on Python 3.7.Fix docs and type annotations for validator.normalize.
validator.normalize.The biggest change in nbformat 5.5.0 is the deprecation of arguments to validate() that try to fix notebook errors during validation.
The biggest change in nbformat 5.5.0 is the deprecation of arguments
to validate() that try to fix notebook errors during validation.
validate() is a function that is core to the security model of
Jupyter. Callers rely on it not mutating its argument or trying to fix
the notebook passed to it.
Automatically fixing a notebook during validation can hide subtle bugs. The auto-fixing arguments are therefore deprecated and will be removed in a future release; validation will fail instead of silently modifying an invalid notebook.
Use normalize() explicitly when a notebook from an external source needs
to be repaired before validation. It returns a normalized copy and the
number of changes made:
from nbformat.validator import normalize
changes, normalized = normalize(notebook)
nbformat.validate(normalized)
The preferred approach is still to generate valid notebooks at the source; normalization is a compatibility tool, not a substitute for fixing the producer.
nbformat is now built with flit, and uses pyproject.tomlNothing published for this version
Add project URLs to setup.py by @tlinhart in https://github.com/jupyter/nbformat/pull/266
Release 5.4.0
Full Changelog: https://github.com/jupyter/nbformat/compare/5.3.0...5.4.0
setup.pynbformat.currentmypy and typings supportAdopt pre-commit and auto-formatters
fastjsonschema by defaultpre-commit and auto-formattersjsonschema to 2.6, handle warningsNothing published for this version
Return the notebook when no conversion is needed by @bryanwweber in https://github.com/jupyter/nbformat/pull/221
Release 5.2.0
Full Changelog: https://github.com/jupyter/nbformat/compare/5.1.3...5.2.0
Change id generation to be hash based to avoid problematic word combinations
- Fixed missing file in manifest
Changes convert.upgrade to upgrade minor 4.x versions to 4.5
Implemented CellIds from JEP-62
Nothing published for this version
Nothing published for this version
Add optional support for using [fastjsonschema]{.title-ref} as the JSON validation library. To enable fast validation, install [fastjsonschema]{.title
Fixed a bug where default values for validator.get_validator() failed with an import error
nbformat.read() function has a better duck-type interface and will raise more meaningful error messages if it can't parse a notebook document.
Allow notebook format 4.0 and 4.1 to have the arbitrary JSON mimebundles from format 4.2 for pragmatic purposes.
Fixed issue causing python 2 to pick up 5.0.x releases.
Removed debug print statements from project.
Added schema validation files for older versions. This was breaking notebook generation.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →