You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All client methods now return typed dataclass objects with IDE
autocompletion. Full backwards compatibility preserved — dict-style []
access, .get(), and iteration all work unchanged. Models expose .raw
for the original API dict. Nested sub-objects for complex responses
(Quote.liquidity, Company.fundamentals/technicals/valuation/analysts).
No external dependencies — uses stdlib dataclasses only.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,21 @@ All notable changes to the `sahmk` Python SDK will be documented in this file.
4
4
5
5
This project follows [Semantic Versioning](https://semver.org/).
6
6
7
+
## [0.5.0] — 2026-04-02
8
+
9
+
### Added
10
+
11
+
-**Typed response models** — all client methods now return typed dataclass objects (e.g., `Quote`, `Company`, `HistoricalResponse`, `FinancialsResponse`, `DividendsResponse`, `EventsResponse`, `MarketSummary`, etc.) with IDE autocompletion and attribute access
12
+
-**Full backwards compatibility** — all typed models support dict-style `[]` access, `.get()`, `.keys()`, `.values()`, `.items()`, and `in` checks; existing code using `result["price"]` continues to work unchanged
13
+
-**`.raw` attribute** — every model exposes the original API response dict via `.raw` for cases where you need the full untyped data
14
+
-**Nested typed models** — complex responses have properly typed sub-objects (e.g., `Quote.liquidity` returns a `Liquidity` object, `Company.fundamentals` returns a `Fundamentals` object)
15
+
-**Plan-aware models** — `Company` model gracefully handles tiered responses (Free: basic fields, Starter: +fundamentals, Pro: +technicals/valuation/analysts) with `None` for unavailable sections
16
+
17
+
### Changed
18
+
19
+
- All client methods (`quote()`, `quotes()`, `historical()`, `market_summary()`, `gainers()`, `losers()`, `volume_leaders()`, `value_leaders()`, `sectors()`, `company()`, `financials()`, `dividends()`, `events()`) now return typed model instances instead of plain dicts
20
+
- CLI `_print_json()` now handles model objects by serializing their `.raw` dict
0 commit comments