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
v3.0.0: unified ThetaDataDx client -- one connect, lazy streaming
Breaking:
- ThetaDataDx replaces DirectClient + FpssClient as the public API
- Connect once, auth once. Historical immediately, streaming on demand.
- Python: DirectClient and FpssClient classes removed. Use ThetaDataDx.
Added:
- ThetaDataDx::connect(creds, config) -- single entry point
- start_streaming / start_streaming_no_ohlcvc -- lazy FPSS
- stop_streaming -- clean shutdown, historical stays alive
- Explicit Drop impl stops streaming automatically
- FFI: tdx_unified_connect, tdx_unified_historical (repr(transparent) cast)
- C++ SDK: 9 new typed structs, all 61 methods return vector<T>
- Go SDK: 9 new typed structs, all 63 methods return []T
- Python: _df DataFrame methods on ThetaDataDx
- Server: stop_streaming on graceful shutdown
Fixed:
- All audit findings (critical/high/medium/low) from dual Codex+Gemini review
- No raw JSON in any SDK public API surface
- All docs, notebooks, READMEs match actual API signatures
160 tests, zero warnings.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+30-1Lines changed: 30 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [3.0.0] - 2026-03-27
9
+
10
+
### Breaking Changes
11
+
12
+
-**Unified `ThetaDataDx` client** — single entry point replacing `DirectClient` + `FpssClient`.
13
+
Connect once, auth once. Historical available immediately, streaming connects lazily.
14
+
-**`DirectClient` removed from crate root re-exports** — still accessible as `thetadatadx::direct::DirectClient` but all methods available via `ThetaDataDx` (Deref)
15
+
-**`FpssClient` removed from crate root re-exports** — use `tdx.start_streaming(handler)` instead
16
+
-**Python SDK**: `DirectClient` and `FpssClient` classes removed. Use `ThetaDataDx` only.
17
+
18
+
### Added
19
+
20
+
-`ThetaDataDx::connect(creds, config)` — one auth, gRPC channel ready, no FPSS yet
21
+
-`tdx.start_streaming(handler)` — lazy FPSS connection on demand
22
+
-`tdx.start_streaming_no_ohlcvc(handler)` — same, without derived OHLCVC
23
+
-`tdx.stop_streaming()` — clean shutdown of streaming, historical stays alive
24
+
-`tdx.is_streaming()` — check if FPSS is active
25
+
- All 61 historical methods via `Deref<Target = DirectClient>`
26
+
- All streaming methods (subscribe/unsubscribe) directly on `ThetaDataDx`
> FPSS streaming connects to ThetaData's dedicated streaming servers via TLS/TCP. The client automatically sends heartbeat pings every 100ms as required by the protocol.
0 commit comments