Skip to main content

Storage Workflows for Notebooks

Project description

bookstore

Documentation Status

This repository provides tooling and workflow recommendations for storing, scheduling, and publishing notebooks.

Automatic Notebook Versioning

Every save of a notebook creates an immutable copy of the notebook on object storage.

To ease implementation, we'll rely on S3 as the object store, using versioned buckets.

Storage Paths

All notebooks are archived to a single versioned S3 bucket with specific prefixes denoting the lifecycle of the notebook:

  • /workspace - where users edit
  • /published - public notebooks (to an organization)

Each notebook path is a namespace that an external service ties into the schedule. We archive off versions, keeping the path intact (until a user changes them).

Prefix Intent
/workspace/kylek/notebooks/mine.ipynb Notebook in “draft”
/published/kylek/notebooks/mine.ipynb Current published copy

Scheduled notebooks will also be referred to by the notebook key, though we'll need to be able to surface version Ids as well.

Transitioning to this Storage Plan

Since most people are on a regular filesystem, we'll start with writing to the /workspace prefix as Archival Storage (writing on save using a post_save_hook for a Jupyter contents manager).

Configuration

# jupyter config
# At ~/.jupyter/jupyter_notebook_config.py for user installs on macOS
# See https://jupyter.readthedocs.io/en/latest/projects/jupyter-directories.html for other places to plop this

from bookstore import BookstoreContentsArchiver

c.NotebookApp.contents_manager_class = BookstoreContentsArchiver

c.BookstoreSettings.workspace_prefix = "/workspace/kylek/notebooks"
c.BookstoreSettings.published_prefix = "/published/kylek/notebooks"

# Optional, in case you're using a different contents manager
# This defaults to notebook.services.contents.manager.ContentsManager

c.BookstoreSettings.s3_bucket = "<bucket-name>"

# Note: if bookstore is used from an EC2 instance with the right IAM role, you don't
# have to specify these
c.BookstoreSettings.s3_access_key_id = <AWS Access Key ID / IAM Access Key ID>
c.BookstoreSettings.s3_secret_access_key = <AWS Secret Access Key / IAM Secret Access Key>

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

bookstore-2.0.0.tar.gz (94.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bookstore-2.0.0-py2.py3-none-any.whl (6.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file bookstore-2.0.0.tar.gz.

File metadata

  • Download URL: bookstore-2.0.0.tar.gz
  • Upload date:
  • Size: 94.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.9 CPython/2.7.15

File hashes

Hashes for bookstore-2.0.0.tar.gz
Algorithm Hash digest
SHA256 4770f107dc6c480391741ccac627d26937e815796ce95b55d86a77365f5b743d
MD5 f68259a36c7fdca78dd81e49b181a740
BLAKE2b-256 cfa52265d169be1cc3d547db7f853f66d3cd240bdd05a024b1de87a5159ee823

See more details on using hashes here.

File details

Details for the file bookstore-2.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: bookstore-2.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.19.9 CPython/2.7.15

File hashes

Hashes for bookstore-2.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ca458f9134454714862f3faa415bb79dda10a37b5851476420f43b723d0649f5
MD5 ed27cc2345a2f53457c26fb90b732913
BLAKE2b-256 3b92ef36d404b65f2eb4dda84ecbeefed7f7fcc0c1712628164d4ac99ba54372

See more details on using hashes here.

Supported by

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