• ANN: Version 0.1.6 of sarge (a subprocess wrapper library) has been rel

    From Vinay Sajip@21:1/5 to All on Mon Aug 24 13:52:37 2020
    Version 0.1.6 of Sarge, a cross-platform library which wraps the subprocess module in the standard library, has been released.

    What changed?
    -------------

    - Fixed #44: Added an optional timeout to Command.wait() and Pipeline.wait(), which
      only takes effect on Python >= 3.3.

    - Fixed #47: Added the ``replace_env`` keyword argument which allows a complete   replacement for ``os.environ`` to be passed.

    - Fixed #51: Improved error handling around a Popen call.

    What does Sarge do?
    -------------------

    Sarge tries to make interfacing with external programs from your
    Python applications easier than just using subprocess alone.

    Sarge offers the following features:

    * A simple way to run command lines which allows a rich subset of Bash-
    style shell command syntax, but parsed and run by sarge so that you
    can run on Windows without cygwin (subject to having those commands
    available):

    from sarge import capture_stdout
    p = capture_stdout('echo foo | cat; echo bar')
    for line in p.stdout: print(repr(line))
    ...
    'foo\n'
    'bar\n'

    * The ability to format shell commands with placeholders, such that
    variables are quoted to prevent shell injection attacks.

    * The ability to capture output streams without requiring you to
    program your own threads. You just use a Capture object and then you
    can read from it as and when you want.

    * The ability to look for patterns in captured output and to interact accordingly with the child process.

    Advantages over subprocess
    ---------------------------

    Sarge offers the following benefits compared to using subprocess:

    * The API is very simple.

    * It's easier to use command pipelines - using subprocess out of the
    box often leads to deadlocks because pipe buffers get filled up.

    * It would be nice to use Bash-style pipe syntax on Windows, but
    Windows shells don't support some of the syntax which is useful, like
    &&, ||, |& and so on. Sarge gives you that functionality on Windows,
    without cygwin.

    * Sometimes, subprocess.Popen.communicate() is not flexible enough for
    one's needs - for example, when one needs to process output a line at
    a time without buffering the entire output in memory.

    * It's desirable to avoid shell injection problems by having the
    ability to quote command arguments safely.

    * subprocess allows you to let stderr be the same as stdout, but not
    the other way around - and sometimes, you need to do that.

    Python version and platform compatibility -----------------------------------------

    Sarge is intended to be used on any Python version >= 2.6 and is
    tested on Python versions 2.6, 2.7, 3.3, 3.4, 3.5, 3.6, 3.7 and 3.8 on Linux, Windows, and Mac OS X (not all versions are tested on all platforms,
    but sarge is expected to work correctly on all these versions on all
    these platforms).

    Finding out more
    ----------------

    You can read the documentation at

    http://sarge.readthedocs.org/

    There's a lot more information, with examples, than I can put into
    this post.

    You can install Sarge using "pip install sarge" to try it out. The
    project is hosted on BitBucket at

    https://bitbucket.org/vinay.sajip/sarge/

    And you can leave feedback on the issue tracker there.

    I hope you find Sarge useful!

    Regards,

    Vinay Sajip

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)