NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #5058 most downloaded on PyPI
A Jupyter Notebook Sphinx reader built on top of the MyST markdown parser.
Last release 7 months ago
02 Mar 2026
Ships fairly regularly
a new release about every 5 months
Most releases are documented
notes for 27 of 42 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
49 releases · first in 2020
One column per quarter.
MAINT: post JB2 release fix by @bsipocz in https://github.com/executablebooks/MyST-NB/pull/700
ENH: Adding scroll bars with proper cell tags by @dprada in https://github.com/executablebooks/MyST-NB/pull/454
PendingGlueReference in generate_any_nodes by @StFroese in https://github.com/executablebooks/MyST-NB/pull/675ENH: Support translated notebooks by @OriolAbril in https://github.com/executablebooks/MyST-NB/pull/600
configuration key to readthedocs.yml by @sneakers-the-rat in https://github.com/executablebooks/MyST-NB/pull/657Fix incorrect output from prints originating from different processes #604 (@basnijholt)
(GitHub contributors page for this release)
@agoose77 | @basnijholt | @bryanwweber | @bsipocz | @choldgraf | @chrisjsewell | @dependabot | @LecrisUT | @OriolAbril | @tupui | @welcome
FIX: output metadata overwrites image size for all following images #609 (@aeisenbarth)
FIX: output metadata overwrites image size for all following images #609 (@aeisenbarth)
DOCS: set printoptions to disable modern scalar printing #613 (@agoose77)
DOCS: extra comma forgotten #606 (@jeertmans)
DOCS: update shown code to match source #598 (@OriolAbril)
(GitHub contributors page for this release)
@aeisenbarth | @agoose77 | @jeertmans | @OriolAbril | @sstroemer | @welcome
ENH: pass-through image metadata #588 (@flying-sheep)
(GitHub contributors page for this release)
@agoose77 | @cisaacstern | @dependabot | @flying-sheep | @ma-sadeghi | @peytondmurray | @PhilipVinc | @sphuber | @welcome
FEAT: allow any value for expr #429 (@agoose77)
file_regression fixture for Sphinx backwards compatibility #536 (@je-cook)(GitHub contributors page for this release)
@agoose77 | @aleivag | @choldgraf | @chrisjsewell | @cisaacstern | @codecov | @dependabot | @GlobalMin | @je-cook | @joeldodson | @kianmeng | @kloczek | @LecrisUT | @michaelweinold | @mmcky | @paugier | @peytondmurray | @PhilipVinc | @pre-commit-ci | @rowanc1 | @sphuber | @tupui | @WarrenWeckesser | @welcome | @Yoshanuikabundi
Nothing published for this version
Nothing published for this version
This is primarily a maintenance release to support newer versions of dependencies and fix a few bugs.
This is primarily a maintenance release to support newer versions of dependencies and fix a few bugs.
sphinx-design #486 (@agoose77, @choldgraf)The following people contributed discussions, new ideas, code and documentation contributions, and review. See our definition of contributors.
(GitHub contributors page for this release)
@agoose77 (activity) | @choldgraf (activity) | @chrisjsewell (activity) | @dependabot (activity) | @kolibril13 (activity) | @michaelaye (activity) | @OriolAbril (activity) | @pre-commit-ci (activity)
👌 IMPROVE: hide-output button (#450) This now uses the same margin color as the cell source and, when the cell source is present, is "connected" to th
hide-output button (#450)
This now uses the same margin color as the cell source and, when the cell source is present, is "connected" to that, to form a single element.
See Hide cell contents for more information.👌 IMPROVE: Replace sphinx-togglebutton with built-in functionality (#446) This allows for tighter integration with myst-nb:
👌 IMPROVE: Replace sphinx-togglebutton with built-in functionality (#446) This allows for tighter integration with myst-nb:
See Hide cell contents for more information.
🐛 FIX: Inline exec variables with multiple outputs (#440) Previously, it was assumed that a variable evaluation would only ever create 0 or 1 outputs. Multiple are now allowed.
👌 IMPROVE: cache bust changes to CSS (#447)
👌 IMPROVE: Move CSS colors to variables (#448)
⬆️ UPGRADE: Sphinx v5 and drop v3 (see changelog), myst-parser v0.18 (see changelog)
✨ NEW: Add inline execution mode and eval role/directive, for inserting code variables directly into the text flow of your documentation! See Inline v
✨ NEW: Add inline execution mode and eval role/directive, for inserting code variables directly into the text flow of your documentation!
See Inline variable evaluation for more information.
A number of configuration option names have been changed, such that they now share the nb_ prefix. Most of the deprecated names will be auto-converted…
This release encompasses a major rewrite of the entire library and its documentation, primarily in #380 and #405.
A number of configuration option names have been changed, such that they now share the nb_ prefix.
Most of the deprecated names will be auto-converted at the start of the build, emitting a warning such as:
WARNING: 'jupyter_execute_notebooks' is deprecated for 'nb_execution_mode' [mystnb.config]
nb_render_priority has been removed and replaced by nb_mime_priority_overrides, which has a different format and is more flexible. See Outputs MIME priority for more information.
As per the changes in myst_parser, the dollarmath syntax extension is no longer included by default.
To re-add this extension, ensure that it is specified in your conf.py: myst_enable_extensions = ["dollarmath"].
For cell-level configuration the top-level key render has now been deprecated for mystnb.
For example, replace:
```{code-cell}
---
render:
image:
width: 200px
---
...
```
with:
```{code-cell}
---
mystnb:
image:
width: 200px
---
...
```
render will currently still be read, if present, and will issue a [mystnb.cell_metadata_key] warning.
The jupyter_sphinx_require_url and jupyter_sphinx_embed_url configuration options are no longer used by this package, and are replaced by nb_ipywidgets_js.
See the configuration section for more details.
The ipywidgets package has been removed from the requirements. If required, please install it specifically.
The structure of the docutils AST and nodes produced by MyST-NB has been fully changed, for compatibility with the new docutils only functionality. See the API documentation for more details.
The renderer plugin system (used by the myst_nb.renderers entry point) has also been completely rewritten,
so any current existing renderers will no longer work.
There is also now a new myst_nb.mime_renderers entry point, to allow for targeted rendering of specific code-cell output MIME types.
See Customise the render process for more information.
By default, glue roles and directives now only work for keys within the same document.
To reference glued content in a different document, the glue:any directive allows for a doc option and glue:any/glue:text roles allow the (relative) doc path to be added, for example:
```{glue:any} var_text
:doc: other.ipynb
```
{glue:text}`other.ipynb::var_float:.2E`
This cross-document functionality is currently restricted to only text/plain and text/html output MIME types, not images.
See Embedding outputs as variables for more details.
ipywidgetsjupyter_sphinxnbconvertPython: 3.6+ -> 3.7+myst_parser: 0.15 -> 0.17jupyter-cache: 0.4 -> 0.5sphinx-togglebutton: 0.1 -> 0.3The following is a non-exhaustive list of new features and improvements, see the rest of the documentation for all the changes.
Multi-level configuration (global (conf.py) < notebook level metadata < cell level metadata)
nb_number_source_lines, nb_remove_code_source, nb_remove_code_outputs, nb_render_error_lexer, nb_execution_raise_on_error, nb_kernel_rgx_aliasesAdded mystnb-quickstart and mystnb-to-jupyter CLI commands.
MyST text-based notebooks can now be specified by just:
---
file_format: mystnb
kernelspec:
name: python3
---
as opposed to the alternative jupytext top-matter. See Text-based Notebooks for more details.
docutils API/CLI with command line tools, e.g. mystnb-docutils-html
glue roles and directivesParallel friendly (e.g. sphinx-build -j 4 can execute four notebooks in parallel)
Page specific loading of ipywidgets JavaScript, i.e. only when ipywidgets are present in the notebook.
Added raw cell rendering, with the raw-cell directive.
See Raw cells authoring for more details.
Added MIME render plugins. See Customise the render process for more details.
Better log info/warnings, with type.subtype specifiers for warning suppression.
See Warning suppression for more details.
Reworked jupyter-cache integration to be easier to use (including parallel execution)
Added image options to glue:figure
New glue:md role/directive includes nested parsing of MyST Markdown.
See Embedding outputs as variables for more details.
Improved nb-exec-table directive (includes links to documents, etc)
This release improves for cell outputs and brings UI improvements for toggling cell inputs and outputs. It also includes several bugfixes.
This release improves for cell outputs and brings UI improvements for toggling cell inputs and outputs. It also includes several bugfixes.
nb_render_plugin for glue nodes #337 (@bryanwweber)✨ NEW: nb_merge_streams configuration [PR #364]
✨ NEW: nb_merge_streams configuration [PR #364]
If nb_merge_streams=True, all stdout / stderr output streams are merged into single outputs. This ensures deterministic outputs.
The primary change in this release is to update the requirements of myst-nb from sphinx>=2,<4 to sphinx>=3,<5 to support sphinx>=4 [PR #356].
sphinx v4 ⬆️The primary change in this release is to update the requirements of myst-nb from sphinx>=2,<4 to sphinx>=3,<5 to
support sphinx>=4 [PR #356].
0.15.2 [PR #353]Many thanks to @akhmerov, @bollwyvl, @choldgraf, @chrisjsewell, @juhuebner, @mmcky
Nothing published for this version
Nothing published for this version
Nothing published for this version
⬆️ UPDATE: jupyter_sphinx to 0.3.2: fixes Notebook code has no file extension metadata warning)
0.3.2: fixes Notebook code has no file extension metadata warning)3.6: to use new entry point loading interface(0.12.2 and 0.12.3 fix a regression, when working with the entry point loading interface)
This release adds an experimental MyST-NB feature to enable loading of code from a file for code-cell directives using a :load: option.
This release adds an experimental MyST-NB feature to enable loading of code from a file
for code-cell directives using a :load: <file> option.
Usage information is available in the docs
Minor update to handle MyST-Parser v0.13.3 and v4.5 notebooks.
Minor update to handle MyST-Parser v0.13.3 and v4.5 notebooks.
This release updates MyST-Parser to v0.13, which is detailed in the myst-parser changelog.
This release updates MyST-Parser to v0.13,
which is detailed in the myst-parser changelog.
The primary change is to the extension system, with extensions now all loaded via myst_enable_extensions = ["dollarmath", ...],
and a number of extensions added or improved.
Nothing published for this version
🐛 FIX: remove cell background-color CSS for cells
Minor fixes:
⬆️ UPGRADE: myst-parser v0.12.9
⬆️ UPGRADE: myst-parser v0.12.9
: Minor bug fixes and enhancements / new features
⬆️ UPGRADE: jupyter-sphinx v0.3, jupyter-cache v0.4.1 and nbclient v0.5.
⬆️ UPGRADE: jupyter-sphinx v0.3, jupyter-cache v0.4.1 and nbclient v0.5.
: These upgrades allow for full Windows OS compatibility, and improve the stability of notebook execution on small machines.
👌 IMPROVE: Formatting of stderr is now similar to stdout, but with a slight red background.
🧪 TESTS: Add Windows CI
⬆️ UPGRADE: myst-parser patch version
⬆️ UPGRADE: myst-parser patch version
: to ensure a few new features and bug fixes are incorporated (see its CHANGELOG.md)
✨ NEW: Add stderr global configuration: nb_output_stderr (see removing stderr)
More configuration!
nb_output_stderr
(see removing stderr)nb_render_key configuration
(see formatting outputs)auto execution not recognising (and skipping) notebooks with existing outputsAs for for timeout, allow_errors can also be set in the notebook metadata.execution.allow_errors This presents one breaking change, in that cache will…
This versions see's many great changes; utilising the ⬆️ upgrade to myst-parser=v0.12
and accompanying ⬆️ upgrade to sphinx=v3,
as well as major refactors to the execution (#236) and code output rendering (#243).
Plus much more configuration options, to allow for a more configurable workflow (the defaults work great as well!).
Below is a summary of the changes, and you can also check out many examples in the documentation, https://myst-nb.readthedocs.io/, and the MyST-Parser Changelog for all the new Markdown parsing features available: https://github.com/executablebooks/MyST-Parser.
Custom notebook formats:
Configuration and logic has been added for designating additional file types to be converted to Notebooks, which are then executed & parsed in the same manner as regular Notebooks. See Custom Notebook Formats for details.
Allow for configuration of render priority (per output format) with nb_render_priority.
The code cell output renderer class is now loaded from an entry-point, with a configurable name, meaning that anyone can provide their own renderer subclass. See Customise the render process for details.
Assignment of metadata tags remove-stdout and remove-stderr for removal of the relevant outputs (see here)
Render text/markdown MIME types with an integrated CommonMark parser (see here).
Add code output image formatting, via cell metadata, including size, captions and labelling (see here).
Notebook outputs ANSI lexer which is applied to stdout/stderr and text/plain outputs, and is configurable via nb_render_text_lexer (see here).
Capture execution data in sphinx env, which can be output into the documentation, with the nb-exec-table directive. See Execution statistics for details.
Standardise auto/cache execution
Both now call the same underlying function (from jupyter-cache) and act the same.
This improves auto, by making it output error reports and not raising an exception on an error.
Additional config has also been added: execution_allow_errors and execution_in_temp.
As for for timeout, allow_errors can also be set in the notebook metadata.execution.allow_errors
This presents one breaking change, in that cache will now by default execute in a the local folder as the CWD (not a temporary one).
path_to_cache -> nb_path_to_cacheallowed_nb_exec_suffixes -> nb_allowed_exec_suffixesexcluded_nb_exec_paths -> nb_excluded_exec_pathsCellOutputBundleNodeCellOutputBundleNodeCellOutputRenderer class to contain render methodsget_doctree and get_and_resolve_doctree methodsAdd configuration for traceback in stderr
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
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
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 →