I'm hesitant to suggest adding yet-another-option to any subprocess API, but I'm thinking it may be worth it in this case.
The idea is to make it possible to replace:
result = subprocess.run(cmd, stdout=PIPE, stderr=PIPE)
with:
result = subprocess.run(cmd, capture_output=True)
That way, it would be possible for the raw stdin/stdout/stderr parameters to be treated as low level implementation details most of the time, since the most common configurations would be:
# Use parent's stdin/stdout/stderr
result = subprocess.run(cmd)
# Use pipe for stdin, use parent's stdout/stderr
result = subprocess.run(cmd, input=data)
# Use parent's stdin, use pipe for stdout/stderr
result = subprocess.run(cmd, capture_output=True)
# Use pipe for stdin/stdout/stderr
result = subprocess.run(cmd, input=data, capture_output=True)
|