Changelog

v0.1.7 (2026-03-02)

  • Fix search_instruments fields parameter: make it optional so omitting it lets the API return all available fields instead of forcing a broken projection

  • Add internal_symbol_full field to InstrumentSearchItem model — the key field used by the eToro API for exact symbol matching

  • Remove broken fields="instrumentId" projection from InstrumentResolver search calls

  • Document that the search endpoint is for ID resolution only; display metadata (displayname, exchangeID) requires get_instruments()

v0.1.6 (2026-03-01)

  • Handle WebSocket instrument heartbeat messages that lack bid/ask data instead of logging parse errors

  • Add Makefile with make check to reproduce CI steps locally (lint, format, typecheck, test)

  • Add public observer demobot notebook example

  • Fix redundant cast in discovery client (mypy strict)

  • Fix line-too-long lint error in HTTP client error message

v0.1.5 (2026-02-28)

  • Fix SDK endpoint paths verified against real eToro API and add comprehensive integration test suite (41 tests covering all REST sub-clients)

  • Make InstrumentImage uri and color fields nullable to match actual API responses

  • Align InstrumentImage and ClosingPrice models with actual API response schemas

  • Add project badges to README

v0.1.4 (2026-02-27)

  • Fix ValidationError on candle volume: allow None from API responses where volume data is unavailable

v0.1.3 (2026-02-27)

  • Make rate limiter configurable via EToroConfig fields and environment variables (ETORO_RATE_LIMIT, ETORO_RATE_LIMIT_MAX_REQUESTS, ETORO_RATE_LIMIT_WINDOW)

  • Allow disabling rate limiting entirely by setting rate_limit=False

  • HttpClient now builds RateLimiterOptions from config when no explicit rate_limiter argument is provided

v0.1.2 (2026-02-26)

  • Fix WebSocket auth deadlock: start receive loop before _authenticate()

  • Fix binary frame handling: skip bytes messages, pass text directly without str() wrapping

  • Add 15 unit tests for WsClient (event emitter, auth flow, binary frames, disconnect, error paths)

  • Migrate .claude/commands/ templates from npm/Node.js to Python tooling

v0.1.1 (2026-02-26)

  • Add Sphinx documentation site with Furo theme and autodoc API reference

  • Add quickstart, architecture, and examples guides

  • Add GitHub Actions workflow for automatic docs deploy to GitHub Pages

v0.1.0 (2025)

Initial release.

  • 42+ REST endpoints across 9 sub-clients (market data, trading execution, trading info, watchlists, feeds, reactions, discovery, user info, PI data)

  • Real-time WebSocket streaming with auto-reconnect and heartbeat

  • EToroTrading high-level client with event emitter

  • InstrumentResolver with bundled 5,200+ symbol CSV

  • Token-bucket rate limiter and exponential-backoff retry

  • Full type hints (mypy strict) and Pydantic v2 models

  • Demo and real trading mode support