diff --git a/IPython/html/notebookapp.py b/IPython/html/notebookapp.py
index 4dff35c..be61f1c 100644
--- a/IPython/html/notebookapp.py
+++ b/IPython/html/notebookapp.py
@@ -1,23 +1,11 @@
# coding: utf-8
-"""A tornado based IPython notebook server.
+"""A tornado based IPython notebook server."""
-Authors:
+# Copyright (c) IPython Development Team.
+# Distributed under the terms of the Modified BSD License.
-* Brian Granger
-"""
from __future__ import print_function
-#-----------------------------------------------------------------------------
-# 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
-#-----------------------------------------------------------------------------
-
-# stdlib
import errno
import io
import json
@@ -33,7 +21,6 @@ import time
import webbrowser
-# Third party
# check for pyzmq 2.1.11
from IPython.utils.zmqrelated import check_for_zmq
check_for_zmq('2.1.11', 'IPython.html')
@@ -61,7 +48,6 @@ if version_info < (3,1,0):
from tornado import httpserver
from tornado import web
-# Our own libraries
from IPython.html import DEFAULT_STATIC_FILES_PATH
from .base.handlers import Template404
from .log import log_request
@@ -75,15 +61,12 @@ from .base.handlers import AuthenticatedFileHandler, FileFindHandler
from IPython.config import Config
from IPython.config.application import catch_config_error, boolean_flag
-from IPython.core.application import BaseIPythonApplication
-from IPython.core.profiledir import ProfileDir
-from IPython.consoleapp import IPythonConsoleApp
-from IPython.kernel import swallow_argv
-from IPython.kernel.zmq.session import default_secure
-from IPython.kernel.zmq.kernelapp import (
- kernel_flags,
- kernel_aliases,
+from IPython.core.application import (
+ BaseIPythonApplication, base_flags, base_aliases,
)
+from IPython.core.profiledir import ProfileDir
+from IPython.kernel import KernelManager
+from IPython.kernel.zmq.session import default_secure, Session
from IPython.nbformat.sign import NotebookNotary
from IPython.utils.importstring import import_item
from IPython.utils import submodule
@@ -248,11 +231,15 @@ class NbserverListApp(BaseIPythonApplication):
# Aliases and Flags
#-----------------------------------------------------------------------------
-flags = dict(kernel_flags)
+flags = dict(base_flags)
flags['no-browser']=(
{'NotebookApp' : {'open_browser' : False}},
"Don't open the notebook in a browser after startup."
)
+flags['pylab']=(
+ {'NotebookApp' : {'pylab' : 'warn'}},
+ "DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib."
+)
flags['no-mathjax']=(
{'NotebookApp' : {'enable_mathjax' : False}},
"""Disable MathJax
@@ -270,12 +257,7 @@ flags.update(boolean_flag('script', 'FileNotebookManager.save_script',
'Auto-save a .py script everytime the .ipynb notebook is saved',
'Do not auto-save .py scripts for every notebook'))
-# the flags that are specific to the frontend
-# these must be scrubbed before being passed to the kernel,
-# or it will raise an error on unrecognized flags
-notebook_flags = ['no-browser', 'no-mathjax', 'script', 'no-script']
-
-aliases = dict(kernel_aliases)
+aliases = dict(base_aliases)
aliases.update({
'ip': 'NotebookApp.ip',
@@ -286,15 +268,9 @@ aliases.update({
'certfile': 'NotebookApp.certfile',
'notebook-dir': 'NotebookApp.notebook_dir',
'browser': 'NotebookApp.browser',
+ 'pylab': 'NotebookApp.pylab',
})
-# remove ipkernel flags that are singletons, and don't make sense in
-# multi-kernel evironment:
-aliases.pop('f', None)
-
-notebook_aliases = [u'port', u'port-retries', u'ip', u'keyfile', u'certfile',
- u'notebook-dir', u'profile', u'profile-dir', 'browser']
-
#-----------------------------------------------------------------------------
# NotebookApp
#-----------------------------------------------------------------------------
@@ -310,9 +286,13 @@ class NotebookApp(BaseIPythonApplication):
HTML5/Javascript Notebook client.
"""
examples = _examples
+ aliases = aliases
+ flags = flags
- classes = IPythonConsoleApp.classes + [MappingKernelManager, NotebookManager,
- FileNotebookManager, NotebookNotary]
+ classes = [
+ KernelManager, ProfileDir, Session, MappingKernelManager,
+ NotebookManager, FileNotebookManager, NotebookNotary,
+ ]
flags = Dict(flags)
aliases = Dict(aliases)
@@ -524,6 +504,23 @@ class NotebookApp(BaseIPythonApplication):
notebook_dir = Unicode(py3compat.getcwd(), config=True,
help="The directory to use for notebooks and kernels."
)
+
+ pylab = Unicode('disabled', config=True,
+ help="""
+ DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.
+ """
+ )
+ def _pylab_changed(self, name, old, new):
+ """when --pylab is specified, display a warning and exit"""
+ if new != 'warn':
+ backend = ' %s' % new
+ else:
+ backend = ''
+ self.log.error("Support for specifying --pylab on the command line has been removed.")
+ self.log.error(
+ "Please use `%pylab{0}` or `%matplotlib{0}` in the notebook itself.".format(backend)
+ )
+ self.exit(1)
def _notebook_dir_changed(self, name, old, new):
"""Do a bit of validation of the notebook dir."""
@@ -561,16 +558,7 @@ class NotebookApp(BaseIPythonApplication):
def init_kernel_argv(self):
"""construct the kernel arguments"""
- # Scrub frontend-specific flags
- self.kernel_argv = swallow_argv(self.argv, notebook_aliases, notebook_flags)
- if any(arg.startswith(u'--pylab') for arg in self.kernel_argv):
- self.log.warn('\n '.join([
- "Starting all kernels in pylab mode is not recommended,",
- "and will be disabled in a future release.",
- "Please use the %matplotlib magic to enable matplotlib instead.",
- "pylab implies many imports, which can have confusing side effects",
- "and harm the reproducibility of your notebooks.",
- ]))
+ self.kernel_argv = []
# Kernel should inherit default config file from frontend
self.kernel_argv.append("--IPKernelApp.parent_appname='%s'" % self.name)
# Kernel should get *absolute* path to profile directory