This is an pre-release version accompanying our jupytercon 2020 talk. We hope this repository helps you to explore how annotation UI's can be quickly build using only python code and leveraging many awesome libraries (ipywidgets, voila, ipycanvas, etc.) from the jupyter Eco-system.
At https://palaimon.io we have used the concepts underlying ipyannotator internally for various projects and this is our attempt to contribute back to the OSS community some of the benefits we have had using OOS software.
Please let us know if you find this repository useful. Your feedback will help us to turn this proof of concept into a comprehensive library.
pip install ipyannotator
dependencies (should be handled by pip)
python = "^3.7"
traitlets = '=4.3.3'
ipycanvas = "^0.5.1"
ipyevents = "^0.8.0"
ipywidgets = "^7.5.1"
Dependency resolution fails if nbdev
and voila
libraries are both listed in the same pyproject.toml
. This should be fixed in the next major release of nbdev
lib.
The easiest workaround atm:
- install
ipyannotator
without dev dependencies - manually install
voila
into the same dev environment
Using poetry
:
install:
cd {project_root}
poetry install --no-dev
poetry run pip install voila
and run simple ipyannotator standalone example:
poetry run voila nbs/09_viola_example.ipynb --enable_nbextensions=True
Same with pip
:
cd {project_root}
pip install .
pip install voila
voila nbs/09_viola_example.ipynb --enable_nbextensions=True
This library has been written in the literate programming style popularized for
jupyter notebooks by nbdev. Please explore the jupyter notebooks in nbs/
to learn more about
the inner working of ipyannotator.
Also check out the following notebook for a more high level overview.
- Tutorial demonstrating how ipyannotator can be seamlessly integrated in your
data science workflow.
nbs/08_tutorial_road_damage.ipynb
- Slides + recoding of jupytercon 2020 talk explaining the high level concepts / vision of ipyannotator. TODO add public link
For clean (re)install make sure to have all the lab extencions active:
jupyter lab clean
to remove the staging and static directories from the lab
ipywidgets:
jupyter labextension install @jupyter-widgets/jupyterlab-manager
ipycanvas:
jupyter labextension install @jupyter-widgets/jupyterlab-manager ipycanvas
ipyevents:
jupyter labextension install @jupyter-widgets/jupyterlab-manager ipyevents
nbdime:
nbdime extensions --enable [--sys-prefix/--user/--system]
viola:
jupyter labextension install @jupyter-voila/jupyterlab-preview
Check out CONTRIBUTING.md
and since ipyannotator is build using nbdev reading
the nbdev tutorial and related docs will be very helpful.
Copyright 2020 onwards, Palaimon GmbH. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project's files except in compliance with the License. A copy of the License is provided in the LICENSE file in this repository.