diff --git a/.secrets.baseline b/.secrets.baseline index 08410e9..7c2c4ab 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -133,7 +133,7 @@ "filename": "CHANGELOG.md", "hashed_secret": "89a6cfe2a229151e8055abee107d45ed087bbb4f", "is_verified": false, - "line_number": 2515 + "line_number": 2535 } ], "README.md": [ @@ -216,5 +216,5 @@ } ] }, - "generated_at": "2026-09-15T02:41:57Z" + "generated_at": "2026-09-26T22:01:29Z" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 88dc734..f093e30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [4.3.2] - 2026-09-26 + ### Fixed - `RealtimeDataManager.cleanup()` no longer sweeps bounded-statistics @@ -28,6 +30,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 which stops both hubs and joins each hub `run()` task — before per-instrument data and orderbook cleanup (since v4.0.0). +### Changed + +- GitHub release workflow uses `softprops/action-gh-release` v3 (CI only) (#139). + +### Dependencies + +- Lockfile pins `anyio` 4.14.2 (was 4.10.0, security group) (#146). + ## [4.3.1] - 2026-09-14 ### Fixed diff --git a/README.md b/README.md index 06b53b2..7509936 100644 --- a/README.md +++ b/README.md @@ -27,11 +27,9 @@ A **high-performance async Python SDK** for the [ProjectX Trading Platform](http This Python SDK acts as a bridge between your trading strategies and the ProjectX platform, handling all the complex API interactions, data processing, and real-time connectivity. -## 🚀 v4.3.1 - Coalesced quote/depth forwards so NEW_BAR is not starved +## 🚀 v4.3.2 - Skip bounded-stats sweep on data manager teardown -**Latest Version**: v4.3.1 — SignalR `quote_update` and `market_depth` forwards keep one in-flight task per contract and replace extras with the latest payload, so an RTH-open quote/depth flood cannot fill the asyncio queue and delay 1-minute `NEW_BAR` (#143). `market_trade` and user-hub events are never dropped. v4.3.0 added `aggregate_session_bars()` for CME/TopstepX session candles (#140) and honest reconnect health (#141). - -**Unreleased**: `TradingSuite.disconnect()` still stops both SignalR hubs and joins each hub receive task before per-instrument bars are freed. `RealtimeDataManager.cleanup()` no longer runs a bounded-statistics counter sweep at teardown; in-session `CleanupScheduler` cleanup is unchanged (#98). +**Latest Version**: v4.3.2 — `RealtimeDataManager.cleanup()` no longer sweeps bounded-statistics counters at teardown. In-session `CleanupScheduler` cleanup is unchanged, and `TradingSuite.disconnect()` still joins SignalR hub receive tasks before freeing per-instrument data (#98). v4.3.1 coalesces `quote_update` / `market_depth` forwards so an RTH-open flood cannot starve `NEW_BAR` (#143). v4.3.0 added `aggregate_session_bars()` for CME/TopstepX session candles (#140) and honest reconnect health (#141). **Key changes**: - Official defaults: `https://api.topstepx.com` and `https://rtc.topstepx.com` diff --git a/docs/changelog.md b/docs/changelog.md index 2c4c615..4976682 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -9,11 +9,14 @@ The canonical changelog is the repository root [CHANGELOG.md](https://github.com ## [Unreleased] +## [4.3.2] - 2026-09-26 + `RealtimeDataManager.cleanup()` no longer sweeps bounded-statistics counters at teardown. In-session `CleanupScheduler` cleanup is unchanged, and `TradingSuite.disconnect()` still joins SignalR hub receive tasks -before freeing per-instrument data (#98). See the root CHANGELOG for the -full note. +before freeing per-instrument data (#98). Lockfile pins anyio 4.14.2 +(#146). CI uses `softprops/action-gh-release` v3 (#139). See the root +CHANGELOG for the full note. ## [4.3.1] - 2026-09-14 diff --git a/docs/index.md b/docs/index.md index 0c86a1f..1006141 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,8 +7,8 @@ **project-x-py** is a high-performance **async Python SDK** for the [ProjectX Trading Platform](https://www.projectx.com/) Gateway API. This library enables developers to build sophisticated trading strategies and applications by providing comprehensive async access to futures trading operations, real-time market data, Level 2 orderbook analysis, and 64 named indicators (Polars implementations; **not** a full TA-Lib port). -!!! note "Version 4.3.1" - **Latest Release**: TopstepX-only Gateway SDK (`api.topstepx.com` / `rtc.topstepx.com`) with native brackets, risk OCO and entry-order gating, stale-feed watchdog, `OrderSubmissionUncertainError`, and 64 named Polars indicators (not a full TA-Lib port). v4.3.1 coalesces `quote_update` / `market_depth` forwards so an RTH-open flood cannot starve `NEW_BAR` (#143). v4.3.0 added `aggregate_session_bars()` and reconnect health fixes (#140, #141). See the [v3 → v4 migration guide](migration/v3-to-v4.md). +!!! note "Version 4.3.2" + **Latest Release**: TopstepX-only Gateway SDK (`api.topstepx.com` / `rtc.topstepx.com`) with native brackets, risk OCO and entry-order gating, stale-feed watchdog, `OrderSubmissionUncertainError`, and 64 named Polars indicators (not a full TA-Lib port). v4.3.2 skips the bounded-statistics counter sweep in `RealtimeDataManager.cleanup()` so teardown does not read counters that are about to be discarded (#98). v4.3.1 coalesces `quote_update` / `market_depth` forwards so an RTH-open flood cannot starve `NEW_BAR` (#143). v4.3.0 added `aggregate_session_bars()` and reconnect health fixes (#140, #141). See the [v3 → v4 migration guide](migration/v3-to-v4.md). !!! note "Stable Production Release" This project maintains strict semantic versioning. v4.0.0 is a major release with documented breaking changes. Deprecation warnings are provided for at least 2 minor versions before removal. diff --git a/examples/README.md b/examples/README.md index a3856da..e298dfd 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,6 +1,6 @@ -# ProjectX Python SDK Examples (v4.3.1) +# ProjectX Python SDK Examples (v4.3.2) -This directory contains working examples for the ProjectX Python SDK v4.3.1. All examples use **MNQ (Micro E-mini NASDAQ)** contracts to minimize risk during testing. +This directory contains working examples for the ProjectX Python SDK v4.3.2. All examples use **MNQ (Micro E-mini NASDAQ)** contracts to minimize risk during testing. **Note:** v4.0 is the TopstepX Gateway revival. Use `TradingSuite.create()`, `await suite.get_stats()` / `export_stats()`, and see `docs/migration/v3-to-v4.md` for breaking changes. diff --git a/src/project_x_py/__init__.py b/src/project_x_py/__init__.py index b9dd53c..27192da 100644 --- a/src/project_x_py/__init__.py +++ b/src/project_x_py/__init__.py @@ -3,7 +3,7 @@ Author: @TexasCoding Date: 2026-08-29 -Version: 4.3.1 - coalesced quote/depth forwards so NEW_BAR is not starved (#143) +Version: 4.3.2 - skip bounded-stats sweep on data manager teardown (#98) Overview: A comprehensive Python SDK for the ProjectX Trading Platform Gateway API, providing @@ -96,7 +96,7 @@ It provides the infrastructure to help developers create their own trading applications that integrate with the ProjectX platform. -Version: 4.3.1 +Version: 4.3.2 Author: TexasCoding See Also: @@ -109,7 +109,7 @@ - `utils`: Utility functions and calculations """ -__version__ = "4.3.1" +__version__ = "4.3.2" __author__ = "TexasCoding" # Core client classes - renamed from Async* to standard names diff --git a/src/project_x_py/client/http.py b/src/project_x_py/client/http.py index 76122cc..a537c70 100644 --- a/src/project_x_py/client/http.py +++ b/src/project_x_py/client/http.py @@ -159,7 +159,7 @@ async def _create_client(self: "ProjectXClientProtocol") -> httpx.AsyncClient: verify=True, follow_redirects=False, headers={ - "User-Agent": "ProjectX-Python-SDK/4.3.1", + "User-Agent": "ProjectX-Python-SDK/4.3.2", "Accept": "application/json", }, ) diff --git a/src/project_x_py/indicators/__init__.py b/src/project_x_py/indicators/__init__.py index a0c71e8..981c24f 100644 --- a/src/project_x_py/indicators/__init__.py +++ b/src/project_x_py/indicators/__init__.py @@ -206,7 +206,7 @@ ) # Version info -__version__ = "4.3.1" +__version__ = "4.3.2" __author__ = "TexasCoding" diff --git a/src/project_x_py/statistics/__init__.py b/src/project_x_py/statistics/__init__.py index 5e17f80..43e8ece 100644 --- a/src/project_x_py/statistics/__init__.py +++ b/src/project_x_py/statistics/__init__.py @@ -57,4 +57,4 @@ "CleanupScheduler", ] -__version__ = "4.3.1" +__version__ = "4.3.2"