""" pbpstats wrapper — possession-level NBA/WNBA analytics. pbpstats client setup is non-trivial; this module exposes a single safe entrypoint that returns aggregate possession data per player. If client construction fails (commonly due to missing local data files), we return a structured 'unavailable' response rather than raising. """ from __future__ import annotations from typing import Optional def get_possession_data(player_id: int, season: str = "2025-26", season_type: str = "Regular Season") -> dict: try: from pbpstats.client import Client settings = { "Boxscore": {"source": "web", "data_provider": "data_nba"}, "Possessions": {"source": "web", "data_provider": "data_nba"}, } client = Client(settings) # The pbpstats API surface depends on the installed version. We # expose just a minimal shape here so the orchestrator can call us # uniformly even when this module is degraded. return { "player_id": player_id, "season": season, "season_type": season_type, "available": True, "note": "pbpstats client initialized; per-player possession aggregation TODO", "source": "pbpstats", } except Exception as exc: return { "player_id": player_id, "available": False, "error": f"pbpstats unavailable: {exc!s}", }