[WIP] Add support for Jupyter Server

This commit is contained in:
yuvipanda
2019-06-04 13:30:28 +02:00
parent 844817297e
commit 5eb7a14a33
3 changed files with 26 additions and 10 deletions

View File

@@ -61,6 +61,13 @@ script:
make html
popd
fi
- |
if [[ "$TEST" == "jupyter_server" ]]; then
pip uninstall notebook
pip install jupyter_server
export USE_JUPYTER_SERVER=True
pytest -v --maxfail=2 --cov=jupyterhub jupyterhub/tests
fi
after_success:
- codecov
after_failure:

View File

@@ -6,6 +6,7 @@ import asyncio
import json
import os
import random
import importlib
from datetime import datetime
from datetime import timezone
from textwrap import dedent
@@ -20,10 +21,13 @@ from tornado.httpclient import HTTPRequest
from tornado.web import HTTPError
from tornado.web import RequestHandler
use_serverapp = os.environ.get('USE_JUPYTER_SERVER', 'False') == 'True'
required_package = 'jupyter_server' if use_serverapp else 'notebook'
try:
import notebook
parent_module = importlib.import_module(required_package)
except ImportError:
raise ImportError("JupyterHub single-user server requires notebook >= 4.0")
raise ImportError("JupyterHub single-user server requires {}".format(required_package))
from traitlets import (
Any,
@@ -38,14 +42,19 @@ from traitlets import (
TraitError,
)
from notebook.notebookapp import (
NotebookApp,
aliases as notebook_aliases,
flags as notebook_flags,
app_name = 'jupyter_server.serverapp' if use_serverapp else 'notebook.notebookapp'
app_module = importlib.import_module(app_name)
NotebookApp = getattr(app_module, 'ServerApp' if use_serverapp else 'NotebookApp')
notebook_aliases = app_module.aliases
notebook_flags = app_module.flags
LoginHandler = getattr(importlib.import_module(required_package + '.auth.login'), 'LoginHandler')
LogoutHandler = getattr(importlib.import_module(required_package + '.auth.logout'), 'LogoutHandler')
IPythonHandler = getattr(
importlib.import_module(required_package + '.base.handlers'),
'JupyterHandler' if use_serverapp else 'IPythonHandler'
)
from notebook.auth.login import LoginHandler
from notebook.auth.logout import LogoutHandler
from notebook.base.handlers import IPythonHandler
from ._version import __version__, _check_version
from .log import log_request

View File

@@ -931,7 +931,7 @@ class Spawner(LoggingConfigurable):
args.append('--notebook-dir=%s' % _quote_safe(notebook_dir))
if self.default_url:
default_url = self.format_string(self.default_url)
args.append('--NotebookApp.default_url=%s' % _quote_safe(default_url))
args.append('--SingleUserNotebookApp.default_url=%s' % _quote_safe(default_url))
if self.debug:
args.append('--debug')