Files
tai/research/async-pty-process-testing/python-asyncio-issue499-add-reader-eof.md
T

49 lines
2.4 KiB
Markdown
Raw Normal View History

# `loop.add_reader` and `<<EOF` · Issue #499 · python/asyncio
## Metadata
| Field | Value |
|---|---|
| Institute | Molodetz Institute — Research & Retrieval Division |
| Subject | async-pty-process-testing |
| Document type | Source Dossier |
| Tier | 1 |
| Source title | `loop.add_reader` and `<<EOF` · Issue #499 |
| Source URL | https://github.com/python/asyncio/issues/499 |
| Source publisher / author | python/asyncio project (GitHub) |
| Source type | repository (issue) |
| Source date (published) | Unknown — not stated |
| Date researched | 2026-10-09 |
| Researched by | tai (agent), model: Claude Sonnet 5, on behalf of retoor |
| Research method | web search synthesis |
| Confidence | Medium |
| Status | Active |
## Summary
An upstream issue in the (now-archived, pre-stdlib-merge) `python/asyncio` project discussing edge cases of `loop.add_reader` combined with shell here-document (`<<EOF`) input and EOF handling on stdin.
## Key findings
- `add_reader`/stdin EOF handling is treated as a known rough edge in asyncio's own issue tracker, not a fully solved, documented-everywhere corner of the API.
- The issue's existence itself is evidence that different stdin-feeding mechanisms (interactive shell vs. here-doc vs. piped file) can surface different edge-case behavior with `add_reader`.
## Pros / strengths
- Primary-source confirmation (from the asyncio project itself) that this is a genuinely tricky area, not something `tai_test.py`'s own testing was wrong to be cautious about.
## Cons / limitations / caveats
- This dossier is based on a web-search synthesis of the issue's existence and general topic, not a full read of the issue thread's technical discussion or resolution — the specific EOF-handling edge case it describes was not independently verified against `tai_test.py`'s own `StdinBridge` implementation.
- The issue predates asyncio's merge into the stdlib and may reference an older API surface.
## Relevance to tai
Reinforced the decision to keep `StdinBridge.start()` defensive: it returns `False` (no-op) when `sys.stdin.isatty()` is false, rather than attempting `add_reader` against every possible stdin configuration (pipes, here-docs, redirected files) and hoping EOF behaves consistently. `tai_test.py` only ever activates the live-stdin bridge when a real interactive terminal is confirmed present.
## Changelog
| Date | Change |
|---|---|
| 2026-10-09 | Initial dossier created. |