[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 make html
popd popd
fi 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: after_success:
- codecov - codecov
after_failure: after_failure:

View File

@@ -6,6 +6,7 @@ import asyncio
import json import json
import os import os
import random import random
import importlib
from datetime import datetime from datetime import datetime
from datetime import timezone from datetime import timezone
from textwrap import dedent from textwrap import dedent
@@ -20,10 +21,13 @@ from tornado.httpclient import HTTPRequest
from tornado.web import HTTPError from tornado.web import HTTPError
from tornado.web import RequestHandler 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: try:
import notebook parent_module = importlib.import_module(required_package)
except ImportError: 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 ( from traitlets import (
Any, Any,
@@ -38,14 +42,19 @@ from traitlets import (
TraitError, TraitError,
) )
from notebook.notebookapp import ( app_name = 'jupyter_server.serverapp' if use_serverapp else 'notebook.notebookapp'
NotebookApp, app_module = importlib.import_module(app_name)
aliases as notebook_aliases,
flags as notebook_flags, 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 ._version import __version__, _check_version
from .log import log_request from .log import log_request

View File

@@ -931,7 +931,7 @@ class Spawner(LoggingConfigurable):
args.append('--notebook-dir=%s' % _quote_safe(notebook_dir)) args.append('--notebook-dir=%s' % _quote_safe(notebook_dir))
if self.default_url: if self.default_url:
default_url = self.format_string(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: if self.debug:
args.append('--debug') args.append('--debug')