##// END OF EJS Templates
Merge pull request #6335 from jasongrout/patch-7...
Merge pull request #6335 from jasongrout/patch-7 Add env to the kernelspec __init__

File last commit:

r17381:b4aa8980
r17694:100dd64b merge
Show More
handlers.py
52 lines | 1.5 KiB | text/x-python | PythonLexer
Thomas Kluyver
Create REST API for kernel specs
r16684 """Tornado handlers for kernel specifications."""
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
Thomas Kluyver
Use stdlib json, not zmq jsonapi
r17020 import json
Thomas Kluyver
Create REST API for kernel specs
r16684 from tornado import web
Thomas Kluyver
Test kernel specs REST API...
r16689 from ...base.handlers import IPythonHandler, json_errors
Thomas Kluyver
Create REST API for kernel specs
r16684
Thomas Kluyver
Deterministic order for kernels in notebook UI
r17381 from IPython.kernel.kernelspec import _pythonfirst
Thomas Kluyver
Create REST API for kernel specs
r16684
class MainKernelSpecHandler(IPythonHandler):
SUPPORTED_METHODS = ('GET',)
@web.authenticated
@json_errors
def get(self):
ksm = self.kernel_spec_manager
results = []
Thomas Kluyver
Deterministic order for kernels in notebook UI
r17381 for kernel_name in sorted(ksm.find_kernel_specs(), key=_pythonfirst):
Thomas Kluyver
Put full kernel info in REST API response for all kernels
r16714 d = ksm.get_kernel_spec(kernel_name).to_dict()
d['name'] = kernel_name
results.append(d)
Thomas Kluyver
Create REST API for kernel specs
r16684
self.set_header("Content-Type", 'application/json')
Thomas Kluyver
Use stdlib json, not zmq jsonapi
r17020 self.finish(json.dumps(results))
Thomas Kluyver
Create REST API for kernel specs
r16684
class KernelSpecHandler(IPythonHandler):
SUPPORTED_METHODS = ('GET',)
@web.authenticated
@json_errors
def get(self, kernel_name):
ksm = self.kernel_spec_manager
Thomas Kluyver
Test kernel specs REST API...
r16689 try:
kernelspec = ksm.get_kernel_spec(kernel_name)
except KeyError:
raise web.HTTPError(404, u'Kernel spec %s not found' % kernel_name)
Thomas Kluyver
Create REST API for kernel specs
r16684 self.set_header("Content-Type", 'application/json')
self.finish(kernelspec.to_json())
# URL to handler mappings
Thomas Kluyver
Refactor kernelspec resource handler to separate URL prefix
r16706 kernel_name_regex = r"(?P<kernel_name>\w+)"
Thomas Kluyver
Create REST API for kernel specs
r16684
default_handlers = [
(r"/api/kernelspecs", MainKernelSpecHandler),
Thomas Kluyver
Refactor kernelspec resource handler to separate URL prefix
r16706 (r"/api/kernelspecs/%s" % kernel_name_regex, KernelSpecHandler),
Thomas Kluyver
Create REST API for kernel specs
r16684 ]