##// END OF EJS Templates
Move language info from kernelspec to kernel_info_reply
Thomas Kluyver -
Show More
@@ -207,9 +207,18 b' define(['
207 });
207 });
208
208
209 this.events.on('spec_changed.Kernel', function(event, data) {
209 this.events.on('spec_changed.Kernel', function(event, data) {
210 that.set_kernelspec_metadata(data);
210 that.metadata.kernelspec =
211 {name: data.name, display_name: data.display_name};
212 });
213
214 this.events.on('kernel_ready.Kernel', function(event, data) {
215 var kinfo = data.kernel.info_reply
216 var langinfo = kinfo.language_info || {};
217 if (!langinfo.name) langinfo.name = kinfo.language;
218
219 that.metadata.language_info = langinfo;
211 // Mode 'null' should be plain, unhighlighted text.
220 // Mode 'null' should be plain, unhighlighted text.
212 cm_mode = data.codemirror_mode || data.language || 'null'
221 var cm_mode = langinfo.codemirror_mode || langinfo.language || 'null'
213 that.set_codemirror_mode(cm_mode);
222 that.set_codemirror_mode(cm_mode);
214 });
223 });
215
224
@@ -329,21 +338,11 b' define(['
329 md: this.metadata,
338 md: this.metadata,
330 callback: function (md) {
339 callback: function (md) {
331 that.metadata = md;
340 that.metadata = md;
332 },
341 },
333 name: 'Notebook',
342 name: 'Notebook',
334 notebook: this,
343 notebook: this,
335 keyboard_manager: this.keyboard_manager});
344 keyboard_manager: this.keyboard_manager});
336 };
345 };
337
338 Notebook.prototype.set_kernelspec_metadata = function(ks) {
339 var tostore = {};
340 $.map(ks, function(value, field) {
341 if (field !== 'argv' && field !== 'env') {
342 tostore[field] = value;
343 }
344 });
345 this.metadata.kernelspec = tostore;
346 }
347
346
348 // Cell indexing, retrieval, etc.
347 // Cell indexing, retrieval, etc.
349
348
@@ -1811,6 +1810,14 b' define(['
1811 this.events.trigger('spec_changed.Kernel', this.metadata.kernelspec);
1810 this.events.trigger('spec_changed.Kernel', this.metadata.kernelspec);
1812 }
1811 }
1813
1812
1813 // Set the codemirror mode from language_info metadata
1814 if (this.metadata.language_info !== undefined) {
1815 var langinfo = this.metadata.language_info;
1816 // Mode 'null' should be plain, unhighlighted text.
1817 var cm_mode = langinfo.codemirror_mode || langinfo.language || 'null'
1818 this.set_codemirror_mode(cm_mode);
1819 }
1820
1814 // Only handle 1 worksheet for now.
1821 // Only handle 1 worksheet for now.
1815 var worksheet = content.worksheets[0];
1822 var worksheet = content.worksheets[0];
1816 if (worksheet !== undefined) {
1823 if (worksheet !== undefined) {
@@ -46,6 +46,7 b' define(['
46 this.username = "username";
46 this.username = "username";
47 this.session_id = utils.uuid();
47 this.session_id = utils.uuid();
48 this._msg_callbacks = {};
48 this._msg_callbacks = {};
49 this.info_reply = {}; // kernel_info_reply stored here after starting
49
50
50 if (typeof(WebSocket) !== 'undefined') {
51 if (typeof(WebSocket) !== 'undefined') {
51 this.WebSocket = WebSocket;
52 this.WebSocket = WebSocket;
@@ -398,7 +399,8 b' define(['
398 this.events.trigger('kernel_starting.Kernel', {kernel: this});
399 this.events.trigger('kernel_starting.Kernel', {kernel: this});
399 // get kernel info so we know what state the kernel is in
400 // get kernel info so we know what state the kernel is in
400 var that = this;
401 var that = this;
401 this.kernel_info(function () {
402 this.kernel_info(function (reply) {
403 that.info_reply = reply.content;
402 that.events.trigger('kernel_ready.Kernel', {kernel: that});
404 that.events.trigger('kernel_ready.Kernel', {kernel: that});
403 });
405 });
404 };
406 };
@@ -925,7 +927,8 b' define(['
925 } else if (execution_state === 'starting') {
927 } else if (execution_state === 'starting') {
926 this.events.trigger('kernel_starting.Kernel', {kernel: this});
928 this.events.trigger('kernel_starting.Kernel', {kernel: this});
927 var that = this;
929 var that = this;
928 this.kernel_info(function () {
930 this.kernel_info(function (reply) {
931 that.info_reply = reply.content;
929 that.events.trigger('kernel_ready.Kernel', {kernel: that});
932 that.events.trigger('kernel_ready.Kernel', {kernel: that});
930 });
933 });
931
934
@@ -36,18 +36,9 b' def _pythonfirst(s):'
36 class KernelSpec(HasTraits):
36 class KernelSpec(HasTraits):
37 argv = List()
37 argv = List()
38 display_name = Unicode()
38 display_name = Unicode()
39 language = Unicode()
40 codemirror_mode = Any() # can be unicode or dict
41 pygments_lexer = Unicode()
42 env = Dict()
39 env = Dict()
43 resource_dir = Unicode()
40 resource_dir = Unicode()
44
41
45 def _codemirror_mode_default(self):
46 return self.language
47
48 def _pygments_lexer_default(self):
49 return self.language
50
51 @classmethod
42 @classmethod
52 def from_resource_dir(cls, resource_dir):
43 def from_resource_dir(cls, resource_dir):
53 """Create a KernelSpec object by reading kernel.json
44 """Create a KernelSpec object by reading kernel.json
@@ -63,12 +54,7 b' class KernelSpec(HasTraits):'
63 d = dict(argv=self.argv,
54 d = dict(argv=self.argv,
64 env=self.env,
55 env=self.env,
65 display_name=self.display_name,
56 display_name=self.display_name,
66 language=self.language,
67 )
57 )
68 if self.codemirror_mode != self.language:
69 d['codemirror_mode'] = self.codemirror_mode
70 if self.pygments_lexer != self.language:
71 d['pygments_lexer'] = self.pygments_lexer
72
58
73 return d
59 return d
74
60
@@ -118,12 +104,8 b' class KernelSpecManager(HasTraits):'
118 process. This will put its informatino in the user kernels directory.
104 process. This will put its informatino in the user kernels directory.
119 """
105 """
120 return {'argv': make_ipkernel_cmd(),
106 return {'argv': make_ipkernel_cmd(),
121 'display_name': 'IPython (Python %d)' % (3 if PY3 else 2),
107 'display_name': 'IPython (Python %d)' % (3 if PY3 else 2),
122 'language': 'python',
108 }
123 'codemirror_mode': {'name': 'ipython',
124 'version': sys.version_info[0]},
125 'pygments_lexer': 'ipython%d' % (3 if PY3 else 2),
126 }
127
109
128 @property
110 @property
129 def _native_kernel_resource_dir(self):
111 def _native_kernel_resource_dir(self):
@@ -68,6 +68,11 b' class IPythonKernel(KernelBase):'
68 implementation_version = release.version
68 implementation_version = release.version
69 language = 'python'
69 language = 'python'
70 language_version = sys.version.split()[0]
70 language_version = sys.version.split()[0]
71 language_info = {'mimetype': 'text/x-python',
72 'codemirror_mode': {'name': 'ipython',
73 'version': sys.version_info[0]},
74 'pygments_lexer': 'ipython%d' % (3 if PY3 else 2),
75 }
71 @property
76 @property
72 def banner(self):
77 def banner(self):
73 return self.shell.banner
78 return self.shell.banner
@@ -60,6 +60,10 b' class Kernel(SingletonConfigurable):'
60 def _ident_default(self):
60 def _ident_default(self):
61 return unicode_type(uuid.uuid4())
61 return unicode_type(uuid.uuid4())
62
62
63 # This should be overridden by wrapper kernels that implement any real
64 # language.
65 language_info = {}
66
63 # Private interface
67 # Private interface
64
68
65 _darwin_app_nap = Bool(True, config=True,
69 _darwin_app_nap = Bool(True, config=True,
@@ -453,6 +457,7 b' class Kernel(SingletonConfigurable):'
453 'implementation_version': self.implementation_version,
457 'implementation_version': self.implementation_version,
454 'language': self.language,
458 'language': self.language,
455 'language_version': self.language_version,
459 'language_version': self.language_version,
460 'language_info': self.language_info,
456 'banner': self.banner,
461 'banner': self.banner,
457 }
462 }
458
463
General Comments 0
You need to be logged in to leave comments. Login now