Essential session storage is required to sign in. Optional analytics remain off unless you allow them.
Build an asyncio-based client that fetches many endpoints concurrently but with BOUNDED concurrency (an asyncio.Semaphore), per-request timeouts, and retry with backoff. Type the whole thing, and test it with the network mocked (no real I/O in tests) — proving both correct results and that concurrency is actually capped. Explain in the README why asyncio fits this I/O-bound workload and where the GIL is irrelevant here.
Uses asyncio with a Semaphore (or equivalent) to cap in-flight requests; gather overlaps the waiting; the cap is demonstrably enforced.
Per-request timeouts and retry-with-backoff; failures are isolated, not fatal to the whole batch.
Tests mock the network (no real calls); they assert results AND that concurrency is bounded.
Fully type-hinted; README explains why asyncio fits I/O-bound work and the GIL's irrelevance here.
Use this README structure to make the work reviewable.
DevPath fetches a read-only, size-capped snapshot. Submitted code is never executed.
# An async API client with bounded concurrency ## Goal Build an asyncio-based client that fetches many endpoints concurrently but with BOUNDED concurrency (an asyncio.Semaphore), per-request timeouts, and retry with backoff. Type the whole thing, and test it with the network mocked (no real I/O in tests) — proving both correct results and that concurrency is actually capped. Explain in the README why asyncio fits this I/O-bound workload and where the GIL is irrelevant here. ## Acceptance criteria - [ ] Bounded concurrency: Uses asyncio with a Semaphore (or equivalent) to cap in-flight requests; gather overlaps the waiting; the cap is demonstrably enforced. - [ ] Resilience: Per-request timeouts and retry-with-backoff; failures are isolated, not fatal to the whole batch. - [ ] Tested with mocked I/O: Tests mock the network (no real calls); they assert results AND that concurrency is bounded. - [ ] Typed & explained: Fully type-hinted; README explains why asyncio fits I/O-bound work and the GIL's irrelevance here. ## Verification - [ ] Document installation and run commands. - [ ] Record automated checks and their exact commands. - [ ] Add representative output, screenshots, or a short demo where useful. - [ ] Confirm failure paths and known constraints. ## Decision log ### Decision title - Context: - Choice: - Alternatives considered: - Tradeoffs: ## Evidence - Link each rubric criterion to the file, test, or artifact that demonstrates it. ## Known limitations - List what is intentionally out of scope and what should be improved next.