jupyter / jupyter/notebook

Allow Multiple ContentsManager

Open
#3,233 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
Jupyter Notebook
Stars
13.3k
Forks
5.8k
Avg merge
6d 11h
Merged PRs (30d)
7

Description

Can we make it possible to allow for multiple content managers in notebook server?

In a complex environment there may be a more than one type of notebook source so it is better to compose them from the right managers. For example, some notebooks may be from disk, others from a database, while others that purely are read only and exist in memory. Which content manager you call should be driven by the path (`/file/full/path/to/file`, `/db/table/entry`).

I was able to write something that works as a POC for this by taking a ContextManager and then dispatching all calls to a list of internally managed ContextMangers. It simply goes in order of those managers and calls an additional function on each, manages_path(path), which returns true if it wants to manage this path. It then passes on the call to this manager and returns its output. This is crude and would be better if there was a fully supported way to make this happen as I imagine there will likely be similar issues with things like the FileCheckpoints etc.

Would this be something this project would be open to taking up?

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the notebook server's ContentsManager entry point and the proposed proof of concept that dispatches requests by path. Determine the supported composition behavior for disk, database, and read-only in-memory sources, including how related FileCheckpoints would be handled; done means the design and affected manager interfaces are clearly defined.

Written by the indexing model from the issue text.

Assessment

Tech stack
jupyter-notebook
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.