Command-runner

Latest version: v1.7.0

Safety actively analyzes 682416 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

1.5.2

- New `no_close_queues` parameter to leave stdout/stderr queues open for later usage by parent functions
- Updated ofunctions.threading implementation to v2.1.0
- Added python 3.12 and pypy 3.10 to test matrix
- poller/monitor tests now have less rounds in pypy python implementation (takes too long on Github actions)
- Various minor linter fixes

1.5.1

- IO priority was set with process priority values instead of IO priority values
- Failing to set process/IO priority because of insufficient permissions now shows a proper warning message in logs
- priorities are now case insensitive

1.5.0

- New silent parameter disabling all logger calls except of logging.DEBUG levels
- New on_exit parameter that takes a callback function as argument
- valid_exit_codes now accept boolean True which means "all" exit codes
- New priority parameter
- New io_priority parameter
- Fix output capture failure should be an error log instead of debug
- Fix no longer show debug logging for stdout or stderr when empty

1.4.1

- Fix endoding always was set to os default unless explicitly disabled by setting `encoding=False`

1.4.0

Features

- command_runner now has a `command_runner_threaded()` function which allows to run in background, but stil provide live stdout/stderr stream output via queues/callbacks
- Refactor poller mode to allow multiple stdout / stderr stream redirectors
- Passing a queue.Queue() instance to stdout/stderr arguments will fill queue with live stream output
- Passing a function to stdout/stderr arguments will callback said function with live stream output
- Passing a string to stdout/stderr arguments will redirect stream into filename described by string
- Added `split_stream` argument which will make command_runner return (exit_code, stdout, stderr) instead of (exit_code, output) tuple
- Added `check_interval` argument which decides how much time we sleep between two checks, defaults to 0.05 seconds.
Lowering this improves responsiveness, but increases CPU usage. Default value should be more than reasaonable for most applications
- Added `stop_on` argument which takes a function, which is called every `check_interval` and will interrupt execution if it returns True
- Added `process_callback` argument which takes a function(process), which is called upon execution with a subprocess.Popen object as argument for optional external process control
- Possibility to disable command_runner stream encoding with `encoding=False` so we get raw output (bytes)
- Added more unit tests (stop_on, process_callback, stream callback / queues, to_null_redirections, split_streams)

Fixes

- Fix unix command provided as list didn't work with `shell=True`
- Fixed more Python 2.7 UnicodedecodeErrors on corner case exceptions catches
- Fixed python 2.7 TimeoutException output can fail with UnicodedecodeError
- Fix Python 2.7 does not have subprocess.DEVNULL
- Ensure output is always None if process didn't return any string on stdout/stderr on Python 2.7
- Fix python 2.7 process.communicate() multiple calls endup without output (non blocking process.poll() needs communicate() when using shell=True)

Misc

- Removed queue usage in monitor mode (needs lesser threads)
- Optimized performance
- Added new exit code -250 when queue/callbacks are used with monitor method or unknown method has been called
- Optimized tests

1.3.1

Misc

- Packaging fixes for Python 2.7 when using `pip install command_runner`

Page 1 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.