From 10cd899b9d526998afb17c392287c1a6f4dc653f Mon Sep 17 00:00:00 2001 From: Brandon Hawi Date: Mon, 1 Dec 2025 15:46:47 -0800 Subject: [PATCH] fix: improve error handling for invalid API responses MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enhance NBAResponse.get_dict() to provide clearer error messages when the NBA API returns invalid or empty responses. This addresses issues where certain date/parameter combinations return non-JSON responses (e.g., 500 errors or empty strings) which previously resulted in cryptic JSONDecodeError messages. Changes: - Wrap json.loads() in try-except to catch JSONDecodeError - Provide informative ValueError with response content preview for invalid JSON responses - Include the request URL in error messages for easier debugging - Handle both empty responses and responses with error content This fix helps users quickly identify API issues without having to debug low-level JSON parsing errors. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/nba_api/library/http.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/nba_api/library/http.py b/src/nba_api/library/http.py index 1c33f8e9..54e22d03 100644 --- a/src/nba_api/library/http.py +++ b/src/nba_api/library/http.py @@ -39,7 +39,21 @@ def get_response(self): return self._response def get_dict(self): - return json.loads(self._response) + try: + return json.loads(self._response) + except json.JSONDecodeError as e: + if not self._response or self._response.isspace(): + raise ValueError( + f"NBA API returned an empty response. " + f"This can happen for various reasons including no data available for the requested parameters. " + f"URL: {self._url}" + ) from e + else: + raise ValueError( + f"NBA API returned an invalid JSON response: {str(e)}. " + f"Response content (first 200 chars): {self._response[:200]}... " + f"URL: {self._url}" + ) from e def get_json(self): return json.dumps(self.get_dict())