Skip to content

Commit 8d0465b

Browse files
committed
feat: assure v3 is used
1 parent 6e223f2 commit 8d0465b

File tree

5 files changed

+85
-48
lines changed

5 files changed

+85
-48
lines changed

binance/async_client.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ async def get_products(self) -> Dict:
283283
get_products.__doc__ = Client.get_products.__doc__
284284

285285
async def get_exchange_info(self) -> Dict:
286-
return await self._get("exchangeInfo", version=self.PRIVATE_API_VERSION)
286+
return await self._get("exchangeInfo")
287287

288288
get_exchange_info.__doc__ = Client.get_exchange_info.__doc__
289289

@@ -301,12 +301,12 @@ async def get_symbol_info(self, symbol) -> Optional[Dict]:
301301
# General Endpoints
302302

303303
async def ping(self) -> Dict:
304-
return await self._get("ping", version=self.PRIVATE_API_VERSION)
304+
return await self._get("ping")
305305

306306
ping.__doc__ = Client.ping.__doc__
307307

308308
async def get_server_time(self) -> Dict:
309-
return await self._get("time", version=self.PRIVATE_API_VERSION)
309+
return await self._get("time")
310310

311311
get_server_time.__doc__ = Client.get_server_time.__doc__
312312

@@ -319,7 +319,7 @@ async def get_all_tickers(
319319
if symbol:
320320
params["symbol"] = symbol
321321
response = await self._get(
322-
"ticker/price", version=self.PRIVATE_API_VERSION, data=params
322+
"ticker/price", data=params
323323
)
324324
if isinstance(response, list) and all(isinstance(item, dict) for item in response):
325325
return response
@@ -334,13 +334,13 @@ async def get_orderbook_tickers(self, **params) -> Dict:
334334
elif "symbols" in params:
335335
data["symbols"] = params["symbols"]
336336
return await self._get(
337-
"ticker/bookTicker", data=data, version=self.PRIVATE_API_VERSION
337+
"ticker/bookTicker", data=data
338338
)
339339

340340
get_orderbook_tickers.__doc__ = Client.get_orderbook_tickers.__doc__
341341

342342
async def get_order_book(self, **params) -> Dict:
343-
return await self._get("depth", data=params, version=self.PRIVATE_API_VERSION)
343+
return await self._get("depth", data=params)
344344

345345
get_order_book.__doc__ = Client.get_order_book.__doc__
346346

@@ -351,14 +351,14 @@ async def get_recent_trades(self, **params) -> Dict:
351351

352352
async def get_historical_trades(self, **params) -> Dict:
353353
return await self._get(
354-
"historicalTrades", data=params, version=self.PRIVATE_API_VERSION
354+
"historicalTrades", data=params
355355
)
356356

357357
get_historical_trades.__doc__ = Client.get_historical_trades.__doc__
358358

359359
async def get_aggregate_trades(self, **params) -> Dict:
360360
return await self._get(
361-
"aggTrades", data=params, version=self.PRIVATE_API_VERSION
361+
"aggTrades", data=params
362362
)
363363

364364
get_aggregate_trades.__doc__ = Client.get_aggregate_trades.__doc__
@@ -419,12 +419,12 @@ async def aggregate_trade_iter(self, symbol, start_str=None, last_id=None):
419419
aggregate_trade_iter.__doc__ = Client.aggregate_trade_iter.__doc__
420420

421421
async def get_ui_klines(self, **params) -> Dict:
422-
return await self._get("uiKlines", data=params, version=self.PRIVATE_API_VERSION)
422+
return await self._get("uiKlines", data=params)
423423

424424
get_ui_klines.__doc__ = Client.get_ui_klines.__doc__
425425

426426
async def get_klines(self, **params) -> Dict:
427-
return await self._get("klines", data=params, version=self.PRIVATE_API_VERSION)
427+
return await self._get("klines", data=params)
428428

429429
get_klines.__doc__ = Client.get_klines.__doc__
430430

@@ -655,33 +655,33 @@ async def _historical_klines_generator(
655655

656656
async def get_avg_price(self, **params):
657657
return await self._get(
658-
"avgPrice", data=params, version=self.PRIVATE_API_VERSION
658+
"avgPrice", data=params
659659
)
660660

661661
get_avg_price.__doc__ = Client.get_avg_price.__doc__
662662

663663
async def get_ticker(self, **params):
664664
return await self._get(
665-
"ticker/24hr", data=params, version=self.PRIVATE_API_VERSION
665+
"ticker/24hr", data=params
666666
)
667667

668668
get_ticker.__doc__ = Client.get_ticker.__doc__
669669

670670
async def get_symbol_ticker(self, **params):
671671
return await self._get(
672-
"ticker/price", data=params, version=self.PRIVATE_API_VERSION
672+
"ticker/price", data=params
673673
)
674674

675675
get_symbol_ticker.__doc__ = Client.get_symbol_ticker.__doc__
676676

677677
async def get_symbol_ticker_window(self, **params):
678-
return await self._get("ticker", data=params, version=self.PRIVATE_API_VERSION)
678+
return await self._get("ticker", data=params)
679679

680680
get_symbol_ticker_window.__doc__ = Client.get_symbol_ticker_window.__doc__
681681

682682
async def get_orderbook_ticker(self, **params):
683683
return await self._get(
684-
"ticker/bookTicker", data=params, version=self.PRIVATE_API_VERSION
684+
"ticker/bookTicker", data=params
685685
)
686686

687687
get_orderbook_ticker.__doc__ = Client.get_orderbook_ticker.__doc__

binance/base_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class BaseClient:
3939
WS_API_TESTNET_URL = "wss://ws-api.testnet.binance.vision/ws-api/v3"
4040
WS_FUTURES_URL = "wss://ws-fapi.binance.{}/ws-fapi/v1"
4141
WS_FUTURES_TESTNET_URL = "wss://testnet.binancefuture.com/ws-fapi/v1"
42-
PUBLIC_API_VERSION = "v1"
42+
PUBLIC_API_VERSION = "v3"
4343
PRIVATE_API_VERSION = "v3"
4444
MARGIN_API_VERSION = "v1"
4545
MARGIN_API_VERSION2 = "v2"

binance/client.py

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ def get_exchange_info(self) -> Dict:
274274

275275
"""
276276

277-
return self._get("exchangeInfo", version=self.PRIVATE_API_VERSION)
277+
return self._get("exchangeInfo")
278278

279279
def get_symbol_info(self, symbol) -> Optional[Dict]:
280280
"""Return information about a symbol
@@ -341,7 +341,7 @@ def ping(self) -> Dict:
341341
:raises: BinanceRequestException, BinanceAPIException
342342

343343
"""
344-
return self._get("ping", version=self.PRIVATE_API_VERSION)
344+
return self._get("ping")
345345

346346
def get_server_time(self) -> Dict:
347347
"""Test connectivity to the Rest API and get the current server time.
@@ -359,14 +359,14 @@ def get_server_time(self) -> Dict:
359359
:raises: BinanceRequestException, BinanceAPIException
360360

361361
"""
362-
return self._get("time", version=self.PRIVATE_API_VERSION)
362+
return self._get("time")
363363

364364
# Market Data Endpoints
365365

366366
def get_all_tickers(self) -> List[Dict[str, str]]:
367367
"""Latest price for all symbols.
368368

369-
https://binance-docs.github.io/apidocs/spot/en/#symbol-price-ticker
369+
https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#symbol-price-ticker
370370

371371
:returns: List of market tickers
372372

@@ -386,15 +386,15 @@ def get_all_tickers(self) -> List[Dict[str, str]]:
386386
:raises: BinanceRequestException, BinanceAPIException
387387

388388
"""
389-
response = self._get("ticker/price", version=self.PRIVATE_API_VERSION)
389+
response = self._get("ticker/price")
390390
if isinstance(response, list) and all(isinstance(item, dict) for item in response):
391391
return response
392392
raise TypeError("Expected a list of dictionaries")
393393

394394
def get_orderbook_tickers(self, **params) -> Dict:
395395
"""Best price/qty on the order book for all symbols.
396396

397-
https://binance-docs.github.io/apidocs/spot/en/#symbol-order-book-ticker
397+
https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#symbol-order-book-ticker
398398

399399
:param symbol: optional
400400
:type symbol: str
@@ -431,13 +431,13 @@ def get_orderbook_tickers(self, **params) -> Dict:
431431
elif "symbols" in params:
432432
data["symbols"] = params["symbols"]
433433
return self._get(
434-
"ticker/bookTicker", data=data, version=self.PRIVATE_API_VERSION
434+
"ticker/bookTicker", data=data
435435
)
436436

437437
def get_order_book(self, **params) -> Dict:
438438
"""Get the Order Book for the market
439439

440-
https://binance-docs.github.io/apidocs/spot/en/#order-book
440+
https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#order-book
441441

442442
:param symbol: required
443443
:type symbol: str
@@ -469,12 +469,12 @@ def get_order_book(self, **params) -> Dict:
469469
:raises: BinanceRequestException, BinanceAPIException
470470

471471
"""
472-
return self._get("depth", data=params, version=self.PRIVATE_API_VERSION)
472+
return self._get("depth", data=params)
473473

474474
def get_recent_trades(self, **params) -> Dict:
475475
"""Get recent trades (up to last 500).
476476

477-
https://binance-docs.github.io/apidocs/spot/en/#recent-trades-list
477+
https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#recent-trades-list
478478

479479
:param symbol: required
480480
:type symbol: str
@@ -504,7 +504,7 @@ def get_recent_trades(self, **params) -> Dict:
504504
def get_historical_trades(self, **params) -> Dict:
505505
"""Get older trades.
506506

507-
https://binance-docs.github.io/apidocs/spot/en/#old-trade-lookup
507+
https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#old-trade-lookup
508508

509509
:param symbol: required
510510
:type symbol: str
@@ -532,14 +532,14 @@ def get_historical_trades(self, **params) -> Dict:
532532

533533
"""
534534
return self._get(
535-
"historicalTrades", data=params, version=self.PRIVATE_API_VERSION
535+
"historicalTrades", data=params
536536
)
537537

538538
def get_aggregate_trades(self, **params) -> Dict:
539539
"""Get compressed, aggregate trades. Trades that fill at the time,
540540
from the same order, with the same price will have the quantity aggregated.
541-
542-
https://binance-docs.github.io/apidocs/spot/en/#compressed-aggregate-trades-list
541+
542+
https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints
543543

544544
:param symbol: required
545545
:type symbol: str
@@ -572,7 +572,7 @@ def get_aggregate_trades(self, **params) -> Dict:
572572
:raises: BinanceRequestException, BinanceAPIException
573573

574574
"""
575-
return self._get("aggTrades", data=params, version=self.PRIVATE_API_VERSION)
575+
return self._get("aggTrades", data=params)
576576

577577
def aggregate_trade_iter(self, symbol: str, start_str=None, last_id=None):
578578
"""Iterate over aggregate trade data from (start_time or last_id) to
@@ -697,12 +697,12 @@ def get_ui_klines(self, **params) -> Dict:
697697
:raises: BinanceRequestException, BinanceAPIException
698698

699699
"""
700-
return self._get("uiKlines", data=params, version=self.PRIVATE_API_VERSION)
700+
return self._get("uiKlines", data=params)
701701

702702
def get_klines(self, **params) -> Dict:
703703
"""Kline/candlestick bars for a symbol. Klines are uniquely identified by their open time.
704704

705-
https://binance-docs.github.io/apidocs/spot/en/#kline-candlestick-data
705+
https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#klinecandlestick-data
706706

707707
:param symbol: required
708708
:type symbol: str
@@ -739,7 +739,7 @@ def get_klines(self, **params) -> Dict:
739739
:raises: BinanceRequestException, BinanceAPIException
740740

741741
"""
742-
return self._get("klines", data=params, version=self.PRIVATE_API_VERSION)
742+
return self._get("klines", data=params)
743743

744744
def _klines(
745745
self, klines_type: HistoricalKlinesType = HistoricalKlinesType.SPOT, **params
@@ -1058,8 +1058,8 @@ def _historical_klines_generator(
10581058

10591059
def get_avg_price(self, **params):
10601060
"""Current average price for a symbol.
1061-
1062-
https://binance-docs.github.io/apidocs/spot/en/#current-average-price
1061+
1062+
https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#current-average-price
10631063

10641064
:param symbol:
10651065
:type symbol: str
@@ -1073,12 +1073,12 @@ def get_avg_price(self, **params):
10731073
"price": "9.35751834"
10741074
}
10751075
"""
1076-
return self._get("avgPrice", data=params, version=self.PRIVATE_API_VERSION)
1076+
return self._get("avgPrice")
10771077

10781078
def get_ticker(self, **params):
10791079
"""24 hour price change statistics.
10801080

1081-
https://binance-docs.github.io/apidocs/spot/en/#24hr-ticker-price-change-statistics
1081+
https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#24hr-ticker-price-change-statistics
10821082

10831083
:param symbol:
10841084
:type symbol: str
@@ -1134,7 +1134,7 @@ def get_ticker(self, **params):
11341134
:raises: BinanceRequestException, BinanceAPIException
11351135

11361136
"""
1137-
return self._get("ticker/24hr", data=params, version=self.PRIVATE_API_VERSION)
1137+
return self._get("ticker/24hr")
11381138

11391139
def get_symbol_ticker(self, **params):
11401140
"""Latest price for a symbol or symbols.
@@ -1171,12 +1171,12 @@ def get_symbol_ticker(self, **params):
11711171
:raises: BinanceRequestException, BinanceAPIException
11721172

11731173
"""
1174-
return self._get("ticker/price", data=params, version=self.PRIVATE_API_VERSION)
1174+
return self._get("ticker/price", data=params)
11751175

11761176
def get_symbol_ticker_window(self, **params):
11771177
"""Latest price for a symbol or symbols.
11781178

1179-
https://binance-docs.github.io/apidocs/spot/en/#rolling-window-price-change-statistics
1179+
https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#rolling-window-price-change-statistics
11801180

11811181
:param symbol:
11821182
:type symbol: str
@@ -1208,7 +1208,7 @@ def get_symbol_ticker_window(self, **params):
12081208
:raises: BinanceRequestException, BinanceAPIException
12091209

12101210
"""
1211-
return self._get("ticker", data=params, version=self.PRIVATE_API_VERSION)
1211+
return self._get("ticker", data=params)
12121212

12131213
def get_orderbook_ticker(self, **params):
12141214
"""Latest price for a symbol or symbols.
@@ -1255,7 +1255,7 @@ def get_orderbook_ticker(self, **params):
12551255

12561256
"""
12571257
return self._get(
1258-
"ticker/bookTicker", data=params, version=self.PRIVATE_API_VERSION
1258+
"ticker/bookTicker", data=params
12591259
)
12601260

12611261
# Account Endpoints
@@ -3129,7 +3129,7 @@ def stream_get_listen_key(self):
31293129

31303130
"""
31313131
res = self._post(
3132-
"userDataStream", False, data={}, version=self.PRIVATE_API_VERSION
3132+
"userDataStream", False, data={}
31333133
)
31343134
return res["listenKey"]
31353135

@@ -3152,7 +3152,7 @@ def stream_keepalive(self, listenKey):
31523152
"""
31533153
params = {"listenKey": listenKey}
31543154
return self._put(
3155-
"userDataStream", False, data=params, version=self.PRIVATE_API_VERSION
3155+
"userDataStream", False, data=params
31563156
)
31573157

31583158
def stream_close(self, listenKey):

tests/conftest.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,38 @@ def pytest_collection_modifyitems(config, items):
160160
item.add_marker(skip_portfolio)
161161
if "gift_card" in item.keywords and not config.getoption("--run-gift-card"):
162162
item.add_marker(skip_gift_card)
163+
164+
165+
def call_method_and_assert_uri_contains(client, method_name, expected_string, *args, **kwargs):
166+
"""
167+
Helper function to test that a client method calls the expected URI.
168+
169+
Args:
170+
client: The client instance to test
171+
method_name: Name of the method to call (as string)
172+
expected_string: String that should be present in the URI
173+
*args, **kwargs: Arguments to pass to the client method
174+
175+
Returns:
176+
The result of the method call
177+
"""
178+
from unittest.mock import patch
179+
180+
with patch.object(client, '_request', wraps=client._request) as mock_request:
181+
# Get the method from the client and call it
182+
method = getattr(client, method_name)
183+
result = method(*args, **kwargs)
184+
185+
# Assert that _request was called
186+
mock_request.assert_called_once()
187+
188+
# Get the arguments passed to _request
189+
args_passed, kwargs_passed = mock_request.call_args
190+
191+
# The second argument is the URI
192+
uri = args_passed[1]
193+
194+
# Assert that the URL contains the expected string
195+
assert expected_string in uri, f"Expected '{expected_string}' in URL, but got: {uri}"
196+
197+
return result

0 commit comments

Comments
 (0)