Skip to main content

Import .ipynb files as modules in the system path.

Project description


__importnb__ supports the ability to use Jupyter notebooks as python source.

[![Binder](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/deathbeds/importnb/master?filepath=readme.ipynb)[![Build Status](https://travis-ci.org/deathbeds/importnb.svg?branch=master)](https://travis-ci.org/deathbeds/importnb)

pip install importnb

## Jupyter Extension


```python
if __name__ == '__main__':
%reload_ext importnb
import readme
assert readme.foo is 42
assert readme.__file__.endswith('.ipynb')
else:
foo = 42

```

Notebooks maybe reloaded with the standard Python Import machinery.


```python
if __name__ == '__main__':
from importnb import Notebook, reload
reload(readme)
%unload_ext importnb
```

## Context Manager


```python
if __name__ == '__main__':
try:
reload(readme)
assert None, """Reloading should not work when the extension is unloaded"""
except AttributeError:
with Notebook(): reload(readme)
```

## Developer


```python
if __name__ == '__main__':
from pathlib import Path
import black, subprocess, warnings
from nbconvert.exporters.markdown import MarkdownExporter
from importnb.compiler_python import ScriptExporter
for path in Path('importnb').glob('*.ipynb'):
path.with_suffix('.py').write_text(
black.format_str(ScriptExporter().from_filename(str(path))[0], 100))
Path('readme.md').write_text(MarkdownExporter().from_filename('readme.ipynb')[0])
__import__('unittest').main(module='tests', argv="discover".split(), exit=False)
```

..xx....
----------------------------------------------------------------------
Ran 8 tests in 2.087s

OK (expected failures=2)




## CHANGELOG

# 0.2.1

* `importnb` supports notebook inputs from pure python environments. Two compatible compiler were created from IPython and Python
* `importnb.Partial` works appropriately by improving exceptions.
* All of the IPython magic syntaxes were removed to support Pure Python.
* The generated Python files are formatted with black.
* Tests were added to:

* Validate the line number in tracebacks
* Test someone elses notebooks

### 0.1.4
- Pypi supports markdown long_description with the proper mimetype in long_description_content_type.

### 0.1.3
- Include the RST files in the `MANIFEST.in`.

### 0.1.2 (Unreleased)
- Use RST files to improve the literacy of the pypi description.

### 0.1.1
- Released on PyPi

### 0.0.2
- Initial Testing Release


```python
!jupyter nbconvert --to markdown changelog.ipynb
```

[NbConvertApp] Converting notebook changelog.ipynb to markdown
[NbConvertApp] Writing 838 bytes to changelog.md



Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

importnb-0.2.1.tar.gz (9.8 kB view hashes)

Uploaded Source

Built Distribution

importnb-0.2.1-py3-none-any.whl (19.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page