Show More
@@ -194,6 +194,7 b' class ShellChannel(ZMQSocketChannel):' | |||
|
194 | 194 | 'history', |
|
195 | 195 | 'kernel_info', |
|
196 | 196 | 'shutdown', |
|
197 | 'is_complete', | |
|
197 | 198 | ] |
|
198 | 199 | |
|
199 | 200 | def __init__(self, context, session, address): |
@@ -396,6 +397,10 b' class ShellChannel(ZMQSocketChannel):' | |||
|
396 | 397 | self._queue_send(msg) |
|
397 | 398 | return msg['header']['msg_id'] |
|
398 | 399 | |
|
400 | def is_complete(self, code): | |
|
401 | msg = self.session.msg('is_complete_request', {'code': code}) | |
|
402 | self._queue_send(msg) | |
|
403 | return msg['header']['msg_id'] | |
|
399 | 404 | |
|
400 | 405 | |
|
401 | 406 | class IOPubChannel(ZMQSocketChannel): |
@@ -160,6 +160,10 b' class KernelInfoReply(Reference):' | |||
|
160 | 160 | banner = Unicode() |
|
161 | 161 | |
|
162 | 162 | |
|
163 | class IsCompleteReply(Reference): | |
|
164 | complete = Bool() | |
|
165 | ||
|
166 | ||
|
163 | 167 | # IOPub messages |
|
164 | 168 | |
|
165 | 169 | class ExecuteInput(Reference): |
@@ -189,6 +193,7 b' references = {' | |||
|
189 | 193 | 'status' : Status(), |
|
190 | 194 | 'complete_reply' : CompleteReply(), |
|
191 | 195 | 'kernel_info_reply': KernelInfoReply(), |
|
196 | 'is_complete_reply': IsCompleteReply(), | |
|
192 | 197 | 'execute_input' : ExecuteInput(), |
|
193 | 198 | 'execute_result' : ExecuteResult(), |
|
194 | 199 | 'error' : Error(), |
@@ -382,6 +387,12 b' def test_single_payload():' | |||
|
382 | 387 | next_input_pls = [pl for pl in payload if pl["source"] == "set_next_input"] |
|
383 | 388 | nt.assert_equal(len(next_input_pls), 1) |
|
384 | 389 | |
|
390 | def test_is_complete(): | |
|
391 | flush_channels() | |
|
392 | ||
|
393 | msg_id = KC.is_complete("a = 1") | |
|
394 | reply = KC.get_shell_msg(timeout=TIMEOUT) | |
|
395 | validate_message(reply, 'is_complete_reply', msg_id) | |
|
385 | 396 | |
|
386 | 397 | # IOPub channel |
|
387 | 398 |
@@ -114,7 +114,7 b' class Kernel(Configurable):' | |||
|
114 | 114 | 'inspect_request', 'history_request', |
|
115 | 115 | 'kernel_info_request', |
|
116 | 116 | 'connect_request', 'shutdown_request', |
|
117 | 'apply_request', | |
|
117 | 'apply_request', 'is_complete_request', | |
|
118 | 118 | ] |
|
119 | 119 | self.shell_handlers = {} |
|
120 | 120 | for msg_type in msg_types: |
@@ -479,6 +479,22 b' class Kernel(Configurable):' | |||
|
479 | 479 | kernel. |
|
480 | 480 | """ |
|
481 | 481 | return {'status': 'ok', 'restart': restart} |
|
482 | ||
|
483 | def is_complete_request(self, stream, ident, parent): | |
|
484 | content = parent['content'] | |
|
485 | code = content['code'] | |
|
486 | ||
|
487 | reply_content = self.do_is_complete(code) | |
|
488 | reply_content = json_clean(reply_content) | |
|
489 | reply_msg = self.session.send(stream, 'is_complete_reply', | |
|
490 | reply_content, parent, ident) | |
|
491 | self.log.debug("%s", reply_msg) | |
|
492 | ||
|
493 | def do_is_complete(self, code): | |
|
494 | """Override in subclasses to find completions. | |
|
495 | """ | |
|
496 | return {'complete' : True, | |
|
497 | } | |
|
482 | 498 | |
|
483 | 499 | #--------------------------------------------------------------------------- |
|
484 | 500 | # Engine methods |
General Comments 0
You need to be logged in to leave comments.
Login now