Jupyter notebooks as Markdown documents, Julia, Python or R scripts
Project description
Jupyter notebooks as Markdown documents, Julia, Python or R scripts
Have you always wished Jupyter notebooks were plain text documents? Wished you could edit them in your favorite IDE? And get clear and meaningful diffs when doing version control? Then... Jupytext may well be the tool you're looking for!
Jupytext can save Jupyter notebooks as
- Markdown and R Markdown documents,
- Scripts in many languages.
It can also convert these documents into Jupyter Notebooks, allowing you to synchronize content in both directions.
The languages that are currently supported by Jupytext are: Julia, Python, R, Bash, Scheme, Clojure, Matlab, Octave, C++, q/kdb+, IDL, TypeScript, Javascript and Scala. Extending Jupytext to more languages should be easy - read more at CONTRIBUTING.md. In addition, jupytext users can choose between two formats for notebooks as scripts:
- The
percent
format, compatible with several IDEs, including Spyder, Hydrogen, VScode and PyCharm. In that format, cells are delimited with a commented%%
. - The
light
format, designed for this project. Use that format to open standard scripts as notebooks, or to save notebooks as scripts with few cell markers - none when possible.
For more complete information see the jupytext FAQ and the jupytext documentation
Try Jupytext
Looking for a demo?
- Read the original announcement in Towards Data Science,
- Watch the PyParis talk,
- or, try Jupytext online with binder!
Installation
Jupytext is available on pypi and on conda-forge. Run either of
pip install jupytext --upgrade
or
conda install -c conda-forge jupytext
If you want to use Jupytext within Jupyter Notebook or JupyterLab, make sure you install Jupytext in the Python environment where the Jupyter server runs. If that environment is read-only, for instance if your server is started using JupyterHub, install Jupytext in user mode with:
/path_to_your_jupyter_environment/python -m pip install jupytext --upgrade --user
Jupytext's contents manager
Jupytext includes a contents manager for Jupyter that allows Jupyter to open and save notebooks as text files. When Jupytext's content manager is active in Jupyter, scripts and Markdown documents have a notebook icon.
If you don't have the notebook icon on text documents after a fresh restart of your Jupyter server, install the contents manager manually. Append
c.NotebookApp.contents_manager_class = "jupytext.TextFileContentsManager"
to your .jupyter/jupyter_notebook_config.py
file (generate a Jupyter config, if you don't have one yet, with jupyter notebook --generate-config
). Our contents manager accepts a few options: default formats, default metadata filter, etc. Then, restart Jupyter Notebook or JupyterLab, either from the JupyterHub interface or from the command line with
jupyter notebook # or lab
Jupytext menu in Jupyter Notebook
Jupytext includes an extensions for Jupyter Notebook that adds a Jupytext section in the File menu.
If the extension was not automatically installed, install and activate it with
jupyter nbextension install --py jupytext [--user]
jupyter nbextension enable --py jupytext [--user]
Jupytext commands in JupyterLab
In JupyterLab, Jupytext adds a set of commands to the command palette:
The Jupytext extension for JupyterLab is bundled with Jupytext. Installing Jupytext will trigger a build of JupyterLab the next time you open it. If you prefer, you can trigger the build manually with
jupyter lab build
The version of the extension that is shipped with Jupytext requires JupyterLab 1.0. If you prefer to continue using JupyterLab in version 0.35, you should install the version 0.19 of the extension:
jupyter labextension install jupyterlab-jupytext@0.19
Using Jupytext
Paired notebooks in the Jupyter Server
Jupytext can write a given notebook to multiple files. In addition to the original notebook file, Jupytext can save the input cells to a text file — either a script or a Markdown document. Put the text file under version control for a clear commit history. Or refactor the paired script, and reimport the updated input cells by simply refreshing the notebook in Jupyter.
Configuring notebooks to use Jupytext
Select the pairing for a given notebook using either the Jupytext menu in Jupyter Notebook, or the Jupytext commands in JupyterLab.
Alternatively, the pairing information for one or multiple notebooks can be set on the command line:
jupytext --set-formats ipynb,py notebook.ipynb
For more information see the jupytext documentation.
Command line conversion
The package provides a jupytext
script for command line conversion between the various notebook extensions:
jupytext --to py notebook.ipynb # convert notebook.ipynb to a .py file
jupytext --to notebook notebook.py # convert notebook.py to an .ipynb file with no outputs
jupytext --to notebook --execute notebook.md # convert notebook.md to an .ipynb file and run it
jupytext --update --to notebook notebook.py # update the input cells in the .ipynb file and preserve outputs and metadata
jupytext --set-formats ipynb,py notebook.ipynb # Turn notebook.ipynb into a paired ipynb/py notebook
jupytext --sync notebook.ipynb # Update all paired representations of notebook.ipynb
For more examples, see the jupytext documentation
Want to contribute?
Contributions are welcome. Please let us know how you use jupytext
and how we could improve it. You think the documentation could be improved? Go ahead! Read our CONTRIBUTING.md
to find out guidelines and instructions on how to setup a development environment. And stay tuned for more demos on medium and twitter!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file jupytext-1.2.1.tar.gz
.
File metadata
- Download URL: jupytext-1.2.1.tar.gz
- Upload date:
- Size: 160.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8edc431e4c904e87e70ac9d3bf891485fb78429e51c207f7bfddf03e5eb7c17 |
|
MD5 | 9279e6a80af01e966965db5adde7a60a |
|
BLAKE2b-256 | 2ee15be1c387c29853c1184cc6de372718599edab0c42b8d12bcaa85cea795ab |