2626import zmq
2727
2828# Local imports.
29+ from IPython .config .configurable import Configurable
30+ from IPython .core .iplib import InteractiveShell , InteractiveShellABC
2931from IPython .external .argparse import ArgumentParser
30- from session import Session , Message
32+ from IPython .utils .traitlets import Instance
33+ from IPython .zmq .session import Session , Message
3134from completer import KernelCompleter
32- from . iostream import OutStream
33- from . displayhook import DisplayHook
34- from . exitpoller import ExitPollerUnix , ExitPollerWindows
35+ from iostream import OutStream
36+ from displayhook import DisplayHook
37+ from exitpoller import ExitPollerUnix , ExitPollerWindows
3538
3639#-----------------------------------------------------------------------------
3740# Main kernel class
3841#-----------------------------------------------------------------------------
3942
40- class Kernel (object ):
41-
42- def __init__ ( self , session , reply_socket , pub_socket , req_socket ):
43- self . session = session
44- self . reply_socket = reply_socket
45- self . pub_socket = pub_socket
46- self . req_socket = req_socket
47- self . user_ns = {}
48- self . history = []
49- self . compiler = CommandCompiler ( )
50- self .completer = KernelCompleter ( self . user_ns )
43+ class Kernel (Configurable ):
44+
45+ shell = Instance ( 'IPython.core.iplib.InteractiveShellABC' )
46+ session = Instance ( 'IPython.zmq. session.Session' )
47+ reply_socket = Instance ( 'zmq.Socket' )
48+ pub_socket = Instance ( 'zmq.Socket' )
49+ req_socket = Instance ( 'zmq.Socket' )
50+
51+ def __init__ ( self , ** kwargs ):
52+ super ( Kernel , self ). __init__ ( ** kwargs )
53+ self .shell = InteractiveShell . instance ( )
5154
5255 # Build dict of handlers for message types
5356 msg_types = [ 'execute_request' , 'complete_request' ,
@@ -89,8 +92,6 @@ def execute_request(self, ident, parent):
8992 self .pub_socket .send_json (pyin_msg )
9093
9194 try :
92- comp_code = self .compiler (code , '<zmq-kernel>' )
93-
9495 # Replace raw_input. Note that is not sufficient to replace
9596 # raw_input in the user namespace.
9697 raw_input = lambda prompt = '' : self .raw_input (prompt , ident , parent )
@@ -99,7 +100,8 @@ def execute_request(self, ident, parent):
99100 # Configure the display hook.
100101 sys .displayhook .set_parent (parent )
101102
102- exec comp_code in self .user_ns , self .user_ns
103+ self .shell .runlines (code )
104+ # exec comp_code in self.user_ns, self.user_ns
103105 except :
104106 etype , evalue , tb = sys .exc_info ()
105107 tb = traceback .format_exception (etype , evalue , tb )
@@ -155,7 +157,7 @@ def complete_request(self, ident, parent):
155157 print >> sys .__stdout__ , completion_msg
156158
157159 def complete (self , msg ):
158- return self .completer .complete (msg .content .line , msg . content . text )
160+ return self .shell .complete (msg .content .line )
159161
160162 def object_info_request (self , ident , parent ):
161163 context = parent ['content' ]['oname' ].split ('.' )
@@ -178,7 +180,7 @@ def symbol_from_context(self, context):
178180 return None , context
179181
180182 base_symbol_string = context [0 ]
181- symbol = self .user_ns .get (base_symbol_string , None )
183+ symbol = self .shell . user_ns .get (base_symbol_string , None )
182184 if symbol is None :
183185 symbol = __builtin__ .__dict__ .get (base_symbol_string , None )
184186 if symbol is None :
@@ -270,7 +272,10 @@ def main():
270272 sys .displayhook = DisplayHook (session , pub_socket )
271273
272274 # Create the kernel.
273- kernel = Kernel (session , reply_socket , pub_socket , req_socket )
275+ kernel = Kernel (
276+ session = session , reply_socket = reply_socket ,
277+ pub_socket = pub_socket , req_socket = req_socket
278+ )
274279
275280 # Configure this kernel/process to die on parent termination, if necessary.
276281 if namespace .parent :
0 commit comments