Source code for jupyterlab_pioneer.application

"""This module defines the extension app name, reads configurable variables from the configuration file, and adds the extra request handlers from :mod:`.handlers` module to Jupyter Server's Tornado Web Application.
"""

from traitlets import List, Dict
from jupyter_server.extension.application import ExtensionApp
from .handlers import RouteHandler

[docs] class JupyterLabPioneerApp(ExtensionApp): name = "jupyterlab_pioneer" """Extension app name""" activeEvents = List([]).tag(config=True) """An array of active events defined in the configuration file. Global config, could be override by `activeEvents` defined inside of individual exporter configs. The extension would only generate and export data for valid events ( 1. that have an id associated with the event class, 2. the event name is included in `activeEvents` ). The extension will export the entire notebook content only for valid events when the `logWholeNotebook` flag is `True`. The extension will export the cell metadata only for cell related valid events when the `logCellMetadata` flag is `True`. Examples: :: # in the configuration file c.JupyterLabPioneerApp.activeEvents = [ {"name": "ActiveCellChangeEvent", "logWholeNotebook": False}, {"name": "CellAddEvent", "logWholeNotebook": False}, # {"name": "CellEditEvent", "logWholeNotebook": False}, {"name": "CellExecuteEvent", "logWholeNotebook": False}, {"name": "CellRemoveEvent", "logWholeNotebook": False}, # {"name": "ClipboardCopyEvent", "logWholeNotebook": False}, # {"name": "ClipboardCutEvent", "logWholeNotebook": False}, # {"name": "ClipboardPasteEvent", "logWholeNotebook": False}, # {"name": "NotebookHiddenEvent", "logWholeNotebook": False}, # {"name": "NotebookOpenEvent", "logWholeNotebook": False}, # {"name": "NotebookSaveEvent", "logWholeNotebook": False}, # {"name": "NotebookScrollEvent", "logWholeNotebook": False}, # {"name": "NotebookVisibleEvent", "logWholeNotebook": False}, ] """ exporters = List([]).tag(config=True) """ An array of the exporters defined in the configuration file. This extension provides 5 default exporters in the :mod:`.default_exporters` module: :func:`.default_exporters.console_exporter`, which sends telemetry data to the browser console. :func:`.default_exporters.command_line_exporter`, which sends telemetry data to the python console jupyter is running on. :func:`.default_exporters.file_exporter`, which saves telemetry data to local file. :func:`.default_exporters.remote_exporter`, which sends telemetry data to a remote http endpoint. :func:`.default_exporters.opentelemetry_exporter`, which sends telemetry data via otlp. Additionally, users can import default exporters or write customized exporters in the configuration file. Examples: :: # in the configuration file c.JupyterLabPioneerApp.exporters = [ { "type": "console_exporter", }, { "type": "command_line_exporter", }, ] """ custom_exporter = Dict({}).tag(config=True) """A dictionary of custom exporter defined in the configuration file Examples: :: # in the configuration file def my_custom_exporter(args): # write your own exporter logic here return { "exporter": args.get("id"), "message": "" } c.JupyterLabPioneerApp.exporters = [ { "type": "custom_exporter", "args": { "id": "MyCustomExporter" # add additional args for your exporter function here }, } ] c.JupyterLabPioneerApp.custom_exporter = { 'MyCustomExporter': my_custom_exporter, } """
[docs] def initialize_handlers(self): """This function adds the extra request handlers from :mod:`.handlers` module to Jupyter Server's Tornado Web Application. """ try: self.handlers.extend([(r"/jupyterlab-pioneer/(.*)", RouteHandler)]) except Exception as e: self.log.error(str(e)) raise e