From a6e3896c972b99816d269c8c4f2ab066bfbc13cb Mon Sep 17 00:00:00 2001 From: Duarte OC Date: Wed, 5 Jun 2019 14:40:04 +0200 Subject: [PATCH 01/38] Clarifies exporting, and adds clarification on reveal.js slides workflow. Closes #5018 --- docs/source/index.rst | 1 + docs/source/user/export.rst | 48 ++++++++++++++++++ docs/source/user/images/exporting_menu.png | Bin 0 -> 293716 bytes .../user/images/exporting_slide_type.png | Bin 0 -> 206131 bytes 4 files changed, 49 insertions(+) create mode 100644 docs/source/user/export.rst create mode 100644 docs/source/user/images/exporting_menu.png create mode 100644 docs/source/user/images/exporting_slide_type.png diff --git a/docs/source/index.rst b/docs/source/index.rst index 9683809f890d..5136457cb25d 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -41,6 +41,7 @@ JupyterLab is the next-generation web-based user interface for Project Jupyter. user/file_formats user/extensions user/jupyterhub + user/export .. toctree:: diff --git a/docs/source/user/export.rst b/docs/source/user/export.rst new file mode 100644 index 000000000000..77f1bd2cb08b --- /dev/null +++ b/docs/source/user/export.rst @@ -0,0 +1,48 @@ +.. _user_export: + +Exporting Notebooks +------------------- + +JupyterLab allows you to export your jupyter notebook files (``.ipynb``) +into other file formats such as: + +- Asciidoc ``.asciidoc`` +- HTML ``.html`` +- Latex ``.tex`` +- Markdown ``.md`` +- PDF ``.pdf`` +- ReStructured Text ``.rst`` +- Executable Script ``.py`` +- Reveal.js Slides ``.html`` + +To access these options, while a notebook is open, browse the File menu: + +.. image:: images/exporting_menu.png + :align: center + :class: jp-screenshot + +.. _user_export_revealjs: + +Reveal.js Slides +~~~~~~~~~~~~~~~~ +In order to export your notebooks as `Reveal.js `__ +slides, follow these steps: + +1. Open a notebook by double clicking it in the + :ref:`file browser `. +2. Select Cell tools in the :ref:`left sidebar `. +3. Select the slide type (Slide, Subslide, Fragment, Skip, Notes). + +.. image:: images/exporting_slide_type.png + :align: center + :class: jp-screenshot + +4. Activate another cell. +5. Repeat 3 and 4 until you selected the slide type for all of your cells. + +After completing these steps, browse the file menu and export as described in +the :ref:`exporting notebooks ` section. A ``.html`` file that +you will be prompted to download. + +If you don't know how to navigate and interact with a Reveal.js presentation, +visit the project's `website `__. diff --git a/docs/source/user/images/exporting_menu.png b/docs/source/user/images/exporting_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..2e95aae1fc75071c0c07f37e9a40db6b9739ba90 GIT binary patch literal 293716 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

KUY}y9xF{ZIt0`M>7J_ZPs=}zY-w}2 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 z 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

ET)B-HCC=dt%a+vH=D1B6aAJH5l2j5 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 Date: Sat, 1 Jun 2019 04:30:28 -0500 Subject: [PATCH 02/38] wip hub integration --- jupyterlab/extension.py | 8 +++ jupyterlab/labhubapp.py | 18 +----- packages/hub-extension/README.md | 7 +++ packages/hub-extension/package.json | 38 ++++++++++++ packages/hub-extension/src/index.ts | 89 ++++++++++++++++++++++++++++ packages/hub-extension/tsconfig.json | 8 +++ packages/metapackage/package.json | 77 ++++++++++++++++++++++++ packages/metapackage/tsconfig.json | 3 + 8 files changed, 233 insertions(+), 15 deletions(-) create mode 100644 packages/hub-extension/README.md create mode 100644 packages/hub-extension/package.json create mode 100644 packages/hub-extension/src/index.ts create mode 100644 packages/hub-extension/tsconfig.json diff --git a/jupyterlab/extension.py b/jupyterlab/extension.py index 6044127f84d5..3cba00b3c9f9 100644 --- a/jupyterlab/extension.py +++ b/jupyterlab/extension.py @@ -204,6 +204,14 @@ def load_jupyter_server_extension(nbapp): # Must add before the root server handlers to avoid shadowing. web_app.add_handlers('.*$', handlers) + # If running under JupyterHub, add more metadata. + if hasattr(nbapp, 'hub_prefix'): + settings['page_config_data']['hub_prefix'] = nbapp.hub_prefix + settings['page_config_data']['hub_host'] = nbapp.hub_host + settings['page_config_data']['hub_user'] = nbapp.user + api_token = os.getenv('JUPYTERHUB_API_TOKEN', '') + settings['page_config_data']['token'] = api_token + # Add the root handlers if we have not errored. if not errored: add_handlers(web_app, config) diff --git a/jupyterlab/labhubapp.py b/jupyterlab/labhubapp.py index 7c039d1ced28..4aa6b892114f 100644 --- a/jupyterlab/labhubapp.py +++ b/jupyterlab/labhubapp.py @@ -18,22 +18,10 @@ def _default_url(self): return "/lab" def init_webapp(self, *args, **kwargs): + warnings.warn( + "SingleUserLabApp is deprecated, use SingleUserNotebookApp and set " + "c.Spawner.default_url = '/lab' in jupyterhub_config.py", DeprecationWarning + ) super().init_webapp(*args, **kwargs) - settings = self.web_app.settings - if 'page_config_data' not in settings: - settings['page_config_data'] = {} - settings['page_config_data']['hub_prefix'] = self.hub_prefix - settings['page_config_data']['hub_host'] = self.hub_host - settings['page_config_data']['hub_user'] = self.user - api_token = os.getenv('JUPYTERHUB_API_TOKEN') - if not api_token: - api_token = '' - if not self.token: - try: - self.token = api_token - except AttributeError: - self.log.error("Can't set self.token") - settings['page_config_data']['token'] = api_token def main(argv=None): diff --git a/packages/hub-extension/README.md b/packages/hub-extension/README.md new file mode 100644 index 000000000000..ccfef2468120 --- /dev/null +++ b/packages/hub-extension/README.md @@ -0,0 +1,7 @@ +# @jupyterlab/hub-extension + +JupyterLab](https://github.com/jupyterlab/jupyterlab) integration for +[JupyterHub](https://github.com/jupyterhub/jupyterhub). + +This adds a "Hub" menu to JupyterLab that allows a user to log out of JupyterHub +or access their JupyterHub control panel. diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json new file mode 100644 index 000000000000..fbd56872cb6f --- /dev/null +++ b/packages/hub-extension/package.json @@ -0,0 +1,38 @@ +{ + "name": "@jupyterlab/hub-extension", + "version": "1.0.0-alpha.8", + "description": "JupyterLab integration for JupyterHub", + "homepage": "https://github.com/jupyterlab/jupyterlab", + "bugs": { + "url": "https://github.com/jupyterlab/jupyterlab/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/jupyterlab/jupyterlab.git" + }, + "license": "BSD-3-Clause", + "author": "Project Jupyter", + "files": [ + "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", + "schema/*.json", + "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}" + ], + "main": "lib/index.js", + "types": "lib/index.d.ts", + "directories": { + "lib": "lib/" + }, + "scripts": { + "build": "tsc", + "clean": "rimraf lib", + "prepublishOnly": "npm run build", + "watch": "tsc -w --listEmittedFiles" + }, + "devDependencies": { + "rimraf": "~2.6.2", + "typescript": "~3.5.1" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/hub-extension/src/index.ts b/packages/hub-extension/src/index.ts new file mode 100644 index 000000000000..67358160dab3 --- /dev/null +++ b/packages/hub-extension/src/index.ts @@ -0,0 +1,89 @@ +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +import { Menu } from '@phosphor/widgets'; + +import { ICommandPalette } from '@jupyterlab/apputils'; + +import { + JupyterFrontEnd, + JupyterFrontEndPlugin +} from '@jupyterlab/application'; + +import { PageConfig, URLExt } from '@jupyterlab/coreutils'; + +import { IMainMenu } from '@jupyterlab/mainmenu'; + +/** + * The command IDs used by the plugin. + */ +export namespace CommandIDs { + export const controlPanel: string = 'hub:control-panel'; + + export const logout: string = 'hub:logout'; +} + +/** + * Activate the jupyterhub extension. + */ +function activateHubExtension( + app: JupyterFrontEnd, + palette: ICommandPalette, + mainMenu: IMainMenu +): void { + const hubHost = PageConfig.getOption('hub_host'); + const hubPrefix = PageConfig.getOption('hub_prefix'); + const baseUrl = PageConfig.getBaseUrl(); + + // Bail if not running on JupyterHub. + if (!hubPrefix) { + return; + } + + console.log('hub-extension: Found configuration ', { + hubHost: hubHost, + hubPrefix: hubPrefix + }); + + const category = 'Hub'; + const { commands } = app; + + commands.addCommand(CommandIDs.controlPanel, { + label: 'Control Panel', + caption: 'Open the Hub control panel in a new browser tab', + execute: () => { + window.open(hubHost + URLExt.join(hubPrefix, 'home'), '_blank'); + } + }); + + commands.addCommand(CommandIDs.logout, { + label: 'Logout', + caption: 'Log out of the Hub', + execute: () => { + window.location.href = hubHost + URLExt.join(baseUrl, 'logout'); + } + }); + + // Add commands and menu itmes. + let menu = new Menu({ commands }); + menu.title.label = category; + [CommandIDs.controlPanel, CommandIDs.logout].forEach(command => { + palette.addItem({ command, category }); + menu.addItem({ command }); + }); + mainMenu.addMenu(menu, { rank: 100 }); +} + +/** + * Initialization data for the hub-extension. + */ +const hubExtension: JupyterFrontEndPlugin = { + activate: activateHubExtension, + id: 'jupyter.extensions.hub-extension', + requires: [ICommandPalette, IMainMenu], + autoStart: true +}; + +export default hubExtension; diff --git a/packages/hub-extension/tsconfig.json b/packages/hub-extension/tsconfig.json new file mode 100644 index 000000000000..a1e4ba13c4bc --- /dev/null +++ b/packages/hub-extension/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfigbase", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "include": ["src/*"] +} diff --git a/packages/metapackage/package.json b/packages/metapackage/package.json index 35648eea1cf1..ae445355d679 100644 --- a/packages/metapackage/package.json +++ b/packages/metapackage/package.json @@ -30,6 +30,7 @@ "watch": "tsc -b --watch" }, "dependencies": { +<<<<<<< HEAD "@jupyterlab/application": "^1.0.0-alpha.9", "@jupyterlab/application-extension": "^1.0.0-alpha.9", "@jupyterlab/apputils": "^1.0.0-alpha.9", @@ -103,6 +104,82 @@ "@jupyterlab/vdom": "^1.0.0-alpha.9", "@jupyterlab/vdom-extension": "^1.0.0-alpha.9", "@jupyterlab/vega5-extension": "^1.0.0-alpha.9" +======= + "@jupyterlab/application": "^1.0.0-alpha.8", + "@jupyterlab/application-extension": "^1.0.0-alpha.8", + "@jupyterlab/apputils": "^1.0.0-alpha.8", + "@jupyterlab/apputils-extension": "^1.0.0-alpha.8", + "@jupyterlab/attachments": "^1.0.0-alpha.8", + "@jupyterlab/cells": "^1.0.0-alpha.9", + "@jupyterlab/codeeditor": "^1.0.0-alpha.8", + "@jupyterlab/codemirror": "^1.0.0-alpha.8", + "@jupyterlab/codemirror-extension": "^1.0.0-alpha.8", + "@jupyterlab/completer": "^1.0.0-alpha.8", + "@jupyterlab/completer-extension": "^1.0.0-alpha.8", + "@jupyterlab/console": "^1.0.0-alpha.8", + "@jupyterlab/console-extension": "^1.0.0-alpha.8", + "@jupyterlab/coreutils": "^3.0.0-alpha.8", + "@jupyterlab/csvviewer": "^1.0.0-alpha.8", + "@jupyterlab/csvviewer-extension": "^1.0.0-alpha.9", + "@jupyterlab/docmanager": "^1.0.0-alpha.8", + "@jupyterlab/docmanager-extension": "^1.0.0-alpha.8", + "@jupyterlab/docregistry": "^1.0.0-alpha.8", + "@jupyterlab/documentsearch": "^1.0.0-alpha.9", + "@jupyterlab/documentsearch-extension": "^1.0.0-alpha.10", + "@jupyterlab/extensionmanager": "^1.0.0-alpha.8", + "@jupyterlab/extensionmanager-extension": "^1.0.0-alpha.8", + "@jupyterlab/faq-extension": "^1.0.0-alpha.8", + "@jupyterlab/filebrowser": "^1.0.0-alpha.8", + "@jupyterlab/filebrowser-extension": "^1.0.0-alpha.8", + "@jupyterlab/fileeditor": "^1.0.0-alpha.8", + "@jupyterlab/fileeditor-extension": "^1.0.0-alpha.8", + "@jupyterlab/help-extension": "^1.0.0-alpha.8", + "@jupyterlab/htmlviewer": "^1.0.0-alpha.9", + "@jupyterlab/htmlviewer-extension": "^1.0.0-alpha.9", + "@jupyterlab/hub-extension": "^1.0.0-alpha.8", + "@jupyterlab/imageviewer": "^1.0.0-alpha.8", + "@jupyterlab/imageviewer-extension": "^1.0.0-alpha.8", + "@jupyterlab/inspector": "^1.0.0-alpha.8", + "@jupyterlab/inspector-extension": "^1.0.0-alpha.8", + "@jupyterlab/javascript-extension": "^1.0.0-alpha.8", + "@jupyterlab/json-extension": "^1.0.0-alpha.8", + "@jupyterlab/launcher": "^1.0.0-alpha.8", + "@jupyterlab/launcher-extension": "^1.0.0-alpha.8", + "@jupyterlab/mainmenu": "^1.0.0-alpha.8", + "@jupyterlab/mainmenu-extension": "^1.0.0-alpha.8", + "@jupyterlab/markdownviewer": "^1.0.0-alpha.8", + "@jupyterlab/markdownviewer-extension": "^1.0.0-alpha.8", + "@jupyterlab/mathjax2": "^1.0.0-alpha.8", + "@jupyterlab/mathjax2-extension": "^1.0.0-alpha.8", + "@jupyterlab/nbconvert-css": "^0.1.1-alpha.1", + "@jupyterlab/notebook": "^1.0.0-alpha.9", + "@jupyterlab/notebook-extension": "^1.0.0-alpha.8", + "@jupyterlab/observables": "^2.2.0-alpha.8", + "@jupyterlab/outputarea": "^1.0.0-alpha.8", + "@jupyterlab/pdf-extension": "^1.0.0-alpha.8", + "@jupyterlab/rendermime": "^1.0.0-alpha.8", + "@jupyterlab/rendermime-extension": "^1.0.0-alpha.8", + "@jupyterlab/rendermime-interfaces": "^1.3.0-alpha.8", + "@jupyterlab/running": "^1.0.0-alpha.8", + "@jupyterlab/running-extension": "^1.0.0-alpha.8", + "@jupyterlab/services": "^4.0.0-alpha.8", + "@jupyterlab/settingeditor": "^1.0.0-alpha.8", + "@jupyterlab/settingeditor-extension": "^1.0.0-alpha.8", + "@jupyterlab/shortcuts-extension": "^1.0.0-alpha.8", + "@jupyterlab/statusbar": "^1.0.0-alpha.8", + "@jupyterlab/statusbar-extension": "^1.0.0-alpha.8", + "@jupyterlab/tabmanager-extension": "^1.0.0-alpha.8", + "@jupyterlab/terminal": "^1.0.0-alpha.8", + "@jupyterlab/terminal-extension": "^1.0.0-alpha.8", + "@jupyterlab/theme-dark-extension": "^1.0.0-alpha.9", + "@jupyterlab/theme-light-extension": "^1.0.0-alpha.9", + "@jupyterlab/tooltip": "^1.0.0-alpha.8", + "@jupyterlab/tooltip-extension": "^1.0.0-alpha.8", + "@jupyterlab/ui-components": "^1.0.0-alpha.8", + "@jupyterlab/vdom": "^1.0.0-alpha.8", + "@jupyterlab/vdom-extension": "^1.0.0-alpha.8", + "@jupyterlab/vega5-extension": "^1.0.0-alpha.8" +>>>>>>> 107ef3b30... wip hub integration }, "devDependencies": { "fs-extra": "^8.0.1", diff --git a/packages/metapackage/tsconfig.json b/packages/metapackage/tsconfig.json index d5c6ed4b3cbb..fe8d0e17a6fc 100644 --- a/packages/metapackage/tsconfig.json +++ b/packages/metapackage/tsconfig.json @@ -99,6 +99,9 @@ { "path": "../htmlviewer-extension" }, + { + "path": "../hub-extension" + }, { "path": "../imageviewer" }, From 09782b7d77196229d4addab5b0917cb2f1c8550b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 1 Jun 2019 04:38:50 -0500 Subject: [PATCH 03/38] integrity --- packages/hub-extension/package.json | 7 +++++++ packages/hub-extension/tsconfig.json | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json index fbd56872cb6f..7f70b4a860a4 100644 --- a/packages/hub-extension/package.json +++ b/packages/hub-extension/package.json @@ -28,6 +28,13 @@ "prepublishOnly": "npm run build", "watch": "tsc -w --listEmittedFiles" }, + "dependencies": { + "@jupyterlab/application": "^1.0.0-alpha.8", + "@jupyterlab/apputils": "^1.0.0-alpha.8", + "@jupyterlab/coreutils": "^3.0.0-alpha.8", + "@jupyterlab/mainmenu": "^1.0.0-alpha.8", + "@phosphor/widgets": "^1.6.0" + }, "devDependencies": { "rimraf": "~2.6.2", "typescript": "~3.5.1" diff --git a/packages/hub-extension/tsconfig.json b/packages/hub-extension/tsconfig.json index a1e4ba13c4bc..17ecbea70fb2 100644 --- a/packages/hub-extension/tsconfig.json +++ b/packages/hub-extension/tsconfig.json @@ -4,5 +4,19 @@ "outDir": "lib", "rootDir": "src" }, - "include": ["src/*"] + "include": ["src/*"], + "references": [ + { + "path": "../application" + }, + { + "path": "../apputils" + }, + { + "path": "../coreutils" + }, + { + "path": "../mainmenu" + } + ] } From 2ed5f9a6addce767ed34eaea649119030bf7cc89 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 3 Jun 2019 10:53:36 -0500 Subject: [PATCH 04/38] integry --- packages/hub-extension/package.json | 10 +++++----- packages/metapackage/package.json | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json index 7f70b4a860a4..28bba4fe9731 100644 --- a/packages/hub-extension/package.json +++ b/packages/hub-extension/package.json @@ -29,11 +29,11 @@ "watch": "tsc -w --listEmittedFiles" }, "dependencies": { - "@jupyterlab/application": "^1.0.0-alpha.8", - "@jupyterlab/apputils": "^1.0.0-alpha.8", - "@jupyterlab/coreutils": "^3.0.0-alpha.8", - "@jupyterlab/mainmenu": "^1.0.0-alpha.8", - "@phosphor/widgets": "^1.6.0" + "@jupyterlab/application": "^1.0.0-alpha.9", + "@jupyterlab/apputils": "^1.0.0-alpha.9", + "@jupyterlab/coreutils": "^3.0.0-alpha.9", + "@jupyterlab/mainmenu": "^1.0.0-alpha.9", + "@phosphor/widgets": "^1.7.0" }, "devDependencies": { "rimraf": "~2.6.2", diff --git a/packages/metapackage/package.json b/packages/metapackage/package.json index ae445355d679..da65f5c01863 100644 --- a/packages/metapackage/package.json +++ b/packages/metapackage/package.json @@ -62,6 +62,7 @@ "@jupyterlab/help-extension": "^1.0.0-alpha.9", "@jupyterlab/htmlviewer": "^1.0.0-alpha.10", "@jupyterlab/htmlviewer-extension": "^1.0.0-alpha.10", + "@jupyterlab/hub-extension": "^1.0.0-alpha.8", "@jupyterlab/imageviewer": "^1.0.0-alpha.9", "@jupyterlab/imageviewer-extension": "^1.0.0-alpha.9", "@jupyterlab/inspector": "^1.0.0-alpha.9", From 2f0d850f7ec1dcc47744c72af08fe1472224e236 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 3 Jun 2019 10:55:00 -0500 Subject: [PATCH 05/38] integrity --- packages/metapackage/package.json | 77 ------------------------------- 1 file changed, 77 deletions(-) diff --git a/packages/metapackage/package.json b/packages/metapackage/package.json index da65f5c01863..7a2b2e1dda97 100644 --- a/packages/metapackage/package.json +++ b/packages/metapackage/package.json @@ -30,7 +30,6 @@ "watch": "tsc -b --watch" }, "dependencies": { -<<<<<<< HEAD "@jupyterlab/application": "^1.0.0-alpha.9", "@jupyterlab/application-extension": "^1.0.0-alpha.9", "@jupyterlab/apputils": "^1.0.0-alpha.9", @@ -105,82 +104,6 @@ "@jupyterlab/vdom": "^1.0.0-alpha.9", "@jupyterlab/vdom-extension": "^1.0.0-alpha.9", "@jupyterlab/vega5-extension": "^1.0.0-alpha.9" -======= - "@jupyterlab/application": "^1.0.0-alpha.8", - "@jupyterlab/application-extension": "^1.0.0-alpha.8", - "@jupyterlab/apputils": "^1.0.0-alpha.8", - "@jupyterlab/apputils-extension": "^1.0.0-alpha.8", - "@jupyterlab/attachments": "^1.0.0-alpha.8", - "@jupyterlab/cells": "^1.0.0-alpha.9", - "@jupyterlab/codeeditor": "^1.0.0-alpha.8", - "@jupyterlab/codemirror": "^1.0.0-alpha.8", - "@jupyterlab/codemirror-extension": "^1.0.0-alpha.8", - "@jupyterlab/completer": "^1.0.0-alpha.8", - "@jupyterlab/completer-extension": "^1.0.0-alpha.8", - "@jupyterlab/console": "^1.0.0-alpha.8", - "@jupyterlab/console-extension": "^1.0.0-alpha.8", - "@jupyterlab/coreutils": "^3.0.0-alpha.8", - "@jupyterlab/csvviewer": "^1.0.0-alpha.8", - "@jupyterlab/csvviewer-extension": "^1.0.0-alpha.9", - "@jupyterlab/docmanager": "^1.0.0-alpha.8", - "@jupyterlab/docmanager-extension": "^1.0.0-alpha.8", - "@jupyterlab/docregistry": "^1.0.0-alpha.8", - "@jupyterlab/documentsearch": "^1.0.0-alpha.9", - "@jupyterlab/documentsearch-extension": "^1.0.0-alpha.10", - "@jupyterlab/extensionmanager": "^1.0.0-alpha.8", - "@jupyterlab/extensionmanager-extension": "^1.0.0-alpha.8", - "@jupyterlab/faq-extension": "^1.0.0-alpha.8", - "@jupyterlab/filebrowser": "^1.0.0-alpha.8", - "@jupyterlab/filebrowser-extension": "^1.0.0-alpha.8", - "@jupyterlab/fileeditor": "^1.0.0-alpha.8", - "@jupyterlab/fileeditor-extension": "^1.0.0-alpha.8", - "@jupyterlab/help-extension": "^1.0.0-alpha.8", - "@jupyterlab/htmlviewer": "^1.0.0-alpha.9", - "@jupyterlab/htmlviewer-extension": "^1.0.0-alpha.9", - "@jupyterlab/hub-extension": "^1.0.0-alpha.8", - "@jupyterlab/imageviewer": "^1.0.0-alpha.8", - "@jupyterlab/imageviewer-extension": "^1.0.0-alpha.8", - "@jupyterlab/inspector": "^1.0.0-alpha.8", - "@jupyterlab/inspector-extension": "^1.0.0-alpha.8", - "@jupyterlab/javascript-extension": "^1.0.0-alpha.8", - "@jupyterlab/json-extension": "^1.0.0-alpha.8", - "@jupyterlab/launcher": "^1.0.0-alpha.8", - "@jupyterlab/launcher-extension": "^1.0.0-alpha.8", - "@jupyterlab/mainmenu": "^1.0.0-alpha.8", - "@jupyterlab/mainmenu-extension": "^1.0.0-alpha.8", - "@jupyterlab/markdownviewer": "^1.0.0-alpha.8", - "@jupyterlab/markdownviewer-extension": "^1.0.0-alpha.8", - "@jupyterlab/mathjax2": "^1.0.0-alpha.8", - "@jupyterlab/mathjax2-extension": "^1.0.0-alpha.8", - "@jupyterlab/nbconvert-css": "^0.1.1-alpha.1", - "@jupyterlab/notebook": "^1.0.0-alpha.9", - "@jupyterlab/notebook-extension": "^1.0.0-alpha.8", - "@jupyterlab/observables": "^2.2.0-alpha.8", - "@jupyterlab/outputarea": "^1.0.0-alpha.8", - "@jupyterlab/pdf-extension": "^1.0.0-alpha.8", - "@jupyterlab/rendermime": "^1.0.0-alpha.8", - "@jupyterlab/rendermime-extension": "^1.0.0-alpha.8", - "@jupyterlab/rendermime-interfaces": "^1.3.0-alpha.8", - "@jupyterlab/running": "^1.0.0-alpha.8", - "@jupyterlab/running-extension": "^1.0.0-alpha.8", - "@jupyterlab/services": "^4.0.0-alpha.8", - "@jupyterlab/settingeditor": "^1.0.0-alpha.8", - "@jupyterlab/settingeditor-extension": "^1.0.0-alpha.8", - "@jupyterlab/shortcuts-extension": "^1.0.0-alpha.8", - "@jupyterlab/statusbar": "^1.0.0-alpha.8", - "@jupyterlab/statusbar-extension": "^1.0.0-alpha.8", - "@jupyterlab/tabmanager-extension": "^1.0.0-alpha.8", - "@jupyterlab/terminal": "^1.0.0-alpha.8", - "@jupyterlab/terminal-extension": "^1.0.0-alpha.8", - "@jupyterlab/theme-dark-extension": "^1.0.0-alpha.9", - "@jupyterlab/theme-light-extension": "^1.0.0-alpha.9", - "@jupyterlab/tooltip": "^1.0.0-alpha.8", - "@jupyterlab/tooltip-extension": "^1.0.0-alpha.8", - "@jupyterlab/ui-components": "^1.0.0-alpha.8", - "@jupyterlab/vdom": "^1.0.0-alpha.8", - "@jupyterlab/vdom-extension": "^1.0.0-alpha.8", - "@jupyterlab/vega5-extension": "^1.0.0-alpha.8" ->>>>>>> 107ef3b30... wip hub integration }, "devDependencies": { "fs-extra": "^8.0.1", From 0f74dcb70cdeb47283e287472608006111ff5e6b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 7 Jun 2019 06:02:13 -0500 Subject: [PATCH 06/38] clean up hub_prefix handling --- jupyterlab/extension.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/jupyterlab/extension.py b/jupyterlab/extension.py index 3cba00b3c9f9..648040d1a4f2 100644 --- a/jupyterlab/extension.py +++ b/jupyterlab/extension.py @@ -206,11 +206,14 @@ def load_jupyter_server_extension(nbapp): # If running under JupyterHub, add more metadata. if hasattr(nbapp, 'hub_prefix'): - settings['page_config_data']['hub_prefix'] = nbapp.hub_prefix - settings['page_config_data']['hub_host'] = nbapp.hub_host - settings['page_config_data']['hub_user'] = nbapp.user + logger.error('******\nhey, got a prefix\n\n') + page_config['hub_prefix'] = nbapp.hub_prefix + page_config['hub_host'] = nbapp.hub_host + page_config['hub_user'] = nbapp.user api_token = os.getenv('JUPYTERHUB_API_TOKEN', '') - settings['page_config_data']['token'] = api_token + page_config['token'] = api_token + else: + logger.error('*****\nhey, no prefix!\n\n') # Add the root handlers if we have not errored. if not errored: From 6de33106509decd0ec39d2b8004ee95252687590 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 16:10:34 -0700 Subject: [PATCH 07/38] Explicitly type dummy promise as void. --- packages/application/src/frontend.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/application/src/frontend.ts b/packages/application/src/frontend.ts index 684711c2854d..7e80c7fc61ce 100644 --- a/packages/application/src/frontend.ts +++ b/packages/application/src/frontend.ts @@ -41,9 +41,9 @@ export abstract class JupyterFrontEnd< super(options); // The default restored promise if one does not exist in the options. - const restored = new Promise(resolve => { + const restored = new Promise(resolve => { requestAnimationFrame(() => { - resolve(); + resolve(void 0); }); }); From 610c1a1975305ab9f9bedfd64cd792f8e9c9aaae Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 16:18:56 -0700 Subject: [PATCH 08/38] Use JupyterFrontEnd.IPaths. --- jupyterlab/extension.py | 7 +++---- packages/application/src/frontend.ts | 2 ++ packages/application/src/lab.ts | 4 +++- packages/hub-extension/src/index.ts | 11 ++++++----- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/jupyterlab/extension.py b/jupyterlab/extension.py index 648040d1a4f2..dc010ca8c83a 100644 --- a/jupyterlab/extension.py +++ b/jupyterlab/extension.py @@ -206,10 +206,9 @@ def load_jupyter_server_extension(nbapp): # If running under JupyterHub, add more metadata. if hasattr(nbapp, 'hub_prefix'): - logger.error('******\nhey, got a prefix\n\n') - page_config['hub_prefix'] = nbapp.hub_prefix - page_config['hub_host'] = nbapp.hub_host - page_config['hub_user'] = nbapp.user + settings['page_config_data']['hubPrefix'] = nbapp.hub_prefix + settings['page_config_data']['hubHost'] = nbapp.hub_host + settings['page_config_data']['hubUser'] = nbapp.user api_token = os.getenv('JUPYTERHUB_API_TOKEN', '') page_config['token'] = api_token else: diff --git a/packages/application/src/frontend.ts b/packages/application/src/frontend.ts index 7e80c7fc61ce..8b14400f1da4 100644 --- a/packages/application/src/frontend.ts +++ b/packages/application/src/frontend.ts @@ -272,6 +272,8 @@ export namespace JupyterFrontEnd { readonly themes: string; readonly tree: string; readonly workspaces: string; + readonly hubPrefix?: string; + readonly hubHost?: string; }; /** diff --git a/packages/application/src/lab.ts b/packages/application/src/lab.ts index f92c5f0cf7ae..50f5423a0619 100644 --- a/packages/application/src/lab.ts +++ b/packages/application/src/lab.ts @@ -244,7 +244,9 @@ export namespace JupyterLab { settings: PageConfig.getOption('settingsUrl'), themes: PageConfig.getOption('themesUrl'), tree: PageConfig.getOption('treeUrl'), - workspaces: PageConfig.getOption('workspacesUrl') + workspaces: PageConfig.getOption('workspacesUrl'), + hubHost: PageConfig.getOption('hubHost'), + hubPrefix: PageConfig.getOption('hubPrefix') }, directories: { appSettings: PageConfig.getOption('appSettingsDir'), diff --git a/packages/hub-extension/src/index.ts b/packages/hub-extension/src/index.ts index 67358160dab3..f11a1242bc74 100644 --- a/packages/hub-extension/src/index.ts +++ b/packages/hub-extension/src/index.ts @@ -12,7 +12,7 @@ import { JupyterFrontEndPlugin } from '@jupyterlab/application'; -import { PageConfig, URLExt } from '@jupyterlab/coreutils'; +import { URLExt } from '@jupyterlab/coreutils'; import { IMainMenu } from '@jupyterlab/mainmenu'; @@ -30,12 +30,13 @@ export namespace CommandIDs { */ function activateHubExtension( app: JupyterFrontEnd, + paths: JupyterFrontEnd.IPaths, palette: ICommandPalette, mainMenu: IMainMenu ): void { - const hubHost = PageConfig.getOption('hub_host'); - const hubPrefix = PageConfig.getOption('hub_prefix'); - const baseUrl = PageConfig.getBaseUrl(); + const hubHost = paths.urls.hubHost; + const hubPrefix = paths.urls.hubPrefix; + const baseUrl = paths.urls.base; // Bail if not running on JupyterHub. if (!hubPrefix) { @@ -82,7 +83,7 @@ function activateHubExtension( const hubExtension: JupyterFrontEndPlugin = { activate: activateHubExtension, id: 'jupyter.extensions.hub-extension', - requires: [ICommandPalette, IMainMenu], + requires: [JupyterFrontEnd.IPaths, ICommandPalette, IMainMenu], autoStart: true }; From 570d6a99f356a4d69dacb7f717c29ca8e2c03308 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 17:58:43 -0700 Subject: [PATCH 09/38] Use the right pageConfig. --- jupyterlab/extension.py | 8 +++----- packages/application/src/lab.ts | 4 ++-- packages/hub-extension/src/index.ts | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/jupyterlab/extension.py b/jupyterlab/extension.py index dc010ca8c83a..d6faf814dde8 100644 --- a/jupyterlab/extension.py +++ b/jupyterlab/extension.py @@ -206,13 +206,11 @@ def load_jupyter_server_extension(nbapp): # If running under JupyterHub, add more metadata. if hasattr(nbapp, 'hub_prefix'): - settings['page_config_data']['hubPrefix'] = nbapp.hub_prefix - settings['page_config_data']['hubHost'] = nbapp.hub_host - settings['page_config_data']['hubUser'] = nbapp.user + page_config['hubPrefix'] = nbapp.hub_prefix + page_config['hubHost'] = nbapp.hub_host + page_config['hubUser'] = nbapp.user api_token = os.getenv('JUPYTERHUB_API_TOKEN', '') page_config['token'] = api_token - else: - logger.error('*****\nhey, no prefix!\n\n') # Add the root handlers if we have not errored. if not errored: diff --git a/packages/application/src/lab.ts b/packages/application/src/lab.ts index 50f5423a0619..3530f2a36789 100644 --- a/packages/application/src/lab.ts +++ b/packages/application/src/lab.ts @@ -245,8 +245,8 @@ export namespace JupyterLab { themes: PageConfig.getOption('themesUrl'), tree: PageConfig.getOption('treeUrl'), workspaces: PageConfig.getOption('workspacesUrl'), - hubHost: PageConfig.getOption('hubHost'), - hubPrefix: PageConfig.getOption('hubPrefix') + hubHost: PageConfig.getOption('hubHost') || undefined, + hubPrefix: PageConfig.getOption('hubPrefix') || undefined }, directories: { appSettings: PageConfig.getOption('appSettingsDir'), diff --git a/packages/hub-extension/src/index.ts b/packages/hub-extension/src/index.ts index f11a1242bc74..65b25cb10141 100644 --- a/packages/hub-extension/src/index.ts +++ b/packages/hub-extension/src/index.ts @@ -39,7 +39,7 @@ function activateHubExtension( const baseUrl = paths.urls.base; // Bail if not running on JupyterHub. - if (!hubPrefix) { + if (!hubPrefix || !hubHost) { return; } From ed42fa81e1029633f6b6f426c437df0c55262922 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 18:09:12 -0700 Subject: [PATCH 10/38] Fix LabHubApp. --- jupyterlab/labhubapp.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/jupyterlab/labhubapp.py b/jupyterlab/labhubapp.py index 4aa6b892114f..d2d28cff21d2 100644 --- a/jupyterlab/labhubapp.py +++ b/jupyterlab/labhubapp.py @@ -1,4 +1,5 @@ import os +import warnings from traitlets import default @@ -18,8 +19,9 @@ def _default_url(self): return "/lab" def init_webapp(self, *args, **kwargs): - warnings.warn( - "SingleUserLabApp is deprecated, use SingleUserNotebookApp and set " + "c.Spawner.default_url = '/lab' in jupyterhub_config.py", DeprecationWarning + warnings.warn( + "SingleUserLabApp is deprecated, use SingleUserNotebookApp and set " + \ + "c.Spawner.default_url = '/lab' in jupyterhub_config.py", DeprecationWarning ) super().init_webapp(*args, **kwargs) From 8f3c6e72f4bbd6471c572e0e18d6ef7599074443 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 18:45:14 -0700 Subject: [PATCH 11/38] This is an extension. --- dev_mode/package.json | 3 +++ packages/hub-extension/package.json | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/dev_mode/package.json b/dev_mode/package.json index 86b79eb815ba..f674a8dd87ab 100644 --- a/dev_mode/package.json +++ b/dev_mode/package.json @@ -34,6 +34,7 @@ "@jupyterlab/fileeditor-extension": "^1.0.0-alpha.9", "@jupyterlab/help-extension": "^1.0.0-alpha.9", "@jupyterlab/htmlviewer-extension": "^1.0.0-alpha.10", + "@jupyterlab/hub-extension": "^1.0.0-alpha.8", "@jupyterlab/imageviewer": "^1.0.0-alpha.9", "@jupyterlab/imageviewer-extension": "^1.0.0-alpha.9", "@jupyterlab/inspector-extension": "^1.0.0-alpha.9", @@ -130,6 +131,7 @@ "@jupyterlab/fileeditor-extension": "", "@jupyterlab/help-extension": "", "@jupyterlab/htmlviewer-extension": "", + "@jupyterlab/hub-extension": "", "@jupyterlab/imageviewer-extension": "", "@jupyterlab/inspector-extension": "", "@jupyterlab/launcher-extension": "", @@ -225,6 +227,7 @@ "@jupyterlab/fileeditor-extension": "../packages/fileeditor-extension", "@jupyterlab/help-extension": "../packages/help-extension", "@jupyterlab/htmlviewer-extension": "../packages/htmlviewer-extension", + "@jupyterlab/hub-extension": "../packages/hub-extension", "@jupyterlab/imageviewer-extension": "../packages/imageviewer-extension", "@jupyterlab/inspector-extension": "../packages/inspector-extension", "@jupyterlab/javascript-extension": "../packages/javascript-extension", diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json index 28bba4fe9731..37de72515bfa 100644 --- a/packages/hub-extension/package.json +++ b/packages/hub-extension/package.json @@ -32,8 +32,7 @@ "@jupyterlab/application": "^1.0.0-alpha.9", "@jupyterlab/apputils": "^1.0.0-alpha.9", "@jupyterlab/coreutils": "^3.0.0-alpha.9", - "@jupyterlab/mainmenu": "^1.0.0-alpha.9", - "@phosphor/widgets": "^1.7.0" + "@jupyterlab/mainmenu": "^1.0.0-alpha.9" }, "devDependencies": { "rimraf": "~2.6.2", @@ -41,5 +40,8 @@ }, "publishConfig": { "access": "public" + }, + "jupyterlab": { + "extension": true } } From d99a4e3b0af66e17b5386bc8f9424ccc9cc899c3 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 19:00:52 -0700 Subject: [PATCH 12/38] Add commands to file menu, command palette. --- packages/application/src/frontend.ts | 2 +- packages/hub-extension/src/index.ts | 31 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/packages/application/src/frontend.ts b/packages/application/src/frontend.ts index 8b14400f1da4..eebf857be248 100644 --- a/packages/application/src/frontend.ts +++ b/packages/application/src/frontend.ts @@ -43,7 +43,7 @@ export abstract class JupyterFrontEnd< // The default restored promise if one does not exist in the options. const restored = new Promise(resolve => { requestAnimationFrame(() => { - resolve(void 0); + resolve(); }); }); diff --git a/packages/hub-extension/src/index.ts b/packages/hub-extension/src/index.ts index 65b25cb10141..2d48c8ee60c9 100644 --- a/packages/hub-extension/src/index.ts +++ b/packages/hub-extension/src/index.ts @@ -3,11 +3,10 @@ | Distributed under the terms of the Modified BSD License. |----------------------------------------------------------------------------*/ -import { Menu } from '@phosphor/widgets'; - import { ICommandPalette } from '@jupyterlab/apputils'; import { + IRouter, JupyterFrontEnd, JupyterFrontEndPlugin } from '@jupyterlab/application'; @@ -30,16 +29,17 @@ export namespace CommandIDs { */ function activateHubExtension( app: JupyterFrontEnd, + router: IRouter, paths: JupyterFrontEnd.IPaths, palette: ICommandPalette, mainMenu: IMainMenu ): void { - const hubHost = paths.urls.hubHost; - const hubPrefix = paths.urls.hubPrefix; + const hubHost = paths.urls.hubHost || ''; + const hubPrefix = paths.urls.hubPrefix || ''; const baseUrl = paths.urls.base; // Bail if not running on JupyterHub. - if (!hubPrefix || !hubHost) { + if (!hubPrefix) { return; } @@ -48,11 +48,10 @@ function activateHubExtension( hubPrefix: hubPrefix }); - const category = 'Hub'; const { commands } = app; commands.addCommand(CommandIDs.controlPanel, { - label: 'Control Panel', + label: 'Hub Control Panel', caption: 'Open the Hub control panel in a new browser tab', execute: () => { window.open(hubHost + URLExt.join(hubPrefix, 'home'), '_blank'); @@ -60,7 +59,7 @@ function activateHubExtension( }); commands.addCommand(CommandIDs.logout, { - label: 'Logout', + label: 'Log Out', caption: 'Log out of the Hub', execute: () => { window.location.href = hubHost + URLExt.join(baseUrl, 'logout'); @@ -68,13 +67,13 @@ function activateHubExtension( }); // Add commands and menu itmes. - let menu = new Menu({ commands }); - menu.title.label = category; - [CommandIDs.controlPanel, CommandIDs.logout].forEach(command => { - palette.addItem({ command, category }); - menu.addItem({ command }); - }); - mainMenu.addMenu(menu, { rank: 100 }); + mainMenu.fileMenu.addGroup( + [{ command: CommandIDs.controlPanel }, { command: CommandIDs.logout }], + 100 + ); + const category = 'Hub'; + palette.addItem({ category, command: CommandIDs.controlPanel }); + palette.addItem({ category, command: CommandIDs.logout }); } /** @@ -83,7 +82,7 @@ function activateHubExtension( const hubExtension: JupyterFrontEndPlugin = { activate: activateHubExtension, id: 'jupyter.extensions.hub-extension', - requires: [JupyterFrontEnd.IPaths, ICommandPalette, IMainMenu], + requires: [IRouter, JupyterFrontEnd.IPaths, ICommandPalette, IMainMenu], autoStart: true }; From a33f18dd324941e4cf5106838d2adf309750d2e1 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 19:55:26 -0700 Subject: [PATCH 13/38] If running im JupyterHub, provide a dialog that prompts the user to restart the server. --- packages/application-extension/src/index.tsx | 17 +---- packages/hub-extension/package.json | 3 +- packages/hub-extension/src/index.ts | 78 +++++++++++++++++++- packages/hub-extension/tsconfig.json | 3 + packages/services/src/kernel/manager.ts | 13 ++-- packages/services/src/manager.ts | 16 +--- packages/services/src/session/manager.ts | 13 ++-- packages/services/src/terminal/manager.ts | 13 ++-- 8 files changed, 110 insertions(+), 46 deletions(-) diff --git a/packages/application-extension/src/index.tsx b/packages/application-extension/src/index.tsx index d6377ccf79aa..e30dbda92962 100644 --- a/packages/application-extension/src/index.tsx +++ b/packages/application-extension/src/index.tsx @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. import { - ConnectionLost, IConnectionLost, ILabShell, ILabStatus, @@ -746,19 +745,6 @@ const paths: JupyterFrontEndPlugin = { provides: JupyterFrontEnd.IPaths }; -/** - * The default JupyterLab connection lost provider. This may be overridden - * to provide custom behavior when a connection to the server is lost. - */ -const connectionlost: JupyterFrontEndPlugin = { - id: '@jupyterlab/apputils-extension:connectionlost', - activate: (app: JupyterFrontEnd): IConnectionLost => { - return ConnectionLost; - }, - autoStart: true, - provides: IConnectionLost -}; - /** * Export the plugins as default. */ @@ -773,8 +759,7 @@ const plugins: JupyterFrontEndPlugin[] = [ shell, status, info, - paths, - connectionlost + paths ]; export default plugins; diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json index 37de72515bfa..c2d80b8fddb9 100644 --- a/packages/hub-extension/package.json +++ b/packages/hub-extension/package.json @@ -32,7 +32,8 @@ "@jupyterlab/application": "^1.0.0-alpha.9", "@jupyterlab/apputils": "^1.0.0-alpha.9", "@jupyterlab/coreutils": "^3.0.0-alpha.9", - "@jupyterlab/mainmenu": "^1.0.0-alpha.9" + "@jupyterlab/mainmenu": "^1.0.0-alpha.9", + "@jupyterlab/services": "^4.0.0-alpha.9" }, "devDependencies": { "rimraf": "~2.6.2", diff --git a/packages/hub-extension/src/index.ts b/packages/hub-extension/src/index.ts index 2d48c8ee60c9..97354c4b6238 100644 --- a/packages/hub-extension/src/index.ts +++ b/packages/hub-extension/src/index.ts @@ -3,9 +3,11 @@ | Distributed under the terms of the Modified BSD License. |----------------------------------------------------------------------------*/ -import { ICommandPalette } from '@jupyterlab/apputils'; +import { Dialog, ICommandPalette, showDialog } from '@jupyterlab/apputils'; import { + ConnectionLost, + IConnectionLost, IRouter, JupyterFrontEnd, JupyterFrontEndPlugin @@ -15,6 +17,8 @@ import { URLExt } from '@jupyterlab/coreutils'; import { IMainMenu } from '@jupyterlab/mainmenu'; +import { ServerConnection, ServiceManager } from '@jupyterlab/services'; + /** * The command IDs used by the plugin. */ @@ -22,6 +26,8 @@ export namespace CommandIDs { export const controlPanel: string = 'hub:control-panel'; export const logout: string = 'hub:logout'; + + export const restart: string = 'hub:restart'; } /** @@ -50,6 +56,20 @@ function activateHubExtension( const { commands } = app; + // TODO: use /spawn/:user/:name + // but that requires jupyterhub 1.0 + // and jupyterlab to pass username, servername to PageConfig + const restartUrl = + hubHost + URLExt.join(hubPrefix, `spawn?next=${hubPrefix}home`); + + commands.addCommand(CommandIDs.restart, { + label: 'Restart Server', + caption: 'Request that the Hub restart this server', + execute: () => { + window.open(restartUrl, '_blank'); + } + }); + commands.addCommand(CommandIDs.controlPanel, { label: 'Hub Control Panel', caption: 'Open the Hub control panel in a new browser tab', @@ -86,4 +106,58 @@ const hubExtension: JupyterFrontEndPlugin = { autoStart: true }; -export default hubExtension; +/** + * The default JupyterLab connection lost provider. This may be overridden + * to provide custom behavior when a connection to the server is lost. + * + * If the application is being deployed within a JupyterHub context, + * this will provide a dialog that prompts the user to restart the server. + * Otherwise, it shows an error dialog. + */ +const connectionlost: JupyterFrontEndPlugin = { + id: '@jupyterlab/apputils-extension:connectionlost', + requires: [JupyterFrontEnd.IPaths], + activate: ( + app: JupyterFrontEnd, + paths: JupyterFrontEnd.IPaths + ): IConnectionLost => { + const hubPrefix = paths.urls.hubPrefix || ''; + const baseUrl = paths.urls.base; + + // Return the default error message if not running on JupyterHub. + if (!hubPrefix) { + return ConnectionLost; + } + + // If we are running on JupyterHub, return a dialog + // that prompts the user to restart their server. + let showingError = false; + const onConnectionLost: IConnectionLost = async ( + manager: ServiceManager.IManager, + err: ServerConnection.NetworkError + ): Promise => { + if (showingError) { + return; + } + showingError = true; + const result = await showDialog({ + title: 'Server Not Running', + body: `Your server at ${baseUrl} is not running. +Would you like to restart it?`, + buttons: [ + Dialog.okButton({ label: 'Restart' }), + Dialog.cancelButton({ label: 'Dismiss' }) + ] + }); + showingError = false; + if (result.button.accept) { + await app.commands.execute(CommandIDs.restart); + } + }; + return onConnectionLost; + }, + autoStart: true, + provides: IConnectionLost +}; + +export default [hubExtension, connectionlost] as JupyterFrontEndPlugin[]; diff --git a/packages/hub-extension/tsconfig.json b/packages/hub-extension/tsconfig.json index 17ecbea70fb2..df557cb832f7 100644 --- a/packages/hub-extension/tsconfig.json +++ b/packages/hub-extension/tsconfig.json @@ -17,6 +17,9 @@ }, { "path": "../mainmenu" + }, + { + "path": "../services" } ] } diff --git a/packages/services/src/kernel/manager.ts b/packages/services/src/kernel/manager.ts index 73230ea4c737..ec2c407a3b66 100644 --- a/packages/services/src/kernel/manager.ts +++ b/packages/services/src/kernel/manager.ts @@ -116,7 +116,7 @@ export class KernelManager implements Kernel.IManager { /** * A signal emitted when there is a connection failure. */ - get connectionFailure(): ISignal { + get connectionFailure(): ISignal { return this._connectionFailure; } @@ -280,7 +280,12 @@ export class KernelManager implements Kernel.IManager { */ protected async requestRunning(): Promise { const models = await Kernel.listRunning(this.serverSettings).catch(err => { - if (err instanceof ServerConnection.NetworkError) { + // Check for a network error, or a 503 error, which is returned + // by a JupyterHub when a server is shut down. + if ( + err instanceof ServerConnection.NetworkError || + (err.response && err.response.status === 503) + ) { this._connectionFailure.emit(err); return [] as Kernel.IModel[]; } @@ -354,9 +359,7 @@ export class KernelManager implements Kernel.IManager { private _runningChanged = new Signal(this); private _specs: Kernel.ISpecModels | null = null; private _specsChanged = new Signal(this); - private _connectionFailure = new Signal( - this - ); + private _connectionFailure = new Signal(this); } /** diff --git a/packages/services/src/manager.ts b/packages/services/src/manager.ts index 9a01362276cc..111e092313f6 100644 --- a/packages/services/src/manager.ts +++ b/packages/services/src/manager.ts @@ -78,7 +78,7 @@ export class ServiceManager implements ServiceManager.IManager { /** * A signal emitted when there is a connection failure with the kernel. */ - get connectionFailure(): ISignal { + get connectionFailure(): ISignal { return this._connectionFailure; } @@ -166,19 +166,14 @@ export class ServiceManager implements ServiceManager.IManager { return this._readyPromise; } - private _onConnectionFailure( - sender: any, - err: ServerConnection.NetworkError - ): void { + private _onConnectionFailure(sender: any, err: Error): void { this._connectionFailure.emit(err); } private _isDisposed = false; private _readyPromise: Promise; private _specsChanged = new Signal(this); - private _connectionFailure = new Signal( - this - ); + private _connectionFailure = new Signal(this); private _isReady = false; } @@ -253,10 +248,7 @@ export namespace ServiceManager { /** * A signal emitted when there is a connection failure with the server. */ - readonly connectionFailure: ISignal< - IManager, - ServerConnection.NetworkError - >; + readonly connectionFailure: ISignal; } /** diff --git a/packages/services/src/session/manager.ts b/packages/services/src/session/manager.ts index 450f9d1dbfb3..9b7436c395c6 100644 --- a/packages/services/src/session/manager.ts +++ b/packages/services/src/session/manager.ts @@ -85,7 +85,7 @@ export class SessionManager implements Session.IManager { /** * A signal emitted when there is a connection failure. */ - get connectionFailure(): ISignal { + get connectionFailure(): ISignal { return this._connectionFailure; } @@ -289,7 +289,12 @@ export class SessionManager implements Session.IManager { */ protected async requestRunning(): Promise { const models = await Session.listRunning(this.serverSettings).catch(err => { - if (err instanceof ServerConnection.NetworkError) { + // Check for a network error, or a 503 error, which is returned + // by a JupyterHub when a server is shut down. + if ( + err instanceof ServerConnection.NetworkError || + (err.response && err.response.status === 503) + ) { this._connectionFailure.emit(err); return [] as Session.IModel[]; } @@ -380,9 +385,7 @@ export class SessionManager implements Session.IManager { private _pollSpecs: Poll; private _ready: Promise; private _runningChanged = new Signal(this); - private _connectionFailure = new Signal( - this - ); + private _connectionFailure = new Signal(this); private _sessions = new Set(); private _specs: Kernel.ISpecModels | null = null; private _specsChanged = new Signal(this); diff --git a/packages/services/src/terminal/manager.ts b/packages/services/src/terminal/manager.ts index 84b9df779428..f04cace1ef45 100644 --- a/packages/services/src/terminal/manager.ts +++ b/packages/services/src/terminal/manager.ts @@ -69,7 +69,7 @@ export class TerminalManager implements TerminalSession.IManager { /** * A signal emitted when there is a connection failure. */ - get connectionFailure(): ISignal { + get connectionFailure(): ISignal { return this._connectionFailure; } @@ -246,7 +246,12 @@ export class TerminalManager implements TerminalSession.IManager { protected async requestRunning(): Promise { const models = await TerminalSession.listRunning(this.serverSettings).catch( err => { - if (err instanceof ServerConnection.NetworkError) { + // Check for a network error, or a 503 error, which is returned + // by a JupyterHub when a server is shut down. + if ( + err instanceof ServerConnection.NetworkError || + (err.response && err.response.status === 503) + ) { this._connectionFailure.emit(err); return [] as TerminalSession.IModel[]; } @@ -325,9 +330,7 @@ export class TerminalManager implements TerminalSession.IManager { private _sessions = new Set(); private _ready: Promise; private _runningChanged = new Signal(this); - private _connectionFailure = new Signal( - this - ); + private _connectionFailure = new Signal(this); } /** From 65c78662fb492a6fa5ee6da81297fa82371bc6fd Mon Sep 17 00:00:00 2001 From: Marc Udoff Date: Fri, 7 Jun 2019 07:43:04 -0400 Subject: [PATCH 14/38] Disable chunksSort in HtmlWebpackPlugin Due to a bug in HtmlWebpackPlugin 3.x (#870), disabling chunksSortMode is required for some extensions to be bundled correctly. This is fixed in HtmlWebpackPlugin 4.x and can be removed when we upgrade, but at the time of this writing, 4.x is still in alpha. --- dev_mode/webpack.config.js | 1 + jupyterlab/staging/webpack.config.js | 1 + 2 files changed, 2 insertions(+) diff --git a/dev_mode/webpack.config.js b/dev_mode/webpack.config.js index 3b27f2523508..0108288537a1 100644 --- a/dev_mode/webpack.config.js +++ b/dev_mode/webpack.config.js @@ -122,6 +122,7 @@ const plugins = [ } }), new HtmlWebpackPlugin({ + chunksSortMode: 'none', template: path.join('templates', 'template.html'), title: jlab.name || 'JupyterLab' }), diff --git a/jupyterlab/staging/webpack.config.js b/jupyterlab/staging/webpack.config.js index 3b27f2523508..0108288537a1 100644 --- a/jupyterlab/staging/webpack.config.js +++ b/jupyterlab/staging/webpack.config.js @@ -122,6 +122,7 @@ const plugins = [ } }), new HtmlWebpackPlugin({ + chunksSortMode: 'none', template: path.join('templates', 'template.html'), title: jlab.name || 'JupyterLab' }), From 864aa69d81c8e55102bd60ae628d8da32f87cb26 Mon Sep 17 00:00:00 2001 From: Duarte OC Date: Fri, 7 Jun 2019 16:49:30 +0100 Subject: [PATCH 15/38] Adds note about nbconvert options. Closes #5018 --- docs/source/user/export.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/source/user/export.rst b/docs/source/user/export.rst index 77f1bd2cb08b..dbd379a0433c 100644 --- a/docs/source/user/export.rst +++ b/docs/source/user/export.rst @@ -21,6 +21,10 @@ To access these options, while a notebook is open, browse the File menu: :align: center :class: jp-screenshot +Note: The exporting options depend on your nbconvert configuration. For more +information visit the +`official nbconvert documentation `__. + .. _user_export_revealjs: Reveal.js Slides From 726ce5e19dc141a5d3a7b45f89299d57218b5709 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Wed, 29 May 2019 08:47:14 -0700 Subject: [PATCH 16/38] Make kernel message typing follow the spec more closely. All kernel message replies have a status field. This ensures that reply messages reflect this and handle the abort and error status appropriately. We also simplify typings since we can refer to most content typings using the field accessor. --- packages/completer/src/kernelconnector.ts | 2 +- packages/console/src/history.ts | 12 +- packages/console/src/widget.ts | 8 +- packages/help-extension/src/index.tsx | 5 +- packages/inspector/src/kernelconnector.ts | 2 +- packages/notebook/src/actions.tsx | 4 +- packages/outputarea/src/widget.ts | 8 +- packages/services/src/kernel/default.ts | 17 +- packages/services/src/kernel/future.ts | 2 +- packages/services/src/kernel/kernel.ts | 16 +- packages/services/src/kernel/messages.ts | 540 +++++++++--------- packages/tooltip-extension/src/index.ts | 2 +- .../test-services/src/kernel/ikernel.spec.ts | 2 +- tests/test-services/src/utils.ts | 2 +- 14 files changed, 307 insertions(+), 315 deletions(-) diff --git a/packages/completer/src/kernelconnector.ts b/packages/completer/src/kernelconnector.ts index b406a99a3629..e940cf6b0ad4 100644 --- a/packages/completer/src/kernelconnector.ts +++ b/packages/completer/src/kernelconnector.ts @@ -41,7 +41,7 @@ export class KernelConnector extends DataConnector< return Promise.reject(new Error('No kernel for completion request.')); } - const contents: KernelMessage.ICompleteRequest = { + const contents: KernelMessage.ICompleteRequestMsg['content'] = { code: request.text, cursor_pos: request.offset }; diff --git a/packages/console/src/history.ts b/packages/console/src/history.ts index 28f991a90594..390010270267 100644 --- a/packages/console/src/history.ts +++ b/packages/console/src/history.ts @@ -224,10 +224,12 @@ export class ConsoleHistory implements IConsoleHistory { this._history.length = 0; let last = ''; let current = ''; - for (let i = 0; i < value.content.history.length; i++) { - current = (value.content.history[i] as string[])[2]; - if (current !== last) { - this._history.push((last = current)); + if (value.content.status === 'ok') { + for (let i = 0; i < value.content.history.length; i++) { + current = (value.content.history[i] as string[])[2]; + if (current !== last) { + this._history.push((last = current)); + } } } // Reset the history navigation cursor back to the bottom. @@ -360,7 +362,7 @@ export namespace ConsoleHistory { * A namespace for private data. */ namespace Private { - export const initialRequest: KernelMessage.IHistoryRequest = { + export const initialRequest: KernelMessage.IHistoryRequestMsg['content'] = { output: false, raw: true, hist_access_type: 'tail', diff --git a/packages/console/src/widget.ts b/packages/console/src/widget.ts index 65c07b07101a..f3d610711074 100644 --- a/packages/console/src/widget.ts +++ b/packages/console/src/widget.ts @@ -646,7 +646,7 @@ export class CodeConsole extends Widget { return; } if (value && value.content.status === 'ok') { - let content = value.content as KernelMessage.IExecuteOkReply; + let content = value.content; // Use deprecated payloads for backwards compatibility. if (content.payload && content.payload.length) { let setNextInput = content.payload.filter(i => { @@ -682,7 +682,11 @@ export class CodeConsole extends Widget { /** * Update the console based on the kernel info. */ - private _handleInfo(info: KernelMessage.IInfoReply): void { + private _handleInfo(info: KernelMessage.IInfoReplyMsg['content']): void { + if (info.status !== 'ok') { + this._banner.model.value.text = 'Error in getting kernel banner'; + return; + } this._banner.model.value.text = info.banner; let lang = info.language_info as nbformat.ILanguageInfoMetadata; this._mimetype = this._mimeTypeService.getMimeTypeByLanguage(lang); diff --git a/packages/help-extension/src/index.tsx b/packages/help-extension/src/index.tsx index d406b3f53d4a..5fb5e30f34f1 100644 --- a/packages/help-extension/src/index.tsx +++ b/packages/help-extension/src/index.tsx @@ -164,7 +164,10 @@ function activate( helpMenu.addGroup(resourcesGroup, 10); // Generate a cache of the kernel help links. - const kernelInfoCache = new Map(); + const kernelInfoCache = new Map< + string, + KernelMessage.IInfoReplyMsg['content'] + >(); serviceManager.sessions.runningChanged.connect((m, sessions) => { // If a new session has been added, it is at the back // of the session list. If one has changed or stopped, diff --git a/packages/inspector/src/kernelconnector.ts b/packages/inspector/src/kernelconnector.ts index 0547cd422756..6d5ec681b977 100644 --- a/packages/inspector/src/kernelconnector.ts +++ b/packages/inspector/src/kernelconnector.ts @@ -41,7 +41,7 @@ export class KernelConnector extends DataConnector< return Promise.reject(new Error('Inspection fetch requires a kernel.')); } - const contents: KernelMessage.IInspectRequest = { + const contents: KernelMessage.IInspectRequestMsg['content'] = { code: request.text, cursor_pos: request.offset, detail_level: 0 diff --git a/packages/notebook/src/actions.tsx b/packages/notebook/src/actions.tsx index 41e3c48da52e..3c1733ab633e 100644 --- a/packages/notebook/src/actions.tsx +++ b/packages/notebook/src/actions.tsx @@ -1488,7 +1488,7 @@ namespace Private { } if (reply.content.status === 'ok') { - const content = reply.content as KernelMessage.IExecuteOkReply; + const content = reply.content; if (content.payload && content.payload.length) { handlePayload(content, notebook, cell); @@ -1532,7 +1532,7 @@ namespace Private { * See [Payloads (DEPRECATED)](https://jupyter-client.readthedocs.io/en/latest/messaging.html#payloads-deprecated). */ function handlePayload( - content: KernelMessage.IExecuteOkReply, + content: KernelMessage.IExecuteReply, notebook: Notebook, cell: Cell ) { diff --git a/packages/outputarea/src/widget.ts b/packages/outputarea/src/widget.ts index 624ea5bf616a..933b004f0e25 100644 --- a/packages/outputarea/src/widget.ts +++ b/packages/outputarea/src/widget.ts @@ -468,7 +468,10 @@ export class OutputArea extends Widget { // is overridden from 'execute_reply' to 'display_data' in order to // render output. let model = this.model; - let content = msg.content as KernelMessage.IExecuteOkReply; + let content = msg.content; + if (content.status !== 'ok') { + return; + } let payload = content && content.payload; if (!payload || !payload.length) { return; @@ -557,7 +560,7 @@ export namespace OutputArea { ) { stopOnError = false; } - let content: KernelMessage.IExecuteRequest = { + let content: KernelMessage.IExecuteRequestMsg['content'] = { code, stop_on_error: stopOnError }; @@ -712,6 +715,7 @@ export class Stdin extends Widget implements IStdin { if ((event as KeyboardEvent).keyCode === 13) { // Enter this._future.sendInputReply({ + status: 'ok', value: input.value }); if (input.type === 'password') { diff --git a/packages/services/src/kernel/default.ts b/packages/services/src/kernel/default.ts index 6c74023de227..cf795fdc3440 100644 --- a/packages/services/src/kernel/default.ts +++ b/packages/services/src/kernel/default.ts @@ -415,6 +415,9 @@ export class DefaultKernel implements Kernel.IKernel { if (this.isDisposed) { throw new Error('Disposed kernel'); } + if (reply.content.status !== 'ok') { + throw new Error('Kernel info reply errored'); + } this._info = reply.content; return reply; } @@ -429,7 +432,7 @@ export class DefaultKernel implements Kernel.IKernel { * received and validated. */ requestComplete( - content: KernelMessage.ICompleteRequest + content: KernelMessage.ICompleteRequestMsg['content'] ): Promise { let msg = KernelMessage.createMessage({ msgType: 'complete_request', @@ -453,7 +456,7 @@ export class DefaultKernel implements Kernel.IKernel { * received and validated. */ requestInspect( - content: KernelMessage.IInspectRequest + content: KernelMessage.IInspectRequestMsg['content'] ): Promise { let msg = KernelMessage.createMessage({ msgType: 'inspect_request', @@ -477,7 +480,7 @@ export class DefaultKernel implements Kernel.IKernel { * received and validated. */ requestHistory( - content: KernelMessage.IHistoryRequest + content: KernelMessage.IHistoryRequestMsg['content'] ): Promise { let msg = KernelMessage.createMessage({ msgType: 'history_request', @@ -507,7 +510,7 @@ export class DefaultKernel implements Kernel.IKernel { * **See also:** [[IExecuteReply]] */ requestExecute( - content: KernelMessage.IExecuteRequest, + content: KernelMessage.IExecuteRequestMsg['content'], disposeOnDone: boolean = true, metadata?: JSONObject ): Kernel.IFuture< @@ -544,7 +547,7 @@ export class DefaultKernel implements Kernel.IKernel { * received and validated. */ requestIsComplete( - content: KernelMessage.IIsCompleteRequest + content: KernelMessage.IIsCompleteRequestMsg['content'] ): Promise { let msg = KernelMessage.createMessage({ msgType: 'is_complete_request', @@ -566,7 +569,7 @@ export class DefaultKernel implements Kernel.IKernel { * received and validated. */ requestCommInfo( - content: KernelMessage.ICommInfoRequest + content: KernelMessage.ICommInfoRequestMsg['content'] ): Promise { let msg = KernelMessage.createMessage({ msgType: 'comm_info_request', @@ -586,7 +589,7 @@ export class DefaultKernel implements Kernel.IKernel { * #### Notes * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#messages-on-the-stdin-router-dealer-sockets). */ - sendInputReply(content: KernelMessage.IInputReply): void { + sendInputReply(content: KernelMessage.IInputReplyMsg['content']): void { if (this.status === 'dead') { throw new Error('Kernel is dead'); } diff --git a/packages/services/src/kernel/future.ts b/packages/services/src/kernel/future.ts index 8c35471c1d6d..f26e0024bf7f 100644 --- a/packages/services/src/kernel/future.ts +++ b/packages/services/src/kernel/future.ts @@ -154,7 +154,7 @@ export class KernelFutureHandler< /** * Send an `input_reply` message. */ - sendInputReply(content: KernelMessage.IInputReply): void { + sendInputReply(content: KernelMessage.IInputReplyMsg['content']): void { this._kernel.sendInputReply(content); } diff --git a/packages/services/src/kernel/kernel.ts b/packages/services/src/kernel/kernel.ts index 9766bc4d1b7c..268ebcf3ded1 100644 --- a/packages/services/src/kernel/kernel.ts +++ b/packages/services/src/kernel/kernel.ts @@ -206,7 +206,7 @@ export namespace Kernel { * received and validated. */ requestComplete( - content: KernelMessage.ICompleteRequest + content: KernelMessage.ICompleteRequestMsg['content'] ): Promise; /** @@ -223,7 +223,7 @@ export namespace Kernel { * received and validated. */ requestInspect( - content: KernelMessage.IInspectRequest + content: KernelMessage.IInspectRequestMsg['content'] ): Promise; /** @@ -240,7 +240,7 @@ export namespace Kernel { * received and validated. */ requestHistory( - content: KernelMessage.IHistoryRequest + content: KernelMessage.IHistoryRequestMsg['content'] ): Promise; /** @@ -265,7 +265,7 @@ export namespace Kernel { * **See also:** [[IExecuteReply]] */ requestExecute( - content: KernelMessage.IExecuteRequest, + content: KernelMessage.IExecuteRequestMsg['content'], disposeOnDone?: boolean, metadata?: JSONObject ): Kernel.IFuture< @@ -287,7 +287,7 @@ export namespace Kernel { * received and validated. */ requestIsComplete( - content: KernelMessage.IIsCompleteRequest + content: KernelMessage.IIsCompleteRequestMsg['content'] ): Promise; /** @@ -304,7 +304,7 @@ export namespace Kernel { * received and validated. */ requestCommInfo( - content: KernelMessage.ICommInfoRequest + content: KernelMessage.ICommInfoRequestMsg['content'] ): Promise; /** @@ -315,7 +315,7 @@ export namespace Kernel { * #### Notes * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#messages-on-the-stdin-router-dealer-sockets). */ - sendInputReply(content: KernelMessage.IInputReply): void; + sendInputReply(content: KernelMessage.IInputReplyMsg['content']): void; /** * Connect to a comm, or create a new one. @@ -830,7 +830,7 @@ export namespace Kernel { /** * Send an `input_reply` message. */ - sendInputReply(content: KernelMessage.IInputReply): void; + sendInputReply(content: KernelMessage.IInputReplyMsg['content']): void; } /** diff --git a/packages/services/src/kernel/messages.ts b/packages/services/src/kernel/messages.ts index 823aaf575797..549ffac16c02 100644 --- a/packages/services/src/kernel/messages.ts +++ b/packages/services/src/kernel/messages.ts @@ -233,34 +233,34 @@ export namespace KernelMessage { */ export interface IMessage { /** - * The message header. + * An optional list of binary buffers. */ - header: IHeader; + buffers?: (ArrayBuffer | ArrayBufferView)[]; /** - * The parent message + * The channel on which the message is transmitted. */ - parent_header: IHeader | {}; + channel: Channel; /** - * Metadata associated with the message. + * The content of the message. */ - metadata: JSONObject; + content: Message['content']; /** - * The content of the message. + * The message header. */ - content: MessageContent; + header: IHeader; /** - * The channel on which the message is transmitted. + * Metadata associated with the message. */ - channel: Channel; + metadata: JSONObject; /** - * An optional list of binary buffers. + * The parent message */ - buffers?: (ArrayBuffer | ArrayBufferView)[]; + parent_header: IHeader | {}; } /** @@ -319,7 +319,9 @@ export namespace KernelMessage { | IStreamMsg | IUpdateDisplayDataMsg; - export type MessageContent = T['content']; + ////////////////////////////////////////////////// + // IOPub Messages + ///////////////////////////////////////////////// /** * A `'stream'` message on the `'iopub'` channel. @@ -478,6 +480,10 @@ export namespace KernelMessage { return msg.header.msg_type === 'clear_output'; } + ////////////////////////////////////////////////// + // Comm Messages + ///////////////////////////////////////////////// + /** * A `'comm_open'` message on the `'iopub'` channel. * @@ -487,53 +493,21 @@ export namespace KernelMessage { T extends 'shell' | 'iopub' = 'iopub' | 'shell' > extends IMessage<'comm_open'> { channel: T; - content: ICommOpen; - } - - /** - * A `'comm_open'` message on the `'iopub'` channel. - * - * See [Comm open](https://jupyter-client.readthedocs.io/en/latest/messaging.html#opening-a-comm). - */ - export interface ICommOpenIOPubMsg extends IIOPubMessage<'comm_open'> { - channel: 'iopub'; - content: ICommOpen; - } - - /** - * A `'comm_open'` message on the `'shell'` channel. - * - * See [Comm open](https://jupyter-client.readthedocs.io/en/latest/messaging.html#opening-a-comm). - */ - export interface ICommOpenShellMsg extends IShellMessage<'comm_open'> { - channel: 'shell'; - content: ICommOpen; - } - - /** - * The content of a `'comm_open'` message. The message can - * be received on the `'iopub'` channel or send on the `'shell'` channel. - * - * See [Comm open](https://jupyter-client.readthedocs.io/en/latest/messaging.html#opening-a-comm). - */ - export interface ICommOpen { - comm_id: string; - target_name: string; - data: JSONObject; - target_module?: string; + content: { + comm_id: string; + target_name: string; + data: JSONObject; + target_module?: string; + }; } /** * Test whether a kernel message is a `'comm_open'` message. */ - export function isCommOpenMsg( - msg: IMessage - ): msg is ICommOpenIOPubMsg | ICommOpenShellMsg { + export function isCommOpenMsg(msg: IMessage): msg is ICommOpenMsg { return msg.header.msg_type === 'comm_open'; } - export type iopubshell = 'iopub' | 'shell'; - /** * A `'comm_close'` message on the `'iopub'` channel. * @@ -543,18 +517,10 @@ export namespace KernelMessage { T extends 'iopub' | 'shell' = 'iopub' | 'shell' > extends IMessage<'comm_close'> { channel: T; - content: ICommClose; - } - - /** - * The content of a `'comm_close'` method. The message can - * be received on the `'iopub'` channel or send on the `'shell'` channel. - * - * See [Comm close](https://jupyter-client.readthedocs.io/en/latest/messaging.html#opening-a-comm). - */ - export interface ICommClose { - comm_id: string; - data: JSONObject; + content: { + comm_id: string; + data: JSONObject; + }; } /** @@ -574,29 +540,72 @@ export namespace KernelMessage { export interface ICommMsgMsg extends IMessage<'comm_msg'> { channel: T; - content: ICommMsg; + content: { + comm_id: string; + data: JSONObject; + }; } /** - * The content of a `'comm_msg'` message. The message can - * be received on the `'iopub'` channel or send on the `'shell'` channel. + * Test whether a kernel message is a `'comm_msg'` message. + */ + export function isCommMsgMsg(msg: IMessage): msg is ICommMsgMsg { + return msg.header.msg_type === 'comm_msg'; + } + + ////////////////////////////////////////////////// + // Shell Messages + ///////////////////////////////////////////////// + + /** + * Reply content indicating a sucessful request. + */ + export interface IReplyOkContent { + status: 'ok'; + } + + /** + * Reply content indicating an error. * - * See [Comm msg](https://jupyter-client.readthedocs.io/en/latest/messaging.html#opening-a-comm). + * See the [Message spec](https://jupyter-client.readthedocs.io/en/latest/messaging.html#request-reply) for details. */ - export interface ICommMsg { - comm_id: string; - data: JSONObject; + export interface IReplyErrorContent { + status: 'error'; + + /** + * Exception name + */ + ename: string; + + /** + * Exception value + */ + evalue: string; + + /** + * Traceback + */ + traceback: string[]; } /** - * Test whether a kernel message is a `'comm_msg'` message. + * Reply content indicating an aborted request. + * + * This is [deprecated](https://jupyter-client.readthedocs.io/en/latest/messaging.html#request-reply) + * in message spec 5.1. Kernels should send an 'error' reply instead. */ - export function isCommMsgMsg( - msg: IMessage - ): msg is ICommMsgMsg<'iopub' | 'shell'> { - return msg.header.msg_type === 'comm_msg'; + export interface IReplyAbortContent { + status: 'abort'; } + /** + * A convenience type for reply content. + * + * This automatically unions the necessary error and abort replies required in + * the [message spec](https://jupyter-client.readthedocs.io/en/latest/messaging.html#request-reply). + */ + type ReplyContent = T | IReplyErrorContent | IReplyAbortContent; + /** * A `'kernel_info_request'` message on the `'shell'` channel. * @@ -615,21 +624,11 @@ export namespace KernelMessage { } /** - * A `'kernel_info_reply'` message on the `'shell'` channel. - * - * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#kernel-info). - */ - export interface IInfoReplyMsg extends IShellMessage<'kernel_info_reply'> { - parent_header: IHeader<'kernel_info_request'>; - content: IInfoReply; - } - - /** - * The kernel info content. + * A `'kernel_info_reply'` message content. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#kernel-info). */ - export interface IInfoReply { + export interface IInfoReply extends IReplyOkContent { protocol_version: string; implementation: string; implementation_version: string; @@ -648,6 +647,16 @@ export namespace KernelMessage { nbconverter_exporter?: string; } + /** + * A `'kernel_info_reply'` message on the `'shell'` channel. + * + * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#kernel-info). + */ + export interface IInfoReplyMsg extends IShellMessage<'kernel_info_reply'> { + parent_header: IHeader<'kernel_info_request'>; + content: ReplyContent; + } + /** * A `'complete_request'` message. * @@ -657,23 +666,28 @@ export namespace KernelMessage { */ export interface ICompleteRequestMsg extends IShellMessage<'complete_request'> { - content: ICompleteRequest; + content: { + code: string; + cursor_pos: number; + }; } /** - * The content of a `'complete_request'` message. + * A `'complete_reply'` message content. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#completion). * - * **See also:** [[ICompleteReply]], [[IKernel.complete]] + * **See also:** [[ICompleteRequest]], [[IKernel.complete]] */ - export interface ICompleteRequest { - code: string; - cursor_pos: number; + interface ICompleteReply extends IReplyOkContent { + matches: string[]; + cursor_start: number; + cursor_end: number; + metadata: JSONObject; } /** - * A `'complete_reply'` message on the `'stream'` channel. + * A `'complete_reply'` message on the `'shell'` channel. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#completion). * @@ -681,13 +695,7 @@ export namespace KernelMessage { */ export interface ICompleteReplyMsg extends IShellMessage<'complete_reply'> { parent_header: IHeader<'complete_request'>; - content: { - matches: string[]; - cursor_start: number; - cursor_end: number; - metadata: JSONObject; - status: 'ok' | 'error'; - }; + content: ReplyContent; } /** @@ -698,24 +706,29 @@ export namespace KernelMessage { * **See also:** [[IInspectReplyMsg]], [[[IKernel.inspect]]] */ export interface IInspectRequestMsg extends IShellMessage<'inspect_request'> { - content: IInspectRequest; + content: { + code: string; + cursor_pos: number; + detail_level: 0 | 1; + }; } /** - * The content of an `'inspect_request'` message. + * A `'inspect_reply'` message content. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#introspection). * - * **See also:** [[IInspectReply]], [[[IKernel.inspect]]] + * **See also:** [[IInspectRequest]], [[IKernel.inspect]] */ - export interface IInspectRequest { - code: string; - cursor_pos: number; - detail_level: 0 | 1; + + export interface IInspectReply extends IReplyOkContent { + found: boolean; + data: JSONObject; + metadata: JSONObject; } /** - * A `'inspect_reply'` message on the `'stream'` channel. + * A `'inspect_reply'` message on the `'shell'` channel. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#introspection). * @@ -723,12 +736,7 @@ export namespace KernelMessage { */ export interface IInspectReplyMsg extends IShellMessage<'inspect_reply'> { parent_header: IHeader<'inspect_request'>; - content: { - status: 'ok' | 'error'; - found: boolean; - data: JSONObject; - metadata: JSONObject; - }; + content: ReplyContent; } /** @@ -739,14 +747,9 @@ export namespace KernelMessage { * **See also:** [[IHistoryReplyMsg]], [[[IKernel.history]]] */ export interface IHistoryRequestMsg extends IShellMessage<'history_request'> { - content: IHistoryRequest; + content: IHistoryRequestRange | IHistoryRequestSearch | IHistoryRequestTail; } - /** - * The history access settings. - */ - export type HistAccess = 'range' | 'tail' | 'search'; - /** * The content of a `'history_request'` range message. * @@ -764,49 +767,48 @@ export namespace KernelMessage { } /** - * The content of a `'history_request'` tail message. + * The content of a `'history_request'` search message. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#history). * * **See also:** [[IHistoryReply]], [[[IKernel.history]]] */ - export interface IHistoryRequestTail { + export interface IHistoryRequestSearch { output: boolean; raw: boolean; - hist_access_type: 'tail'; + hist_access_type: 'search'; n: number; + pattern: string; + unique: boolean; } /** - * The content of a `'history_request'` search message. + * The content of a `'history_request'` tail message. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#history). * * **See also:** [[IHistoryReply]], [[[IKernel.history]]] */ - export interface IHistoryRequestSearch { + export interface IHistoryRequestTail { output: boolean; raw: boolean; - hist_access_type: 'search'; + hist_access_type: 'tail'; n: number; - pattern: string; - unique: boolean; } /** - * The content of a `'history_request'` message. + * A `'history_reply'` message content. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#history). * - * **See also:** [[IHistoryReply]], [[[IKernel.history]]] + * **See also:** [[IHistoryRequest]], [[IKernel.history]] */ - export type IHistoryRequest = - | IHistoryRequestRange - | IHistoryRequestTail - | IHistoryRequestSearch; + export interface IHistoryReply extends IReplyOkContent { + history: [number, number, string][] | [number, number, [string, string]][]; + } /** - * A `'history_reply'` message on the `'stream'` channel. + * A `'history_reply'` message on the `'shell'` channel. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#history). * @@ -814,11 +816,7 @@ export namespace KernelMessage { */ export interface IHistoryReplyMsg extends IShellMessage<'history_reply'> { parent_header: IHeader<'history_request'>; - content: { - history: - | [number, number, string][] - | [number, number, [string, string]][]; - }; + content: ReplyContent; } /** @@ -830,18 +828,9 @@ export namespace KernelMessage { */ export interface IIsCompleteRequestMsg extends IShellMessage<'is_complete_request'> { - content: IIsCompleteRequest; - } - - /** - * The content of an `'is_complete_request'` message. - * - * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#code-completeness). - * - * **See also:** [[IIsCompleteReply]], [[IKernel.isComplete]] - */ - export interface IIsCompleteRequest { - code: string; + content: { + code: string; + }; } /** @@ -854,78 +843,65 @@ export namespace KernelMessage { export interface IIsCompleteReplyMsg extends IShellMessage<'is_complete_reply'> { parent_header: IHeader<'is_complete_request'>; - content: { - status: string; - indent: string; - }; + content: ReplyContent; } /** - * An `execute_request` message on the ` + * An 'incomplete' completion reply */ - export interface IExecuteRequestMsg extends IShellMessage<'execute_request'> { - content: IExecuteRequest; + export interface IIsCompleteReplyIncomplete { + status: 'incomplete'; + indent: string; } /** - * The content of an `'execute_request'` message. - * - * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#execute). - * - * **See also:** [[IExecuteReply]], [[IKernel.execute]] + * A completion reply for completion or invalid states. */ - export interface IExecuteRequest extends IExecuteOptions { - code: string; + export interface IIsCompleteReplyOther { + status: 'complete' | 'invalid' | 'unknown'; } /** - * The options used to configure an execute request. - * - * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#execute). + * An `execute_request` message on the ` */ - export interface IExecuteOptions { - /** - * Whether to execute the code as quietly as possible. - * The default is `false`. - */ - silent?: boolean; + export interface IExecuteRequestMsg extends IShellMessage<'execute_request'> { + content: { + /** + * The code to execute. + */ + code: string; - /** - * Whether to store history of the execution. - * The default `true` if silent is False. - * It is forced to `false ` if silent is `true`. - */ - store_history?: boolean; + /** + * Whether to execute the code as quietly as possible. + * The default is `false`. + */ + silent?: boolean; - /** - * A mapping of names to expressions to be evaluated in the - * kernel's interactive namespace. - */ - user_expressions?: JSONObject; + /** + * Whether to store history of the execution. + * The default `true` if silent is False. + * It is forced to `false ` if silent is `true`. + */ + store_history?: boolean; - /** - * Whether to allow stdin requests. - * The default is `true`. - */ - allow_stdin?: boolean; + /** + * A mapping of names to expressions to be evaluated in the + * kernel's interactive namespace. + */ + user_expressions?: JSONObject; - /** - * Whether to the abort execution queue on an error. - * The default is `false`. - */ - stop_on_error?: boolean; - } + /** + * Whether to allow stdin requests. + * The default is `true`. + */ + allow_stdin?: boolean; - /** - * An `'execute_reply'` message on the `'stream'` channel. - * - * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#execution-results). - * - * **See also:** [[IExecuteRequest]], [[IKernel.execute]] - */ - export interface IExecuteReplyMsg extends IShellMessage<'execute_reply'> { - parent_header: IHeader<'execute_request'>; - content: IExecuteReply; + /** + * Whether to the abort execution queue on an error. + * The default is `false`. + */ + stop_on_error?: boolean; + }; } /** @@ -933,17 +909,21 @@ export namespace KernelMessage { * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#execution-results). */ - export interface IExecuteReply { - status: 'ok' | 'error' | 'abort'; + export interface IExecuteCount { execution_count: nbformat.ExecutionCount; } + /** + * A convenience type for a base for an execute reply content. + */ + type IExecuteReplyBase = IExecuteCount & IReplyOkContent; + /** * The `'execute_reply'` contents for an `'ok'` status. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#execution-results). */ - export interface IExecuteOkReply extends IExecuteReply { + export interface IExecuteReply extends IExecuteReplyBase { /** * A list of payload objects. * Payloads are considered deprecated. @@ -959,25 +939,15 @@ export namespace KernelMessage { } /** - * The `'execute_reply'` contents for an `'error'` status. + * An `'execute_reply'` message on the `'stream'` channel. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#execution-results). + * + * **See also:** [[IExecuteRequest]], [[IKernel.execute]] */ - export interface IExecuteErrorReply extends IExecuteReply { - /** - * The exception name. - */ - ename: string; - - /** - * The Exception value. - */ - evalue: string; - - /** - * A list of traceback frames. - */ - traceback: string[]; + export interface IExecuteReplyMsg extends IShellMessage<'execute_reply'> { + parent_header: IHeader<'execute_request'>; + content: ReplyContent & IExecuteCount; } /** @@ -988,95 +958,101 @@ export namespace KernelMessage { } /** - * An `'input_request'` message on the `'stdin'` channel. + * A `'comm_info_request'` message on the `'shell'` channel. * - * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#messages-on-the-stdin-router-dealer-sockets). + * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#comm-info). + * + * **See also:** [[ICommInfoReplyMsg]], [[IKernel.commInfo]] */ - export interface IInputRequestMsg extends IStdinMessage<'input_request'> { - content: IInputRequest; + + export interface ICommInfoRequestMsg + extends IShellMessage<'comm_info_request'> { + content: { + target?: string; + }; } /** - * The content of an `'input_request'` message. + * A `'comm_info_reply'` message content. + * + * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#comm-info). + * + * **See also:** [[ICommInfoRequest]], [[IKernel.commInfo]] */ - export interface IInputRequest { - /** - * The text to show at the prompt. - */ - prompt: string; + export interface ICommInfoReply extends IReplyOkContent { /** - * Whether the request is for a password. - * If so, the frontend shouldn't echo input. + * Mapping of comm ids to target names. */ - password: boolean; + comms: { [commId: string]: { target_name: string } }; } /** - * Test whether a kernel message is an `'input_request'` message. + * A `'comm_info_reply'` message on the `'shell'` channel. + * + * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#comm-info). + * + * **See also:** [[ICommInfoRequestMsg]], [[IKernel.commInfo]] */ - export function isInputRequestMsg(msg: IMessage): msg is IInputRequestMsg { - return msg.header.msg_type === 'input_request'; + export interface ICommInfoReplyMsg extends IShellMessage<'comm_info_reply'> { + parent_header: IHeader<'comm_info_request'>; + content: ReplyContent; } + ////////////////////////////////////////////////// + // Stdin Messages + ///////////////////////////////////////////////// + /** - * An `'input_reply'` message on the `'stdin'` channel. + * An `'input_request'` message on the `'stdin'` channel. * * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#messages-on-the-stdin-router-dealer-sockets). */ - export interface IInputReplyMsg extends IStdinMessage<'input_reply'> { - parent_header: IHeader<'input_request'>; - content: IInputReply; + export interface IInputRequestMsg extends IStdinMessage<'input_request'> { + content: { + /** + * The text to show at the prompt. + */ + prompt: string; + + /** + * Whether the request is for a password. + * If so, the frontend shouldn't echo input. + */ + password: boolean; + }; } /** - * The content of an `'input_reply'` message. - * - * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#messages-on-the-stdin-router-dealer-sockets). - * - * **See also:** [[IKernel.input_reply]] + * Test whether a kernel message is an `'input_request'` message. */ - export interface IInputReply { - value: string; + export function isInputRequestMsg(msg: IMessage): msg is IInputRequestMsg { + return msg.header.msg_type === 'input_request'; } /** - * Test whether a kernel message is an `'input_reply'` message. + * An `'input_reply'` message content. + * + * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#messages-on-the-stdin-router-dealer-sockets). */ - export function isInputReplyMsg(msg: IMessage): msg is IInputReplyMsg { - return msg.header.msg_type === 'input_reply'; - } - - export interface ICommInfoRequestMsg - extends IShellMessage<'comm_info_request'> { - content: ICommInfoRequest; + export interface IInputReply extends IReplyOkContent { + value: string; } /** - * The content of a `'comm_info_request'` message. - * - * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#comm-info). + * An `'input_reply'` message on the `'stdin'` channel. * - * **See also:** [[ICommInfoReply]], [[IKernel.commInfo]] + * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#messages-on-the-stdin-router-dealer-sockets). */ - export interface ICommInfoRequest { - target?: string; + export interface IInputReplyMsg extends IStdinMessage<'input_reply'> { + parent_header: IHeader<'input_request'>; + content: ReplyContent; } /** - * A `'comm_info_reply'` message on the `'stream'` channel. - * - * See [Messaging in Jupyter](https://jupyter-client.readthedocs.io/en/latest/messaging.html#comm-info). - * - * **See also:** [[ICommInfoRequest]], [[IKernel.commInfo]] + * Test whether a kernel message is an `'input_reply'` message. */ - export interface ICommInfoReplyMsg extends IShellMessage<'comm_info_reply'> { - parent_header: IHeader<'comm_info_request'>; - content: { - /** - * Mapping of comm ids to target names. - */ - comms: { [commId: string]: { target_name: string } }; - }; + export function isInputReplyMsg(msg: IMessage): msg is IInputReplyMsg { + return msg.header.msg_type === 'input_reply'; } } diff --git a/packages/tooltip-extension/src/index.ts b/packages/tooltip-extension/src/index.ts index 8d214b27dc1d..c229e3ba0579 100644 --- a/packages/tooltip-extension/src/index.ts +++ b/packages/tooltip-extension/src/index.ts @@ -301,7 +301,7 @@ namespace Private { return Promise.reject(void 0); } - let contents: KernelMessage.IInspectRequest = { + let contents: KernelMessage.IInspectRequestMsg['content'] = { code, cursor_pos: offset, detail_level: detail || 0 diff --git a/tests/test-services/src/kernel/ikernel.spec.ts b/tests/test-services/src/kernel/ikernel.spec.ts index f28a9896fa7a..a2a65e2d9fe7 100644 --- a/tests/test-services/src/kernel/ikernel.spec.ts +++ b/tests/test-services/src/kernel/ikernel.spec.ts @@ -791,7 +791,7 @@ describe('Kernel.IKernel', () => { describe('#requestIsComplete()', () => { it('should resolve the promise', async () => { - const options: KernelMessage.IIsCompleteRequest = { + const options: KernelMessage.IIsCompleteRequestMsg['content'] = { code: 'hello' }; await defaultKernel.requestIsComplete(options); diff --git a/tests/test-services/src/utils.ts b/tests/test-services/src/utils.ts index ef4cbc05b1ee..0d5cae0aae78 100644 --- a/tests/test-services/src/utils.ts +++ b/tests/test-services/src/utils.ts @@ -58,7 +58,7 @@ export function makeSettings( return ServerConnection.makeSettings(settings); } -const EXAMPLE_KERNEL_INFO: KernelMessage.IInfoReply = { +const EXAMPLE_KERNEL_INFO: KernelMessage.IInfoReplyMsg['content'] = { protocol_version: '1', implementation: 'a', implementation_version: '1', From ca4a22ec15f030007ad96371d938acb7b8839149 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Fri, 7 Jun 2019 18:22:05 +0200 Subject: [PATCH 17/38] Fix a promise typing. @ian-r-rose figured out this fix. This may be already in master and the commit could be removed. --- packages/application/src/frontend.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/application/src/frontend.ts b/packages/application/src/frontend.ts index 684711c2854d..c11a193b86df 100644 --- a/packages/application/src/frontend.ts +++ b/packages/application/src/frontend.ts @@ -41,7 +41,7 @@ export abstract class JupyterFrontEnd< super(options); // The default restored promise if one does not exist in the options. - const restored = new Promise(resolve => { + const restored = new Promise(resolve => { requestAnimationFrame(() => { resolve(); }); From 681d7da33d1168efa5b7c3e955ac286c92720713 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Fri, 7 Jun 2019 18:35:48 +0200 Subject: [PATCH 18/38] Fix test compilation errors. --- tests/test-console/src/history.spec.ts | 7 +++++++ tests/test-services/src/utils.ts | 1 + 2 files changed, 8 insertions(+) diff --git a/tests/test-console/src/history.spec.ts b/tests/test-console/src/history.spec.ts index aa54d04ceaf5..9f0572f0f55b 100644 --- a/tests/test-console/src/history.spec.ts +++ b/tests/test-console/src/history.spec.ts @@ -29,6 +29,7 @@ const mockHistory: KernelMessage.IHistoryReplyMsg = { buffers: null, channel: 'shell', content: { + status: 'ok', history: [[0, 0, 'foo'], [0, 0, 'bar'], [0, 0, 'baz'], [0, 0, 'qux']] } }; @@ -116,6 +117,9 @@ describe('console/history', () => { const history = new TestHistory({ session }); history.onHistory(mockHistory); const result = await history.back(''); + if (mockHistory.content.status !== 'ok') { + throw new Error('Test history reply is not an "ok" reply'); + } const index = mockHistory.content.history.length - 1; const last = (mockHistory.content.history[index] as any)[2]; expect(result).to.equal(last); @@ -134,6 +138,9 @@ describe('console/history', () => { history.onHistory(mockHistory); await Promise.all([history.back(''), history.back('')]); const result = await history.forward(''); + if (mockHistory.content.status !== 'ok') { + throw new Error('Test history reply is not an "ok" reply'); + } const index = mockHistory.content.history.length - 1; const last = (mockHistory.content.history[index] as any)[2]; expect(result).to.equal(last); diff --git a/tests/test-services/src/utils.ts b/tests/test-services/src/utils.ts index 0d5cae0aae78..b0ca718750bc 100644 --- a/tests/test-services/src/utils.ts +++ b/tests/test-services/src/utils.ts @@ -59,6 +59,7 @@ export function makeSettings( } const EXAMPLE_KERNEL_INFO: KernelMessage.IInfoReplyMsg['content'] = { + status: 'ok', protocol_version: '1', implementation: 'a', implementation_version: '1', From 7eba2ae603e77245226103056cdb1d759fca222f Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Fri, 7 Jun 2019 19:46:39 +0200 Subject: [PATCH 19/38] Fix services test errors. --- tests/test-services/src/kernel/comm.spec.ts | 7 +++ .../test-services/src/kernel/ifuture.spec.ts | 8 ++-- .../test-services/src/kernel/ikernel.spec.ts | 46 +++++++++++-------- .../test-services/src/kernel/messages.spec.ts | 1 + 4 files changed, 39 insertions(+), 23 deletions(-) diff --git a/tests/test-services/src/kernel/comm.spec.ts b/tests/test-services/src/kernel/comm.spec.ts index 597b5afcadc9..c1fe9698b050 100644 --- a/tests/test-services/src/kernel/comm.spec.ts +++ b/tests/test-services/src/kernel/comm.spec.ts @@ -124,6 +124,10 @@ describe('jupyter.services - Comm', () => { // Ask the kernel for the list of current comms. const msg = await kernel.requestCommInfo({}); + if (msg.content.status !== 'ok') { + throw new Error('Message error'); + } + // Test to make sure the comm we just created is listed. const comms = msg.content.comms; expect(comms[comm.commId].target_name).to.equal('test'); @@ -136,6 +140,9 @@ describe('jupyter.services - Comm', () => { it('should allow an optional target', async () => { await kernel.requestExecute({ code: SEND }, true).done; const msg = await kernel.requestCommInfo({ target: 'test' }); + if (msg.content.status !== 'ok') { + throw new Error('Message error'); + } const comms = msg.content.comms; for (const id in comms) { expect(comms[id].target_name).to.equal('test'); diff --git a/tests/test-services/src/kernel/ifuture.spec.ts b/tests/test-services/src/kernel/ifuture.spec.ts index 1e5a86665177..a0be461a55d7 100644 --- a/tests/test-services/src/kernel/ifuture.spec.ts +++ b/tests/test-services/src/kernel/ifuture.spec.ts @@ -27,7 +27,7 @@ describe('Kernel.IFuture', () => { describe('Message hooks', () => { it('should have the most recently registered hook run first', async () => { - const options: KernelMessage.IExecuteRequest = { + const options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -120,7 +120,7 @@ describe('Kernel.IFuture', () => { }); it('should abort processing if a hook returns false, but the done logic should still work', async () => { - const options: KernelMessage.IExecuteRequest = { + const options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -193,7 +193,7 @@ describe('Kernel.IFuture', () => { }); it('should process additions on the next run', async () => { - const options: KernelMessage.IExecuteRequest = { + const options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -263,7 +263,7 @@ describe('Kernel.IFuture', () => { }); it('should deactivate message hooks immediately on removal', async () => { - const options: KernelMessage.IExecuteRequest = { + const options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, diff --git a/tests/test-services/src/kernel/ikernel.spec.ts b/tests/test-services/src/kernel/ikernel.spec.ts index a2a65e2d9fe7..a5e8f808d979 100644 --- a/tests/test-services/src/kernel/ikernel.spec.ts +++ b/tests/test-services/src/kernel/ikernel.spec.ts @@ -254,11 +254,14 @@ describe('Kernel.IKernel', () => { if (!KernelMessage.isInputReplyMsg(msg)) { throw new Error('Unexpected message'); } + if (msg.content.status !== 'ok') { + throw new Error('Message has been changed'); + } expect(msg.content.value).to.equal('foo'); expect(direction).to.equal('send'); } }); - kernel.sendInputReply({ value: 'foo' }); + kernel.sendInputReply({ status: 'ok', value: 'foo' }); await emission; }); }); @@ -745,6 +748,9 @@ describe('Kernel.IKernel', () => { describe('#requestKernelInfo()', () => { it('should resolve the promise', async () => { const msg = await defaultKernel.requestKernelInfo(); + if (msg.content.status !== 'ok') { + throw new Error('Message error'); + } const name = msg.content.language_info.name; expect(name).to.be.ok; }); @@ -752,7 +758,7 @@ describe('Kernel.IKernel', () => { describe('#requestComplete()', () => { it('should resolve the promise', async () => { - const options: KernelMessage.ICompleteRequest = { + const options: KernelMessage.ICompleteRequestMsg['content'] = { code: 'hello', cursor_pos: 4 }; @@ -760,7 +766,7 @@ describe('Kernel.IKernel', () => { }); it('should reject the promise if the kernel is dead', async () => { - const options: KernelMessage.ICompleteRequest = { + const options: KernelMessage.ICompleteRequestMsg['content'] = { code: 'hello', cursor_pos: 4 }; @@ -780,7 +786,7 @@ describe('Kernel.IKernel', () => { describe('#requestInspect()', () => { it('should resolve the promise', async () => { - const options: KernelMessage.IInspectRequest = { + const options: KernelMessage.IInspectRequestMsg['content'] = { code: 'hello', cursor_pos: 4, detail_level: 0 @@ -800,7 +806,7 @@ describe('Kernel.IKernel', () => { describe('#requestHistory()', () => { it('range messages should resolve the promise', async () => { - const options: KernelMessage.IHistoryRequest = { + const options: KernelMessage.IHistoryRequestMsg['content'] = { output: true, raw: true, hist_access_type: 'range', @@ -812,7 +818,7 @@ describe('Kernel.IKernel', () => { }); it('tail messages should resolve the promise', async () => { - const options: KernelMessage.IHistoryRequest = { + const options: KernelMessage.IHistoryRequestMsg['content'] = { output: true, raw: true, hist_access_type: 'tail', @@ -822,7 +828,7 @@ describe('Kernel.IKernel', () => { }); it('search messages should resolve the promise', async () => { - const options: KernelMessage.IHistoryRequest = { + const options: KernelMessage.IHistoryRequestMsg['content'] = { output: true, raw: true, hist_access_type: 'search', @@ -843,7 +849,7 @@ describe('Kernel.IKernel', () => { expect(msg.header.msg_type).to.equal('input_reply'); done.resolve(null); }); - kernel.sendInputReply({ value: 'test' }); + kernel.sendInputReply({ status: 'ok', value: 'test' }); await done.promise; await tester.shutdown(); tester.dispose(); @@ -860,7 +866,7 @@ describe('Kernel.IKernel', () => { tester.sendStatus(UUID.uuid4(), 'dead'); await dead; expect(() => { - kernel.sendInputReply({ value: 'test' }); + kernel.sendInputReply({ status: 'ok', value: 'test' }); }).to.throw(/Kernel is dead/); tester.dispose(); }); @@ -868,7 +874,7 @@ describe('Kernel.IKernel', () => { describe('#requestExecute()', () => { it('should send and handle incoming messages', async () => { - const content: KernelMessage.IExecuteRequest = { + const content: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -896,7 +902,8 @@ describe('Kernel.IKernel', () => { channel: 'shell', content: { execution_count: 1, - status: 'ok' + status: 'ok', + user_expressions: {} }, parentHeader: msg.header as KernelMessage.IExecuteRequestMsg['header'] }) @@ -958,7 +965,7 @@ describe('Kernel.IKernel', () => { }); it('should not dispose of KernelFuture when disposeOnDone=false', async () => { - const options: KernelMessage.IExecuteRequest = { + const options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -976,7 +983,7 @@ describe('Kernel.IKernel', () => { describe('#checkExecuteMetadata()', () => { it('should accept cell metadata as part of request', async () => { - let options: KernelMessage.IExecuteRequest = { + let options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -993,7 +1000,7 @@ describe('Kernel.IKernel', () => { describe('#registerMessageHook()', () => { it('should have the most recently registered hook run first', async () => { - const options: KernelMessage.IExecuteRequest = { + const options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -1079,7 +1086,7 @@ describe('Kernel.IKernel', () => { }); it('should abort processing if a hook returns false, but the done logic should still work', async () => { - const options: KernelMessage.IExecuteRequest = { + const options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -1156,7 +1163,7 @@ describe('Kernel.IKernel', () => { }); it('should process additions on the next run', async () => { - const options: KernelMessage.IExecuteRequest = { + const options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -1229,7 +1236,7 @@ describe('Kernel.IKernel', () => { }); it('should deactivate a hook immediately on removal', async () => { - const options: KernelMessage.IExecuteRequest = { + const options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -1319,7 +1326,7 @@ describe('Kernel.IKernel', () => { // old session, the comm open should be canceled. it('should run handlers in order', async () => { - const options: KernelMessage.IExecuteRequest = { + const options: KernelMessage.IExecuteRequestMsg['content'] = { code: 'test', silent: false, store_history: true, @@ -1432,7 +1439,8 @@ describe('Kernel.IKernel', () => { pushReply( tester.sendExecuteReply('execute reply', { status: 'ok', - execution_count: 1 + execution_count: 1, + user_expressions: {} }) ); diff --git a/tests/test-services/src/kernel/messages.spec.ts b/tests/test-services/src/kernel/messages.spec.ts index 3cd805cdd141..493951d4426a 100644 --- a/tests/test-services/src/kernel/messages.spec.ts +++ b/tests/test-services/src/kernel/messages.spec.ts @@ -161,6 +161,7 @@ describe('kernel/messages', () => { channel: 'stdin', session: 'baz', content: { + status: 'ok', value: '' } }); From 3d998b392aff05e2587c86135e20c3e757114797 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Fri, 7 Jun 2019 23:24:23 +0200 Subject: [PATCH 20/38] Only write to text if the text would change Fixes #5996 It seems that Safari loses track of mouse events when we replace the text, which means that clicking/double-clicking on filenames (which calls this update function) never register click/dblclick events, just mousedown events in Safari. --- packages/filebrowser/src/listing.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/filebrowser/src/listing.ts b/packages/filebrowser/src/listing.ts index e799015e4529..36890b86d5a7 100644 --- a/packages/filebrowser/src/listing.ts +++ b/packages/filebrowser/src/listing.ts @@ -1763,7 +1763,7 @@ export namespace DirListing { node.title = model.name; // If an item is being edited currently, its text node is unavailable. - if (text) { + if (text && text.textContent !== model.name) { text.textContent = model.name; } From 129b2b97b299f6b382285cb990842b41d098fe10 Mon Sep 17 00:00:00 2001 From: Jason Grout Date: Sat, 8 Jun 2019 00:07:13 +0200 Subject: [PATCH 21/38] Make the DefaultSession own (create and dispose) its kernel connection. Fixes #6142 Before, a kernel was handed to the session, so it was confusing who was responsible for disposing the kernel connection. Now the API is changed so that the DefaultSession creates the kernel connection, so it is responsible for disposing it. --- packages/services/src/session/default.ts | 26 ++++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/services/src/session/default.ts b/packages/services/src/session/default.ts index a0c40bb9a707..cba292bf0fd9 100644 --- a/packages/services/src/session/default.ts +++ b/packages/services/src/session/default.ts @@ -29,7 +29,7 @@ export class DefaultSession implements Session.ISession { /** * Construct a new session. */ - constructor(options: Session.IOptions, id: string, kernel: Kernel.IKernel) { + constructor(options: Session.IOptions, id: string, model: Kernel.IModel) { this._id = id; this._path = options.path; this._type = options.type || 'file'; @@ -37,7 +37,7 @@ export class DefaultSession implements Session.ISession { this.serverSettings = options.serverSettings || ServerConnection.makeSettings(); Private.addRunning(this); - this.setupKernel(kernel); + this.setupKernel(model); } /** @@ -169,7 +169,6 @@ export class DefaultSession implements Session.ISession { * Clone the current session with a new clientId. */ clone(): Session.ISession { - const kernel = Kernel.connectTo(this.kernel.model, this.serverSettings); return new DefaultSession( { path: this._path, @@ -178,7 +177,7 @@ export class DefaultSession implements Session.ISession { serverSettings: this.serverSettings }, this._id, - kernel + this.kernel.model ); } @@ -196,12 +195,11 @@ export class DefaultSession implements Session.ISession { this._type = model.type; if (this._kernel.isDisposed || model.kernel.id !== this._kernel.id) { - let newValue = Kernel.connectTo(model.kernel, this.serverSettings); let oldValue = this._kernel; - this.setupKernel(newValue); + this.setupKernel(model.kernel); + let newValue = this._kernel; + oldValue.dispose(); this._kernelChanged.emit({ oldValue, newValue }); - this._handleModelChange(oldModel); - return; } this._handleModelChange(oldModel); @@ -307,10 +305,13 @@ export class DefaultSession implements Session.ISession { } /** - * Handle connections to a kernel. This method is not meant to be - * subclassed. + * Create a new kernel connection and hook up to its events. + * + * #### Notes + * This method is not meant to be subclassed. */ - protected setupKernel(kernel: Kernel.IKernel): void { + protected setupKernel(model: Kernel.IModel): void { + const kernel = Kernel.connectTo(model, this.serverSettings); this._kernel = kernel; kernel.statusChanged.connect(this.onKernelStatus, this); kernel.unhandledMessage.connect(this.onUnhandledMessage, this); @@ -545,7 +546,6 @@ namespace Private { settings?: ServerConnection.ISettings ): DefaultSession { settings = settings || ServerConnection.makeSettings(); - let kernel = Kernel.connectTo(model.kernel, settings); return new DefaultSession( { path: model.path, @@ -554,7 +554,7 @@ namespace Private { serverSettings: settings }, model.id, - kernel + model.kernel ); } From fbdaeff6f01ffaf0ac4f9a0d0d962a19c2865b32 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Sat, 8 Jun 2019 09:11:46 -0700 Subject: [PATCH 22/38] Add docstring documenting the intended use of LabHubApp. --- jupyterlab/labhubapp.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/jupyterlab/labhubapp.py b/jupyterlab/labhubapp.py index d2d28cff21d2..32db626628ea 100644 --- a/jupyterlab/labhubapp.py +++ b/jupyterlab/labhubapp.py @@ -1,5 +1,4 @@ import os -import warnings from traitlets import default @@ -12,17 +11,25 @@ raise ImportError('You must have jupyterhub installed for this to work.') else: class SingleUserLabApp(SingleUserNotebookApp, LabApp): - + """ + A sublcass of JupyterHub's SingleUserNotebookApp which includes LabApp + as a mixin. This makes the LabApp configurables available to the spawned + jupyter server. + + If you don't need to change any of the configurables from their default + values, then this class is not necessary, and you can deploy JupyterLab + by ensuring that its server extension is enabled and setting the + `Spawner.default_url` to '/lab'. + + If you do need to configure JupyterLab, then use this application by + setting `Spawner.cmd = ['jupyter-labhub']`. + """ @default("default_url") def _default_url(self): """when using jupyter-labhub, jupyterlab is default ui""" return "/lab" def init_webapp(self, *args, **kwargs): - warnings.warn( - "SingleUserLabApp is deprecated, use SingleUserNotebookApp and set " + \ - "c.Spawner.default_url = '/lab' in jupyterhub_config.py", DeprecationWarning - ) super().init_webapp(*args, **kwargs) From a12b762a5283cf254c017b5d8c082ec48fd5c1fe Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Sat, 8 Jun 2019 10:02:39 -0700 Subject: [PATCH 23/38] Don't append content in rendered output upon rerendering. --- packages/rendermime/src/widgets.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/rendermime/src/widgets.ts b/packages/rendermime/src/widgets.ts index 7c4e91d3b88f..5712fa7f3d80 100644 --- a/packages/rendermime/src/widgets.ts +++ b/packages/rendermime/src/widgets.ts @@ -63,10 +63,21 @@ export abstract class RenderedCommon extends Widget * @param model - The mime model to render. * * @returns A promise which resolves when rendering is complete. + * + * #### Notes + * If the DOM node for this widget already has content, it is emptied + * before rendering. Subclasses that do not want this behavior + * (if, for instance, they are using DOM diffing), should override + * this method. */ async renderModel(model: IRenderMime.IMimeModel): Promise { // TODO compare model against old model for early bail? + // Empty any existing content in the node from previous renders + while (this.node.firstChild) { + this.node.removeChild(this.node.firstChild); + } + // Toggle the trusted class on the widget. this.toggleClass('jp-mod-trusted', model.trusted); From d25118bdcb8554ce3a6a3728a330bef5d0d25069 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Sat, 8 Jun 2019 10:41:08 -0700 Subject: [PATCH 24/38] Add tests checking that a model can be re-rendered correctly. --- tests/test-rendermime/src/factories.spec.ts | 43 +++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tests/test-rendermime/src/factories.spec.ts b/tests/test-rendermime/src/factories.spec.ts index fc0b920ef8da..b846dc02bd3c 100644 --- a/tests/test-rendermime/src/factories.spec.ts +++ b/tests/test-rendermime/src/factories.spec.ts @@ -66,6 +66,16 @@ describe('rendermime/factories', () => { expect(w.node.innerHTML).to.equal('
x = 2 ** a
'); }); + it('should be re-renderable', async () => { + const f = textRendererFactory; + const mimeType = 'text/plain'; + const model = createModel(mimeType, 'x = 2 ** a'); + const w = f.createRenderer({ mimeType, ...defaultOptions }); + await w.renderModel(model); + await w.renderModel(model); + expect(w.node.innerHTML).to.equal('
x = 2 ** a
'); + }); + it('should output the correct HTML with ansi colors', async () => { const f = textRendererFactory; const source = 'There is no text but \x1b[01;41;32mtext\x1b[00m.\nWoo.'; @@ -116,6 +126,17 @@ describe('rendermime/factories', () => { await w.renderModel(model); expect(w.node.textContent).to.equal(source); }); + + it('should be re-renderable', async () => { + const source = 'sumlimits_{i=0}^{infty} \frac{1}{n^2}'; + const f = latexRendererFactory; + const mimeType = 'text/latex'; + const model = createModel(mimeType, source); + const w = f.createRenderer({ mimeType, ...defaultOptions }); + await w.renderModel(model); + await w.renderModel(model); + expect(w.node.textContent).to.equal(source); + }); }); }); @@ -174,6 +195,17 @@ describe('rendermime/factories', () => { expect(w.node.innerHTML).to.equal(source); }); + it('it should be re-renderable', async () => { + const f = markdownRendererFactory; + const source = '

hello

'; + const mimeType = 'text/markdown'; + const model = createModel(mimeType, source); + const w = f.createRenderer({ mimeType, ...defaultOptions }); + await w.renderModel(model); + await w.renderModel(model); + expect(w.node.innerHTML).to.equal(source); + }); + it('should add header anchors', async () => { const source = require('../../../examples/filebrowser/sample.md') .default as string; @@ -229,6 +261,17 @@ describe('rendermime/factories', () => { expect(w.node.innerHTML).to.equal('

This is great

'); }); + it('should be re-renderable', async () => { + const f = htmlRendererFactory; + const source = '

This is great

'; + const mimeType = 'text/html'; + const model = createModel(mimeType, source); + const w = f.createRenderer({ mimeType, ...defaultOptions }); + await w.renderModel(model); + await w.renderModel(model); + expect(w.node.innerHTML).to.equal('

This is great

'); + }); + // TODO we are disabling script execution for now. it.skip('should execute a script tag when attached', () => { const source = ''; From a918f2c254f8259c320bdcaf0b16c472b44b511c Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Sat, 8 Jun 2019 12:41:12 -0700 Subject: [PATCH 25/38] Clarify comment. --- packages/rendermime/src/widgets.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rendermime/src/widgets.ts b/packages/rendermime/src/widgets.ts index 5712fa7f3d80..8a1b7c9f168e 100644 --- a/packages/rendermime/src/widgets.ts +++ b/packages/rendermime/src/widgets.ts @@ -68,7 +68,7 @@ export abstract class RenderedCommon extends Widget * If the DOM node for this widget already has content, it is emptied * before rendering. Subclasses that do not want this behavior * (if, for instance, they are using DOM diffing), should override - * this method. + * this method and not call `super.renderModel()`. */ async renderModel(model: IRenderMime.IMimeModel): Promise { // TODO compare model against old model for early bail? From a9cc9d2ee5037a23c85c7731a78227bc54b73124 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 1 Jun 2019 04:30:28 -0500 Subject: [PATCH 26/38] wip hub integration --- jupyterlab/extension.py | 8 +++ jupyterlab/labhubapp.py | 18 +----- packages/hub-extension/README.md | 7 +++ packages/hub-extension/package.json | 38 ++++++++++++ packages/hub-extension/src/index.ts | 89 ++++++++++++++++++++++++++++ packages/hub-extension/tsconfig.json | 8 +++ packages/metapackage/package.json | 77 ++++++++++++++++++++++++ packages/metapackage/tsconfig.json | 3 + 8 files changed, 233 insertions(+), 15 deletions(-) create mode 100644 packages/hub-extension/README.md create mode 100644 packages/hub-extension/package.json create mode 100644 packages/hub-extension/src/index.ts create mode 100644 packages/hub-extension/tsconfig.json diff --git a/jupyterlab/extension.py b/jupyterlab/extension.py index 6044127f84d5..3cba00b3c9f9 100644 --- a/jupyterlab/extension.py +++ b/jupyterlab/extension.py @@ -204,6 +204,14 @@ def load_jupyter_server_extension(nbapp): # Must add before the root server handlers to avoid shadowing. web_app.add_handlers('.*$', handlers) + # If running under JupyterHub, add more metadata. + if hasattr(nbapp, 'hub_prefix'): + settings['page_config_data']['hub_prefix'] = nbapp.hub_prefix + settings['page_config_data']['hub_host'] = nbapp.hub_host + settings['page_config_data']['hub_user'] = nbapp.user + api_token = os.getenv('JUPYTERHUB_API_TOKEN', '') + settings['page_config_data']['token'] = api_token + # Add the root handlers if we have not errored. if not errored: add_handlers(web_app, config) diff --git a/jupyterlab/labhubapp.py b/jupyterlab/labhubapp.py index 7c039d1ced28..4aa6b892114f 100644 --- a/jupyterlab/labhubapp.py +++ b/jupyterlab/labhubapp.py @@ -18,22 +18,10 @@ def _default_url(self): return "/lab" def init_webapp(self, *args, **kwargs): + warnings.warn( + "SingleUserLabApp is deprecated, use SingleUserNotebookApp and set " + "c.Spawner.default_url = '/lab' in jupyterhub_config.py", DeprecationWarning + ) super().init_webapp(*args, **kwargs) - settings = self.web_app.settings - if 'page_config_data' not in settings: - settings['page_config_data'] = {} - settings['page_config_data']['hub_prefix'] = self.hub_prefix - settings['page_config_data']['hub_host'] = self.hub_host - settings['page_config_data']['hub_user'] = self.user - api_token = os.getenv('JUPYTERHUB_API_TOKEN') - if not api_token: - api_token = '' - if not self.token: - try: - self.token = api_token - except AttributeError: - self.log.error("Can't set self.token") - settings['page_config_data']['token'] = api_token def main(argv=None): diff --git a/packages/hub-extension/README.md b/packages/hub-extension/README.md new file mode 100644 index 000000000000..ccfef2468120 --- /dev/null +++ b/packages/hub-extension/README.md @@ -0,0 +1,7 @@ +# @jupyterlab/hub-extension + +JupyterLab](https://github.com/jupyterlab/jupyterlab) integration for +[JupyterHub](https://github.com/jupyterhub/jupyterhub). + +This adds a "Hub" menu to JupyterLab that allows a user to log out of JupyterHub +or access their JupyterHub control panel. diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json new file mode 100644 index 000000000000..fbd56872cb6f --- /dev/null +++ b/packages/hub-extension/package.json @@ -0,0 +1,38 @@ +{ + "name": "@jupyterlab/hub-extension", + "version": "1.0.0-alpha.8", + "description": "JupyterLab integration for JupyterHub", + "homepage": "https://github.com/jupyterlab/jupyterlab", + "bugs": { + "url": "https://github.com/jupyterlab/jupyterlab/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/jupyterlab/jupyterlab.git" + }, + "license": "BSD-3-Clause", + "author": "Project Jupyter", + "files": [ + "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", + "schema/*.json", + "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}" + ], + "main": "lib/index.js", + "types": "lib/index.d.ts", + "directories": { + "lib": "lib/" + }, + "scripts": { + "build": "tsc", + "clean": "rimraf lib", + "prepublishOnly": "npm run build", + "watch": "tsc -w --listEmittedFiles" + }, + "devDependencies": { + "rimraf": "~2.6.2", + "typescript": "~3.5.1" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/hub-extension/src/index.ts b/packages/hub-extension/src/index.ts new file mode 100644 index 000000000000..67358160dab3 --- /dev/null +++ b/packages/hub-extension/src/index.ts @@ -0,0 +1,89 @@ +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +import { Menu } from '@phosphor/widgets'; + +import { ICommandPalette } from '@jupyterlab/apputils'; + +import { + JupyterFrontEnd, + JupyterFrontEndPlugin +} from '@jupyterlab/application'; + +import { PageConfig, URLExt } from '@jupyterlab/coreutils'; + +import { IMainMenu } from '@jupyterlab/mainmenu'; + +/** + * The command IDs used by the plugin. + */ +export namespace CommandIDs { + export const controlPanel: string = 'hub:control-panel'; + + export const logout: string = 'hub:logout'; +} + +/** + * Activate the jupyterhub extension. + */ +function activateHubExtension( + app: JupyterFrontEnd, + palette: ICommandPalette, + mainMenu: IMainMenu +): void { + const hubHost = PageConfig.getOption('hub_host'); + const hubPrefix = PageConfig.getOption('hub_prefix'); + const baseUrl = PageConfig.getBaseUrl(); + + // Bail if not running on JupyterHub. + if (!hubPrefix) { + return; + } + + console.log('hub-extension: Found configuration ', { + hubHost: hubHost, + hubPrefix: hubPrefix + }); + + const category = 'Hub'; + const { commands } = app; + + commands.addCommand(CommandIDs.controlPanel, { + label: 'Control Panel', + caption: 'Open the Hub control panel in a new browser tab', + execute: () => { + window.open(hubHost + URLExt.join(hubPrefix, 'home'), '_blank'); + } + }); + + commands.addCommand(CommandIDs.logout, { + label: 'Logout', + caption: 'Log out of the Hub', + execute: () => { + window.location.href = hubHost + URLExt.join(baseUrl, 'logout'); + } + }); + + // Add commands and menu itmes. + let menu = new Menu({ commands }); + menu.title.label = category; + [CommandIDs.controlPanel, CommandIDs.logout].forEach(command => { + palette.addItem({ command, category }); + menu.addItem({ command }); + }); + mainMenu.addMenu(menu, { rank: 100 }); +} + +/** + * Initialization data for the hub-extension. + */ +const hubExtension: JupyterFrontEndPlugin = { + activate: activateHubExtension, + id: 'jupyter.extensions.hub-extension', + requires: [ICommandPalette, IMainMenu], + autoStart: true +}; + +export default hubExtension; diff --git a/packages/hub-extension/tsconfig.json b/packages/hub-extension/tsconfig.json new file mode 100644 index 000000000000..a1e4ba13c4bc --- /dev/null +++ b/packages/hub-extension/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfigbase", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "include": ["src/*"] +} diff --git a/packages/metapackage/package.json b/packages/metapackage/package.json index 35648eea1cf1..ae445355d679 100644 --- a/packages/metapackage/package.json +++ b/packages/metapackage/package.json @@ -30,6 +30,7 @@ "watch": "tsc -b --watch" }, "dependencies": { +<<<<<<< HEAD "@jupyterlab/application": "^1.0.0-alpha.9", "@jupyterlab/application-extension": "^1.0.0-alpha.9", "@jupyterlab/apputils": "^1.0.0-alpha.9", @@ -103,6 +104,82 @@ "@jupyterlab/vdom": "^1.0.0-alpha.9", "@jupyterlab/vdom-extension": "^1.0.0-alpha.9", "@jupyterlab/vega5-extension": "^1.0.0-alpha.9" +======= + "@jupyterlab/application": "^1.0.0-alpha.8", + "@jupyterlab/application-extension": "^1.0.0-alpha.8", + "@jupyterlab/apputils": "^1.0.0-alpha.8", + "@jupyterlab/apputils-extension": "^1.0.0-alpha.8", + "@jupyterlab/attachments": "^1.0.0-alpha.8", + "@jupyterlab/cells": "^1.0.0-alpha.9", + "@jupyterlab/codeeditor": "^1.0.0-alpha.8", + "@jupyterlab/codemirror": "^1.0.0-alpha.8", + "@jupyterlab/codemirror-extension": "^1.0.0-alpha.8", + "@jupyterlab/completer": "^1.0.0-alpha.8", + "@jupyterlab/completer-extension": "^1.0.0-alpha.8", + "@jupyterlab/console": "^1.0.0-alpha.8", + "@jupyterlab/console-extension": "^1.0.0-alpha.8", + "@jupyterlab/coreutils": "^3.0.0-alpha.8", + "@jupyterlab/csvviewer": "^1.0.0-alpha.8", + "@jupyterlab/csvviewer-extension": "^1.0.0-alpha.9", + "@jupyterlab/docmanager": "^1.0.0-alpha.8", + "@jupyterlab/docmanager-extension": "^1.0.0-alpha.8", + "@jupyterlab/docregistry": "^1.0.0-alpha.8", + "@jupyterlab/documentsearch": "^1.0.0-alpha.9", + "@jupyterlab/documentsearch-extension": "^1.0.0-alpha.10", + "@jupyterlab/extensionmanager": "^1.0.0-alpha.8", + "@jupyterlab/extensionmanager-extension": "^1.0.0-alpha.8", + "@jupyterlab/faq-extension": "^1.0.0-alpha.8", + "@jupyterlab/filebrowser": "^1.0.0-alpha.8", + "@jupyterlab/filebrowser-extension": "^1.0.0-alpha.8", + "@jupyterlab/fileeditor": "^1.0.0-alpha.8", + "@jupyterlab/fileeditor-extension": "^1.0.0-alpha.8", + "@jupyterlab/help-extension": "^1.0.0-alpha.8", + "@jupyterlab/htmlviewer": "^1.0.0-alpha.9", + "@jupyterlab/htmlviewer-extension": "^1.0.0-alpha.9", + "@jupyterlab/hub-extension": "^1.0.0-alpha.8", + "@jupyterlab/imageviewer": "^1.0.0-alpha.8", + "@jupyterlab/imageviewer-extension": "^1.0.0-alpha.8", + "@jupyterlab/inspector": "^1.0.0-alpha.8", + "@jupyterlab/inspector-extension": "^1.0.0-alpha.8", + "@jupyterlab/javascript-extension": "^1.0.0-alpha.8", + "@jupyterlab/json-extension": "^1.0.0-alpha.8", + "@jupyterlab/launcher": "^1.0.0-alpha.8", + "@jupyterlab/launcher-extension": "^1.0.0-alpha.8", + "@jupyterlab/mainmenu": "^1.0.0-alpha.8", + "@jupyterlab/mainmenu-extension": "^1.0.0-alpha.8", + "@jupyterlab/markdownviewer": "^1.0.0-alpha.8", + "@jupyterlab/markdownviewer-extension": "^1.0.0-alpha.8", + "@jupyterlab/mathjax2": "^1.0.0-alpha.8", + "@jupyterlab/mathjax2-extension": "^1.0.0-alpha.8", + "@jupyterlab/nbconvert-css": "^0.1.1-alpha.1", + "@jupyterlab/notebook": "^1.0.0-alpha.9", + "@jupyterlab/notebook-extension": "^1.0.0-alpha.8", + "@jupyterlab/observables": "^2.2.0-alpha.8", + "@jupyterlab/outputarea": "^1.0.0-alpha.8", + "@jupyterlab/pdf-extension": "^1.0.0-alpha.8", + "@jupyterlab/rendermime": "^1.0.0-alpha.8", + "@jupyterlab/rendermime-extension": "^1.0.0-alpha.8", + "@jupyterlab/rendermime-interfaces": "^1.3.0-alpha.8", + "@jupyterlab/running": "^1.0.0-alpha.8", + "@jupyterlab/running-extension": "^1.0.0-alpha.8", + "@jupyterlab/services": "^4.0.0-alpha.8", + "@jupyterlab/settingeditor": "^1.0.0-alpha.8", + "@jupyterlab/settingeditor-extension": "^1.0.0-alpha.8", + "@jupyterlab/shortcuts-extension": "^1.0.0-alpha.8", + "@jupyterlab/statusbar": "^1.0.0-alpha.8", + "@jupyterlab/statusbar-extension": "^1.0.0-alpha.8", + "@jupyterlab/tabmanager-extension": "^1.0.0-alpha.8", + "@jupyterlab/terminal": "^1.0.0-alpha.8", + "@jupyterlab/terminal-extension": "^1.0.0-alpha.8", + "@jupyterlab/theme-dark-extension": "^1.0.0-alpha.9", + "@jupyterlab/theme-light-extension": "^1.0.0-alpha.9", + "@jupyterlab/tooltip": "^1.0.0-alpha.8", + "@jupyterlab/tooltip-extension": "^1.0.0-alpha.8", + "@jupyterlab/ui-components": "^1.0.0-alpha.8", + "@jupyterlab/vdom": "^1.0.0-alpha.8", + "@jupyterlab/vdom-extension": "^1.0.0-alpha.8", + "@jupyterlab/vega5-extension": "^1.0.0-alpha.8" +>>>>>>> 107ef3b30... wip hub integration }, "devDependencies": { "fs-extra": "^8.0.1", diff --git a/packages/metapackage/tsconfig.json b/packages/metapackage/tsconfig.json index d5c6ed4b3cbb..fe8d0e17a6fc 100644 --- a/packages/metapackage/tsconfig.json +++ b/packages/metapackage/tsconfig.json @@ -99,6 +99,9 @@ { "path": "../htmlviewer-extension" }, + { + "path": "../hub-extension" + }, { "path": "../imageviewer" }, From f03468359a4072a445b0c0eca4ceff81fb3c7041 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sat, 1 Jun 2019 04:38:50 -0500 Subject: [PATCH 27/38] integrity --- packages/hub-extension/package.json | 7 +++++++ packages/hub-extension/tsconfig.json | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json index fbd56872cb6f..7f70b4a860a4 100644 --- a/packages/hub-extension/package.json +++ b/packages/hub-extension/package.json @@ -28,6 +28,13 @@ "prepublishOnly": "npm run build", "watch": "tsc -w --listEmittedFiles" }, + "dependencies": { + "@jupyterlab/application": "^1.0.0-alpha.8", + "@jupyterlab/apputils": "^1.0.0-alpha.8", + "@jupyterlab/coreutils": "^3.0.0-alpha.8", + "@jupyterlab/mainmenu": "^1.0.0-alpha.8", + "@phosphor/widgets": "^1.6.0" + }, "devDependencies": { "rimraf": "~2.6.2", "typescript": "~3.5.1" diff --git a/packages/hub-extension/tsconfig.json b/packages/hub-extension/tsconfig.json index a1e4ba13c4bc..17ecbea70fb2 100644 --- a/packages/hub-extension/tsconfig.json +++ b/packages/hub-extension/tsconfig.json @@ -4,5 +4,19 @@ "outDir": "lib", "rootDir": "src" }, - "include": ["src/*"] + "include": ["src/*"], + "references": [ + { + "path": "../application" + }, + { + "path": "../apputils" + }, + { + "path": "../coreutils" + }, + { + "path": "../mainmenu" + } + ] } From b08ea7e7b2c920b2d88e2c196c23cdf40f5eff29 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 3 Jun 2019 10:53:36 -0500 Subject: [PATCH 28/38] integry --- packages/hub-extension/package.json | 10 +++++----- packages/metapackage/package.json | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json index 7f70b4a860a4..28bba4fe9731 100644 --- a/packages/hub-extension/package.json +++ b/packages/hub-extension/package.json @@ -29,11 +29,11 @@ "watch": "tsc -w --listEmittedFiles" }, "dependencies": { - "@jupyterlab/application": "^1.0.0-alpha.8", - "@jupyterlab/apputils": "^1.0.0-alpha.8", - "@jupyterlab/coreutils": "^3.0.0-alpha.8", - "@jupyterlab/mainmenu": "^1.0.0-alpha.8", - "@phosphor/widgets": "^1.6.0" + "@jupyterlab/application": "^1.0.0-alpha.9", + "@jupyterlab/apputils": "^1.0.0-alpha.9", + "@jupyterlab/coreutils": "^3.0.0-alpha.9", + "@jupyterlab/mainmenu": "^1.0.0-alpha.9", + "@phosphor/widgets": "^1.7.0" }, "devDependencies": { "rimraf": "~2.6.2", diff --git a/packages/metapackage/package.json b/packages/metapackage/package.json index ae445355d679..da65f5c01863 100644 --- a/packages/metapackage/package.json +++ b/packages/metapackage/package.json @@ -62,6 +62,7 @@ "@jupyterlab/help-extension": "^1.0.0-alpha.9", "@jupyterlab/htmlviewer": "^1.0.0-alpha.10", "@jupyterlab/htmlviewer-extension": "^1.0.0-alpha.10", + "@jupyterlab/hub-extension": "^1.0.0-alpha.8", "@jupyterlab/imageviewer": "^1.0.0-alpha.9", "@jupyterlab/imageviewer-extension": "^1.0.0-alpha.9", "@jupyterlab/inspector": "^1.0.0-alpha.9", From 654a4f8aa2bd9c6e9e1398481b3c5bbd021b677d Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Mon, 3 Jun 2019 10:55:00 -0500 Subject: [PATCH 29/38] integrity --- packages/metapackage/package.json | 77 ------------------------------- 1 file changed, 77 deletions(-) diff --git a/packages/metapackage/package.json b/packages/metapackage/package.json index da65f5c01863..7a2b2e1dda97 100644 --- a/packages/metapackage/package.json +++ b/packages/metapackage/package.json @@ -30,7 +30,6 @@ "watch": "tsc -b --watch" }, "dependencies": { -<<<<<<< HEAD "@jupyterlab/application": "^1.0.0-alpha.9", "@jupyterlab/application-extension": "^1.0.0-alpha.9", "@jupyterlab/apputils": "^1.0.0-alpha.9", @@ -105,82 +104,6 @@ "@jupyterlab/vdom": "^1.0.0-alpha.9", "@jupyterlab/vdom-extension": "^1.0.0-alpha.9", "@jupyterlab/vega5-extension": "^1.0.0-alpha.9" -======= - "@jupyterlab/application": "^1.0.0-alpha.8", - "@jupyterlab/application-extension": "^1.0.0-alpha.8", - "@jupyterlab/apputils": "^1.0.0-alpha.8", - "@jupyterlab/apputils-extension": "^1.0.0-alpha.8", - "@jupyterlab/attachments": "^1.0.0-alpha.8", - "@jupyterlab/cells": "^1.0.0-alpha.9", - "@jupyterlab/codeeditor": "^1.0.0-alpha.8", - "@jupyterlab/codemirror": "^1.0.0-alpha.8", - "@jupyterlab/codemirror-extension": "^1.0.0-alpha.8", - "@jupyterlab/completer": "^1.0.0-alpha.8", - "@jupyterlab/completer-extension": "^1.0.0-alpha.8", - "@jupyterlab/console": "^1.0.0-alpha.8", - "@jupyterlab/console-extension": "^1.0.0-alpha.8", - "@jupyterlab/coreutils": "^3.0.0-alpha.8", - "@jupyterlab/csvviewer": "^1.0.0-alpha.8", - "@jupyterlab/csvviewer-extension": "^1.0.0-alpha.9", - "@jupyterlab/docmanager": "^1.0.0-alpha.8", - "@jupyterlab/docmanager-extension": "^1.0.0-alpha.8", - "@jupyterlab/docregistry": "^1.0.0-alpha.8", - "@jupyterlab/documentsearch": "^1.0.0-alpha.9", - "@jupyterlab/documentsearch-extension": "^1.0.0-alpha.10", - "@jupyterlab/extensionmanager": "^1.0.0-alpha.8", - "@jupyterlab/extensionmanager-extension": "^1.0.0-alpha.8", - "@jupyterlab/faq-extension": "^1.0.0-alpha.8", - "@jupyterlab/filebrowser": "^1.0.0-alpha.8", - "@jupyterlab/filebrowser-extension": "^1.0.0-alpha.8", - "@jupyterlab/fileeditor": "^1.0.0-alpha.8", - "@jupyterlab/fileeditor-extension": "^1.0.0-alpha.8", - "@jupyterlab/help-extension": "^1.0.0-alpha.8", - "@jupyterlab/htmlviewer": "^1.0.0-alpha.9", - "@jupyterlab/htmlviewer-extension": "^1.0.0-alpha.9", - "@jupyterlab/hub-extension": "^1.0.0-alpha.8", - "@jupyterlab/imageviewer": "^1.0.0-alpha.8", - "@jupyterlab/imageviewer-extension": "^1.0.0-alpha.8", - "@jupyterlab/inspector": "^1.0.0-alpha.8", - "@jupyterlab/inspector-extension": "^1.0.0-alpha.8", - "@jupyterlab/javascript-extension": "^1.0.0-alpha.8", - "@jupyterlab/json-extension": "^1.0.0-alpha.8", - "@jupyterlab/launcher": "^1.0.0-alpha.8", - "@jupyterlab/launcher-extension": "^1.0.0-alpha.8", - "@jupyterlab/mainmenu": "^1.0.0-alpha.8", - "@jupyterlab/mainmenu-extension": "^1.0.0-alpha.8", - "@jupyterlab/markdownviewer": "^1.0.0-alpha.8", - "@jupyterlab/markdownviewer-extension": "^1.0.0-alpha.8", - "@jupyterlab/mathjax2": "^1.0.0-alpha.8", - "@jupyterlab/mathjax2-extension": "^1.0.0-alpha.8", - "@jupyterlab/nbconvert-css": "^0.1.1-alpha.1", - "@jupyterlab/notebook": "^1.0.0-alpha.9", - "@jupyterlab/notebook-extension": "^1.0.0-alpha.8", - "@jupyterlab/observables": "^2.2.0-alpha.8", - "@jupyterlab/outputarea": "^1.0.0-alpha.8", - "@jupyterlab/pdf-extension": "^1.0.0-alpha.8", - "@jupyterlab/rendermime": "^1.0.0-alpha.8", - "@jupyterlab/rendermime-extension": "^1.0.0-alpha.8", - "@jupyterlab/rendermime-interfaces": "^1.3.0-alpha.8", - "@jupyterlab/running": "^1.0.0-alpha.8", - "@jupyterlab/running-extension": "^1.0.0-alpha.8", - "@jupyterlab/services": "^4.0.0-alpha.8", - "@jupyterlab/settingeditor": "^1.0.0-alpha.8", - "@jupyterlab/settingeditor-extension": "^1.0.0-alpha.8", - "@jupyterlab/shortcuts-extension": "^1.0.0-alpha.8", - "@jupyterlab/statusbar": "^1.0.0-alpha.8", - "@jupyterlab/statusbar-extension": "^1.0.0-alpha.8", - "@jupyterlab/tabmanager-extension": "^1.0.0-alpha.8", - "@jupyterlab/terminal": "^1.0.0-alpha.8", - "@jupyterlab/terminal-extension": "^1.0.0-alpha.8", - "@jupyterlab/theme-dark-extension": "^1.0.0-alpha.9", - "@jupyterlab/theme-light-extension": "^1.0.0-alpha.9", - "@jupyterlab/tooltip": "^1.0.0-alpha.8", - "@jupyterlab/tooltip-extension": "^1.0.0-alpha.8", - "@jupyterlab/ui-components": "^1.0.0-alpha.8", - "@jupyterlab/vdom": "^1.0.0-alpha.8", - "@jupyterlab/vdom-extension": "^1.0.0-alpha.8", - "@jupyterlab/vega5-extension": "^1.0.0-alpha.8" ->>>>>>> 107ef3b30... wip hub integration }, "devDependencies": { "fs-extra": "^8.0.1", From a699f5139a0f3991550dbd56f72225d1e2f28583 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Fri, 7 Jun 2019 06:02:13 -0500 Subject: [PATCH 30/38] clean up hub_prefix handling --- jupyterlab/extension.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/jupyterlab/extension.py b/jupyterlab/extension.py index 3cba00b3c9f9..648040d1a4f2 100644 --- a/jupyterlab/extension.py +++ b/jupyterlab/extension.py @@ -206,11 +206,14 @@ def load_jupyter_server_extension(nbapp): # If running under JupyterHub, add more metadata. if hasattr(nbapp, 'hub_prefix'): - settings['page_config_data']['hub_prefix'] = nbapp.hub_prefix - settings['page_config_data']['hub_host'] = nbapp.hub_host - settings['page_config_data']['hub_user'] = nbapp.user + logger.error('******\nhey, got a prefix\n\n') + page_config['hub_prefix'] = nbapp.hub_prefix + page_config['hub_host'] = nbapp.hub_host + page_config['hub_user'] = nbapp.user api_token = os.getenv('JUPYTERHUB_API_TOKEN', '') - settings['page_config_data']['token'] = api_token + page_config['token'] = api_token + else: + logger.error('*****\nhey, no prefix!\n\n') # Add the root handlers if we have not errored. if not errored: From 43028a1d7caabf94850d7d09a5e4645fab3fe472 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 16:10:34 -0700 Subject: [PATCH 31/38] Explicitly type dummy promise as void. --- packages/application/src/frontend.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/application/src/frontend.ts b/packages/application/src/frontend.ts index c11a193b86df..7e80c7fc61ce 100644 --- a/packages/application/src/frontend.ts +++ b/packages/application/src/frontend.ts @@ -43,7 +43,7 @@ export abstract class JupyterFrontEnd< // The default restored promise if one does not exist in the options. const restored = new Promise(resolve => { requestAnimationFrame(() => { - resolve(); + resolve(void 0); }); }); From 3da56c735b2482f21d2ab0438e91e3afff3733ae Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 16:18:56 -0700 Subject: [PATCH 32/38] Use JupyterFrontEnd.IPaths. --- jupyterlab/extension.py | 7 +++---- packages/application/src/frontend.ts | 2 ++ packages/application/src/lab.ts | 4 +++- packages/hub-extension/src/index.ts | 11 ++++++----- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/jupyterlab/extension.py b/jupyterlab/extension.py index 648040d1a4f2..dc010ca8c83a 100644 --- a/jupyterlab/extension.py +++ b/jupyterlab/extension.py @@ -206,10 +206,9 @@ def load_jupyter_server_extension(nbapp): # If running under JupyterHub, add more metadata. if hasattr(nbapp, 'hub_prefix'): - logger.error('******\nhey, got a prefix\n\n') - page_config['hub_prefix'] = nbapp.hub_prefix - page_config['hub_host'] = nbapp.hub_host - page_config['hub_user'] = nbapp.user + settings['page_config_data']['hubPrefix'] = nbapp.hub_prefix + settings['page_config_data']['hubHost'] = nbapp.hub_host + settings['page_config_data']['hubUser'] = nbapp.user api_token = os.getenv('JUPYTERHUB_API_TOKEN', '') page_config['token'] = api_token else: diff --git a/packages/application/src/frontend.ts b/packages/application/src/frontend.ts index 7e80c7fc61ce..8b14400f1da4 100644 --- a/packages/application/src/frontend.ts +++ b/packages/application/src/frontend.ts @@ -272,6 +272,8 @@ export namespace JupyterFrontEnd { readonly themes: string; readonly tree: string; readonly workspaces: string; + readonly hubPrefix?: string; + readonly hubHost?: string; }; /** diff --git a/packages/application/src/lab.ts b/packages/application/src/lab.ts index f92c5f0cf7ae..50f5423a0619 100644 --- a/packages/application/src/lab.ts +++ b/packages/application/src/lab.ts @@ -244,7 +244,9 @@ export namespace JupyterLab { settings: PageConfig.getOption('settingsUrl'), themes: PageConfig.getOption('themesUrl'), tree: PageConfig.getOption('treeUrl'), - workspaces: PageConfig.getOption('workspacesUrl') + workspaces: PageConfig.getOption('workspacesUrl'), + hubHost: PageConfig.getOption('hubHost'), + hubPrefix: PageConfig.getOption('hubPrefix') }, directories: { appSettings: PageConfig.getOption('appSettingsDir'), diff --git a/packages/hub-extension/src/index.ts b/packages/hub-extension/src/index.ts index 67358160dab3..f11a1242bc74 100644 --- a/packages/hub-extension/src/index.ts +++ b/packages/hub-extension/src/index.ts @@ -12,7 +12,7 @@ import { JupyterFrontEndPlugin } from '@jupyterlab/application'; -import { PageConfig, URLExt } from '@jupyterlab/coreutils'; +import { URLExt } from '@jupyterlab/coreutils'; import { IMainMenu } from '@jupyterlab/mainmenu'; @@ -30,12 +30,13 @@ export namespace CommandIDs { */ function activateHubExtension( app: JupyterFrontEnd, + paths: JupyterFrontEnd.IPaths, palette: ICommandPalette, mainMenu: IMainMenu ): void { - const hubHost = PageConfig.getOption('hub_host'); - const hubPrefix = PageConfig.getOption('hub_prefix'); - const baseUrl = PageConfig.getBaseUrl(); + const hubHost = paths.urls.hubHost; + const hubPrefix = paths.urls.hubPrefix; + const baseUrl = paths.urls.base; // Bail if not running on JupyterHub. if (!hubPrefix) { @@ -82,7 +83,7 @@ function activateHubExtension( const hubExtension: JupyterFrontEndPlugin = { activate: activateHubExtension, id: 'jupyter.extensions.hub-extension', - requires: [ICommandPalette, IMainMenu], + requires: [JupyterFrontEnd.IPaths, ICommandPalette, IMainMenu], autoStart: true }; From 9f14551478b288c7c30ce79105c41fc726bf0c28 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 17:58:43 -0700 Subject: [PATCH 33/38] Use the right pageConfig. --- jupyterlab/extension.py | 8 +++----- packages/application/src/lab.ts | 4 ++-- packages/hub-extension/src/index.ts | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/jupyterlab/extension.py b/jupyterlab/extension.py index dc010ca8c83a..d6faf814dde8 100644 --- a/jupyterlab/extension.py +++ b/jupyterlab/extension.py @@ -206,13 +206,11 @@ def load_jupyter_server_extension(nbapp): # If running under JupyterHub, add more metadata. if hasattr(nbapp, 'hub_prefix'): - settings['page_config_data']['hubPrefix'] = nbapp.hub_prefix - settings['page_config_data']['hubHost'] = nbapp.hub_host - settings['page_config_data']['hubUser'] = nbapp.user + page_config['hubPrefix'] = nbapp.hub_prefix + page_config['hubHost'] = nbapp.hub_host + page_config['hubUser'] = nbapp.user api_token = os.getenv('JUPYTERHUB_API_TOKEN', '') page_config['token'] = api_token - else: - logger.error('*****\nhey, no prefix!\n\n') # Add the root handlers if we have not errored. if not errored: diff --git a/packages/application/src/lab.ts b/packages/application/src/lab.ts index 50f5423a0619..3530f2a36789 100644 --- a/packages/application/src/lab.ts +++ b/packages/application/src/lab.ts @@ -245,8 +245,8 @@ export namespace JupyterLab { themes: PageConfig.getOption('themesUrl'), tree: PageConfig.getOption('treeUrl'), workspaces: PageConfig.getOption('workspacesUrl'), - hubHost: PageConfig.getOption('hubHost'), - hubPrefix: PageConfig.getOption('hubPrefix') + hubHost: PageConfig.getOption('hubHost') || undefined, + hubPrefix: PageConfig.getOption('hubPrefix') || undefined }, directories: { appSettings: PageConfig.getOption('appSettingsDir'), diff --git a/packages/hub-extension/src/index.ts b/packages/hub-extension/src/index.ts index f11a1242bc74..65b25cb10141 100644 --- a/packages/hub-extension/src/index.ts +++ b/packages/hub-extension/src/index.ts @@ -39,7 +39,7 @@ function activateHubExtension( const baseUrl = paths.urls.base; // Bail if not running on JupyterHub. - if (!hubPrefix) { + if (!hubPrefix || !hubHost) { return; } From 908c2a51dc0350ea472ee63076b186d28b9d6b3e Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 18:09:12 -0700 Subject: [PATCH 34/38] Fix LabHubApp. --- jupyterlab/labhubapp.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/jupyterlab/labhubapp.py b/jupyterlab/labhubapp.py index 4aa6b892114f..d2d28cff21d2 100644 --- a/jupyterlab/labhubapp.py +++ b/jupyterlab/labhubapp.py @@ -1,4 +1,5 @@ import os +import warnings from traitlets import default @@ -18,8 +19,9 @@ def _default_url(self): return "/lab" def init_webapp(self, *args, **kwargs): - warnings.warn( - "SingleUserLabApp is deprecated, use SingleUserNotebookApp and set " + "c.Spawner.default_url = '/lab' in jupyterhub_config.py", DeprecationWarning + warnings.warn( + "SingleUserLabApp is deprecated, use SingleUserNotebookApp and set " + \ + "c.Spawner.default_url = '/lab' in jupyterhub_config.py", DeprecationWarning ) super().init_webapp(*args, **kwargs) From 83ac052e0fd565e250bf5698da7b3fd367630989 Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 18:45:14 -0700 Subject: [PATCH 35/38] This is an extension. --- dev_mode/package.json | 3 +++ packages/hub-extension/package.json | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/dev_mode/package.json b/dev_mode/package.json index 86b79eb815ba..f674a8dd87ab 100644 --- a/dev_mode/package.json +++ b/dev_mode/package.json @@ -34,6 +34,7 @@ "@jupyterlab/fileeditor-extension": "^1.0.0-alpha.9", "@jupyterlab/help-extension": "^1.0.0-alpha.9", "@jupyterlab/htmlviewer-extension": "^1.0.0-alpha.10", + "@jupyterlab/hub-extension": "^1.0.0-alpha.8", "@jupyterlab/imageviewer": "^1.0.0-alpha.9", "@jupyterlab/imageviewer-extension": "^1.0.0-alpha.9", "@jupyterlab/inspector-extension": "^1.0.0-alpha.9", @@ -130,6 +131,7 @@ "@jupyterlab/fileeditor-extension": "", "@jupyterlab/help-extension": "", "@jupyterlab/htmlviewer-extension": "", + "@jupyterlab/hub-extension": "", "@jupyterlab/imageviewer-extension": "", "@jupyterlab/inspector-extension": "", "@jupyterlab/launcher-extension": "", @@ -225,6 +227,7 @@ "@jupyterlab/fileeditor-extension": "../packages/fileeditor-extension", "@jupyterlab/help-extension": "../packages/help-extension", "@jupyterlab/htmlviewer-extension": "../packages/htmlviewer-extension", + "@jupyterlab/hub-extension": "../packages/hub-extension", "@jupyterlab/imageviewer-extension": "../packages/imageviewer-extension", "@jupyterlab/inspector-extension": "../packages/inspector-extension", "@jupyterlab/javascript-extension": "../packages/javascript-extension", diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json index 28bba4fe9731..37de72515bfa 100644 --- a/packages/hub-extension/package.json +++ b/packages/hub-extension/package.json @@ -32,8 +32,7 @@ "@jupyterlab/application": "^1.0.0-alpha.9", "@jupyterlab/apputils": "^1.0.0-alpha.9", "@jupyterlab/coreutils": "^3.0.0-alpha.9", - "@jupyterlab/mainmenu": "^1.0.0-alpha.9", - "@phosphor/widgets": "^1.7.0" + "@jupyterlab/mainmenu": "^1.0.0-alpha.9" }, "devDependencies": { "rimraf": "~2.6.2", @@ -41,5 +40,8 @@ }, "publishConfig": { "access": "public" + }, + "jupyterlab": { + "extension": true } } From 16f274a82161fc40ab07b0494393a92cc703bf1c Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 19:00:52 -0700 Subject: [PATCH 36/38] Add commands to file menu, command palette. --- packages/application/src/frontend.ts | 2 +- packages/hub-extension/src/index.ts | 31 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/packages/application/src/frontend.ts b/packages/application/src/frontend.ts index 8b14400f1da4..eebf857be248 100644 --- a/packages/application/src/frontend.ts +++ b/packages/application/src/frontend.ts @@ -43,7 +43,7 @@ export abstract class JupyterFrontEnd< // The default restored promise if one does not exist in the options. const restored = new Promise(resolve => { requestAnimationFrame(() => { - resolve(void 0); + resolve(); }); }); diff --git a/packages/hub-extension/src/index.ts b/packages/hub-extension/src/index.ts index 65b25cb10141..2d48c8ee60c9 100644 --- a/packages/hub-extension/src/index.ts +++ b/packages/hub-extension/src/index.ts @@ -3,11 +3,10 @@ | Distributed under the terms of the Modified BSD License. |----------------------------------------------------------------------------*/ -import { Menu } from '@phosphor/widgets'; - import { ICommandPalette } from '@jupyterlab/apputils'; import { + IRouter, JupyterFrontEnd, JupyterFrontEndPlugin } from '@jupyterlab/application'; @@ -30,16 +29,17 @@ export namespace CommandIDs { */ function activateHubExtension( app: JupyterFrontEnd, + router: IRouter, paths: JupyterFrontEnd.IPaths, palette: ICommandPalette, mainMenu: IMainMenu ): void { - const hubHost = paths.urls.hubHost; - const hubPrefix = paths.urls.hubPrefix; + const hubHost = paths.urls.hubHost || ''; + const hubPrefix = paths.urls.hubPrefix || ''; const baseUrl = paths.urls.base; // Bail if not running on JupyterHub. - if (!hubPrefix || !hubHost) { + if (!hubPrefix) { return; } @@ -48,11 +48,10 @@ function activateHubExtension( hubPrefix: hubPrefix }); - const category = 'Hub'; const { commands } = app; commands.addCommand(CommandIDs.controlPanel, { - label: 'Control Panel', + label: 'Hub Control Panel', caption: 'Open the Hub control panel in a new browser tab', execute: () => { window.open(hubHost + URLExt.join(hubPrefix, 'home'), '_blank'); @@ -60,7 +59,7 @@ function activateHubExtension( }); commands.addCommand(CommandIDs.logout, { - label: 'Logout', + label: 'Log Out', caption: 'Log out of the Hub', execute: () => { window.location.href = hubHost + URLExt.join(baseUrl, 'logout'); @@ -68,13 +67,13 @@ function activateHubExtension( }); // Add commands and menu itmes. - let menu = new Menu({ commands }); - menu.title.label = category; - [CommandIDs.controlPanel, CommandIDs.logout].forEach(command => { - palette.addItem({ command, category }); - menu.addItem({ command }); - }); - mainMenu.addMenu(menu, { rank: 100 }); + mainMenu.fileMenu.addGroup( + [{ command: CommandIDs.controlPanel }, { command: CommandIDs.logout }], + 100 + ); + const category = 'Hub'; + palette.addItem({ category, command: CommandIDs.controlPanel }); + palette.addItem({ category, command: CommandIDs.logout }); } /** @@ -83,7 +82,7 @@ function activateHubExtension( const hubExtension: JupyterFrontEndPlugin = { activate: activateHubExtension, id: 'jupyter.extensions.hub-extension', - requires: [JupyterFrontEnd.IPaths, ICommandPalette, IMainMenu], + requires: [IRouter, JupyterFrontEnd.IPaths, ICommandPalette, IMainMenu], autoStart: true }; From d5e1c617adf0fc168c9903f6ec161cd76b6314ec Mon Sep 17 00:00:00 2001 From: Ian Rose Date: Thu, 6 Jun 2019 19:55:26 -0700 Subject: [PATCH 37/38] If running im JupyterHub, provide a dialog that prompts the user to restart the server. --- packages/application-extension/src/index.tsx | 17 +---- packages/hub-extension/package.json | 3 +- packages/hub-extension/src/index.ts | 78 +++++++++++++++++++- packages/hub-extension/tsconfig.json | 3 + packages/services/src/kernel/manager.ts | 13 ++-- packages/services/src/manager.ts | 16 +--- packages/services/src/session/manager.ts | 13 ++-- packages/services/src/terminal/manager.ts | 13 ++-- 8 files changed, 110 insertions(+), 46 deletions(-) diff --git a/packages/application-extension/src/index.tsx b/packages/application-extension/src/index.tsx index d6377ccf79aa..e30dbda92962 100644 --- a/packages/application-extension/src/index.tsx +++ b/packages/application-extension/src/index.tsx @@ -2,7 +2,6 @@ // Distributed under the terms of the Modified BSD License. import { - ConnectionLost, IConnectionLost, ILabShell, ILabStatus, @@ -746,19 +745,6 @@ const paths: JupyterFrontEndPlugin = { provides: JupyterFrontEnd.IPaths }; -/** - * The default JupyterLab connection lost provider. This may be overridden - * to provide custom behavior when a connection to the server is lost. - */ -const connectionlost: JupyterFrontEndPlugin = { - id: '@jupyterlab/apputils-extension:connectionlost', - activate: (app: JupyterFrontEnd): IConnectionLost => { - return ConnectionLost; - }, - autoStart: true, - provides: IConnectionLost -}; - /** * Export the plugins as default. */ @@ -773,8 +759,7 @@ const plugins: JupyterFrontEndPlugin[] = [ shell, status, info, - paths, - connectionlost + paths ]; export default plugins; diff --git a/packages/hub-extension/package.json b/packages/hub-extension/package.json index 37de72515bfa..c2d80b8fddb9 100644 --- a/packages/hub-extension/package.json +++ b/packages/hub-extension/package.json @@ -32,7 +32,8 @@ "@jupyterlab/application": "^1.0.0-alpha.9", "@jupyterlab/apputils": "^1.0.0-alpha.9", "@jupyterlab/coreutils": "^3.0.0-alpha.9", - "@jupyterlab/mainmenu": "^1.0.0-alpha.9" + "@jupyterlab/mainmenu": "^1.0.0-alpha.9", + "@jupyterlab/services": "^4.0.0-alpha.9" }, "devDependencies": { "rimraf": "~2.6.2", diff --git a/packages/hub-extension/src/index.ts b/packages/hub-extension/src/index.ts index 2d48c8ee60c9..97354c4b6238 100644 --- a/packages/hub-extension/src/index.ts +++ b/packages/hub-extension/src/index.ts @@ -3,9 +3,11 @@ | Distributed under the terms of the Modified BSD License. |----------------------------------------------------------------------------*/ -import { ICommandPalette } from '@jupyterlab/apputils'; +import { Dialog, ICommandPalette, showDialog } from '@jupyterlab/apputils'; import { + ConnectionLost, + IConnectionLost, IRouter, JupyterFrontEnd, JupyterFrontEndPlugin @@ -15,6 +17,8 @@ import { URLExt } from '@jupyterlab/coreutils'; import { IMainMenu } from '@jupyterlab/mainmenu'; +import { ServerConnection, ServiceManager } from '@jupyterlab/services'; + /** * The command IDs used by the plugin. */ @@ -22,6 +26,8 @@ export namespace CommandIDs { export const controlPanel: string = 'hub:control-panel'; export const logout: string = 'hub:logout'; + + export const restart: string = 'hub:restart'; } /** @@ -50,6 +56,20 @@ function activateHubExtension( const { commands } = app; + // TODO: use /spawn/:user/:name + // but that requires jupyterhub 1.0 + // and jupyterlab to pass username, servername to PageConfig + const restartUrl = + hubHost + URLExt.join(hubPrefix, `spawn?next=${hubPrefix}home`); + + commands.addCommand(CommandIDs.restart, { + label: 'Restart Server', + caption: 'Request that the Hub restart this server', + execute: () => { + window.open(restartUrl, '_blank'); + } + }); + commands.addCommand(CommandIDs.controlPanel, { label: 'Hub Control Panel', caption: 'Open the Hub control panel in a new browser tab', @@ -86,4 +106,58 @@ const hubExtension: JupyterFrontEndPlugin = { autoStart: true }; -export default hubExtension; +/** + * The default JupyterLab connection lost provider. This may be overridden + * to provide custom behavior when a connection to the server is lost. + * + * If the application is being deployed within a JupyterHub context, + * this will provide a dialog that prompts the user to restart the server. + * Otherwise, it shows an error dialog. + */ +const connectionlost: JupyterFrontEndPlugin = { + id: '@jupyterlab/apputils-extension:connectionlost', + requires: [JupyterFrontEnd.IPaths], + activate: ( + app: JupyterFrontEnd, + paths: JupyterFrontEnd.IPaths + ): IConnectionLost => { + const hubPrefix = paths.urls.hubPrefix || ''; + const baseUrl = paths.urls.base; + + // Return the default error message if not running on JupyterHub. + if (!hubPrefix) { + return ConnectionLost; + } + + // If we are running on JupyterHub, return a dialog + // that prompts the user to restart their server. + let showingError = false; + const onConnectionLost: IConnectionLost = async ( + manager: ServiceManager.IManager, + err: ServerConnection.NetworkError + ): Promise => { + if (showingError) { + return; + } + showingError = true; + const result = await showDialog({ + title: 'Server Not Running', + body: `Your server at ${baseUrl} is not running. +Would you like to restart it?`, + buttons: [ + Dialog.okButton({ label: 'Restart' }), + Dialog.cancelButton({ label: 'Dismiss' }) + ] + }); + showingError = false; + if (result.button.accept) { + await app.commands.execute(CommandIDs.restart); + } + }; + return onConnectionLost; + }, + autoStart: true, + provides: IConnectionLost +}; + +export default [hubExtension, connectionlost] as JupyterFrontEndPlugin[]; diff --git a/packages/hub-extension/tsconfig.json b/packages/hub-extension/tsconfig.json index 17ecbea70fb2..df557cb832f7 100644 --- a/packages/hub-extension/tsconfig.json +++ b/packages/hub-extension/tsconfig.json @@ -17,6 +17,9 @@ }, { "path": "../mainmenu" + }, + { + "path": "../services" } ] } diff --git a/packages/services/src/kernel/manager.ts b/packages/services/src/kernel/manager.ts index 73230ea4c737..ec2c407a3b66 100644 --- a/packages/services/src/kernel/manager.ts +++ b/packages/services/src/kernel/manager.ts @@ -116,7 +116,7 @@ export class KernelManager implements Kernel.IManager { /** * A signal emitted when there is a connection failure. */ - get connectionFailure(): ISignal { + get connectionFailure(): ISignal { return this._connectionFailure; } @@ -280,7 +280,12 @@ export class KernelManager implements Kernel.IManager { */ protected async requestRunning(): Promise { const models = await Kernel.listRunning(this.serverSettings).catch(err => { - if (err instanceof ServerConnection.NetworkError) { + // Check for a network error, or a 503 error, which is returned + // by a JupyterHub when a server is shut down. + if ( + err instanceof ServerConnection.NetworkError || + (err.response && err.response.status === 503) + ) { this._connectionFailure.emit(err); return [] as Kernel.IModel[]; } @@ -354,9 +359,7 @@ export class KernelManager implements Kernel.IManager { private _runningChanged = new Signal(this); private _specs: Kernel.ISpecModels | null = null; private _specsChanged = new Signal(this); - private _connectionFailure = new Signal( - this - ); + private _connectionFailure = new Signal(this); } /** diff --git a/packages/services/src/manager.ts b/packages/services/src/manager.ts index 9a01362276cc..111e092313f6 100644 --- a/packages/services/src/manager.ts +++ b/packages/services/src/manager.ts @@ -78,7 +78,7 @@ export class ServiceManager implements ServiceManager.IManager { /** * A signal emitted when there is a connection failure with the kernel. */ - get connectionFailure(): ISignal { + get connectionFailure(): ISignal { return this._connectionFailure; } @@ -166,19 +166,14 @@ export class ServiceManager implements ServiceManager.IManager { return this._readyPromise; } - private _onConnectionFailure( - sender: any, - err: ServerConnection.NetworkError - ): void { + private _onConnectionFailure(sender: any, err: Error): void { this._connectionFailure.emit(err); } private _isDisposed = false; private _readyPromise: Promise; private _specsChanged = new Signal(this); - private _connectionFailure = new Signal( - this - ); + private _connectionFailure = new Signal(this); private _isReady = false; } @@ -253,10 +248,7 @@ export namespace ServiceManager { /** * A signal emitted when there is a connection failure with the server. */ - readonly connectionFailure: ISignal< - IManager, - ServerConnection.NetworkError - >; + readonly connectionFailure: ISignal; } /** diff --git a/packages/services/src/session/manager.ts b/packages/services/src/session/manager.ts index 450f9d1dbfb3..9b7436c395c6 100644 --- a/packages/services/src/session/manager.ts +++ b/packages/services/src/session/manager.ts @@ -85,7 +85,7 @@ export class SessionManager implements Session.IManager { /** * A signal emitted when there is a connection failure. */ - get connectionFailure(): ISignal { + get connectionFailure(): ISignal { return this._connectionFailure; } @@ -289,7 +289,12 @@ export class SessionManager implements Session.IManager { */ protected async requestRunning(): Promise { const models = await Session.listRunning(this.serverSettings).catch(err => { - if (err instanceof ServerConnection.NetworkError) { + // Check for a network error, or a 503 error, which is returned + // by a JupyterHub when a server is shut down. + if ( + err instanceof ServerConnection.NetworkError || + (err.response && err.response.status === 503) + ) { this._connectionFailure.emit(err); return [] as Session.IModel[]; } @@ -380,9 +385,7 @@ export class SessionManager implements Session.IManager { private _pollSpecs: Poll; private _ready: Promise; private _runningChanged = new Signal(this); - private _connectionFailure = new Signal( - this - ); + private _connectionFailure = new Signal(this); private _sessions = new Set(); private _specs: Kernel.ISpecModels | null = null; private _specsChanged = new Signal(this); diff --git a/packages/services/src/terminal/manager.ts b/packages/services/src/terminal/manager.ts index 84b9df779428..f04cace1ef45 100644 --- a/packages/services/src/terminal/manager.ts +++ b/packages/services/src/terminal/manager.ts @@ -69,7 +69,7 @@ export class TerminalManager implements TerminalSession.IManager { /** * A signal emitted when there is a connection failure. */ - get connectionFailure(): ISignal { + get connectionFailure(): ISignal { return this._connectionFailure; } @@ -246,7 +246,12 @@ export class TerminalManager implements TerminalSession.IManager { protected async requestRunning(): Promise { const models = await TerminalSession.listRunning(this.serverSettings).catch( err => { - if (err instanceof ServerConnection.NetworkError) { + // Check for a network error, or a 503 error, which is returned + // by a JupyterHub when a server is shut down. + if ( + err instanceof ServerConnection.NetworkError || + (err.response && err.response.status === 503) + ) { this._connectionFailure.emit(err); return [] as TerminalSession.IModel[]; } @@ -325,9 +330,7 @@ export class TerminalManager implements TerminalSession.IManager { private _sessions = new Set(); private _ready: Promise; private _runningChanged = new Signal(this); - private _connectionFailure = new Signal( - this - ); + private _connectionFailure = new Signal(this); } /** From 3293670973096a8a04aff69d60395f4b4a32b48b Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Sun, 9 Jun 2019 04:03:45 -0500 Subject: [PATCH 38/38] remove dependency on hub extension --- packages/application-extension/src/index.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/application-extension/src/index.tsx b/packages/application-extension/src/index.tsx index e30dbda92962..a0fbf64230e1 100644 --- a/packages/application-extension/src/index.tsx +++ b/packages/application-extension/src/index.tsx @@ -7,6 +7,7 @@ import { ILabStatus, ILayoutRestorer, IRouter, + ConnectionLost, JupyterFrontEnd, JupyterFrontEndPlugin, JupyterLab, @@ -74,13 +75,14 @@ namespace CommandIDs { */ const main: JupyterFrontEndPlugin = { id: '@jupyterlab/application-extension:main', - requires: [ICommandPalette, IConnectionLost, IRouter, IWindowResolver], + requires: [ICommandPalette, IRouter, IWindowResolver], + optional: [IConnectionLost], activate: ( app: JupyterFrontEnd, palette: ICommandPalette, - connectionLost: IConnectionLost, router: IRouter, - resolver: IWindowResolver + resolver: IWindowResolver, + connectionLost: IConnectionLost | undefined ) => { if (!(app instanceof JupyterLab)) { throw new Error(`${main.id} must be activated in JupyterLab.`); @@ -111,7 +113,8 @@ const main: JupyterFrontEndPlugin = { }); // If the connection to the server is lost, handle it with the - // connection lost token. + // connection lost handler. + connectionLost = connectionLost || ConnectionLost; app.serviceManager.connectionFailure.connect(connectionLost); const builder = app.serviceManager.builder;