##// END OF EJS Templates
Use python timers instead of thread + sleep
Use python timers instead of thread + sleep

File last commit:

r9375:4d245182
r10382:bcdeb79b
Show More
blockingkernelmanager.py
54 lines | 2.1 KiB | text/x-python | PythonLexer
/ IPython / kernel / inprocess / blockingkernelmanager.py
epatters
Refactor kernel managers in preparation for the EmbeddedKernel.
r8408 """ Implements a fully blocking kernel manager.
Useful for test suites and blocking terminal interfaces.
"""
#-----------------------------------------------------------------------------
# Copyright (C) 2012 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING.txt, distributed as part of this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
from __future__ import print_function
# Local imports.
epatters
BUG: raw_input logic incorrect for in-process terminal frontend.
r8482 from IPython.utils.io import raw_print
epatters
Refactor kernel managers in preparation for the EmbeddedKernel.
r8408 from IPython.utils.traitlets import Type
Brian Granger
Cleanup naming and organization of channels....
r9120 from kernelmanager import InProcessKernelManager, InProcessShellChannel, \
InProcessIOPubChannel, InProcessStdInChannel
MinRK
move zmq.KernelManagers into IPython.kernel
r9370 from IPython.kernel.blockingkernelmanager import BlockingChannelMixin
epatters
Refactor kernel managers in preparation for the EmbeddedKernel.
r8408
#-----------------------------------------------------------------------------
# Blocking kernel manager
#-----------------------------------------------------------------------------
Brian Granger
Cleanup naming and organization of channels....
r9120 class BlockingInProcessShellChannel(BlockingChannelMixin, InProcessShellChannel):
epatters
Refactor kernel managers in preparation for the EmbeddedKernel.
r8408 pass
Brian Granger
Cleanup naming and organization of channels....
r9120 class BlockingInProcessIOPubChannel(BlockingChannelMixin, InProcessIOPubChannel):
epatters
Refactor kernel managers in preparation for the EmbeddedKernel.
r8408 pass
Brian Granger
Cleanup naming and organization of channels....
r9120 class BlockingInProcessStdInChannel(BlockingChannelMixin, InProcessStdInChannel):
epatters
BUG: raw_input logic incorrect for in-process terminal frontend.
r8482
def call_handlers(self, msg):
""" Overridden for the in-process channel.
This methods simply calls raw_input directly.
"""
msg_type = msg['header']['msg_type']
if msg_type == 'input_request':
Pietro Berkes
BUG: Solve 2to3 conversion error....
r8940 _raw_input = self.manager.kernel._sys_raw_input
epatters
BUG: raw_input logic incorrect for in-process terminal frontend.
r8482 prompt = msg['content']['prompt']
raw_print(prompt, end='')
Pietro Berkes
BUG: Solve 2to3 conversion error....
r8940 self.input(_raw_input())
epatters
Refactor kernel managers in preparation for the EmbeddedKernel.
r8408
epatters
REFACTOR: Terminology change: 'embedded' -> 'in-process'.
r8471 class BlockingInProcessKernelManager(InProcessKernelManager):
epatters
Refactor kernel managers in preparation for the EmbeddedKernel.
r8408
# The classes to use for the various channels.
Brian Granger
Cleanup naming and organization of channels....
r9120 shell_channel_class = Type(BlockingInProcessShellChannel)
iopub_channel_class = Type(BlockingInProcessIOPubChannel)
stdin_channel_class = Type(BlockingInProcessStdInChannel)