Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .secrets.baseline

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down
7 changes: 5 additions & 2 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 2 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -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.

Expand Down
6 changes: 3 additions & 3 deletions src/project_x_py/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/project_x_py/client/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -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",
},
)
Expand Down
2 changes: 1 addition & 1 deletion src/project_x_py/indicators/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@
)

# Version info
__version__ = "4.3.1"
__version__ = "4.3.2"
__author__ = "TexasCoding"


Expand Down
2 changes: 1 addition & 1 deletion src/project_x_py/statistics/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,4 @@
"CleanupScheduler",
]

__version__ = "4.3.1"
__version__ = "4.3.2"
Loading