Metadata-Version: 2.4
Name: execnb
Version: 0.3.4
Summary: A description of your project
Author-email: Jeremy Howard <j@fast.ai>
License-Expression: Apache-2.0
Project-URL: Repository, https://github.com/AnswerDotAI/execnb/
Project-URL: Documentation, https://AnswerDotAI.github.io/execnb/
Keywords: some,keywords
Classifier: Natural Language :: English
Classifier: Intended Audience :: Developers
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastcore>=2.2.34
Requires-Dist: ipython
Provides-Extra: dev
Requires-Dist: matplotlib; extra == "dev"
Requires-Dist: Pillow; extra == "dev"
Requires-Dist: mistletoe; extra == "dev"
Dynamic: license-file

# execnb


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## Install

Either:

    pip install execnb

or if you use conda:

    conda install -c fastai execnb

(You can replace `conda` with `mamba` in the line above if you have mamba installed.)

## How to use

Use [`CaptureShell`](https://AnswerDotAI.github.io/execnb/shell.html#captureshell) to run Jupyter code and capture notebook outputs, without running a Jupyter server (or even having it installed). The API is sync – each shell runs cells on its own private event loop in a background thread, so it works the same from a script, a notebook, or an async server, and cells may use top-level `await`:

``` python
from execnb.shell import *
from fastcore.utils import *
from fastcore.nbio import *
```

``` python
s = CaptureShell()
s.run('1+1')
```

    [{'data': {'text/plain': ['2']},
      'metadata': {},
      'output_type': 'execute_result',
      'execution_count': 1}]

To execute a notebook and save it with outputs filled in, use [`CaptureShell.execute`](https://AnswerDotAI.github.io/execnb/shell.html#captureshell.execute):

``` python
try:
    s.execute('../tests/clean.ipynb', 'tmp.ipynb')
    print(read_nb('tmp.ipynb').cells[1].outputs)
finally: Path('tmp.ipynb').unlink()
```

    [{'name': 'stdout', 'output_type': 'stream', 'text': '1\n'}, {'data': {'text/plain': '2'}, 'execution_count': 3, 'metadata': {}, 'output_type': 'execute_result'}]

You can also execute notebooks from the command line with [`exec_nb`](https://AnswerDotAI.github.io/execnb/shell.html#exec_nb):

``` python
!exec_nb --help
```

    usage: exec_nb [-h] [--dest (str)] [--exc-stop] [--inject-code (str)]
                   [--inject-path (str)] [--inject-idx (int)] [--verbose]
                   [--cell-timeout (int)]
                   src

    Execute notebook from `src` and save with outputs to `dest`

    positional arguments:
      src                   Notebook path to read from

    options:
      -h, --help            show this help message and exit
      --dest (str)          Notebook path to write to (default: '')
      --exc-stop            Stop on exceptions? (default: False)
      --inject-code (str)   Code to inject into a cell
      --inject-path (str)   Path to file containing code to inject into a cell
      --inject-idx (int)    Cell to replace with `inject_code` (default: 0)
      --verbose             Show stdout/stderr during execution (default: False)
      --cell-timeout (int)  Seconds before each cell times out (None: no limit)

    execnb 0.3.4
