From 863879fb2d44eb77b6835867058fdd9f209c32f2 Mon Sep 17 00:00:00 2001 From: Pablo Date: Sat, 15 Feb 2025 20:14:25 -0600 Subject: [PATCH 1/2] fix: return empty json instead of throwing error on empty response --- binance/async_client.py | 4 ++++ binance/client.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/binance/async_client.py b/binance/async_client.py index 3a73e6803..f9f9a4642 100644 --- a/binance/async_client.py +++ b/binance/async_client.py @@ -161,6 +161,10 @@ async def _handle_response(self, response: aiohttp.ClientResponse): """ if not str(response.status).startswith("2"): raise BinanceAPIException(response, response.status, await response.text()) + + if response.text == "": + return {} + try: return await response.json() except ValueError: diff --git a/binance/client.py b/binance/client.py index 2c9a5233e..d542a357a 100755 --- a/binance/client.py +++ b/binance/client.py @@ -96,6 +96,10 @@ def _handle_response(response: requests.Response): """ if not (200 <= response.status_code < 300): raise BinanceAPIException(response, response.status_code, response.text) + + if response.text == "": + return {} + try: return response.json() except ValueError: From 6d2895cc958265632490f99462e4a1782e00ac1a Mon Sep 17 00:00:00 2001 From: Pablo Date: Sat, 15 Feb 2025 20:55:22 -0600 Subject: [PATCH 2/2] fix pyright --- binance/async_client.py | 5 ++++- binance/client.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/binance/async_client.py b/binance/async_client.py index f9f9a4642..a00eccddb 100644 --- a/binance/async_client.py +++ b/binance/async_client.py @@ -310,9 +310,12 @@ async def get_all_tickers( params = {} if symbol: params["symbol"] = symbol - return await self._get( + response = await self._get( "ticker/price", version=self.PRIVATE_API_VERSION, data=params ) + if isinstance(response, list) and all(isinstance(item, dict) for item in response): + return response + raise TypeError("Expected a list of dictionaries") get_all_tickers.__doc__ = Client.get_all_tickers.__doc__ diff --git a/binance/client.py b/binance/client.py index d542a357a..3bbdbc7e9 100755 --- a/binance/client.py +++ b/binance/client.py @@ -386,7 +386,10 @@ def get_all_tickers(self) -> List[Dict[str, str]]: :raises: BinanceRequestException, BinanceAPIException """ - return self._get("ticker/price", version=self.PRIVATE_API_VERSION) + response = self._get("ticker/price", version=self.PRIVATE_API_VERSION) + if isinstance(response, list) and all(isinstance(item, dict) for item in response): + return response + raise TypeError("Expected a list of dictionaries") def get_orderbook_tickers(self, **params) -> Dict: """Best price/qty on the order book for all symbols.