Show More
@@ -275,13 +275,15 b' class DisplayHook(Configurable):' | |||
|
275 | 275 | new_result = '_'+`self.prompt_count` |
|
276 | 276 | to_main[new_result] = result |
|
277 | 277 | self.shell.user_ns.update(to_main) |
|
278 | # This is a defaultdict of lists, so we can always append | |
|
279 | self.shell.user_ns['_oh'][self.prompt_count].append(result) | |
|
278 | self.shell.user_ns['_oh'][self.prompt_count] = result | |
|
280 | 279 | |
|
281 | 280 | def log_output(self, format_dict): |
|
282 | 281 | """Log the output.""" |
|
283 | 282 | if self.shell.logger.log_output: |
|
284 | 283 | self.shell.logger.log_write(format_dict['text/plain'], 'output') |
|
284 | # This is a defaultdict of lists, so we can always append | |
|
285 | self.shell.history_manager.output_hist_reprs[self.prompt_count]\ | |
|
286 | .append(format_dict['text/plain']) | |
|
285 | 287 | |
|
286 | 288 | def finish_displayhook(self): |
|
287 | 289 | """Finish up all displayhook activities.""" |
@@ -47,8 +47,13 b' class HistoryManager(Configurable):' | |||
|
47 | 47 | input_hist_raw = List([""]) |
|
48 | 48 | # A list of directories visited during session |
|
49 | 49 | dir_hist = List() |
|
50 |
# A dict of output history, keyed with ints from the shell's |
|
|
51 | output_hist = Instance(defaultdict) | |
|
50 | # A dict of output history, keyed with ints from the shell's | |
|
51 | # execution count. If there are several outputs from one command, | |
|
52 | # only the last one is stored. | |
|
53 | output_hist = Dict() | |
|
54 | # Contains all outputs, in lists of reprs. | |
|
55 | output_hist_reprs = Instance(defaultdict) | |
|
56 | ||
|
52 | 57 | # String holding the path to the history file |
|
53 | 58 | hist_file = Unicode() |
|
54 | 59 | # The SQLite database |
@@ -97,7 +102,7 b' class HistoryManager(Configurable):' | |||
|
97 | 102 | self.new_session() |
|
98 | 103 | |
|
99 | 104 | self._i00, self._i, self._ii, self._iii = '','','','' |
|
100 | self.output_hist = defaultdict(list) | |
|
105 | self.output_hist_reprs = defaultdict(list) | |
|
101 | 106 | |
|
102 | 107 | self._exit_commands = set(['Quit', 'quit', 'Exit', 'exit', '%Quit', |
|
103 | 108 | '%quit', '%Exit', '%exit']) |
@@ -227,8 +232,7 b' class HistoryManager(Configurable):' | |||
|
227 | 232 | |
|
228 | 233 | for i in range(start, stop): |
|
229 | 234 | if output: |
|
230 |
|
|
|
231 | line = (input_hist[i], output_item) | |
|
235 | line = (input_hist[i], self.output_hist_reprs.get(i)) | |
|
232 | 236 | else: |
|
233 | 237 | line = input_hist[i] |
|
234 | 238 | yield (0, i, line) |
@@ -332,9 +336,12 b' class HistoryManager(Configurable):' | |||
|
332 | 336 | self.shell.user_ns.update(to_main) |
|
333 | 337 | |
|
334 | 338 | def store_output(self, line_num): |
|
335 | if (not self.db_log_output) or not self.output_hist[line_num]: | |
|
339 | """If database output logging is enabled, this saves all the | |
|
340 | outputs from the indicated prompt number to the database. It's | |
|
341 | called by run_cell after code has been executed.""" | |
|
342 | if (not self.db_log_output) or not self.output_hist_reprs[line_num]: | |
|
336 | 343 | return |
|
337 |
output = json.dumps( |
|
|
344 | output = json.dumps(self.output_hist_reprs[line_num]) | |
|
338 | 345 | db_row = (self.session_number, line_num, output) |
|
339 | 346 | if self.db_cache_size > 1: |
|
340 | 347 | self.db_output_cache.append(db_row) |
@@ -38,7 +38,7 b' def test_history():' | |||
|
38 | 38 | |
|
39 | 39 | ip.history_manager.db_log_output = True |
|
40 | 40 | # Doesn't match the input, but we'll just check it's stored. |
|
41 | ip.history_manager.output_hist[3].append("spam") | |
|
41 | ip.history_manager.output_hist_reprs[3].append("spam") | |
|
42 | 42 | ip.history_manager.store_output(3) |
|
43 | 43 | |
|
44 | 44 | nt.assert_equal(ip.history_manager.input_hist_raw, [''] + hist) |
@@ -60,7 +60,7 b' def test_history():' | |||
|
60 | 60 | |
|
61 | 61 | # Check get_hist_tail |
|
62 | 62 | gothist = ip.history_manager.get_hist_tail(4, output=True) |
|
63 |
expected = [(1, 3, (hist[-1], [ |
|
|
63 | expected = [(1, 3, (hist[-1], ["spam"])), | |
|
64 | 64 | (2, 1, (newcmds[0], None)), |
|
65 | 65 | (2, 2, (newcmds[1], None)), |
|
66 | 66 | (2, 3, (newcmds[2], None)),] |
@@ -70,7 +70,7 b' def test_history():' | |||
|
70 | 70 | gothist = ip.history_manager.get_hist_search("*test*") |
|
71 | 71 | nt.assert_equal(list(gothist), [(1,2,hist[1])] ) |
|
72 | 72 | gothist = ip.history_manager.get_hist_search("b*", output=True) |
|
73 |
nt.assert_equal(list(gothist), [(1,3,(hist[2],[ |
|
|
73 | nt.assert_equal(list(gothist), [(1,3,(hist[2],["spam"]))] ) | |
|
74 | 74 | |
|
75 | 75 | # Cross testing: check that magic %save can get previous session. |
|
76 | 76 | testfilename = os.path.realpath(os.path.join(tmpdir, "test.py")) |
General Comments 0
You need to be logged in to leave comments.
Login now