handlers.py
56 lines
| 1.6 KiB
| text/x-python
|
PythonLexer
Thomas Kluyver
|
r16684 | """Tornado handlers for kernel specifications.""" | ||
# Copyright (c) IPython Development Team. | ||||
# Distributed under the terms of the Modified BSD License. | ||||
Thomas Kluyver
|
r17020 | import json | ||
Thomas Kluyver
|
r16684 | from tornado import web | ||
Thomas Kluyver
|
r16689 | from ...base.handlers import IPythonHandler, json_errors | ||
Thomas Kluyver
|
r16684 | |||
Thomas Kluyver
|
r17381 | from IPython.kernel.kernelspec import _pythonfirst | ||
Thomas Kluyver
|
r16684 | |||
class MainKernelSpecHandler(IPythonHandler): | ||||
SUPPORTED_METHODS = ('GET',) | ||||
@web.authenticated | ||||
@json_errors | ||||
def get(self): | ||||
ksm = self.kernel_spec_manager | ||||
results = [] | ||||
Thomas Kluyver
|
r17381 | for kernel_name in sorted(ksm.find_kernel_specs(), key=_pythonfirst): | ||
Min RK
|
r18552 | try: | ||
d = ksm.get_kernel_spec(kernel_name).to_dict() | ||||
except Exception: | ||||
self.log.error("Failed to load kernel spec: '%s'", kernel_name, exc_info=True) | ||||
continue | ||||
Thomas Kluyver
|
r16714 | d['name'] = kernel_name | ||
results.append(d) | ||||
Thomas Kluyver
|
r16684 | |||
self.set_header("Content-Type", 'application/json') | ||||
Thomas Kluyver
|
r17020 | self.finish(json.dumps(results)) | ||
Thomas Kluyver
|
r16684 | |||
class KernelSpecHandler(IPythonHandler): | ||||
SUPPORTED_METHODS = ('GET',) | ||||
@web.authenticated | ||||
@json_errors | ||||
def get(self, kernel_name): | ||||
ksm = self.kernel_spec_manager | ||||
Thomas Kluyver
|
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
|
r16684 | self.set_header("Content-Type", 'application/json') | ||
self.finish(kernelspec.to_json()) | ||||
# URL to handler mappings | ||||
Thomas Kluyver
|
r16706 | kernel_name_regex = r"(?P<kernel_name>\w+)" | ||
Thomas Kluyver
|
r16684 | |||
default_handlers = [ | ||||
(r"/api/kernelspecs", MainKernelSpecHandler), | ||||
Thomas Kluyver
|
r16706 | (r"/api/kernelspecs/%s" % kernel_name_regex, KernelSpecHandler), | ||
Thomas Kluyver
|
r16684 | ] | ||