platform agnostic command and shell execution tool
command_runner's purpose is to run external commands from Python, just
like "subprocess" on which it relies, while solving various problems a
developer may face, including:

- Handling of all possible subprocess.popen / subprocess.check_output
scenarios / python versions in one handy function without encoding /
timeout hassle.

- Allow stdout/stderr stream output to be redirected to callback
functions / output queues / files so you get to handle output in your
application while commands are running.

- Callback to optional stop check so we can stop execution from outside
command_runner.

- Callback with optional process information so we get to control the
process from outside command_runner.

Maintainer: The OpenBSD ports mailing-list <ports@openbsd.org>

WWW: https://github.com/netinvent/command_runner
