Metadata-Version: 2.1
Name: nbsrc
Version: 0.3.0
Summary: Jupyter notebooks from/to python and R scripts
Home-page: https://github.com/mwouts/nbsrc
Author: Marc Wouts
Author-email: marc.wouts@gmail.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Framework :: Jupyter
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python
Classifier: Topic :: Text Processing :: Markup
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Description-Content-Type: text/markdown
Requires-Dist: nbformat (>=4.0.0)
Requires-Dist: mock
Requires-Dist: pyyaml

# Python and R scripts as Jupyter notebooks

[![Pypi](https://img.shields.io/pypi/v/nbsrc.svg)](https://pypi.python.org/pypi/nbsrc)
[![Pypi](https://img.shields.io/pypi/l/nbsrc.svg)](https://pypi.python.org/pypi/nbsrc)
[![Build Status](https://travis-ci.com/mwouts/nbsrc.svg?branch=master)](https://travis-ci.com/mwouts/nbsrc)
[![codecov.io](https://codecov.io/github/mwouts/nbsrc/coverage.svg?branch=master)](https://codecov.io/github/mwouts/nbsrc?branch=master)
[![pyversions](https://img.shields.io/pypi/pyversions/nbsrc.svg)](https://pypi.python.org/pypi/nbsrc)

This package provides companion scripts (`.py` or `.R` extension)
to your Jupyter notebooks, that are always *synchronized*
with the notebook.

With this you will be able to
- set the `.py` or `.R` script under version control
- modify the script outside of Jupyter, and easily merge multiple contributions
to the notebook using standard, text merge tools
- reload the latest version of the notebook from the `.py` or `.R` script. Outputs
for the cells with unchanged input are taken from the `.ipynb` file.

## How do I activate the companion script?

- generate a jupyter config, if you don't have one yet, with `jupyter notebook --generate-config`
- edit the config and include the below:
```python
c.NotebookApp.contents_manager_class = 'nbrmd.RmdFileContentsManager'
c.ContentsManager.default_nbrmd_formats = ['.ipynb', '.py']
```

Then, make sure you have the `nbsrc` and `nbrmd` packages installed, and re-start jupyter, i.e. run
```bash
pip install nbrmd nbsrc --upgrade
jupyter notebook
```

## Per notebook configuration

With the above configuration, every notebook will have a companion `.py` file.

If you prefer that the companion script be generated only for a few notebooks,
then remove the `c.ContentsManager.default_nbrmd_formats` line from Jupyter's
configuration, and instead edit the notebook metadata as follows:
```
{
  "kernelspec": {
    "name": "python3",
    (...)
  },
  "language_info": {
    (...)
  },
  "nbrmd_formats": [".ipynb", ".py"]
}
```

Accepted formats are: `.ipynb`, `.Rmd`, `.py` and `.R`.

In case you want both `.py` and `.Rmd`, please note that the
order matters: the first non-`.ipynb` extension
is the one used as the reference source for notebook inputs.

## Command line conversion

The package also provides a `nbsrc` script that converts Jupyter notebooks
 to R or python scripts, and vice-versa.

Use it as:
```bash
nbsrc jupyter.ipynb         # this prints the `.py` or `.R` alternative
nbsrc jupyter.ipynb -i      # this creates a jupyter.py or jupyter.R file
nbsrc jupyter.py    -i      # and this, a jupyter.ipynb file
nbsrc jupyter.py    -i -p   # update the jupyter.ipynb file and preserve outputs that correspond to unchanged inputs
```

Alternatively, the `nbsrc` package provides two `nbconvert` exporters that you can use with
```bash
nbconvert jupyter.ipynb --to pynotebook
nbconvert jupyter.ipynb --to rnotebook
```

## And if I convert twice?

Round trip conversion of scripts is identity.
Round trip conversion of Jupyter notebooks preserves the source, not outputs.



