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/stderrresult=subprocess.run(cmd)
# Use pipe for stdin, use parent's stdout/stderrresult=subprocess.run(cmd, input=data)
# Use parent's stdin, use pipe for stdout/stderrresult=subprocess.run(cmd, capture_output=True)
# Use pipe for stdin/stdout/stderrresult=subprocess.run(cmd, input=data, capture_output=True)
Yeah, I find it pretty common to set both stdout and stderr to PIPE, but I'm with you in hesitating to add YAO to the subprocess API. If you do move forward with this though, I think capture_output would have to be mutually exclusive to stdout and stderr. You should not be allowed to provide either of the latter two if the former is given.