Why
The published API contract includes /v1/spreads/* and /v1/indicators/* operations. Node has typed resources; Python has neither. oilpriceapi.analysis is local calculation and is not API endpoint coverage.
Acceptance criteria
- Implement typed sync and async methods for the published spreads and indicators operations selected by the support manifest.
- Preserve timestamps, provenance, units, nulls, and pagination.
- Cover valid envelopes, malformed 200 responses, 401/402/403/429, no-data, and timeout recovery.
- Add examples, reference docs, and live smoke coverage.
- Update machine-readable capabilities and cut a minor release.
Delivery
Python package release; independent of Rails/web.
Why
The published API contract includes /v1/spreads/* and /v1/indicators/* operations. Node has typed resources; Python has neither. oilpriceapi.analysis is local calculation and is not API endpoint coverage.
Acceptance criteria
Delivery
Python package release; independent of Rails/web.