Skip to main content

Hybrid Content Manager

Project description

HybridContents

The HybridContentManager was originally created by Quantopian as part of pgcontents; however, the usage of HybridContentsManager was restricted to the compatibility requirements of pgcontents. These restrictions included postgres dependencies and no support for the latest notebook version (>6).

At Viaduct we used pgcontents exclusively for the HybridContentsManager and wanted to extend its functionality, so we created this fork hybridcontents.

See related pgcontents issues:

Getting Started

Prerequisites:

Installation:

pip

pip install hybridcontents

Anaconda

conda install -c viaduct hybridcontents

conda-forge

See instructions here

Featues

  • Mix and match different content managers for different directories
  • Easily move files between different content managers (i.e local files to s3 backed manager)
  • Path validation to keep consistent naming scheme and/or prevent illegal characters

Usage

For a detailed example see, hybrid_manager_example.py

The following code snippet creates a HybridContentsManager with two directories with different content managers.

c = get_config()

c.NotebookApp.contents_manager_class = HybridContentsManager

c.HybridContentsManager.manager_classes = {
    "": FileContentsManager,
    "shared": S3ContentsManager
}

# Each item will be passed to the constructor of the appropriate content manager.
c.HybridContentsManager.manager_kwargs = {
    # Args for root FileContentsManager
    "": {
        "root_dir": read_only_dir
    },
    # Args for the shared S3ContentsManager directory
    "shared": {
        "access_key_id": ...,
        "secret_access_key": ...,
        "endpoint_url":  ...,
        "bucket": ...,
        "prefix": ...
    },
}

def only_allow_notebooks(path):
  return path.endswith('.ipynb')

# Only allow notebook files to be stored in S3
c.HybridContentsManager.path_validators = {
    "shared": only_allow_notebooks
}

Testing

To run unit tests,

tox

This will run all unit tests for python versions 2.7, 3.6, 3.7 and jupyter notebook versions 4, 5, and 6.

Publishing a Release

  1. Create a new release on Github
  2. Update the version in setup.py
  3. Run ./scripts/pip_publish.sh
  4. Update the version meta.yaml
  5. Update the sha256 in meta.yaml
  6. Run ./scripts/anaconda_publish.sh
  7. Update on Conda Forge

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

hybridcontents-0.3.0.tar.gz (14.9 kB view details)

Uploaded Source

File details

Details for the file hybridcontents-0.3.0.tar.gz.

File metadata

  • Download URL: hybridcontents-0.3.0.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.6.9

File hashes

Hashes for hybridcontents-0.3.0.tar.gz
Algorithm Hash digest
SHA256 6e1242a65c06174563df948e9e861611f18002e09e9916072d78c8ba0b8d5753
MD5 9d25e5ebb5cf845dfcc265cc4f87e0ee
BLAKE2b-256 0e4ff3a10b1b526e42b705f9b1e91679c3716957f62d1ac9be52b3647f8c857c

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