CodeVetter · Repo Unpack · Contributor handoff
encode/httpx
Tests and CI were inspected, not executed, and this brief is a bounded source investigation rather than an exhaustive audit. Start at the public entrypoint and follow the specific policy, model, and transport boundary involved in the task. Preserve synchronous/asynchronous parity, stream ownership, request-merging rules, and explicit disabling semantics. Verification commands below describe the repository workflow for a separately authorized execution task; publication is a distinct external action.
- Read pyproject.toml, __init__.py and _api.py before altering entrypoints: optional extras determine CLI/protocol availability, public exports are explicit, and top-level request helpers own temporary client lifetime.
- Client dispatch fixes need parity review in both send/auth/redirect pipelines; shared URL/header/cookie redirect transformations live on BaseClient, while sync and async hooks and stream operations differ.
- Preserve build_request() versus send() behavior: construction merges client defaults, but manually constructed requests bypass that merge. send() still sets missing timeout metadata and resolves authentication policy.
- USE_CLIENT_DEFAULT distinguishes omission from explicit None for auth and timeout; relative request URLs append to a slash-normalized base path rather than replacing it. These semantics are deliberate and documented in implementation.
- Treat stream cleanup and replay as acceptance criteria: stream contexts close in finally, raw iteration rejects closed/consumed streams, and generator redirects have a regression case expecting StreamConsumed.
- For separately authorized execution, the documented focused command is scripts/test -- tests/test_multipart.py; arguments reach pytest, but local execution also runs global checks and a 100-percent coverage gate. Test servers require ports 8000 and 8001.
- Repository checks enforce changelog/version agreement, Ruff formatting and lint, and strict mypy over httpx and tests; QueryParams is immutable, and per-request client cookies emit a deprecation warning.
- Build and release are separate boundaries: scripts/build creates distributions and docs; scripts/publish uploads distributions and force-deploys docs, and the Publish workflow responds to pushed tags. None of these commands was executed during this investigation.