- Drop Python 3.6, 3.7 support
- The run() function now returns a subprocess.CompletedProcess object, which no longer allows array access operations (those were deprecated in #60)
- The run() argument 'raise_timeout_exception' is now set by default, a 'False' value will lead to a UserWarning and a behavioural change. The argument is now deprecated and will be removed in a future version. (previously introduced in #61)
- Calling the run() function with multiple unnamed arguments is no longer supported (previously deprecated in #62)
- The run() function no longer accepts a 'debug' argument (previously deprecated in #63)
- Allow specifying 'preexec_fn' and 'creationflags' keywords, which will be passed through to the subprocess call
- The run() function now understands stdin=subprocess.DEVNULL to close the subprocess stdin, rather than to connect through the existing stdin, which is the current default
- Add Python 3.10 support
- Add Python 3.9 support, drop Python 3.5 support
- Fix a file descriptor leak on subprocess execution
- Calling the run() function with unnamed arguments (other than the command list as the first argument) is now deprecated. As a number of arguments will be removed in a future version the use of unnamed arguments will cause future confusion. Use explicit keyword arguments instead (#62).
- The run() function debug argument has been deprecated (#63). This is only used to debug the NonBlockingStream* classes. Those are due to be replaced in a future release, so the argument will no longer serve a purpose. Debugging information remains available via standard logging mechanisms.
- Final version supporting Python 3.5
- Deprecated array access on the return object (#60). The return object will become a subprocess.CompletedProcess in a future release, which no longer allows array-based access. For a translation table of array elements to attributes please see the pull request linked above.
- Add a new parameter 'raise_timeout_exception' (#61). When set to 'True' a subprocess.TimeoutExpired exception is raised when the process runtime exceeds the timeout threshold. This defaults to 'False' and will be set to 'True' in a future release.
- Python 3.5+ only, support for Python 2.7 has been dropped
- Deprecated function alias run_process() has been removed
- Fixed a stability issue on Windows
- Add Python 3.8 support, drop Python 3.4 support
- Stop environment override variables leaking into the process environment
- Minor fixes on the return object (implement equality, mark as unhashable)
- Support file system path objects (PEP-519) in arguments
- Change the return object to make it similar to subprocess.CompletedProcess, introduced with Python 3.5+
- Have deprecation warnings point to correct code locations
- Trap UnicodeEncodeError when printing output. Offending characters are replaced and a warning is logged once. Hints at incorrectly set PYTHONIOENCODING.
- Fix a few deprecation warnings
- Add parameter working_directory to set the working directory of the subprocess
- Officially support Python 3.7
- Accept environment variable overriding with numeric values.
- Unicode fixes. Fix crash on invalid UTF-8 input.
- Clarify that stdout/stderr values are returned as bytestrings.
- Callbacks receive the data decoded as UTF-8 unicode strings with unknown characters replaced by ufffd (unicode replacement character). Same applies to printing of output.
- Mark stdin broken on Windows.
- Maintenance release to add some tests for executable resolution.
- Fix Win32 API executable resolution for commands containing a dot ('.') in addition to a file extension (say '.bat').
- Fix Win32API dependency installation on Windows.
- New keyword 'win32resolve' which only takes effect on Windows and is enabled by default. This causes procrunner to call the Win32 API FindExecutable() function to try and lookup non-.exe files with the corresponding name. This means .bat/.cmd/etc.. files can now be run without explicitly specifying their extension. Only supported on Python 2.7 and 3.5+.
- Python 2.7 support on Windows. Python3 not yet supported on Windows.
- run_process() renamed to run()
- Python3 compatibility fixes
- Procrunner is now Python3 3.3-3.6 compatible.
- First release on PyPI.