monsanto avatar monsanto committed bc678ab

Use shell_popen instead of shell_communicate. (rebase me out when making a pull request)

Comments (0)

Files changed (1)

 PIPE = subprocess.PIPE
 STDOUT = subprocess.STDOUT
 
-def shell_communicate(command, stdin, *args, **kwds):
-    """A subprocess.Popen().communicate() variant for shell command invocation.
-        
+def shell_popen(command, *args, **kwds):
+    """A subprocess.Popen() variant for shell command invocation.
+    
+    The keyword arguments stdin, stdout, and stderr are special, and are passed
+    to ShellCommand's constructor. These arguments are unavailable for formatting.
+    
     Refer to ShellCommand for details of the implicit quoting behavior.
     """
+    stdin = kwds.pop("stdin", None)
     stdout = kwds.pop("stdout", None)
     stderr = kwds.pop("stderr", None)
-    return ShellCommand(command, stdin=PIPE, stdout=stdout, stderr=stderr).shell_popen(*args, **kwds).communicate(stdin)
+    return ShellCommand(command, stdin=stdin, stdout=stdout, stderr=stderr).shell_popen(*args, **kwds)
 
 @_copy_doc(ShellCommand.shell_call)
 def shell_call(command, *args, **kwds):
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.