What's New
Full Async Client
- All 16 resources now available on
AsyncOilPriceAPI(was only 2: prices + historical) - Async
iter_pages()generator for memory-efficient pagination
New Features
- Webhook signature verification —
verify_webhook_signature()with HMAC-SHA256 and constant-time comparison oilpriceCLI —oilprice price BRENT_CRUDE_USD,oilprice historical,oilprice commoditieswith--jsonoutput- Opt-in telemetry —
enable_telemetry=Trueon both sync and async clients - 429 auto-retry — honors
Retry-Afterheader (capped at 60s) instead of immediately raising
Bug Fixes
- Fixed version triple mismatch (single source in
version.py) - Fixed Python 3.8 syntax compatibility
- Fixed
await response.json()crash in async client (httpx.json()is synchronous) - Fixed
get_current_price()connection leak - Removed unused
aiohttpfrom[async]extra
Developer Experience
ValidationError,TimeoutError,ConfigurationErrornow exported from top-level- Lint/mypy now blocking in CI
- Coverage enforcement gate (
--cov-fail-under=50) - mkdocs + mkdocstrings API reference
- Shared
resource_validators.pyto reduce sync/async duplication
Full changelog: v1.6.2...v1.7.0