From 974d45343e9e3ae498c1b33ba23817360cd8df57 Mon Sep 17 00:00:00 2001 From: MinRK Date: Sat, 27 Sep 2014 15:16:42 -0700 Subject: [PATCH 1/2] allow kernel_name to be undefined in requests fallback to KM.default_kernel_name in that case --- IPython/html/services/sessions/handlers.py | 3 ++- .../html/services/sessions/sessionmanager.py | 24 ++++--------------- 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/IPython/html/services/sessions/handlers.py b/IPython/html/services/sessions/handlers.py index 691339f0d..98def21a5 100644 --- a/IPython/html/services/sessions/handlers.py +++ b/IPython/html/services/sessions/handlers.py @@ -45,7 +45,8 @@ class SessionRootHandler(IPythonHandler): try: kernel_name = model['kernel']['name'] except KeyError: - raise web.HTTPError(400, "Missing field in JSON data: kernel.name") + self.log.debug("No kernel name specified, using default kernel") + kernel_name = None # Check to see if session exists if sm.session_exists(name=name, path=path): diff --git a/IPython/html/services/sessions/sessionmanager.py b/IPython/html/services/sessions/sessionmanager.py index b105344c1..fc1674b3c 100644 --- a/IPython/html/services/sessions/sessionmanager.py +++ b/IPython/html/services/sessions/sessionmanager.py @@ -1,20 +1,7 @@ -"""A base class session manager. +"""A base class session manager.""" -Authors: - -* Zach Sailer -""" - -#----------------------------------------------------------------------------- -# Copyright (C) 2013 The IPython Development Team -# -# Distributed under the terms of the BSD License. The full license is in -# the file COPYING, distributed as part of this software. -#----------------------------------------------------------------------------- - -#----------------------------------------------------------------------------- -# Imports -#----------------------------------------------------------------------------- +# Copyright (c) IPython Development Team. +# Distributed under the terms of the Modified BSD License. import uuid import sqlite3 @@ -25,9 +12,6 @@ from IPython.config.configurable import LoggingConfigurable from IPython.utils.py3compat import unicode_type from IPython.utils.traitlets import Instance -#----------------------------------------------------------------------------- -# Classes -#----------------------------------------------------------------------------- class SessionManager(LoggingConfigurable): @@ -73,7 +57,7 @@ class SessionManager(LoggingConfigurable): "Create a uuid for a new session" return unicode_type(uuid.uuid4()) - def create_session(self, name=None, path=None, kernel_name='python'): + def create_session(self, name=None, path=None, kernel_name=None): """Creates a session and returns its model""" session_id = self.new_session_id() # allow nbm to specify kernels cwd From 072bcdc4842854c953e4d07be2258e47fb253548 Mon Sep 17 00:00:00 2001 From: MinRK Date: Sat, 27 Sep 2014 15:16:42 -0700 Subject: [PATCH 2/2] allow kernel_name to be undefined in js Falls back to KM.default_kernel_name, as configured server-side. --- IPython/html/static/notebook/js/kernelselector.js | 2 +- IPython/html/static/notebook/js/notebook.js | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/IPython/html/static/notebook/js/kernelselector.js b/IPython/html/static/notebook/js/kernelselector.js index ce9b91960..759b97e3c 100644 --- a/IPython/html/static/notebook/js/kernelselector.js +++ b/IPython/html/static/notebook/js/kernelselector.js @@ -12,7 +12,7 @@ define([ this.selector = selector; this.notebook = notebook; this.events = notebook.events; - this.current_selection = notebook.default_kernel_name; + this.current_selection = null; this.kernelspecs = {}; if (this.selector !== undefined) { this.element = $(selector); diff --git a/IPython/html/static/notebook/js/notebook.js b/IPython/html/static/notebook/js/notebook.js index ac8b220a3..6603fa3e7 100644 --- a/IPython/html/static/notebook/js/notebook.js +++ b/IPython/html/static/notebook/js/notebook.js @@ -70,9 +70,6 @@ define([ // Create default scroll manager. this.scroll_manager = new scrollmanager.ScrollManager(this); - // default_kernel_name is a temporary measure while we implement proper - // kernel selection and delayed start. Do not rely on it. - this.default_kernel_name = 'python'; // TODO: This code smells (and the other `= this` line a couple lines down) // We need a better way to deal with circular instance references. this.keyboard_manager.notebook = this; @@ -1565,9 +1562,6 @@ define([ */ Notebook.prototype.start_session = function (kernel_name) { var that = this; - if (kernel_name === undefined) { - kernel_name = this.default_kernel_name; - } if (this._session_starting) { throw new session.SessionAlreadyStarting(); } @@ -2332,7 +2326,7 @@ define([ // code execution upon loading, which is a security risk. if (this.session === null) { var kernelspec = this.metadata.kernelspec || {}; - var kernel_name = kernelspec.name || this.default_kernel_name; + var kernel_name = kernelspec.name; this.start_session(kernel_name); }