Skip to content

Commit 5088987

Browse files
xiao115255claude
andcommitted
fix(web_programming): catch HTTPStatusError in crypto_price_tracker fallback
The build check on this PR fails in web_programming/crypto_price_tracker.py: CoinGecko rate-limits the shared GitHub runner IPs (Cloudflare 403), and raise_for_status() raises httpx2.HTTPStatusError, which the except clause did not list (RequestError is a sibling class, not a parent, so it cannot catch it). The intended return-0.0 fallback therefore never ran and the doctest failed. Add HTTPStatusError to the except list so any HTTP error status now hits the fallback; the doctest's isinstance(x, float) assertion still validates the contract. Ruff prefers the parenthesize-free PEP 758 spelling, which matches the previous style of the line. This is a pre-existing defect on master, unrelated to #15234. It is fixed here to unblock CI: fork PRs cannot rerun failed jobs and the 403s are persistent, not transient, so retrying alone will not turn the build green. Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent c21d1ab commit 5088987

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

‎web_programming/crypto_price_tracker.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ def crypto_price(coin: str = "bitcoin") -> float:
2424
url = f"https://api.coingecko.com/api/v3/simple/price?ids={coin}&vs_currencies=usd"
2525
try:
2626
json_response = httpx2.get(url, timeout=10).raise_for_status().json()
27-
except httpx2.RequestError, ValueError, KeyError:
27+
except httpx2.HTTPStatusError, httpx2.RequestError, ValueError, KeyError:
2828
return 0.0
2929
return float(json_response.get(coin, {}).get("usd", 0.0))
3030

0 commit comments

Comments
 (0)