@@ -103,11 +103,14 @@ def _data_changed(self, name, old, new):
103103 assert mime_pat .match (k )
104104 nt .assert_is_instance (v , string_types )
105105
106+
106107# shell replies
108+ class Reply (Reference ):
109+ status = Enum ((u'ok' , u'error' ), default_value = u'ok' )
107110
108- class ExecuteReply (Reference ):
111+
112+ class ExecuteReply (Reply ):
109113 execution_count = Integer ()
110- status = Enum ((u'ok' , u'error' ), default_value = u'ok' )
111114
112115 def check (self , d ):
113116 Reference .check (self , d )
@@ -117,18 +120,18 @@ def check(self, d):
117120 ExecuteReplyError ().check (d )
118121
119122
120- class ExecuteReplyOkay (Reference ):
121- payload = List ( Dict ( ))
123+ class ExecuteReplyOkay (Reply ):
124+ status = Enum (( 'ok' , ))
122125 user_expressions = Dict ()
123126
124127
125- class ExecuteReplyError (Reference ):
128+ class ExecuteReplyError (Reply ):
126129 ename = Unicode ()
127130 evalue = Unicode ()
128131 traceback = List (Unicode ())
129132
130133
131- class InspectReply (MimeBundle ):
134+ class InspectReply (Reply , MimeBundle ):
132135 found = Bool ()
133136
134137
@@ -143,17 +146,19 @@ class Status(Reference):
143146 execution_state = Enum ((u'busy' , u'idle' , u'starting' ), default_value = u'busy' )
144147
145148
146- class CompleteReply (Reference ):
149+ class CompleteReply (Reply ):
147150 matches = List (Unicode ())
148151 cursor_start = Integer ()
149152 cursor_end = Integer ()
150153 status = Unicode ()
151154
155+
152156class LanguageInfo (Reference ):
153157 name = Unicode ('python' )
154158 version = Unicode (sys .version .split ()[0 ])
155159
156- class KernelInfoReply (Reference ):
160+
161+ class KernelInfoReply (Reply ):
157162 protocol_version = Version (min = '5.0' )
158163 implementation = Unicode ('ipython' )
159164 implementation_version = Version (min = '2.1' )
@@ -173,9 +178,10 @@ class ConnectReply(Reference):
173178 hb_port = Integer ()
174179
175180
176- class CommInfoReply (Reference ):
181+ class CommInfoReply (Reply ):
177182 comms = Dict ()
178183
184+
179185class IsCompleteReply (Reference ):
180186 status = Enum ((u'complete' , u'incomplete' , u'invalid' , u'unknown' ), default_value = u'complete' )
181187
@@ -184,6 +190,7 @@ def check(self, d):
184190 if d ['status' ] == 'incomplete' :
185191 IsCompleteReplyIncomplete ().check (d )
186192
193+
187194class IsCompleteReplyIncomplete (Reference ):
188195 indent = Unicode ()
189196
@@ -195,7 +202,9 @@ class ExecuteInput(Reference):
195202 execution_count = Integer ()
196203
197204
198- Error = ExecuteReplyError
205+ class Error (ExecuteReplyError ):
206+ """Errors are the same as ExecuteReply, but without status"""
207+ status = None # no status field
199208
200209
201210class Stream (Reference ):
@@ -211,7 +220,7 @@ class ExecuteResult(MimeBundle):
211220 execution_count = Integer ()
212221
213222
214- class HistoryReply (Reference ):
223+ class HistoryReply (Reply ):
215224 history = List (List ())
216225
217226
0 commit comments