https://github.com/nteract/bookstore

πŸ“š Notebook storage and publishing workflows for the masses

https://github.com/nteract/bookstore

Science Score: 10.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • β—‹
    CITATION.cff file
  • β—‹
    codemeta.json file
  • β—‹
    .zenodo.json file
  • β—‹
    DOI references
  • β—‹
    Academic publication links
  • βœ“
    Committers with academic emails
    1 of 5 committers (20.0%) from academic institutions
  • β—‹
    Institutional organization owner
  • β—‹
    JOSS paper metadata
  • β—‹
    Scientific vocabulary similarity
    Low similarity (13.2%) to scientific vocabulary

Keywords

data-science notebook nteract scheduling storage versioned-buckets

Keywords from Contributors

jupyterlab
Last synced: 5 months ago · JSON representation

Repository

πŸ“š Notebook storage and publishing workflows for the masses

Basic Info
Statistics
  • Stars: 201
  • Watchers: 18
  • Forks: 19
  • Open Issues: 35
  • Releases: 0
Topics
data-science notebook nteract scheduling storage versioned-buckets
Created over 7 years ago · Last pushed over 4 years ago
Metadata Files
Readme Changelog Contributing License Code of conduct

README.md

bookstore :books:

Documentation Status Build Status CircleCI Codecov

bookstore :books: provides tooling and workflow recommendations for storing :cd:, scheduling :calendar:, and publishing :book: notebooks.

The full documentation is hosted on ReadTheDocs.

How does bookstore work

Automatic Notebook Versioning

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

To simplify implementation, we currently 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. In addition, 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).

Publishing

The bookstore publishing endpoint is a serverextension to the classic Jupyter server. This means you will need to explicitly enable the serverextension to use the endpoint.

To do so, run:

jupyter serverextension enable --py bookstore

To enable it only for the current environment, run:

jupyter serverextension enable --py bookstore --sys-prefix

Installation

bookstore requires Python 3.6 or higher.

Note: Supports installation on Jupyter servers running Python 3.6 and above. Your notebooks can still be run in Python 2 or Python 3.

  1. Clone this repo.
  2. At the repo's root, enter in the Terminal: python3 -m pip install . (Tip: don't forget the dot at the end of the command)

Configuration

```python

jupyter config

At ~/.jupyter/jupyternotebookconfig.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.contentsmanagerclass = BookstoreContentsArchiver

All Bookstore settings are centralized on one config object so you don't have to configure it for each class

c.BookstoreSettings.workspaceprefix = "/workspace/kylek/notebooks" c.BookstoreSettings.publishedprefix = "/published/kylek/notebooks"

c.BookstoreSettings.s3_bucket = ""

Note: if bookstore is used from an EC2 instance with the right IAM role, you don't

have to specify these

c.BookstoreSettings.s3accesskeyid = c.BookstoreSettings.s3secretaccesskey = ```

Developing

If you are developing on bookstore you will want to run the ci tests locally and to make releases.

Use CONTRIBUTING.md to learn more about contributing. Use runningcilocally.md to learn more about running ci tests locally. Use runningpythontests.md to learn about running tests locally. Use RELEASING.md to learn more about releasing bookstore.

Owner

  • Name: nteract
  • Login: nteract
  • Kind: organization

Interactive computing experiences that allow people to collaborate with ease

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 512
  • Total Committers: 5
  • Avg Commits per committer: 102.4
  • Development Distribution Score (DDS): 0.512
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
M Pacer m****r@b****u 250
Carol Willing c****e@w****m 232
Kyle Kelley r****k@g****m 26
Safia Abdalla s****a@s****s 2
Peter c****o@n****m 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 28
  • Total pull requests: 72
  • Average time to close issues: about 2 months
  • Average time to close pull requests: 4 days
  • Total issue authors: 10
  • Total pull request authors: 4
  • Average comments per issue: 2.21
  • Average comments per pull request: 2.75
  • Merged pull requests: 66
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mpacer (14)
  • willingc (5)
  • groodt (2)
  • mjbeyeler (1)
  • rakeshpatri (1)
  • NeolithEra (1)
  • vlbrown (1)
  • MSeal (1)
  • timkpaine (1)
  • rgbkrk (1)
Pull Request Authors
  • mpacer (36)
  • willingc (20)
  • rgbkrk (13)
  • chyzzqo2 (3)
Top Labels
Issue Labels
enhancement (4) docs (3) question (1) workflow:needs-discussion (1)
Pull Request Labels

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 99 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 4
    (may contain duplicates)
  • Total versions: 21
  • Total maintainers: 4
pypi.org: bookstore

Storage Workflows for Notebooks

  • Versions: 19
  • Dependent Packages: 0
  • Dependent Repositories: 4
  • Downloads: 99 Last month
Rankings
Downloads: 1.3%
Stargazers count: 4.9%
Average: 6.4%
Dependent repos count: 7.5%
Forks count: 8.0%
Dependent packages count: 10.1%
Funding
  • https://nteract.io
Last synced: 6 months ago
conda-forge.org: bookstore

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

  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Stargazers count: 24.6%
Average: 29.2%
Forks count: 33.9%
Last synced: 6 months ago