sh v1.12.0 Release Notes

    • composed commands no longer propagate _bg
    • better support for using sys.stdin and sys.stdout for _in and _out
    • ๐Ÿ›  bugfix where which() would not stop searching at the first valid executable found in PATH
    • added _long_prefix for programs whose long arguments start with something other than -- #278
    • ๐ŸŒฒ added _log_msg for advanced configuration of log message #311
    • added sh.contrib.sudo
    • added _arg_preprocess for advanced command wrapping
    • alter callable _in arguments to signify completion with falsy chunk
    • bugfix where pipes passed into _out or _err were not flushed on process end #252
    • deprecated with sh.args(**kwargs) in favor of sh2 = sh(**kwargs)
    • made sh.pushd thread safe
    • ๐Ÿšฆ added .kill_group() and .signal_group() methods for better process control #237
    • added new_session special keyword argument for controlling spawned process session #266
    • ๐Ÿ›  bugfix better handling for EINTR on system calls #292
    • ๐Ÿ›  bugfix where with-contexts were not threadsafe #247
    • _uid new special keyword param for specifying the user id of the process #133
    • ๐Ÿ›  bugfix where exceptions were swallowed by processes that weren't waited on #309
    • ๐Ÿ›  bugfix where processes that dupd their stdout/stderr to a long running child process would cause sh to hang #310
    • ๐ŸŒฒ improved logging output #323
    • ๐Ÿ›  bugfix for python3+ where binary data was passed into a process's stdin #325
    • Introduced execution contexts which allow baking of common special keyword arguments into all commands #269
    • Command and which now can take an optional paths parameter which specifies the search paths #226
    • _preexec_fn option for executing a function after the child process forks but before it execs #260
    • _fg reintroduced, with limited functionality. hurrah! #92
    • ๐Ÿ›  bugfix where a command would block if passed a fd for stdin that wasn't yet ready to read #253
    • _long_sep can now take None which splits the long form arguments into individual arguments #258
    • 0๏ธโƒฃ making _piped perform "direct" piping by default (linking fds together). this fixes memory problems #270
    • ๐Ÿ›  bugfix where calling next() on an iterable process that has raised StopIteration, hangs #273
    • sh.cd called with no arguments no changes into the user's home directory, like native cd #275
    • ๐Ÿšš sh.glob removed entirely. the rationale is correctness over hand-holding. #279
    • added _truncate_exc, defaulting to True, which tells our exceptions to truncate output.
    • ๐Ÿ›  bugfix for exceptions whose messages contained unicode
    • _done callback no longer assumes you want your command put in the background.
    • _done callback is now called asynchronously in a separate thread.
    • ๐Ÿš€ _done callback is called regardless of exception, which is necessary in order to release held resources, for example a process pool