Skip to content

Commit

Permalink
Expose & document depth parameter to ip.getoutput()
Browse files Browse the repository at this point in the history
  • Loading branch information
takluyver committed Jun 10, 2012
1 parent d3c023e commit 8a2d4eb
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
11 changes: 7 additions & 4 deletions IPython/core/interactiveshell.py
Original file line number Diff line number Diff line change
Expand Up @@ -2210,7 +2210,7 @@ def system_raw(self, cmd):
# use piped system by default, because it is better behaved
system = system_piped

def getoutput(self, cmd, split=True, _depth=0):
def getoutput(self, cmd, split=True, depth=0):
"""Get output (possibly including stderr) from a subprocess.
Parameters
Expand All @@ -2219,17 +2219,20 @@ def getoutput(self, cmd, split=True, _depth=0):
Command to execute (can not end in '&', as background processes are
not supported.
split : bool, optional
If True, split the output into an IPython SList. Otherwise, an
IPython LSString is returned. These are objects similar to normal
lists and strings, with a few convenience attributes for easier
manipulation of line-based output. You can use '?' on them for
details.
"""
depth : int, optional
How many frames above the caller are the local variables which should
be expanded in the command string? The default (0) assumes that the
expansion variables are in the stack frame calling this function.
"""
if cmd.rstrip().endswith('&'):
# this is *far* from a rigorous test
raise OSError("Background processes not supported.")
out = getoutput(self.var_expand(cmd, depth=_depth+1))
out = getoutput(self.var_expand(cmd, depth=depth+1))
if split:
out = SList(out.splitlines())
else:
Expand Down
2 changes: 1 addition & 1 deletion IPython/testing/globalipapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def xsys(self, cmd):
"""
# We use getoutput, but we need to strip it because pexpect captures
# the trailing newline differently from commands.getoutput
print(self.getoutput(cmd, split=False, _depth=1).rstrip(), end='', file=sys.stdout)
print(self.getoutput(cmd, split=False, depth=1).rstrip(), end='', file=sys.stdout)
sys.stdout.flush()


Expand Down

0 comments on commit 8a2d4eb

Please sign in to comment.