Cloning

The clone module

bookstore.clone.build_notebook_model(content, path)

Helper that builds a Contents API compatible model for notebooks.

Parameters:
  • content (str) – The content of the model.
  • path (str) – The path to be targeted.
Returns:

Jupyter Contents API compatible model for notebooks

Return type:

dict

bookstore.clone.build_file_model(content, path)

Helper that builds a Contents API compatible model for files.

Parameters:
  • content (str) – The content of the model
  • path (str) – The path to be targeted.
Returns:

Jupyter Contents API compatible model for files

Return type:

dict

bookstore.clone.validate_relpath(relpath, settings, log)

Validates that a relative path appropriately resolves given bookstore settings.

Parameters:
  • relpath (string) – Relative path to a notebook to be cloned.
  • settings (BookstoreSettings) – Bookstore configuration.
  • log (logging.Logger) – Log (usually from the NotebookApp) for logging endpoint changes.
Returns:

Absolute path to file to be cloned.

Return type:

Path

BookstoreCloneHandler

class bookstore.clone.BookstoreCloneHandler(application: tornado.web.Application, request: tornado.httputil.HTTPServerRequest, **kwargs)

Prepares and provides clone options page, populating UI with clone option parameters.

Provides handling for GET requests when cloning a notebook from storage (S3). Launches a user interface with cloning options.

initialize(self)

Helper to access bookstore settings.

get(self)

Checks for valid storage settings and render a UI for clone options.

construct_template_params(self, s3_bucket, s3_object_key, s3_version_id=None)

Helper to populate Jinja template for cloning option page.

get_template(self, name)

Loads a Jinja template and its related settings.

Methods

BookstoreCloneHandler.initialize()

Helper to retrieve bookstore setting for the session.

BookstoreCloneHandler.get()

GET /bookstore/clone?s3_bucket=<your_s3_bucket>&s3_key=<your_s3_key>

Renders an options page that will allow you to clone a notebook from a specific bucket via the Bookstore cloning API.

s3_bucket is the bucket you wish to clone from. s3_key is the object key that you wish to clone.

BookstoreCloneHandler.construct_template_params(s3_bucket, s3_object_key, s3_version_id=None)

Helper that takes valid S3 parameters and populates UI template

Returns:Template parameters in a dictionary
Return type:dict
BookstoreCloneHandler.get_template(name)

Loads a Jinja template by name.

BookstoreCloneAPIHandler

class bookstore.clone.BookstoreCloneAPIHandler(application: tornado.web.Application, request: tornado.httputil.HTTPServerRequest, **kwargs)

Handle notebook clone from storage.

Provides API handling for POST and clones a notebook from storage (S3).

initialize(self)

Helper to access bookstore settings.

post(self)

Clone a notebook from the location specified by the payload.

build_content_model(self, obj, path)

Helper that takes a response from S3 and creates a ContentsAPI compatible model.

build_post_response_model(self, model, obj, s3_bucket, s3_object_key)

Helper that takes a Jupyter Contents API compliant model and adds cloning specific information.

Methods

BookstoreCloneAPIHandler.initialize()

Helper to retrieve bookstore setting for the session.

BookstoreCloneAPIHandler.post()

POST /api/bookstore/clone

Clone a notebook to the path specified in the payload.

The payload type for the request should be:

{
"s3_bucket": string,
"s3_key": string,
"target_path"?: string
"s3_version_id"?: string
}

The response payload should match the standard Jupyter contents API POST response.

BookstoreCloneAPIHandler.build_content_model(content, target_path)

Helper that takes a response from S3 and creates a ContentsAPI compatible model.

If the file at target_path already exists, this increments the file name.

Parameters:
  • content (str) – string encoded file content
  • target_path (str) – The the path we wish to clone to, may be incremented if already present.
Returns:

Jupyter Contents API compatible model

Return type:

dict

BookstoreCloneAPIHandler.build_post_response_model(model, obj, s3_bucket, s3_object_key)

Helper that takes a Jupyter Contents API compliant model and adds cloning specific information.

Parameters:
  • model (dict) – Jupyter Contents API model
  • obj (dict) – Log (usually from the NotebookApp) for logging endpoint changes.
  • s3_bucket (str) – The S3 bucket we are cloning from
  • s3_object_key (str) – The S3 key we are cloning
Returns:

Model with additional info about the S3 cloning

Return type:

dict

BookstoreFSCloneHandler

Methods

BookstoreFSCloneHandler.initialize()

Helper to retrieve bookstore setting for the session.

BookstoreFSCloneHandler.get()

GET /bookstore/fs-clone?relpath=<your_relpath>

Renders an options page that will allow you to clone a notebook from a via the Bookstore file-system cloning API.

relpath is the relative path that you wish to clone from

BookstoreFSCloneHandler.construct_template_params(relpath, fs_clonepath)

Helper that takes a valid relpath and populates UI template

Returns:Template parameters in a dictionary
Return type:dict
BookstoreFSCloneHandler.get_template(name)

Loads a Jinja template by name.

BookstoreFSCloneAPIHandler

class bookstore.clone.BookstoreFSCloneAPIHandler(application: tornado.web.Application, request: tornado.httputil.HTTPServerRequest, **kwargs)

Handle notebook clone from an accessible file system (local or cloud).

Provides API handling for POST and clones a notebook from the specified file system (local or cloud).

initialize(self)

Helper to access bookstore settings.

post(self)

Clone a notebook from the filesystem location specified by the payload.

build_content_model(self, content, path)

Helper for creating a Jupyter ContentsAPI compatible model.

Methods

BookstoreFSCloneAPIHandler.initialize()

Helper to retrieve bookstore setting for the session.

BookstoreFSCloneAPIHandler.post()

POST /api/bookstore/fs-clone

Clone a notebook to the path specified in the payload.

The payload type for the request should be:

{
"relpath": string,
"target_path": string #optional
}

The response payload should match the standard Jupyter contents API POST response.

BookstoreFSCloneAPIHandler.build_content_model(content, target_path)

Helper that takes a content and creates a ContentsAPI compatible model.

If the file at target_path already exists, this increments the file name.

Parameters:
  • content (dict or string) – dict or string encoded file content
  • target_path (str) – The the path we wish to clone to, may be incremented if already present.
Returns:

Jupyter Contents API compatible model

Return type:

dict