Skip to main content

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 for EOF (if we are at EOF 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyallel-0.12.2.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

pyallel-0.12.2-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

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

Hashes for pyallel-0.12.2.tar.gz
Algorithm Hash digest
SHA256 0860d9bf6f992b67ac6483b27347aff9e789cf3de753fe634907a8d89efade22
MD5 38fb2af7c9f47b75d83eac8f958c18bd
BLAKE2b-256 268e30aa880adc001f8a2020214930a8da7b27c93963b9889108ac91b8b17471

See more details on using hashes here.

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

Hashes for pyallel-0.12.2-py3-none-any.whl
Algorithm Hash digest
SHA256 611f45e7780e4171e04e91c318112a152b09a7e00e2acbcd8c79ee4b83a0d752
MD5 f509c2f64999ffae70e49164d18a717a
BLAKE2b-256 a94eb9e98559d61c0bac8bfcc20882f7f500b7100b5de3b4753d28a6aeb32ee8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page