Skip to content

Commit 54474a5

Browse files
karlwaldmanclaude
andcommitted
release: v1.10.0 — ship the technical-indicators module pip users were promised (#43)
- version 1.9.0 → 1.10.0 (analysis module landed after the 1.9.0 tag; README advertised it but PyPI 1.9.0 doesn't contain it) - README: indicators claim now says v1.10.0; fixed 3 dead docs.oilpriceapi.com/sdk/python links (404) → docs root - CHANGELOG: [Unreleased] → [1.10.0] - 2026-07-03 - test_demo_contract: un-pin exact catalog count (442 → floor of 400; live catalog is 436 today — curation shouldn't fail tests) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent a730c74 commit 54474a5

5 files changed

Lines changed: 14 additions & 10 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [1.10.0] - 2026-07-03
11+
1012
### Added
1113

1214
- **Analysis Resource (Technical Indicators)**: `client.analysis` with `with_indicators(df, indicators=[...])` DataFrame helper and direct methods `sma()`, `ema()`, `rsi()`, `macd()`, `bollinger_bands()`, `atr()`. Pure pandas/numpy implementation, no new dependencies. Closes #3.

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
[![Coverage](https://codecov.io/gh/oilpriceapi/python-sdk/branch/main/graph/badge.svg)](https://codecov.io/gh/oilpriceapi/python-sdk)
1010
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
1111

12-
**[Get Free API Key](https://www.oilpriceapi.com/signup?utm_source=pypi&utm_medium=sdk&utm_campaign=readme)****[Documentation](https://docs.oilpriceapi.com/sdk/python)****[Pricing](https://www.oilpriceapi.com/pricing?utm_source=pypi&utm_medium=sdk&utm_campaign=pricing)**
12+
**[Get Free API Key](https://www.oilpriceapi.com/signup?utm_source=pypi&utm_medium=sdk&utm_campaign=readme)****[Documentation](https://docs.oilpriceapi.com/)****[Pricing](https://www.oilpriceapi.com/pricing?utm_source=pypi&utm_medium=sdk&utm_campaign=pricing)**
1313

1414
The official Python SDK for [OilPriceAPI](https://oilpriceapi.com) - Real-time and historical oil prices for Brent Crude, WTI, Natural Gas, and more.
1515

16-
> **📝 Documentation Status**: All code examples shown are tested and working. Technical indicators are available as of v1.9.0 (see [Technical Indicators](#technical-indicators-new-in-v190)); see our [GitHub Issues](https://github.com/OilpriceAPI/python-sdk/issues) for the roadmap.
16+
> **📝 Documentation Status**: All code examples shown are tested and working. Technical indicators are available as of v1.10.0 (see [Technical Indicators](#technical-indicators-new-in-v1100)); see our [GitHub Issues](https://github.com/OilpriceAPI/python-sdk/issues) for the roadmap.
1717
1818
**Quick start:**
1919

@@ -63,7 +63,7 @@ print(f"Retrieved {len(df)} data points")
6363
print(df.head())
6464
```
6565

66-
### Technical Indicators (New in v1.9.0)
66+
### Technical Indicators (New in v1.10.0)
6767

6868
Add technical analysis indicators to any price DataFrame. Implemented in pure
6969
pandas/numpy, so no extra dependencies beyond the optional `[pandas]` extra.
@@ -555,7 +555,7 @@ async with AsyncOilPriceAPI() as client:
555555

556556
## 📚 Documentation
557557

558-
**[Complete SDK Documentation →](docs/index.md)** | **[Online Docs →](https://docs.oilpriceapi.com/sdk/python)**
558+
**[Complete SDK Documentation →](docs/index.md)** | **[Online Docs →](https://docs.oilpriceapi.com/)**
559559

560560
**[⚡ Performance Guide →](docs/PERFORMANCE_GUIDE.md)** — expected response times, recommended timeouts, optimization best practices, and troubleshooting for slow queries.
561561

@@ -802,7 +802,7 @@ Contributions are welcome! Please see our [Contributing Guide](https://github.co
802802

803803
- 📧 Email: support@oilpriceapi.com
804804
- 🐛 Issues: [GitHub Issues](https://github.com/oilpriceapi/python-sdk/issues)
805-
- 📖 Docs: [Documentation](https://docs.oilpriceapi.com/sdk/python)
805+
- 📖 Docs: [Documentation](https://docs.oilpriceapi.com/)
806806

807807
## 🔗 Links
808808

oilpriceapi/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
Used in __init__.py, client.py, and async_client.py.
66
"""
77

8-
__version__ = "1.9.0"
8+
__version__ = "1.10.0"
99
SDK_VERSION = __version__
1010
SDK_NAME = "oilpriceapi-python"

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "oilpriceapi"
7-
version = "1.9.0"
7+
version = "1.10.0"
88
description = "Official Python SDK for OilPriceAPI - Real-time and historical oil prices"
99
authors = [
1010
{name = "OilPriceAPI", email = "support@oilpriceapi.com"}

tests/integration/test_demo_contract.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,13 @@ def test_commodities_envelope_and_count(self, demo: DemoResource) -> None:
9494
assert isinstance(catalog, dict) # grouped by category
9595

9696
meta = data["meta"]
97-
# Contract: 442 commodities in the catalog, meta.total agrees with the
98-
# flattened catalog size.
97+
# Contract: meta.total agrees with the flattened catalog size and the
98+
# catalog is large (400+). Do NOT pin the exact count — the live
99+
# catalog legitimately grows/shrinks (442 when written, 436 on
100+
# 2026-07-03), and an exact pin turns catalog curation into failures.
99101
flattened = sum(len(v) for v in catalog.values())
100102
assert meta["total"] == flattened
101-
assert meta["total"] == 442
103+
assert meta["total"] >= 400
102104

103105
# meta.free_commodities is present and matches the 9 free-tier codes.
104106
assert "free_commodities" in meta

0 commit comments

Comments
 (0)