I'm with Greg here - the proposed "run()" API sounds like a nice
improvement to me, but I don't think it makes sense to deprecate the
existing use case specific variants. In particular, check_call() and
check_output() aren't easily replaced with equivalent expressions
based on run() since you need to make a separate call to
cp.check_returncode().