Metadata-Version: 2.1
Name: jupyter-containds
Version: 0.2.2
Summary: Companion Jupyter extension for ContainDS
Home-page: https://github.com/ideonate/jupyter-containds
Author: Ideonate
Author-email: dan@containds.com
License: BSD
Keywords: Jupyter,Widgets,IPython,JupyterHub,Dashboard
Platform: Linux
Platform: Mac OS X
Platform: Windows
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Framework :: Jupyter
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: ipywidgets (<8.0.0,>=7.6.0)
Provides-Extra: docs
Requires-Dist: sphinx (>=1.5) ; extra == 'docs'
Requires-Dist: recommonmark ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Requires-Dist: nbsphinx (<0.4.0,>=0.2.13) ; extra == 'docs'
Requires-Dist: jupyter-sphinx ; extra == 'docs'
Requires-Dist: nbsphinx-link ; extra == 'docs'
Requires-Dist: pytest-check-links ; extra == 'docs'
Requires-Dist: pypandoc ; extra == 'docs'
Provides-Extra: test
Requires-Dist: pytest (>=4.6) ; extra == 'test'
Requires-Dist: pytest-cov ; extra == 'test'
Requires-Dist: nbval ; extra == 'test'

# jupyter-containds

[![Github Actions Status](https://github.com/ideonate/jupyter-containds/workflows/Build/badge.svg)](https://github.com/ideonate/jupyter-containds/workflows/Build)

Companion Jupyter extension for [ContainDS](https://github.com/ideonate/cdsdashboards)

![JupyterLab ContainDS Extension screenshot](screenshots/launcher.png)

When editing a Jupyter notebook, one click creates a new Voila dashboard based on the current file.

From the JupyterLab launcher screen, access your own dashboard configuration pages or click straight through to view
dashboards shared with you.

## Requirements

- JupyterLab >= 2.0
- ipywidgets >= 7

## Installation

You can install using `pip` and JupyterLab 3+:

```bash
pip install jupyter-containds
```

If you use JupyterLab 2:

```bash
pip install jupyter-containds
jupyter labextension install @jupyter-widgets/jupyterlab-manager @ideonate/jupyter-containds
```

If you are using Jupyter Notebook 5.2 or earlier, you may also need to enable
the nbextension:

```bash
jupyter nbextension enable --py [--sys-prefix|--user|--system] jupyter_containds
```

### Uninstall


```bash
pip uninstall jupyter-containds
```

If you use JupyterLab 2:

```bash
jupyter labextension uninstall @ideonate/jupyter-containds
pip uninstall jupyter-containds
```

## Development Installation

```bash
# First install the python package. This will also build the JS packages.
pip install -e ".[test, examples]"
```

When developing your extensions, you need to manually enable your extensions with the
notebook / lab frontend. For lab, this is done by the command:

```
jupyter labextension develop . --overwrite
```

For classic notebook, you can run:

```
jupyter nbextension install --sys-prefix --symlink --overwrite --py jupyter_containds
jupyter nbextension enable --sys-prefix --py jupyter_containds
```

Note that the `--symlink` flag doesn't work on Windows, so you will here have to run
the `install` command every time that you rebuild your extension. For certain installations
you might also need another flag instead of `--sys-prefix`, but we won't cover the meaning
of those flags here.

### How to see your changes

#### Typescript:

To continuously monitor the project for changes and automatically trigger a rebuild, start JupyterLab:

```bash
jupyter lab
```

And in a separate session, begin watching the source directory for changes:

```bash
jlpm run watch
```

After a change wait for the build to finish and then refresh your browser and the changes should take effect.

#### Python:

If you make a change to the python code then you will need to restart the notebook kernel to have it take effect.


