diff --git a/CHANGELOG.md b/CHANGELOG.md index 103cfa4..386910e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,10 @@ All notable changes to the `oxarchive` Python SDK are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [1.10.0] - 2026-09-23 + +Versions 1.8.0, 1.9.0 and 1.9.1 are not available on PyPI. This release +includes all of their changes; upgrade from 1.7.0 straight to 1.10.0. ### Added - HIP-3 breadth above current UTC-session VWAP via @@ -18,14 +21,26 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm Hyperliquid Spot L4 remain live-only. ### Changed - -- Correct Lighter per-fill trade history to the observed global floor of January 17, 2025; exact starts vary by market. This supersedes the August floor documented in the earlier release notes below. +- Trade `fee`, `closed_pnl` and `start_position` are now returned as `"0"` + when the venue recorded a zero, instead of being omitted. A missing value + now means the source did not record it (for example fills from 2025-03-22 to + 2025-05-25), never zero. This is a server-side change and applies to every + SDK version. +- HIP-3 and HIP-4 trades now include `fee`, `fee_token`, `closed_pnl` and + `start_position`. +- Correct Lighter per-fill trade history to the observed global floor of + January 17, 2025; exact starts vary by market. This supersedes the August + floor documented in the earlier release notes below. - Lighter WebSocket channels now support bounded historical replay without live subscriptions. Current Lighter data remains available through REST; live subscription calls fail fast with guidance to REST or replay. - Projected forced-liquidation price-level endpoints refresh about every five minutes. This is a measured cadence, not an exact five-minute guarantee. +### Fixed +- Lighter symbols are encoded as a single path segment in every resource and + convenience method, sync and async. + ### Breaking - Lighter `funding_rate` is now a fractional, non-annualized rate. Consumers that compensated for the former percent units must remove that conversion; diff --git a/oxarchive/__init__.py b/oxarchive/__init__.py index 944e8dd..9e3f35b 100644 --- a/oxarchive/__init__.py +++ b/oxarchive/__init__.py @@ -124,7 +124,7 @@ OxArchiveWs = None # type: ignore WsOptions = None # type: ignore -__version__ = "1.9.1" +__version__ = "1.10.0" __all__ = [ # Client diff --git a/oxarchive/types.py b/oxarchive/types.py index cfe0602..7f94b44 100644 --- a/oxarchive/types.py +++ b/oxarchive/types.py @@ -116,19 +116,24 @@ class Trade(BaseModel): """True if taker (crossed the spread), false if maker.""" fee: Optional[str] = None - """Trading fee amount.""" + """Fee paid on this fill in ``fee_token``, including any builder fee; negative + is a rebate. ``"0"`` is a recorded zero fee. ``None`` when the source did not + record fees, for example fills from 2025-03-22 to 2025-05-25.""" fee_token: Optional[str] = None - """Fee denomination (e.g., USDC).""" + """Fee denomination (e.g., USDC). Present exactly when ``fee`` and + ``closed_pnl`` were recorded.""" closed_pnl: Optional[str] = None - """Realized PnL if closing a position.""" + """Realized PnL on this fill. ``"0"`` when the fill opened or added to a + position. ``None`` when the source did not record it (same cases as ``fee``).""" direction: Optional[str] = None """Position direction (e.g., 'Open Long', 'Close Short', 'Long > Short').""" start_position: Optional[str] = None - """Position size before this trade.""" + """Position size (spot: balance) before this fill; negative is short. ``"0"`` + means flat. ``None`` when the source did not record it.""" user_address: Optional[str] = None """User's wallet address (for fill-level data).""" diff --git a/pyproject.toml b/pyproject.toml index 92737d3..ff2fa38 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "oxarchive" -version = "1.9.1" +version = "1.10.0" description = "Python SDK for the 0xArchive market data API for Hyperliquid and Lighter" readme = "README.md" license = "MIT"