Run and handle the output of multiple executables in pyallel (as in parallel)
Project description
Pyallel
Run and handle the output of multiple executables in pyallel
(as in parallel)
https://github.com/Danthewaann/pyallel/assets/22531177/8685eb92-aac5-440a-9170-30fd1460c53f
Requires Python >=3.8
Tested on Linux and MacOS only
Quick start
pyallel
can be installed using pip:
pip install pyallel
Once installed, you can run pyallel
to see usage information, like so:
usage: pyallel [-h] [-t] [-n] [-s] [-V] [-v] [commands ...]
Run and handle the output of multiple executables in pyallel (as in parallel)
positional arguments:
commands list of quoted commands to run e.g "mypy ." "black ."
can provide environment variables to each command like so:
"MYPY_FORCE_COLOR=1 mypy ."
options:
-h, --help show this help message and exit
-t, --no-timer don't time how long each command is taking
-n, --non-interactive
run in non-interactive mode
-s, --no-stream don't stream output of each command
-V, --verbose run in verbose mode
-v, --version print version and exit
Currently you can provide a variable number of commands
to run to pyallel
, like so:
[!IMPORTANT] If you need to provide arguments to a command, you must surround the command and it's arguments in quotes!
pyallel "MYPY_FORCE_COLOR=1 mypy ." \
"black --check --diff ." \
"pytest ."
TODOs
- Allow output for all provided commands to be streamed to stdout (this will require a re-work of how we print command output as we currently just print output once the command finishes)
- Add CI checks to run the tests and linters against Python versions > 3.8
- Add command mode arguments to support things like only tailing the last 10 lines
of a command whilst it is running e.g.
"tail=10 :: pytest ."
- Add visual examples of
pyallel
in action - Fix bug in non-interactive streamed mode where all commands share the same amount of time taken as the longest running command
- Fix bug in non-interactive streamed mode where calling
readline
doesn't account forEOF
(if we are atEOF
we shouldn't append a newline as more output could be appended to the current line) - Fix bug in streamed mode where we should use the number of terminal columns when determining when to truncate the line to fit within the screen (or properly handle wrapped lines)
- Provide a way to set environment variables for each command to run with
- Add test suite
- Improve error handling when parsing provided commands (check they are valid executables)
- Maybe make tail mode followed by an optional dump of all the command output once it finishes the default behaviour?
- Add graceful Ctrl-C interrupt handling to streamed modes
- Setup build system to convert
pyallel
into a single file executable for ease of use and distribution - Add custom parsing of command output to support filtering for errors (like vim's
errorformat
) - Allow list of files to be provided to supply as input arguments to each command
- Allow input to be piped into
pyallel
via stdin to supply as standard input to each command
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyallel-0.12.2.tar.gz
.
File metadata
- Download URL: pyallel-0.12.2.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0860d9bf6f992b67ac6483b27347aff9e789cf3de753fe634907a8d89efade22 |
|
MD5 | 38fb2af7c9f47b75d83eac8f958c18bd |
|
BLAKE2b-256 | 268e30aa880adc001f8a2020214930a8da7b27c93963b9889108ac91b8b17471 |
File details
Details for the file pyallel-0.12.2-py3-none-any.whl
.
File metadata
- Download URL: pyallel-0.12.2-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.12.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 611f45e7780e4171e04e91c318112a152b09a7e00e2acbcd8c79ee4b83a0d752 |
|
MD5 | f509c2f64999ffae70e49164d18a717a |
|
BLAKE2b-256 | a94eb9e98559d61c0bac8bfcc20882f7f500b7100b5de3b4753d28a6aeb32ee8 |