Trace
Requirement → acceptance criteria → tasks → commits → pull requests → reviews, with each criterion's AI verdict and its verification on the latest build.
REQ-CLICK-01: Terminal output respects user configuration REQ-CLICK-02: Styled output degrades gracefully REQ-CLICK-03: Breaking changes are announced one minor release ahead REQ-HTTPX-01: TLS configuration has one obvious way REQ-HTTPX-02: URLs are encoded the way browsers encode them REQ-HTTPX-03: Secrets never appear in logs REQ-REQ-01: Anything that behaves like a file is accepted REQ-REQ-02: Public type hints describe what callers may pass REQ-REQ-03: Security-relevant code works under FIPS SUB-CLI-01: Command-line output library (click) meets the baseline SUB-HTTP-01: HTTP client libraries (requests, httpx) meet the baseline SYS-01: Third-party client libraries meet the platform dependency baseline
REQ-REQ-01 · v1 changed 2026-05-01
Requests must accept any object that provides the file methods it needs, whether defined directly or proxied through __getattr__.
3 acceptance criteria
Request bodies that wrap a file through `__getattr__` (without defining `__iter__` themselves) are streamed instead of rejected.
Multipart uploads accept file objects that only expose `read` through `__getattr__`.
TASK-REQ-1012 done
All read-capability checks go through one helper function instead of repeated isinstance checks.