https://github.com/pycontribs/subprocess-tee
A subprocess.run drop-in replacement that supports a tee mode, being able to display output in real time while still capturing it. No dependencies needed
https://github.com/pycontribs/subprocess-tee
pep-621 subprocess tee
Last synced: 5 months ago
JSON representation
A subprocess.run drop-in replacement that supports a tee mode, being able to display output in real time while still capturing it. No dependencies needed
- Host: GitHub
- URL: https://github.com/pycontribs/subprocess-tee
- Owner: pycontribs
- License: mit
- Created: 2020-10-24T10:23:15.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-04-07T15:24:49.000Z (6 months ago)
- Last Synced: 2025-04-08T14:06:18.887Z (6 months ago)
- Topics: pep-621, subprocess, tee
- Language: Python
- Homepage:
- Size: 146 KB
- Stars: 58
- Watchers: 4
- Forks: 17
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# subprocess-tee
This package provides a drop-in alternative to `subprocess.run` that captures
the output while still printing it in **real-time**, just the way `tee` does.Printing output in real-time while still capturing is valuable for any tool that
executes long-running child processes. For those, you do want to provide instant
feedback (progress) related to what is happening.```python
# from subprocess import run
from subprocess_tee import runresult = run("echo 123")
result.stdout == "123\n"
```You can add `tee=False` to disable the tee functionality if you want, this being
a much shorter alternative than adding the well known
`stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL`.Keep in mind that `universal_newlines=True` is implied as we expect text
processing, this being a divergence from the original `subprocess.run`.You can still use `check=True` in order to make it raise CompletedProcess
exception when the result code is not zero.