{"categories":[{"label":"Libraries","url":"https://skillfed.io/packages/category/software-development-libraries/7"},{"label":"Python Modules","url":"https://skillfed.io/packages/category/software-development-libraries-python-modules/15"}],"enrichment":{"capability":"Wraps Python's subprocess module to simplify running external commands, capturing output, handling retries, and checking return codes.","skillfed_tags":["subprocess-wrapper","command-execution"],"use_cases":["Run shell commands from Python scripts and capture their output without writing subprocess boilerplate.","Implement retry logic for flaky external commands with configurable backoff and jitter.","Test command sequences in dry-run mode before actually executing them.","Build command-line tool wrappers that need to validate return codes and raise exceptions on failure.","Track execution history of all commands run during a session for debugging or auditing."],"what_it_does":"SubprocessRunner is a thin wrapper around Python's subprocess module that reduces boilerplate when executing external commands. It provides a simple object-oriented interface to run commands, automatically capture stdout and stderr, and access return codes without the ceremony of subprocess.Popen or subprocess.run. The package handles common patterns like retrying failed commands with exponential backoff, raising exceptions on non-zero exit codes, and dry-run mode for testing command sequences without actually executing them.\n\nThe library is useful when you need to shell out to external tools from Python code and want cleaner syntax than the standard library offers. It depends only on mbstrdecoder for string handling and supports Python 3.7 through 3.12. The package includes a utility class (Which) to check if a command exists on the system and locate its absolute path, and can optionally log activity via loguru if installed.","worth_installing":"Yes, if you frequently run external commands and want cleaner syntax than subprocess.Popen or subprocess.run. The low install friction, permissive license, and stable API make it a safe choice. The aging maintenance (860+ days since last release) is not a blocker for stable use cases, but verify compatibility with your Python version and consider whether you need active development support before adopting."},"id":"subprocrunner","links":{"html":"https://skillfed.io/packages/subprocrunner","md":"https://skillfed.io/packages/subprocrunner.md","pypi":"https://pypi.org/project/subprocrunner/"},"maintenance":{"status":"aging"},"meta":{"latest_release":"2024-04-06","license_spdx":null,"license_treatment":"permissive","name":"subprocrunner","python_support":"supports_current","summary":"A Python wrapper library for subprocess module."},"popularity":{"monthly_downloads":228762,"position":9144,"tier":"top_15000"},"security":{"n_vulnerabilities":0},"version":"2.0.1"}
