OSopensport.dev
Release history

Changelog

All notable changes to the Opensport SDK and documentation site. Follows semantic versioning.

v0.4.0

minor2026-03-12
Added
  • TTLCache and @ttl_cache decorator in opensport.utils — thread-safe in-memory caching with per-entry time-to-live.
  • Caching applied to PremierLeagueProvider.get_events() (300 s) and get_odds() (120 s) to protect free-tier rate limits.
  • stream_odds() on MockProvider — async generator that yields fresh OddsSnapshot objects with jittered prices, simulating a live price feed without network calls.
  • Live score demo card on the Demo page — get_live_score() shown in the interactive playground.
  • Daily value-bet digest scheduled skill — creates a Notion page each morning with that day's top +EV opportunities.
Changed
  • Demo API route now returns a live: boolean field so the playground can distinguish real vs. mock data.

v0.3.0

minor2026-03-08
Added
  • Interactive Demo page at /demo — run live code snippets against real Premier League data with no API key required.
  • API route at /api/demo backing the playground — gracefully falls back to curated mock data when keys are absent.
  • Live / Mock badge in demo output to indicate the data source at a glance.
  • Real Matchweek 30 fixture data (14–16 March 2026) with correct GMT kick-off times baked into mock fallback.
  • Demo page linked from the main navigation and footer.
Changed
  • GitHub links updated throughout to github.com/nellychaos/opensport.

v0.2.0

minor2026-03-01
Added
  • PremierLeagueProvider — production-ready Premier League connector combining Football-Data.org (fixtures/scores) and The Odds API (bookmaker prices).
  • FootballDataClient and OddsApiClient HTTP clients with full error handling and RateLimitError propagation.
  • Mapper utilities: fbd_match_to_event, odds_to_snapshot, find_odds_event, normalize_team.
  • PremierLeagueProvider.verify() classmethod — validates both API keys cheaply before running an agent.
  • 47 offline unit tests covering all mappers, clients (with httpx mocks), and provider edge-cases.
  • ProviderRegistry.from_env() — auto-discovers providers from environment variables (FOOTBALL_DATA_API_KEY, ODDS_API_KEY).
  • MCP server (opensport serve) — exposes get_events, get_odds, and find_events as MCP tools consumable by Claude, Cursor, and other AI clients.
Changed
  • BaseProvider.get_live_score() default implementation now returns {} instead of raising NotImplementedError.

v0.1.0

major2026-02-20
Added
  • Core data modelsEvent, Team, Venue, OddsSnapshot, MarketOdds, OutcomeOdds, MarketType.
  • BaseProvider abstract class — standard interface (get_events, get_odds, get_markets, get_live_score, stream_odds, find_events) for all data providers.
  • MockProvider — fully in-memory provider generating realistic events and odds across soccer, NFL, NBA, and tennis. No API keys required.
  • MultiProvider + ProviderRegistry — fan-out get_events() across providers; route get_odds() by event_id_prefix.
  • get_value_bets() utility — strips vig, computes consensus fair probabilities, surfaces positive-EV outcomes.
  • format_odds_table() and pnl_report() display helpers.
  • Python 3.11+, zero hard dependencies; optional httpx via pip install 'opensport[http]'.
  • Comprehensive test suite with 100% offline coverage of core models.