Jupytext ChangeLog¶
1.19.1 (2026-01-25)¶
Changed
Jupytext does not change the file icons anymore! Thanks to Michał Krassowski for finally solving this long standing issue! (#398)
We have bumped lodash from 4.17.21 to 4.17.23 in JupyterLab extension (#1483)
We require
marimo<=0.19.4in tests following a change in the location of themarimoimport (#1485)
1.19.0 (2026-01-18)¶
Changed
The environment used to develop Jupytext is now maintained using Pixi (#1459)
Fixed
We have restored the support for
.qmddocuments in Jupyter (#1435)We have fixed warnings about the cell ids like either
Cell is missing an id fieldorAdditional properties are not allowed ('id' was unexpected)when converting to some formats, including Pandoc (#1464)We have updated the dependencies of the Jupytext extension for JupyterLab. Many thanks to Mahendra Paipuri for his PR (#1477)!
Added
We have added a new
py:marimoformat, which uses themarimocommand line interface to convert notebooks to and from the Marimo format (#1431)
1.18.1 (2025-10-19)¶
Fixed
Fixed test
test_check_source_is_newer_when_using_jupytext_syncto work reliably on systems with low filesystem timestamp resolution (#1460)
Changed
We now use
pixito maintain the local Python environments used for developing and testing Jupytext.
1.18.0 (2025-10-18)¶
Added
The documentation has a chapter on the Jupytext Sync extension for VS Code (#1395)
We have added a new option
--check-source-is-newerto the Jupytext CLI. Use this option if you want to make sure that the file passed as argument to Jupytext is the newest of all paired files, and/or newer than the destination file.We have added a section on Jupyter Collaboration which also provides a very useful autoreload functionality (#406, #1401)
Pairing groups allow you to define different pairing configurations for specific subsets of notebooks. The
formatsconfiguration option now supports a list of format dictionaries for first-match pairing. Use[[formats]]sections in your TOML configuration to define multiple format specifications, where the first matching format is used. This allows applying different pairing rules to notebooks in different locations, such as generating documentation markdown files only for tutorial notebooks (#1383)We have added more tests to document the complex pairing formats, which also work on Windows (#1028)
Pairing into nested folders was fixed on Windows (#1028)
Jupytext is now tested with Python 3.14 (#1456)
Fixed
The Jupytext CLI now detects if a file it has read or consulted has been modified while it was processing it. That can happen in the context of the Jupytext Sync extension for VS Code (#1411, vscode-jupytext-sync-#12). When such a synchronous modification is detected, Jupytext now raises an error. Many thanks to Anne Archibald for reporting the issue and preparing an inspiring PR (#1417).
We don’t import
notebookwhenjupyter_serveris available (#1436)Jupytext now supports more characters in the cell metadata keys, to improve compatibility with
jupyterlab-slideshow(#1441). Thanks to Nicolas Thierry for this fix.The function
find_jupytext_configuration_filenow works with relative directories (#1440). This fix was contributed by Thierry Parmentelat.We have fixed a parsing error for R Markdown files (#1429)
We have fixed a parsing error when the first cell of the notebook contains a YAML header that is not a dict (#1444)
Changed
We have updated the pre-commit hooks. The code is now formatted using
ruff format, and updated for Python 3.9+ using https://github.com/asottile/pyupgrade (#1423)
1.17.3 (2025-08-28)¶
Added
All the extensions supported by Jupytext now appear in the
--toparagraph ofjupytext --help(#433)We have added a new function
get_formats_from_notebook_paththat returns the list of paired formats for a given notebook (#1419)
Fixed
We have fixed
jupytext --sync, and the contents manager, to make sure that a simple.pyfile (not in the percent format) will not be treated as a paired file when the Jupytext configuration file hasformats="ipynb,py:percent"(#1418)A notebook can be moved in Jupyter even if that makes it unpaired (#1414)
The test against
jupyter-fsnow installs itsfsextra dependency (#1398)The
jupytext --synccommand now works correctly with symbolic links. Thanks to mccullerlp for reporting (#1407) and addressing (#1408) the problem!Jupytext will look for
quarto.cmdon Windows. Thanks to mccullerlp for documenting the issue (#1406, #1409).We have corrected the
jupytext --paired-pathscommand: it will now take the Jupytext configuration file, if any, into account (#1419)
1.17.2 (2025-06-01)¶
Fixed
The
--set-formatsargument takes precedence over pre-existing pairing information in the notebook (#1386)
Changed
We have removed Python 3.8 from the list of supported Python version, and from the CI, as it has reached its EOL
Added
ROOT-flavored C++ notebooks can be paired to
.cppfiles - thanks to Steven Gardiner for this contribution (#1384)
1.17.1 (2025-04-26)¶
Fixed
Renaming files other than notebooks will not load their content (#1376)
1.17.0 (2025-04-05)¶
Added
The MyST frontmatter found in MyST Markdown notebooks can be mapped to a YAML header at the top of the Jupyter notebook. This way MyST notebooks in either the
md:mystoripynbformat can be used with MyST. Thanks to Ian Carroll for proposing and implementing this change (#1314)The context menu has a “New Text Notebook” entry. Thanks to Mahendra Paipuri for this PR (#1365)!
Changed
Jupytext’s default contents manager is now derived from the asynchronous AsyncLargeFileManager. Thanks to Darshan Poudel for making this finally happen (#1328)!
The percent format is now the default format for scripts. If you run
jupytext --to py notebook.ipynbyou now get apy:percentscript (use--to py:lightfor the light format) #1201The
rst2mdconversion now works withsphinx-gallery>=0.8. Thanks to Thomas J. Fan for fixing this! (#1334)We have updated the JupyterLab extension dependencies (#1300, #1355, #1360). Thanks to Mahendra Paipuri for these PRs!
Fixed
We have added and fixed round trip tests on MyST Markdown notebooks (#759, #789, #1267, #1317)
The
--quietoption now works with the--pipemode of Jupytext CLI (#1305)Jupytext is now compatible with the cell toolbar extension - thanks to Nicolas Brichet for the fix! (#1358)
The project description on PyPI now uses absolute links (#1287)
1.16.7 (2025-02-09)¶
Added
Logtalk notebooks are now supported (#1308) - thanks to Paulo Moura for this contribution
Fixed We have updated the dependencies of the JupyterLab extension to address security issues.
1.16.6 (2024-12-16)¶
Fixed
We fixed a “File Changed” warning when saving notebooks (#1301)
Changed
The original file name is easier to infer from the tmp file name in pre-commit hooks (#1289) - thanks to Lunin Leonid for making this change.
1.16.5 (2024-12-15)¶
Fixed
We have fixed a notebook corruption issue when using Jupytext with Jupyter-Collaboration (#1124, jupyter-collaboration 214).
We have added the
require_hashargument on the Jupytext contents manager. The hash of a paired file is the concatenation of the hash of the text file and the hash for the.ipynbfile (#1165)The
rst2mdtests have been fixed by requiringsphinx<8(#1266)Some dependencies of the JupyterLab extensions were updated (#1272, #1273, #1280, #1285, #1290)
The pre-commit hook is now compatible with log.showsignature=True (#1281). Thanks to Justin Lecher for this fix.
Added
Jupytext is now tested with Python 3.13 (#1242). Thanks to Jerry James for the suggested fixes!
The extension of a notebook piped into stdin will be taken in the notebook metadata (#1282)
1.16.4 (2024-07-12)¶
Fixed
We use
asyncio.iscoroutinefunctionto determine whether the current contents manager is sync or async (#1260)
1.16.3 (2024-07-09)¶
Fixed
We use
inspectto determine whether the current contents manager derives fromAsyncContentsManager(which is not supported by Jupytext at the moment). This fixes a compatibility issue withjupyter-fs==1.0.0(#1239). Thanks to Mahendra Paipuri for this PR!We have fixed a typo when
build_jupytext_contents_manager_classcan’t be imported (#1162)A Python 3.13 deprecation warning was fixed #1241 - thanks to Jerry James
We have fixed a typo when
build_jupytext_contents_manager_classcan’t be imported (#1162)Some dependencies of the JupyterLab extensions were updated (#1243, #1245)
Added
Lua notebooks are now supported (#1252) - thanks to erentar for this contribution
Go notebooks are supported too (#1244)! Many thanks to Jan Pfeifer, author of GoNB, and to HaveF for their help on this topic.
Empty prefixes are now allowed in Jupytext format when specified as a dictionary (#1144)
Changed
We’ve had to deactivate the tests on the Quarto format in the CI as the Quarto round trip might now add a Markdown cell to the notebook (#1255)
1.16.2 (2024-05-05)¶
Added
Added support for Xonsh notebooks (#1213) - thanks to Jeffrey Odongo for this contribution
Changed
By default, the JupyterLab extension for Jupytext is not included in the build (set
HATCH_BUILD_HOOKS_ENABLE=trueto include it). This simplifies the installation of Jupytext in pre-commit hooks (#1210)Temporary text notebooks for the
--pipeor--checkcommands are now created in the notebook directory (#1206)Jupytext uses the standard library
tomllibin Python 3.11, ortomliin Python 3.10 or older, to match JupyterLab’s dependencies (#1195)The dependencies of the JupyterLab extension were updated (#1216, #1218, #1231)
jupytext --syncwill not update the timestamp of text notebooks if their content is unchanged (#1215)
Fixed
Jupytext is now tested with
pandoc>=3.0. Please note that switching topandoc>=3.0will add cell ids to yourpandoc:mdnotebooks (#1006)
1.16.1 (2024-01-13)¶
Changed
The CI has been updated. Thanks to Christian Le for taking care of this! (#1190, #1204)
Fixed
1.16.0 (2023-12-03)¶
Added
The Jupytext Menu is back! And text notebooks can be created directly from the launcher. This is an outstanding contribution by Mahendra Paipuri (#1154, #1163). This requires JupyterLab 4.x or Jupyter Notebook 7.x.
Changed
Jupytext is now configured with
pyproject.tomland built withhatch. The layout has been reorganised to followsrc-layout(#1140). This is another outstanding contribution by Mahendra Paipuri.The tests are now part of the
sdist. They have been reorganized into unit/functional/integration/external (#1167, #1173).The legacy extension for Jupyter Notebook <=6 (the Jupytext Menu) has been removed.
Fixed
1.15.2 (2023-09-16)¶
Added
The JupyterLab extension is now compatible with the JupyterLab RISE extension. Many thanks to Frédéric Collonval for his PR (#1126)!
1.15.1 (2023-08-26)¶
Added
We have added a new command line interface
jupytext-configthat you can use to set Jupytext as the default viewer for text notebooks in JupyterLab and Jupyter Notebook 7. Thanks to Thierry Parmentelat for this contribution! (#1094)
1.15.0 (2023-07-30)¶
Changed
This version comes with a version of the JupyterLab extension that is compatible with JupyterLab 4.x. Many thanks to Thierry Parmentelat for his PRs! (#1092, #1109)
Pandoc 3.0 is now supported, thanks to Raniere Silva for his PR (#1099)
We have reorganized the documentation and the README.md (#1031, #1073)
Invalid
pyproject.tomlfiles will be ignored by Jupytext in Jupyter (#1103)We have updated the pre-commit tools
1.14.7 (2023-06-29)¶
Changed
We have updated the GitHub workflows - thanks to Matthew Feickert and to Cristian Le for their help on this subject (#1037)
We have removed the upper bound on
markdown-it-py<3. Now we test Jupytext withmarkdown-it-pyin versions2.xand3.xon the CI (#1075)
Fixed
Notebooks with an empty YAML header work (#1070)
Double quote strings in R Markdown options can contain single quotes (#1079)
The necessary directories are created when paired notebooks are moved to a sub-folder (#1059)
Commented quotes are recognized as such (#1060)
Jupytext can use either
pkg_resourcesorpackagingto parse version numbers (#1085)
1.14.6 (2023-06-04)¶
Changed
This version comes with a build requirement
jupyterlab>=3,<4, as the Jupyterlab extension for Jupytext is not compatible with JupyterLab 4 yet (#1054)The JupyterLab extension was released to
npmin version 1.3.9.
1.14.5 (2023-02-25)¶
Added
Added Stata as a supported language (#1027) - thanks to Raffaele Mancuso for this contribution
Added SAS as a supported language (#1047) - thanks to lawrencet149 for this contribution
We have added a series of test to make sure that the main formats support cell tags (#1024)
Fixed
When a metadata key is not a valid identifier, a warning is emitted and the metadata is not saved to the text representation (#1042)
The CI was fixed by Matthew Feickert (#1035)
We now use
concurrencyto cancel previous runs on the same branch/PR (#1037)We use both
codecov.notify.after_n_buildsandcomment.after_n_buildsto get only the final codecov comment
Changed
1.14.4 (2022-12-11)¶
Added
Added Wolfram Language as a supported language (#1014) - thanks to Etienne Dechamps for this contribution
1.14.3 (2022-12-11)¶
Fixed
When the default contents manager is async (i.e.
jupyter_server>=2.0.0), the Jupyter server extension for Jupytext derives a contents manager fromLargeFileManagerinstead, as async contents managers are not supported by Jupytext at the moment (#1020)We have made adjustments on the CI as flake8 was moved to GitHub, and Python 3.6 is not available anymore on
ubuntu-latest
1.14.2 (2022-11-12)¶
Fixed
The sample notebooks have been normalized with
nbformat.validator.normalize(#1002).The warnings in the test suite that we cannot fix are filtered using a new
pytest.inifileWe updated the
yarn.lockfile for the jupyter lab extension to address security vulnerabilities (#984, #1005, #1011)
Changed
The CI uses Python 3.9 rather than 3.7 when testing conda environments
Added
1.14.1 (2022-07-29)¶
Fixed
The timestamp of a paired notebook is the timestamp of the most recent paired file. This fixes the warning “File Changed” after reloading the notebook in Jupyter (#978).
1.14.0 (2022-07-03)¶
Changed
The Jupytext configuration file has a new option
cm_config_log_levelthat defaults toinfo_if_changed. With that value, the contents manager will log a line regarding the configuration file used only when the config file is not the same as the one previously used (#959) - many thanks to R.C. Thomas for suggesting this and thoughtfully testing the patch.Hidden configuration files like
.jupytext.tomlor.jupytext.pyare now ignored by Jupytext’s contents manager whenallow_hidden=False(that option was introduced injupyter_server==2.0.0a1) (#964).We have changed
jupytext --set-formatsto make it more similar tojupytext --sync. Now--set-formatswill not override existing paired files anymore (#969).
Added
We have added a test
test_pre_commit_hook_sync_with_no_configthat documents how to use the pre-commit hook without a configuration file (#967)
1.13.8 (2022-04-04)¶
Fixed
Text-only notebooks are always trusted (as they don’t include any output cells) (#941)
We made sure that our tests also work in absence of a Python kernel (#906)
The coverage of the
testsfolder has been restored at 100%Bash commands like
!{cmd}are now correctly escaped in thepy:percentformat (#938)
Added
Added Tcl as a supported language (#930) - thanks to shishitao for this contribution
Added Maxima as a supported language (#927) - thanks to Alberto Lusiani for contributing a sample Maxima notebook.
Changed
The Jupytext contents manager is derived from the
LargeFileManagerimported fromjupyter_serverrather thannotebook(#933)Allow for markdown-it-py v2 (#924)
We have updated the hooks used in the test pre-commits, to fix an issue on the CI (#940, #942)
We updated the
yarn.lockfile for the jupyter lab extension to address security vulnerabilities (#904, #925, #935, #939)
1.13.7 (2022-02-09)¶
Fixed
The Jupytext CLI only suggest
--updatewhen the target is an .ipynb file (#905) - thanks to st– for this contributionWe made sure that commands like
cat notebook.md | jupytext --executework (#908)
Added
Changed
We have updated the pre-commit hooks and in particular we switched to the first stable version of
black==22.1.0.We require
pandoc==2.16.2for testing. The representation for code cells changed from``` {.python}to``` pythonin that version of Pandoc (#906). We don’t usepandoc>=2.17in tests at the moment because of the introduction of cell ids that cannot be filtered.Jupytext will not add anymore a UTF-8 encoding on Python scripts when the notebook contains non-ascii characters (#907)
We have added
pyupgradeto the pre-commit hooks used for developing Jupytext (#907)
1.13.6 (2022-01-11)¶
Fixed
The
text_representationmetadata of text notebooks is filtered from.ipynbfiles both injupytext.writeand in the contents manager for Jupyter (#900)
Changed
Jupytext will not issue a warning when a format suffix starting with ‘.’, ‘-’ or ‘_’ is passed to the
--tooption (#901)
1.13.5 (2021-12-27)¶
Fixed
Jupytext will not open a text notebook that is not UTF-8 (#896)
1.13.4 (2021-12-12)¶
Changed
The test suite filters the warnings that don’t belong to Jupytext (#823)
Fixed
The parsing of notebooks that don’t have a YAML header (like
docs/formats.md) was improved.The test suite works with
pytest-randomly(#838)
1.13.3 (2021-12-04)¶
Changed
1.13.2 (2021-11-30)¶
Changed
The extension for JupyterLab benefited from a series of improvements contributed by Frédéric Collonval:
A new “Jupytext Notebook” factory offers the option to open text notebooks directly with the notebook view (#803). To use it, follow the instructions in the documentation.
The ICommandPalette is optional, for compatibility with RISE within JupyterLab [RISE#605](https://github.com/damianavila/RISE/pull/605)
Added support for translation
Branch
masterwas renamed tomain(links in the documentation were updated)
1.13.1 (2021-10-07)¶
Fixed
The magic commands in
py:percentscripts with no explicit format information remain commented over a round trip (#848)
1.13.0 (2021-09-25)¶
Added
The Jupytext CLI has a new
--diffcommand to show the differences between two notebooks (and if you want to see the changes in a file being updated by Jupytext, use--show-changes) (#799)Jupyter will show the diff between text and
ipynbpaired notebooks when it cannot open a paired notebook because theipynbversion is more recent. Also, if the inputs in the two files are identical then the notebook will open with no error (#799)The
py:percentformat will use raw strings when encoding Markdown cells as string, if they contain backslash characters (#836)
Fixed
We have upgraded the jupyterlab extension dependencies and especially
ansi-regexto fix a security vulnerability (#857)
Changed
The Jupytext configuration file is reloaded only when a notebook is opened, saved, or when a different folder is explored (#797)
1.12.0 (2021-09-09)¶
Added
Jupytext supports Quarto notebooks (with
.qmdextension) (#837)Jupytext can be configured through the
pyproject.tomlfile. Thanks to Robin Brown for this contribution! (#828)Jupytext now supports OCaml files with
.mlextension. Thanks to Quentin Fortier for getting this started (#832)
Fixed
Added more test to make sure that notebooks can be trusted. In practice, notebooks could not be trusted in JupyterLab<3.0.13 because of the absence of cell ids (#826)
1.11.5 (2021-08-31)¶
Fixed
Fixed typos revealed by
codespell- thanks to @hectormz for this contribution (#829)We updated the dependencies of the
jupyterlab-jupytextextension to address several security issues (#842) (#843)The Jupytext dev environment (
requirements-dev.txt) now usesjupyterlab==3.0.17rather than3.0.0because of another security issue (#839)
1.11.4 (2021-07-14)¶
Changed
The documentation illustrates how the
cell_markersoption (and the other ones) can be set directly in thejupytext.tomlconfig file (#809).The dependency on
mdit-py-pluginsthroughmarkdown-it-py[plugins]was made explicit (#814)
Fixed
System assigns of the form
var = !cmdare commented out (#816)Fixed an
InconsistentPathissue with notebooks paired with scripts in a folder. The prefix in the Jupytext formats always use /, while paths might use either / or \ (#806)Tests that cannot succeed are skipped when either the Jupytext folder is not a git repository, when
sphinx-galleryis too recent, or whenpandocis not up-to-date (#814)Removed the mention of ‘–update’ in ‘jupytext –pipe’ since outputs are preserved already
1.11.3 (2021-06-10)¶
Changed
Jupytext CLI has a new option
--use-source-timestampthat sets the last modification time of the output file equal to that of the source file (this avoids having to change the timestamp of the source file) (#784)In the pre-commit mode, Jupytext now uses the commit timestamp to determine which file in the pair is the most recent (#780)
Fixed
Dependencies of the JupyterLab extension have been upgraded to fix a security vulnerability (#798)
The
--warn-onlyoption also applies to pipes. Use this if the pipe may fail, e.g. if you applyblackon a possibly invalid script (#781)Variables assigned from a magic command are commented out in
pyscripts (#781)Fixed a round-trip issue on notebooks that have None/null in their metadata (#792)
1.11.2 (2021-05-02)¶
Changed
Jupytext’s dependency markdown-it-py is now in v1 (#769)
The optional argument
fmtinjupytext.readsnow has the default valueNone- thanks to Yuvi Panda (#763)
Fixed
All text files are opened with an explicit
utf-8encoding (#770)Previously
--pipe blackwas not always putting two blank lines between functions. To fix that we load the internal Jupytext cell metadata likelines_to_next_cellfrom the text file rather than ipynb (#761)The timestamp of the source file is not updated any more when the destination file is not in the pair (#765, #767)
Added
A new test documents when the
ipython3pygment lexer appears in MyST Markdown files (#759)
1.11.1 (2021-03-26)¶
Fixed
Format options stored in the notebook itself are now taken into account (Fixes #757)
1.11.0 (2021-03-18)¶
Fixed
The
jupytext.tomlconfig file can now be used together with thejupytextpre-commit hook (#752)The
notebook_extensionsoption of thejupytext.tomlfile now works (#746)
Changed
The options in
jupytext.tomlwhere renamed to match thejupytextmetadata in the text notebooks. One should now useformatsrather thandefault_jupytext_formatsandnotebook_metadata_filterrather thandefault_notebook_metadata_filter(#753)
1.10.3 (2021-03-07)¶
Fixed
1.10.2 (2021-02-17)¶
Fixed
We have adjusted the
MANIFEST.infile to exclude thenode_modulesbut still include the JupyterLab extension that was missing in the.tar.gz(and conda) package in v1.10.1. Many thanks to Martin Renou for providing the fix at (#741)
1.10.1 (2021-02-11)¶
Added
The recursive glob pattern
**/*.ipynbis now supported by Jupytext - Thanks to Banst for this contribution (#731)Sage notebooks are supported. They can be converted to
.sageand.mdfiles and back. Thanks to Lars Franke for suggesting this! (#727)Jupytext is also accessible with
python -m jupytext. Thanks to Matthew Brett for his PR! (#739)
Changed
We have tested Jupytext with the new cell ids introduced in
nbformat>=5.1.0. Cell ids are preserved by the--syncand--updatecommand. So we removed the constraint on the version ofnbformat(#735).
Fixed
We filtered out the
node_modulesfolder from the.tar.gzpackage for Jupytext (#730)
1.10.0 (2021-02-04)¶
Added
Jupytext has a pre-commit hook! Many thanks to John Paton and Aaron Gokaslan for making this happen (#698)
Jupytext CLI will not rewrite files that don’t change (#698).
If you want to see the diff for changed files, use the new
--diffoption (#722)We have added
isortandautoflake8to thepre-commitconfiguration file used for developing the Jupytext project (#709)We made sure that
py:percentscripts end with exactly one blank line (#682)We checked that Jupytext works well with symbolic links to folders (not files!) (#696)
Changed
Jupytext does not work properly with the new cell ids of the version 4.5 of
nbformat>=5.1.0yet, so we added the requirementnbformat<=5.0.8(#715)Jupytext will issue an informative error or warning on notebooks in a version of nbformat that is not known to be supported (#681, #715)
Fixed
Code cells that contain triple backticks (or more) are now encapsulated with four backticks (or more) in the Markdown and MyST Markdown formats. The version number for the Markdown format was increased to 1.3, and the version number for the MyST Markdown format was increased to 0.13 (#712)
Indented magic commands are supported (#694)
1.9.1 (2021-01-06)¶
Fixed
Include the lab extension that was missing in the conda package (#703).
1.9.0 (2021-01-05)¶
Changed
The Jupytext extension for JupyterLab is compatible with JupyterLab 3.0, thanks to Martin Renou’s awesome contribution (#683).
1.8.2 (2021-01-04)¶
Changed
Jupytext 1.8.2 depends on
python>=3.6. The last version of Jupytext explicitly tested with Python 2.7 and 3.5 was Jupytext 1.7.1 (#697).
1.8.1 (2021-01-03)¶
Changed
The dependency on
markdown-it-pyis conditional onpython>=3.6(#697)
1.8.0 (2020-12-22)¶
Changed
1.7.1 (2020-11-16)¶
Fixed
Text notebooks have the same format and mimetype as ipynb notebooks. This fixes the File Load Error - content.indexOf is not a function error on text notebooks (#659)
1.7.0 (2020-11-14)¶
Changed
Jupytext’s contents manager uses the parent CM’s
getandsavemethods to read and save text files, and explicitly callsjupytext.readsandjupytext.writesto do the conversion. We don’t usemocknor internal parent methods any more. Thanks to Max Klein for helping making this work! (#634, #635)Thanks to the above, Jupytext can work on top of contents manager that don’t derive from
FileContentsManager, and in particular it works withjupyterfs(#618)The documentation was reorganized.
README.mdwas simplified and now includes many links to the documentation.The documentation now uses
myst_parserrather thanrecommonmark. And we usecondaon RTD (#650, #652)The
readfandwriteffunctions were dropped (they had been deprecated in favor ofreadandwritein June 2019, v1.2.0)The description & dependencies of the JupyterLab extension were updated (#654)
The
--set-kernel -command, on a Python notebook, gives an explicit error when no kernel is not found that matches the current Python executable.All the GitHub workflow files were concatenated into a unique file, and we have added an
pypi-publishstep to automatically publish the package on PyPi when new releases are created.The
CHANGELOG.mdfile was moved underdocsto better expose the history of changes.
Added
Configuration errors are reported in the console and/or in Jupyter (#613)
Jupytext’s Contents Manager internal errors are logged on the console, and trigger an HTTP Error 500 (#638)
The GitHub actions run on both push events and pull requests, and duplicate jobs are skipped (#605)
Jupytext has a
tox.inifile, thanks to Chris Sewell (#605)Jupytext is tested against Python 3.9
The
executioncell metadata is now filtered by default (#656)
Fixed
Optional dependency on
sphinx-galleryfrozen to version~=0.7.0(#614)Codecov/patch reports should be OK now (#639)
Jupytext tests work on non-English locales (#636)
Cell metadata that are already present in text notebook can be filtered out using a config file (#656)
Optional cell attributes like attachments are preserved (#671)
1.6.0 (2020-09-01)¶
Added
New option
hide_notebook_metadatato encapsulate the notebook metadata in an HTML comment (#527)New option
root_level_metadata_as_raw_cell. Set it toFalseif you don’t want to see root level metadata of R Markdown notebooks as a raw cell in Jupyter (#415)New option
doxygen_equation_markersto translate Markdown equations into Doxygen equations (#517)New option
custom_cell_magicsto comment out cells starting with user-specific cell magics (#513)Documented how to use
isorton notebooks (#553)jupytext notebook.ipynb --to filename.pywill warn that--tois used in place of--output.jupytext --set-formats filename.pywill suggest to use--syncinstead of--set-formats(#544)Warn if ‘Include Metadata’ is off when saving text files in Jupyter (#561)
Test that notebooks paired through a configuration file are left unmodified (#598)
Test that metadata filters in the configuration files are taken into account when using
jupytext --to(#543)New argument
--run-pathto execute the notebooks at the desired location (#595)Activated GitHub code scanning alerts
Changed
Jupytext now depends on
markdown-it-py(Python 3.6 and above) and always features the MyST-Markdown format, thanks to Chris Sewell (#591)The
md:mystandmd:pandocare always included in the Jupytext formats, and an informative runtime error will occur if the required dependencies, resp.markdown-it-pyandpandoc, are not installed. (#556)The
# %%cell marker has the same indentation as the first line in the cell (#562)Jupytext is now installed from source on MyBinder to avoid cache issues (#567)
The tests that execute a notebook are now skipped on Windows to avoid timeout issues (#489)
Fixed
Only scripts can have an encoding comment, not Markdown or R Markdown files (#576)
Spaces in
--pipecommands are supported (#562)Bash commands starting with special characters are now correctly detected, thanks to Aaron Gokaslan (#587)
MyST Markdown files are recognized as such even if MyST-Markdown is not available (#556)
Build JupyterLab with
dev-build=Falseandminimize=Falseon mybinder to avoid build errorsConfigured coverage targets in
codecov.yml
1.5.2 (2020-07-21)¶
Changed
The documentation uses the Alabaster theme
Fixed
1.5.1 (2020-07-05)¶
Fixed
1.5.0 (2020-06-07)¶
Added
Jupytext can use a local or global configuration file (#508)
Jupytext can pair notebooks in trees. Use e.g.
notebooks///ipynb,scripts///py:percentif you want to replicate the tree of notebooks undernotebooksin a folder namedscripts(#424)The extension for Jupyter Notebook has a New Text Notebook menu that creates text-only notebooks (#443)
Groovy and Java are now supported, thanks to Przemek Wesołek (#500)
The Coconut language is also supported, thanks to Thurston Sexton (#532)
Resource files with
.resourceextension from the Robot Framework are supported, thanks to Hiski Valli (#535)Jupytext is tested in
pipandcondaenvironments, on Linux, Mac OS and Windows, using Github actions (#487)Jupytext uses pre-commit checks and automatic reformatting with
pre-commit,blackandflake8(#483)Documentation improvements:
Mention that the YAML header can be created with either
--set-kernel,--set-formats, or both (#485)Mention that one should use double quotes, not single quotes, around
jupytext --checkcommands like"pytest {}"on Windows (#475)Improved error message when a file is in a version that can’t be read by Jupytext (#531)
Fixed
1.4.2 (2020-04-05)¶
Added
Changed
The outputs from the
.ipynbfile are matched with the input cells from the text file with less strict rules. In this version, a search and replace on the text file will not remove the outputs any more (#464).Update parsing of myst notebooks to new (markdown-it based) parser (please upgrade to
myst-parserto version~0.8) (#473)Use
os.path.samefilewhen searching for the kernel that corresponds to the current environment (--set-kernel -)
Fixed
Fixed the CLI example for not commenting out magic commands:
--opt comment_magics=false. In addition, most of thejupytextcommands inusing-cli.mdare now tested! (#465)jupytext.readandjupytext.writenow give more meaningful errors when the format information is incorrect (#462)Multiline comments starting or ending with quadruple quotes should not cause issues anymore (#460)
Fixed active cells in the py:percent format (#477)
1.4.1 (2020-03-19)¶
Added
Script of script (SoS) notebooks are now supported. Thanks to Thomas Pernet-coudrier for contributing the sample notebook (#453).
New MyST Markdown format (
md:myst), developed by the ExecutableBookProject team. Read more about the MyST Markdown format in the documentation. And many thanks to Chris Sewell for contributing the actual implementation! (#447 #456 #458)
Fixed
When using
jupytext --pipe cmd, the output ofcmdshould not appear in the terminal (#432)
1.4.0 (2020-03-09)¶
Changed
The new jupyterlab extension (in version 1.2.0) is compatible with JupyterLab 2.0. Many thanks to Jean Helie! (#449)
It is not compatible with JupyterLab 1.x anymore. If you wish, you can install manually the previous version of the extension with
jupyter labextension install jupyterlab-jupytext@1.1.1.
Fixed
Display the output/errors of command executed with
jupytext --pipeorjupytext --check(#432)
1.3.5 (2020-03-08)¶
Fixed
1.3.4 (2020-02-18)¶
Added
Fixed
1.3.3 (2020-01-27)¶
Added
Jupytext has a logo! Many thanks to Kyle Kelley for contributing the actual logo (#423), and to Chris Holdgraf for suggesting this (#260).
Nested metadata filtering is now supported! You can use this to rid of
jupytext_versionif you wish (#416).
Fixed
1.3.2 (2020-01-08)¶
Fixed
The
--pre-commitmode now ignores non-notebook files in the index (#338).nbformat_minoris taken from the notebook with outputs When inputs and outputs are merged.
1.3.1 (2019-12-26)¶
Added
New
nomarkerformat in the Jupyter Notebook and JupyterLab extensions (#397)
Changed
The
normarkerformat replaces the one previously namedbare.
Fixed
Multiline strings are now accepted in the YAML header (#404). Fix contributed by ZHUO Qiang (#405).
Fixed the instructions on how to use multiline comments for all Markdown cells in the py:percent format, by ZHUO Qiang (#403).
Added
cdto the list of magic commands.Do not read paired files when
--set-formatsis being used (fixes #399).
1.3.0 (2019-11-23)¶
See also What’s new in Jupytext 1.3?
Added
Pairing a notebook to both
.mdand.pyis now supported. Input cells are loaded from the most recent text representation (#290)Both the Jupyter Notebook and the JupyterLab extension for Jupytext were updated (#290)
Raw cells are now encoded using HTML comments (
<!-- #raw -->and<!-- #endraw -->) in Markdown files (#321)Markdown cells can be delimited with any of
<!-- #region -->,<!-- #markdown -->or<!-- #md -->(#344)Code blocks from Markdown files, when they don’t have an explicit language, appear in Markdown cells in Jupyter (#321)
Code blocks with an explicit language and a
.noevalattribute are inactive in Jupyter (#347)Markdown and raw cells can be quoted with triple quotes in the
py:percentformat. And Markdown cells can start with just# %% [md](#305)The light format uses
# + [markdown]rather than the previouscell_typemetadata to identify markdown cells with metadata (#356)Explicit Markdown cells in the light format
# + [markdown]can use triple quotes (#356)IPython magic help commands like
float?are classified as magics, and thus commented in Python scripts (#297)Cell metadata can be encoded as either
key=value(the new default) or in JSON. An automatic optioncell_metadata_jsonshould help minimize the impact on existing files (#344)R Markdown hidden inputs, outputs, or cells are now mapped to the corresponding Jupyter Book tags by default (#337)
The notebook metadata filter is automatically updated when extra keys are added to the YAML header (#376)
The Jupyter Notebook extension for Jupytext is compatible with Jupyter Notebook 6.0 (#346)
jupytext notebook.py --to ipynbupdates the timestamp ofnotebook.pyso that the paired notebook still works in Jupyter (#335, #254)jupytext --check pytest notebook.ipynbcan be used to run test functions in a notebook (#286)jupytext --checkandjupytext --pipecan run commands that only operate on files: when{}is found in the text of the command,jupytextsaves the text representation of the notebook in a temp file, and replaces{}with the name of that file before executing the command. (#286)Documented how to sync notebooks in a pre-commit hook (#338)
Added support for Rust/Evxcr, by Jonas Bushart (#351)
Added support for Robot Framework, by Asko Soukka (#378)
Added support for PowerShell (#349)
Changed
Use
CHANGELOG.mdrather thanHISTORY.rst
Fixed
Commands like
cat = xare not magic commands, so they are not commented any more (#339)Fixed an inconsistent round trip (code cell with
"cat"being converted to a markdown cell) in thepy:lightformat (#339)jupytext --test textfile.extnow really compares the text file to its round trip (rather than the corresponding notebook) (#339)Markdown cells that contain code are now preserved in a round trip through the Markdown and R Markdown formats (#361)
Code cells with a
%%python3cell magic are now preserved in a round trip through the Markdown format (#365)jupytext --executeruns the notebook in its folder (#382)Strings in the metadata of code cells are quoted in the Rmd representation. And we escape R code in chunk options with
#R_CODE#(#383)
1.2.4 (2019-09-19)¶
Added
The documentation includes a mention on how to set metadata filters at the command line (#330)
Jupytext will not catch any error when the flag
--warn-onlyis not set (#327)
Fixed
1.2.3 (2019-09-02)¶
Fixed
1.2.2 (2019-09-01)¶
Added
Documentation includes a section on how to use Jupytext as a Python library (#317)
Mention of the server extension in the documentation (#304)
Text notebooks can be tested with
jupytext --execute notebook.md(#303)The default value of
as_versioninjupytext.readisnbformat.NO_CONVERT, as fornbformat.readJupytext tests are now included in sdist (#310)
Fixed
1.2.1 (2019-07-20)¶
Added
Added documentation on how to use Jupytext with JupyterLab 0.35 (#299)
and on using Jupytext with the pre-commit package manager (#292)
The
readandwritefunctions are easier to use (#292)
Fixed
Jupytext now ships the
jupyterlab-jupytextextension in version 1.0.2. The version 1.0.1 erroneously introduces atarget_formatsmetadata in the jupytext section, instead offormats, and works only after two clicks.
1.2.0 (2019-07-18)¶
Added
New
--executeoption in Jupytext CLI (#231)The
--set-formatsoption in Jupytext CLI also triggers--sync, allowing shorter commands.jupytext’sreadandwritefunctions can be used as drop-in replacements fornbformat’s ones (#262).jupytext --syncwill now skip unpaired notebooks (#281).The JupyterLab extension was updated. It now works on text files (#213) and has a new option to include (or not) the metadata in the text representation of the notebook.
Jupytext’s contents manager class is derived dynamically from the default CM class for compatibility with
jupyter_server(#270)Removed dependency on
mockandtestfixtures, thanks to Jean-Sebastien Dieu (#279)Added support for
.markdownextension (#288)
Fixed
The
jupyterlab-jupytextextension shipped with the python package is in version 1.0.1, and is compatible only with JupyterLab >= 1.0. If you use an earlier version of JupyterLab, please install the version 0.19 of the extension withjupyter labextension install jupyterlab-jupytext@0.19(#276, #278)Text files can be unpaired (#289)
1.1.7 (2019-06-23)¶
Added
Added support for Scala notebook, by Tobias Frischholz (#253)
Added a getting started notebook for jupytext (and Binder), by Chris Holdgraf (#257)
The Markdown and R Markdown representations are now tested for all the languages
The Jupytext notebook extension also works when the notebook is a text file (#213)
Fixed
1.1.6 (2019-06-11)¶
Added
Jupytext now supports Javascript and Typescript, thanks to Hatem Hosny (#250)
Jupytext works with Python 3.8 as well
Fixed
Fix global
autopairing (#249)
1.1.5 (2019-06-06)¶
Fixed
Fixed implicit dependency on
jupyter_client(#245)
1.1.4 (2019-06-05)¶
Added
New argument
--set-kernelin Jupytext command line (#230)Jupytext now accepts
--to scriptor--to auto(#240)Jupytext now has a real Sphinx documentation on readthedocs, thanks to Chris Holdgraf (#237)
Fixed
Invalid notebooks may cause a warning, but not a fatal error (#234)
Jupyter server extension leaves the contents manager unchanged if it is a sub-class of Jupytext’s CM (#236)
Fixed format inference when metadata is present but not format information (#239)
Preserve executable and encoding information in scripts with metadata (#241)
1.1.3 (2019-05-22)¶
Added
Support for IDL notebooks and .pro scripts (#232)
1.1.2 (2019-05-16)¶
Added
Jupytext’s content manager has a new
notebook_extensionsoption (#224, #183)Cells can be made inactive in scripts with the
active-ipynbcell tag (#226)
Fixed
1.1.1 (2019-04-16)¶
Added
1.1.0 (2019-04-14)¶
Added
Markdown and R Markdown formats now support metadata (#66, #111, #188)
The
lightformat for Scripts can use custom cell markers, e.g. Vim or VScode/PyCharm folding markers (#199)Pandoc’s Markdown format for Jupyter notebooks is available in Jupytext as
md:pandoc(#208)
Fixed
1.0.5 (2019-03-26)¶
Fixed
Fix the error ‘notebook file has changed on disk’ when saving large notebooks (#207)
1.0.4 (2019-03-20)¶
Added
Wildcard are now supported on Windows (#202)
Trusted notebooks remain trusted when inputs cells are modified (#203)
Fixed
Pre-commit mode adds the result of conversion to the commit (#200)
1.0.3 (2019-03-13)¶
Added
Matlab and Octave notebooks and scripts are now supported (#197)
Fixed
1.0.2 (2019-02-27)¶
Added
Rename notebooks in pairs in the tree view (#190)
Associate
.scmfile extension with Scheme scripts (#192)Added support for Clojure, by bzinberg (#193)
Fixed
Allow spaces between
?or!and python or bash command (#189)
1.0.1 (2019-02-23)¶
Fixed
1.0.0 (2019-02-19)¶
Added
Jupytext now includes a Jupyter Notebook extension and a JupyterLab extension (#86).
Jupytext command line has more arguments:
--paired-pathsto list the paths for the paired representations of the notebook, and--syncto synchronise the content of all paired paths based on the most recent file (#146). In addition, the--fromargument is optional even when the notebook is read from stdin (#148).The pairing information, and more generally the notebook metadata can be edited with the CLL, see the
--set-formatsand the--update-metadataarguments (#141).Jupytext can
--pipethe text representation of a notebook to external programs likeblackorflake8(#154, #142)The Python representation of notebooks containing PEP8 cells is now expected to be PEP8 compliant (#154).
Format specification allow prefix and suffix for path and file name (#138, #142). Use
ipynb,prefix/suffix.py:percentto pair the current notebook namednotebook.ipynbto a script namedprefixnotebooksuffix.py. Suffix and prefix can also be configured on theipynbfile, with the same syntax.Introducing a new
hydrogenformat for scripts, which derives frompercent. In that format Jupyter magic commands are not commented (#59, #126, #132).Introducing a new
bareformat for scripts, which derives fromlight. That format has no cell marker. Use a notebook metadata filter{"jupytext": {"notebook_metadata_filter":"-all"}}if you want no YAML header (#152).The default format for R script is now
light, as for the other languages.Added support for q/kdb+ notebooks (#161).
Python scripts or Markdown documents that have no Jupyter metadata receive a metadata filter that ensures that metadata is not exported back to the text representation (#124).
Metadata filters are represented as strings rather than dictionaries to make YAML headers shorter. Previous syntax from #105 is still supported. They were also renamed to
notebook_metadata_filterandcell_metadata_filter.Markdown and RMarkdown formats have a new option
split_at_headingto split Markdown cells at heading (#130)
Fixed
Main language of scripts is inferred from script extension. Fixes a round trip conversion issue for Python notebooks with a Javascript cell.
Non-Python scripts opened as notebooks in Jupyter are now correctly saved even when no matching kernel is found.
Jupyter magic commands like
lsare commented in the light and R markdown format (#149).Cell starting with
%%html,%%latexare now commented out in thelight,percentandRmdformats (#179).
0.8.6 (2018-11-29)¶
Added
The
language_infosection is not part of the default header any more. Language information is now taken from metadatakernelspec.language. (#105).When opening a paired notebook, the active file is now the file that was originally opened (#118). When saving a notebook, timestamps of all the alternative representations are tested to ensure that Jupyter’s autosave does not override manual modifications.
Jupyter magic commands are now commented per default in the
percentformat (#126, #132). Version for thepercentformat increases from ‘1.1’ to ‘1.2’. Set an optioncomment_magicstofalseeither per notebook, or globally on Jupytext’s contents manager, or onjupytext’s command line, if you prefer not to comment Jupyter magics.Jupytext command line has a pre-commit mode (#121).
0.8.5 (2018-11-13)¶
Added
0.8.4 (2018-10-29)¶
Added
Notebook metadata is filtered - only the most common metadata are stored in the text representation (#105)
New config option
freeze_metadataon the content manager and on the command line interface (defaults toFalse). Use this option to avoid creating a YAML header or cell metadata if there was none initially. (#110)Language magic arguments are preserved in R Markdown, and also supported in
lightandpercentscripts (#111, #114, #115)First markdown cell exported as a docstring when using the Sphinx format (#107)
0.8.3 (2018-10-19)¶
Added
0.8.2 (2018-10-15)¶
Added
Round trip conversion testing with
jupytext --testwas improved (#99)Round trip conversion tested on Jake Vanderplas’ Python for Data Science Handbook.
Fixed
Nested lists and dictionaries are now supported in notebook metadata
Final empty code cell supported in Sphinx representation
0.8.1 (2018-10-11)¶
Fixed
0.8.0 (2018-10-10)¶
Added
All
jupytextrelated metadata goes to ajupytextsection (#91). Please make sure your collaborators use the same version of Jupytext, as the new version can read previous metadata, but not the opposite.Notebooks extensions can be prefixed with any prefix of at most three chars (#87).
Export of the same notebook to multiple formats is now supported. To export to all python formats, plus
.ipynband.md, use"jupytext": {"formats": "ipynb,pct.py:percent,lgt.py:light,spx.py:sphinx,md"},.README includes a short section on how to extend
lightandpercentformats to more languages (#61).Jupytext’s contents manager accepts the
autoextension indefault_jupytext_formats(#93).All Jupyter magics are escaped in
lightscripts and R markdown documents. Escape magics in other formats with acomment_magicsmetadata (true or false), or with the contents managercomment_magicsglobal flag (#94).
Fixed
Trusting notebooks made functional again.
Command line
jupytextreturns a meaningful error when no argument is given.Fixed global pairing configuration (#95).
0.7.2 (2018-10-01)¶
Added
lightandpercentformats made available for scheme and cpp notebooks. Adding more formats is straightforward - just add a new entry to _SCRIPT_EXTENSIONS in languages.py, a sample notebook and a mirror test (#61)Format name is automatically appended to extension in
jupytext_formatswhen notebook is loaded/saved.
Fixed
Notebooks extensions can only be prefixed with
.nb(#87)
0.7.1 (2018-09-24)¶
Fixed
Markdown cells header in sphinx gallery format may have a space between first # and following.
0.7.0 (2018-09-23)¶
Added
Header for cells in
percentformat is more robust: use[markdown]and[raw]to identify cell types. Cell type comes after the cell title. (#59)Jupytext can read and write notebooks as Hydrogen/VScode/Spyder/PyCharm compatible scripts (cells starting with
# %%) (#59)Jupytext can read and write notebooks as Sphinx-gallery compatible scripts (#80)
Metadata are supported for all cell types in light python and percent formats (#66). Due to this, light python format version is now 1.3. Light python notebooks in versions 1.1 and 1.2 are still readable.
Command line
jupytexthas afromargument, and now accepts notebook from the standard input.
Fixed
0.6.5 (2018-09-13)¶
Added
Code lines that start with a quotation mark in Jupyter are commented in the corresponding Python and Julia scripts (#73)
Update pypy, add flake8 tests on Travis CI (#74)
Fixed
Import notebook.transutils before notebook.services.contents.filemanager (#75)
0.6.4 (2018-09-12)¶
Added
Jupytext will not load paired notebook when text representation is out of date (#63)
Package tested against Python 3.7 (#68)
Fixed
0.6.3 (2018-09-07)¶
Added
Lighter cell markers for Python and Julia scripts (#57). Corresponding file format version at 1.2. Scripts in previous version 1.1 can still be opened.
New screenshots for the README.
Fixed
Command line conversion tool
jupytextfixed on Python 2.7 (#46)
0.6.2 (2018-09-05)¶
Added
Initial support for Jupyter notebooks as Julia scripts (#56)
Command line conversion tool
jupytexthas explicittoandoutputoptions (#46)Round trip test with
jupytext --testimproved (#54)Improved README (#51)
Fixed
0.6.1 (2018-08-31)¶
Added
Package and conversion script renamed from
nbrmdtojupytext.
0.6.0 (2018-08-31)¶
Added
Cell parsing and exporting done in two specialized classes. This is way easier to read. Pylint score at 9.9 !
Python file format updated to 1.1: default end of cell for python scripts is one blank space. Two blank spaces are allowed as well. Now you can reformat code in Python IDE without breaking notebook cells (#38).
Demonstration notebooks more user friendly (#45).
Command line tool simpler to use (#46).
Start code patterns present in Jupyter cells are escaped.
Default
nbrmd_formatis empty (mwouts/nbsrc/#5): no Jupyter notebook is created on disk when the user opens a Python or R file and saves it from Jupyter, unless the users asks for it by settingnbrmd_format.
Fixed
0.5.4 (2018-08-24)¶
Added
R to Rmd conversion compares well to knitr::spin (#26)
Increased coverage to 98%
0.5.3 (2018-08-22)¶
Fixed
Read and write version to the same metadata (#36)
0.5.2 (2018-08-22)¶
Added
0.5.1 (2018-08-21)¶
Fixed
Source only notebooks can be trusted.
0.5.0 (2018-08-21)¶
Added
Jupyter magic commands escaped when exported (#29)
‘endofcell’ option for explicit (optional) end-of-cell marker (#31)
‘active’ cell option now supported for .py and .R export (#30)
Raw cells now preserved when exported to .py or .R (#32)
Extensions can be prefixed, like
.nb.py, (mwouts/nbsrc#5)When a file with an extension not associated to ‘ipynb’ is opened and saved, no ‘ipynb’ file is created (mwouts/nbsrc#5)
Extensions can now be a sequence of groups. For instance,
nbrmd_formats="ipynb,nb.py;script.ipynb,py"will create anipynbfile when anb.pyis opened (and conversely), and ascript.ipynbfile when apyfile is opened (mwouts/nbsrc#5)nbsrcscript was moved to thenbrmdpackage. Thenbsrcpackage now only contains the documentation (mwouts/nbsrc#3)
0.4.6 (2018-07-26)¶
Ping pypi - previous version still not available
0.4.5 (2018-07-26)¶
Fixed
Removed dependency of
setup.pyonyaml
0.4.4 (2018-07-26)¶
Fixed
Package republished with
python setup.py sdist bdist_wheelto fix missing dependencies
0.4.3 (2018-07-26)¶
Added
Fixed
0.4.2 (2018-07-23)¶
Added
Added test for R notebooks
Added pylint badge, imports now in correct order
New
activecell metadata that allows cell activation only for desired extensions (currently available for Rmd and ipynb extensions only)
0.4.1 (2018-07-20)¶
Fixed
0.4.0 (2018-07-18)¶
Added
.pyformat for notebooks is lighter and pep8 compliant
Fixed
0.3.0 (2018-07-17)¶
Added
Introducing support for notebooks as python
.pyor R scripts.R
0.2.6 (2018-07-13)¶
Added
Introduced
nbrmd_sourceonly_formatmetadataInputs are loaded from
.Rmdfile when a matching.ipynbfile is opened.
Fixed
Trusted notebooks remain trusted (#12)
0.2.5 (2018-07-11)¶
Added
Outputs of existing
.ipynbversions are combined with matching inputs of R markdown version, as suggested by @grst (#12)
Fixed
Support for unicode text in python 2.7 (#11)
0.2.4 (2018-07-05)¶
Added
nbrmd will always open notebooks, even if header of code cells are not terminated. Merge conflicts can thus be solved in Jupyter directly.
New metadata ‘main language’ that preserves the notebook language.
Fixed
dependencies included in
setup.pypre_save_hook work with non-empty
notebook_dir(#9)
0.2.3 (2018-06-28)¶
Added
Screenshots in README
Fixed
RMarkdown exporter for nbconvert fixed on non-recent python
Tests compatible with other revisions of nbformat >= 4.0
Tests compatible with older pytest versions
0.2.2 (2018-06-28)¶
Added
RMarkdown exporter for nbconvert
Parsing of R options robust to parenthesis
Jupyter cell tags are preserved
Fixed
requirements.txt now included in pypi packages
0.2.1 (2018-06-24)¶
Added
Support for editing markdown files in Jupyter
New pre-save hook
update_selected_formatsthat saves to formats in metadata ‘nbrmd_formats’Rmd cell options directly mapped to cell metadata
Fixed
ContentManager compatible with Python 2.7
0.2.0 (2018-06-21)¶
Added
The package provides a
RmdFileContentsManagerfor direct edit of R markdown files in JupyterNotebook metadata and cell options are preserved
0.1.1 (2018-06-19)¶
Added
nbrmdprints the result of conversion to stdout, unless flag-iis providedNotebooks with R code chunks are supported
0.1 (2018-06-18)¶
Initial version with the
nbrmdconverter and Jupyterpre_save_hook