63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
try:
|
|
from ._version import __version__
|
|
except ImportError:
|
|
# Fallback when using the package in dev mode without installing
|
|
# in editable mode with pip. It is highly recommended to install
|
|
# the package from a stable release or in editable mode: https://pip.pypa.io/en/stable/topics/local-project-install/
|
|
import warnings
|
|
warnings.warn("Importing 'opencode_bridge' outside a proper installation.")
|
|
__version__ = "dev"
|
|
from .config import OpencodeConfig
|
|
from .routes import setup_route_handlers
|
|
|
|
# Re-export OpencodeConfig at module level so the JupyterApp CLI parser
|
|
# (which auto-discovers Configurable subclasses from extension-point
|
|
# modules) recognises ``--OpencodeConfig.<trait>`` flags.
|
|
__all__ = [
|
|
"OpencodeConfig",
|
|
"setup_route_handlers",
|
|
"_jupyter_labextension_paths",
|
|
"_jupyter_server_extension_points",
|
|
"_load_jupyter_server_extension",
|
|
]
|
|
|
|
|
|
def _jupyter_labextension_paths():
|
|
return [{
|
|
"src": "labextension",
|
|
"dest": "opencode_bridge"
|
|
}]
|
|
|
|
|
|
def _jupyter_server_extension_points():
|
|
return [{
|
|
"module": "opencode_bridge"
|
|
}]
|
|
|
|
|
|
def _load_jupyter_server_extension(server_app):
|
|
"""Registers the API handler to receive HTTP requests from the frontend extension.
|
|
|
|
Also instantiates the :class:`OpencodeConfig` configurable (with the
|
|
server app as parent so CLI / config-file overrides take effect) and
|
|
exposes it to request handlers via
|
|
``web_app.settings["opencode_bridge"]``.
|
|
|
|
Parameters
|
|
----------
|
|
server_app: jupyterlab.labapp.LabApp
|
|
JupyterLab application instance
|
|
"""
|
|
# Belt-and-suspenders: ensure the CLI parser recognises --OpencodeConfig.*
|
|
# even on JupyterApp versions that don't auto-discover Configurable
|
|
# subclasses from extension-point modules.
|
|
if OpencodeConfig not in server_app.classes:
|
|
server_app.classes.append(OpencodeConfig)
|
|
|
|
cfg = OpencodeConfig(parent=server_app)
|
|
server_app.web_app.settings["opencode_bridge"] = cfg
|
|
|
|
setup_route_handlers(server_app.web_app)
|
|
name = "opencode_bridge"
|
|
server_app.log.info(f"Registered {name} server extension")
|