Show More
@@ -1166,13 +1166,17 b' python-profiler package from non-free.""")' | |||||
1166 | @magic_arguments.argument('--no-stdout', action="store_true", |
|
1166 | @magic_arguments.argument('--no-stdout', action="store_true", | |
1167 | help="""Don't capture stdout.""" |
|
1167 | help="""Don't capture stdout.""" | |
1168 | ) |
|
1168 | ) | |
|
1169 | @magic_arguments.argument('--no-display', action="store_true", | |||
|
1170 | help="""Don't capture IPython's rich display.""" | |||
|
1171 | ) | |||
1169 | @cell_magic |
|
1172 | @cell_magic | |
1170 | def capture(self, line, cell): |
|
1173 | def capture(self, line, cell): | |
1171 |
"""run the cell, capturing stdout |
|
1174 | """run the cell, capturing stdout, stderr, and IPython's rich display() calls.""" | |
1172 | args = magic_arguments.parse_argstring(self.capture, line) |
|
1175 | args = magic_arguments.parse_argstring(self.capture, line) | |
1173 | out = not args.no_stdout |
|
1176 | out = not args.no_stdout | |
1174 | err = not args.no_stderr |
|
1177 | err = not args.no_stderr | |
1175 | with capture_output(out, err) as io: |
|
1178 | disp = not args.no_display | |
|
1179 | with capture_output(out, err, disp) as io: | |||
1176 | self.shell.run_cell(cell) |
|
1180 | self.shell.run_cell(cell) | |
1177 | if args.output: |
|
1181 | if args.output: | |
1178 | self.shell.user_ns[args.output] = io |
|
1182 | self.shell.user_ns[args.output] = io |
@@ -65,7 +65,17 b' class RichOutput(object):' | |||||
65 |
|
65 | |||
66 |
|
66 | |||
67 | class CapturedIO(object): |
|
67 | class CapturedIO(object): | |
68 |
"""Simple object for containing captured stdout/err StringIO objects |
|
68 | """Simple object for containing captured stdout/err and rich display StringIO objects | |
|
69 | ||||
|
70 | Each instance `c` has three attributes: | |||
|
71 | ||||
|
72 | c.stdout : standard output as a string | |||
|
73 | c.stderr : standard error as a string | |||
|
74 | c.outputs: a list of rich display outputs | |||
|
75 | ||||
|
76 | Additionally, there's a `c.show()` method which will print all of the | |||
|
77 | above in the same order, and can be invoked simply via `c()`. | |||
|
78 | """ | |||
69 |
|
79 | |||
70 | def __init__(self, stdout, stderr, outputs=None): |
|
80 | def __init__(self, stdout, stderr, outputs=None): | |
71 | self._stdout = stdout |
|
81 | self._stdout = stdout | |
@@ -130,7 +140,7 b' class capture_output(object):' | |||||
130 | self.save_display_pub = None |
|
140 | self.save_display_pub = None | |
131 | self.display = False |
|
141 | self.display = False | |
132 |
|
142 | |||
133 |
stdout = stderr = outputs = |
|
143 | stdout = stderr = outputs = None | |
134 | if self.stdout: |
|
144 | if self.stdout: | |
135 | stdout = sys.stdout = StringIO() |
|
145 | stdout = sys.stdout = StringIO() | |
136 | if self.stderr: |
|
146 | if self.stderr: |
@@ -4,6 +4,9 b'' | |||||
4 |
|
4 | |||
5 | This document describes in-flight development work. |
|
5 | This document describes in-flight development work. | |
6 |
|
6 | |||
|
7 | - `%%capture` cell magic now captures the rich display output, not just | |||
|
8 | stdout/stderr | |||
|
9 | ||||
7 |
|
10 | |||
8 | Backwards incompatible changes |
|
11 | Backwards incompatible changes | |
9 | ------------------------------ |
|
12 | ------------------------------ |
General Comments 0
You need to be logged in to leave comments.
Login now