Command-runner

Latest version: v1.6.0

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

Scan your dependencies

Page 1 of 3

1.6.0

This release adds a new parameter to customize stdin.

Features

- New `stdin` parameter to change default behavior of Popen

1.5.2

This release adds a new parameter to allow keeping stdout/stderr queues after `command_runner` has finished.

Features

- 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)

Fixes
- Various minor linter fixes

1.5.1

This release is a quick fix for priority settings

Features
- Priority settings are now case insensitive

Fixes
- 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

1.5.0

This release mainly adds process priority settings and a couple of shorthands for other functionality.

Features

- New silent parameter disabling all logger calls except of logging.DEBUG levels
- New on_exit parameter that takes a callback function as argument, convenient when used in a thread
- valid_exit_codes now accept boolean True which means "all" exit codes
- New priority parameter which sets cpu bound process priority to 'low', 'normal' or 'high'
- New io_priority parameter wihhc sets io bound process priority to 'low', 'normal' or 'high'

Fixes

- 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

This is a hotfix release for v1.4.0 that mainly targets an encoding issue.

Fixes

command_runner

- Fixes encoding was not honored unless explicitly disabled
- Use standard ping arguments in tests

elevate

- Use `sleep` instead of ping sleep emulation on Linux

Misc

- Update github actions to v3
- Removed python 3.5 and 3.6 from linux test matrix since Github won't provide them anymore

1.4.0

This is a feature rich release which primary function is to allow background jobs to report live stdout/stderr stream data to your favorite application by using queues or callback functions.
It also fixes a couple of Python 2.7 & PyPy issues.

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

Page 1 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.