Skip to content

Release 0.15.1#238

Merged
nsheff merged 14 commits intomasterfrom
dev
Mar 6, 2026
Merged

Release 0.15.1#238
nsheff merged 14 commits intomasterfrom
dev

Conversation

@nsheff
Copy link
Member

@nsheff nsheff commented Feb 27, 2026

No description provided.

Pin the contract that subprocess stdout/stderr, piped command stderr,
and pypiper messages must appear in log files. Three xfail tests mark
the multi=True limitation that the upcoming tee removal will fix.
Step 1: Add logging.FileHandler to the logger so all pypiper messages
(info, timestamp, debug) are written directly to the log file.

Step 2: Add _tee_output() helper that reads from a subprocess pipe and
writes each line to both sys.stdout and the log file.

Step 3: Modify callprint() to set stdout=PIPE on the final process and
stderr=PIPE on all processes, then spawn daemon threads to tee output
in real time. Threads are joined after the polling loop completes.

Both old tee mechanism and new per-command capture coexist in this commit.
- Delete Unbuffered class (no longer needed)
- Remove tee subprocess setup (os.dup2, Popen tee, _ignore_interrupts)
- Remove tee kill from _exit_handler
- Remove import __main__ (only used for interactive_mode check)
- Clean up signal handler docstrings that referenced tee behavior
- Remove dead commented-out code about tee alternatives
- Update multi parameter: still used for pipestat multi_pipelines,
  no longer controls tee behavior
- Remove unnecessary multi=True from test fixtures where it was only
  needed for tee avoidance (keep it where pipestat needs it)
@nsheff nsheff marked this pull request as ready for review February 28, 2026 02:27
@nsheff nsheff merged commit 14e6dbf into master Mar 6, 2026
4 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant