Releases: OilpriceAPI/python-sdk
Releases · OilpriceAPI/python-sdk
Release list
v1.10.1 — storefront README + numeric market-brief confidence
- fix: MarketBrief forecast
confidencenow accepts the API's numeric score (0.65) as well as legacy labels — caught by the live contract tests' first armed run - docs: registry storefront README (badges, commodity table, API explorer links, ecosystem cross-links)
v1.10.0 — technical indicators module
What's new
- Technical indicators:
client.analysis—with_indicators(df, ...)plussma(),ema(),rsi(),macd(),bollinger_bands(),atr(). Pure pandas/numpy, no new dependencies. (This module was advertised for 1.9.0 but missed the tag — it ships for real now.) - README link fixes and a de-brittled live-catalog contract test.
v1.9.0
What's Changed
- docs: normalize legacy plan names to current tiers by @karlwaldman in #36
- feat: market-brief + agent-subscription methods (sync+async, v1.9.0) by @karlwaldman in #37
Full Changelog: v1.8.1...v1.9.0
v1.8.1
What's Changed
- fix: futures slug normalization + live CI tests (v1.8.1) by @karlwaldman in #35
Full Changelog: v1.8.0...v1.8.1
v1.8.0
What's Changed
- fix: green CI — mypy python_version + sync forecasts/drilling annotations by @karlwaldman in #31
- feat: async WebSocket streaming client by @karlwaldman in #32
- chore: pay down mypy typing-debt + param audit + live demo contract tests by @karlwaldman in #33
- chore: release 1.8.0 by @karlwaldman in #34
Full Changelog: v1.7.1...v1.8.0
v1.7.1
What's Changed
- fix: green publish gate + add pytest-timeout so PyPI publish can ship by @karlwaldman in #29
- chore: bump version to 1.7.1 for PyPI release by @karlwaldman in #30
New Contributors
- @karlwaldman made their first contribution in #29
Full Changelog: v1.7.0...v1.7.1
v1.7.0 — World-class SDK Upgrade
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
v1.6.0 — Currency fix + auto-pagination
Fixes
- Currency preservation in
to_dataframe(): Fixed bug where all commodities showed USD regardless of actual currency. EUR, GBP, and other currencies now correctly preserved. - Auto-pagination in
get_all()andto_dataframe(): Previously capped at one page of results. Now auto-paginates usingX-Has-Nextresponse header to fetch all available data. - New
per_pageparameter: Bothget_all()andto_dataframe()acceptper_page(default 100) to control page size.
Upgrade
pip install --upgrade oilpriceapiv1.0.0 - Production Release
OilPriceAPI Python SDK v1.0.0
First stable release of the official OilPriceAPI Python SDK.
Features
- ✅ Synchronous and asynchronous clients
- ✅ Comprehensive error handling with automatic retry logic
- ✅ Type-safe models with Pydantic v2
- ✅ Current and historical price data access
- ✅ Optional pandas DataFrame support
- ✅ Production logging and observability
- ✅ 100 passing tests with 64% coverage
- ✅ Full documentation and examples
Installation
pip install oilpriceapiQuick Start
from oilpriceapi import OilPriceAPI
# Initialize client
client = OilPriceAPI(api_key='your-api-key')
# Get current price
price = client.prices.get('BRENT_CRUDE_USD')
print(f'{price.commodity}: ${price.value}')Documentation
🤖 Generated with Claude Code