diff --git a/.github/workflows/python-app.yml b/.github/workflows/python-app.yml index 07c4b531c..d60af3d16 100644 --- a/.github/workflows/python-app.yml +++ b/.github/workflows/python-app.yml @@ -23,10 +23,12 @@ jobs: uses: actions/setup-python@v5 with: python-version: '3.9' - - name: Install Ruff - run: pip install ruff + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r test-requirements.txt - name: Lint code with Ruff - run: ruff check --output-format=github --target-version=py39 . + run: ruff check --output-format=github . - name: Check code formatting with Ruff run: ruff format --check . continue-on-error: true @@ -34,7 +36,7 @@ jobs: build: needs: lint runs-on: ubuntu-22.04 - timeout-minutes: 40 + timeout-minutes: 20 env: PROXY: "http://51.83.140.52:16301" TEST_TESTNET: "true" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e71ddd860..0c26d0a64 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.8.1 + rev: v0.11.12 hooks: - id: ruff - id: ruff-format diff --git a/binance/async_client.py b/binance/async_client.py index 1ae5b29d8..54d663d18 100644 --- a/binance/async_client.py +++ b/binance/async_client.py @@ -81,7 +81,7 @@ async def create( private_key, private_key_pass, https_proxy, - time_unit + time_unit, ) self.https_proxy = https_proxy # move this to the constructor @@ -168,7 +168,7 @@ async def _handle_response(self, response: aiohttp.ClientResponse): """ if not str(response.status).startswith("2"): raise BinanceAPIException(response, response.status, await response.text()) - + text = await response.text() if text == "": return {} @@ -318,10 +318,10 @@ async def get_all_tickers( params = {} if symbol: params["symbol"] = symbol - response = await self._get( - "ticker/price", data=params - ) - if isinstance(response, list) and all(isinstance(item, dict) for item in response): + response = await self._get("ticker/price", data=params) + if isinstance(response, list) and all( + isinstance(item, dict) for item in response + ): return response raise TypeError("Expected a list of dictionaries") @@ -333,9 +333,7 @@ async def get_orderbook_tickers(self, **params) -> Dict: data["symbol"] = params["symbol"] elif "symbols" in params: data["symbols"] = params["symbols"] - return await self._get( - "ticker/bookTicker", data=data - ) + return await self._get("ticker/bookTicker", data=data) get_orderbook_tickers.__doc__ = Client.get_orderbook_tickers.__doc__ @@ -350,16 +348,12 @@ async def get_recent_trades(self, **params) -> Dict: get_recent_trades.__doc__ = Client.get_recent_trades.__doc__ async def get_historical_trades(self, **params) -> Dict: - return await self._get( - "historicalTrades", data=params - ) + return await self._get("historicalTrades", data=params) get_historical_trades.__doc__ = Client.get_historical_trades.__doc__ async def get_aggregate_trades(self, **params) -> Dict: - return await self._get( - "aggTrades", data=params - ) + return await self._get("aggTrades", data=params) get_aggregate_trades.__doc__ = Client.get_aggregate_trades.__doc__ @@ -654,23 +648,17 @@ async def _historical_klines_generator( _historical_klines_generator.__doc__ = Client._historical_klines_generator.__doc__ async def get_avg_price(self, **params): - return await self._get( - "avgPrice", data=params - ) + return await self._get("avgPrice", data=params) get_avg_price.__doc__ = Client.get_avg_price.__doc__ async def get_ticker(self, **params): - return await self._get( - "ticker/24hr", data=params - ) + return await self._get("ticker/24hr", data=params) get_ticker.__doc__ = Client.get_ticker.__doc__ async def get_symbol_ticker(self, **params): - return await self._get( - "ticker/price", data=params - ) + return await self._get("ticker/price", data=params) get_symbol_ticker.__doc__ = Client.get_symbol_ticker.__doc__ @@ -680,9 +668,7 @@ async def get_symbol_ticker_window(self, **params): get_symbol_ticker_window.__doc__ = Client.get_symbol_ticker_window.__doc__ async def get_orderbook_ticker(self, **params): - return await self._get( - "ticker/bookTicker", data=params - ) + return await self._get("ticker/bookTicker", data=params) get_orderbook_ticker.__doc__ = Client.get_orderbook_ticker.__doc__ @@ -1773,7 +1759,7 @@ async def futures_global_longshort_ratio(self, **params): return await self._request_futures_data_api( "get", "globalLongShortAccountRatio", data=params ) - + async def futures_taker_longshort_ratio(self, **params): return await self._request_futures_data_api( "get", "takerlongshortRatio", data=params @@ -2507,10 +2493,14 @@ async def papi_stream_close(self, listenKey): async def papi_get_balance(self, **params): return await self._request_papi_api("get", "balance", signed=True, data=params) + papi_get_balance.__doc__ = Client.papi_get_balance.__doc__ async def papi_get_rate_limit(self, **params): - return await self._request_papi_api("get", "rateLimit/order", signed=True, data=params) + return await self._request_papi_api( + "get", "rateLimit/order", signed=True, data=params + ) + papi_get_rate_limit.__doc__ = Client.papi_get_rate_limit.__doc__ async def papi_get_account(self, **params): @@ -2621,12 +2611,17 @@ async def papi_get_portfolio_interest_history(self, **params): "get", "portfolio/interest-history", signed=True, data=params ) - async def papi_get_portfolio_negative_balance_exchange_record(self, **params): return await self._request_papi_api( - "get", "portfolio/negative-balance-exchange-record", signed=True, data=params + "get", + "portfolio/negative-balance-exchange-record", + signed=True, + data=params, ) - papi_get_portfolio_negative_balance_exchange_record.__doc__ = Client.papi_get_portfolio_negative_balance_exchange_record.__doc__ + + papi_get_portfolio_negative_balance_exchange_record.__doc__ = ( + Client.papi_get_portfolio_negative_balance_exchange_record.__doc__ + ) async def papi_fund_auto_collection(self, **params): return await self._request_papi_api( @@ -3688,7 +3683,9 @@ async def ws_get_account(self, **params): async def ws_get_account_rate_limits_orders(self, **params): return await self._ws_api_request("account.rateLimits.orders", True, params) - ws_get_account_rate_limits_orders.__doc__ = Client.ws_get_account_rate_limits_orders.__doc__ + ws_get_account_rate_limits_orders.__doc__ = ( + Client.ws_get_account_rate_limits_orders.__doc__ + ) async def ws_get_all_orders(self, **params): return await self._ws_api_request("allOrders", True, params) @@ -4050,1317 +4047,2614 @@ async def margin_max_borrowable(self, **params): #################################################### async def futures_historical_data_link(self, **params): - return await self._request_margin_api("get", "futures/data/histDataLink", signed=True, data=params) + return await self._request_margin_api( + "get", "futures/data/histDataLink", signed=True, data=params + ) futures_historical_data_link.__doc__ = Client.futures_historical_data_link.__doc__ async def margin_v1_get_loan_vip_ongoing_orders(self, **params): - return await self._request_margin_api("get", "loan/vip/ongoing/orders", signed=True, data=params, version=1) - - margin_v1_get_loan_vip_ongoing_orders.__doc__ = Client.margin_v1_get_loan_vip_ongoing_orders.__doc__ - + return await self._request_margin_api( + "get", "loan/vip/ongoing/orders", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_vip_ongoing_orders.__doc__ = ( + Client.margin_v1_get_loan_vip_ongoing_orders.__doc__ + ) + async def margin_v1_get_mining_payment_other(self, **params): - return await self._request_margin_api("get", "mining/payment/other", signed=True, data=params, version=1) - - margin_v1_get_mining_payment_other.__doc__ = Client.margin_v1_get_mining_payment_other.__doc__ - + return await self._request_margin_api( + "get", "mining/payment/other", signed=True, data=params, version=1 + ) + + margin_v1_get_mining_payment_other.__doc__ = ( + Client.margin_v1_get_mining_payment_other.__doc__ + ) + async def futures_coin_v1_get_income_asyn_id(self, **params): - return await self._request_futures_coin_api("get", "income/asyn/id", signed=True, data=params, version=1) - - futures_coin_v1_get_income_asyn_id.__doc__ = Client.futures_coin_v1_get_income_asyn_id.__doc__ - - async def margin_v1_get_simple_earn_flexible_history_subscription_record(self, **params): - return await self._request_margin_api("get", "simple-earn/flexible/history/subscriptionRecord", signed=True, data=params, version=1) - - margin_v1_get_simple_earn_flexible_history_subscription_record.__doc__ = Client.margin_v1_get_simple_earn_flexible_history_subscription_record.__doc__ - + return await self._request_futures_coin_api( + "get", "income/asyn/id", signed=True, data=params, version=1 + ) + + futures_coin_v1_get_income_asyn_id.__doc__ = ( + Client.futures_coin_v1_get_income_asyn_id.__doc__ + ) + + async def margin_v1_get_simple_earn_flexible_history_subscription_record( + self, **params + ): + return await self._request_margin_api( + "get", + "simple-earn/flexible/history/subscriptionRecord", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_simple_earn_flexible_history_subscription_record.__doc__ = ( + Client.margin_v1_get_simple_earn_flexible_history_subscription_record.__doc__ + ) + async def margin_v1_post_lending_auto_invest_one_off(self, **params): - return await self._request_margin_api("post", "lending/auto-invest/one-off", signed=True, data=params, version=1) - - margin_v1_post_lending_auto_invest_one_off.__doc__ = Client.margin_v1_post_lending_auto_invest_one_off.__doc__ - - async def margin_v1_post_broker_sub_account_api_commission_coin_futures(self, **params): - return await self._request_margin_api("post", "broker/subAccountApi/commission/coinFutures", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_api_commission_coin_futures.__doc__ = Client.margin_v1_post_broker_sub_account_api_commission_coin_futures.__doc__ - + return await self._request_margin_api( + "post", "lending/auto-invest/one-off", signed=True, data=params, version=1 + ) + + margin_v1_post_lending_auto_invest_one_off.__doc__ = ( + Client.margin_v1_post_lending_auto_invest_one_off.__doc__ + ) + + async def margin_v1_post_broker_sub_account_api_commission_coin_futures( + self, **params + ): + return await self._request_margin_api( + "post", + "broker/subAccountApi/commission/coinFutures", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_broker_sub_account_api_commission_coin_futures.__doc__ = ( + Client.margin_v1_post_broker_sub_account_api_commission_coin_futures.__doc__ + ) + async def v3_post_order_list_otoco(self, **params): - return await self._request_api("post", "orderList/otoco", signed=True, data=params, version="v3") - + return await self._request_api( + "post", "orderList/otoco", signed=True, data=params, version="v3" + ) + v3_post_order_list_otoco.__doc__ = Client.v3_post_order_list_otoco.__doc__ - + async def futures_v1_get_order_asyn(self, **params): - return await self._request_futures_api("get", "order/asyn", signed=True, data=params, version=1) - + return await self._request_futures_api( + "get", "order/asyn", signed=True, data=params, version=1 + ) + futures_v1_get_order_asyn.__doc__ = Client.futures_v1_get_order_asyn.__doc__ - + async def margin_v1_get_asset_custody_transfer_history(self, **params): - return await self._request_margin_api("get", "asset/custody/transfer-history", signed=True, data=params, version=1) - - margin_v1_get_asset_custody_transfer_history.__doc__ = Client.margin_v1_get_asset_custody_transfer_history.__doc__ - + return await self._request_margin_api( + "get", "asset/custody/transfer-history", signed=True, data=params, version=1 + ) + + margin_v1_get_asset_custody_transfer_history.__doc__ = ( + Client.margin_v1_get_asset_custody_transfer_history.__doc__ + ) + async def margin_v1_post_broker_sub_account_blvt(self, **params): - return await self._request_margin_api("post", "broker/subAccount/blvt", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_blvt.__doc__ = Client.margin_v1_post_broker_sub_account_blvt.__doc__ - + return await self._request_margin_api( + "post", "broker/subAccount/blvt", signed=True, data=params, version=1 + ) + + margin_v1_post_broker_sub_account_blvt.__doc__ = ( + Client.margin_v1_post_broker_sub_account_blvt.__doc__ + ) + async def margin_v1_post_sol_staking_sol_redeem(self, **params): - return await self._request_margin_api("post", "sol-staking/sol/redeem", signed=True, data=params, version=1) - - margin_v1_post_sol_staking_sol_redeem.__doc__ = Client.margin_v1_post_sol_staking_sol_redeem.__doc__ - + return await self._request_margin_api( + "post", "sol-staking/sol/redeem", signed=True, data=params, version=1 + ) + + margin_v1_post_sol_staking_sol_redeem.__doc__ = ( + Client.margin_v1_post_sol_staking_sol_redeem.__doc__ + ) + async def options_v1_get_countdown_cancel_all(self, **params): - return await self._request_options_api("get", "countdownCancelAll", signed=True, data=params) - - options_v1_get_countdown_cancel_all.__doc__ = Client.options_v1_get_countdown_cancel_all.__doc__ - + return await self._request_options_api( + "get", "countdownCancelAll", signed=True, data=params + ) + + options_v1_get_countdown_cancel_all.__doc__ = ( + Client.options_v1_get_countdown_cancel_all.__doc__ + ) + async def margin_v1_get_margin_trade_coeff(self, **params): - return await self._request_margin_api("get", "margin/tradeCoeff", signed=True, data=params, version=1) - - margin_v1_get_margin_trade_coeff.__doc__ = Client.margin_v1_get_margin_trade_coeff.__doc__ - + return await self._request_margin_api( + "get", "margin/tradeCoeff", signed=True, data=params, version=1 + ) + + margin_v1_get_margin_trade_coeff.__doc__ = ( + Client.margin_v1_get_margin_trade_coeff.__doc__ + ) + async def futures_coin_v1_get_order_amendment(self, **params): - return await self._request_futures_coin_api("get", "orderAmendment", signed=True, data=params, version=1) - - futures_coin_v1_get_order_amendment.__doc__ = Client.futures_coin_v1_get_order_amendment.__doc__ - + return await self._request_futures_coin_api( + "get", "orderAmendment", signed=True, data=params, version=1 + ) + + futures_coin_v1_get_order_amendment.__doc__ = ( + Client.futures_coin_v1_get_order_amendment.__doc__ + ) + async def margin_v1_get_margin_available_inventory(self, **params): - return await self._request_margin_api("get", "margin/available-inventory", signed=True, data=params, version=1) - - margin_v1_get_margin_available_inventory.__doc__ = Client.margin_v1_get_margin_available_inventory.__doc__ - - async def margin_v1_post_account_api_restrictions_ip_restriction_ip_list(self, **params): - return await self._request_margin_api("post", "account/apiRestrictions/ipRestriction/ipList", signed=True, data=params, version=1) - - margin_v1_post_account_api_restrictions_ip_restriction_ip_list.__doc__ = Client.margin_v1_post_account_api_restrictions_ip_restriction_ip_list.__doc__ - + return await self._request_margin_api( + "get", "margin/available-inventory", signed=True, data=params, version=1 + ) + + margin_v1_get_margin_available_inventory.__doc__ = ( + Client.margin_v1_get_margin_available_inventory.__doc__ + ) + + async def margin_v1_post_account_api_restrictions_ip_restriction_ip_list( + self, **params + ): + return await self._request_margin_api( + "post", + "account/apiRestrictions/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_account_api_restrictions_ip_restriction_ip_list.__doc__ = ( + Client.margin_v1_post_account_api_restrictions_ip_restriction_ip_list.__doc__ + ) + async def margin_v2_get_eth_staking_account(self, **params): - return await self._request_margin_api("get", "eth-staking/account", signed=True, data=params, version=2) - - margin_v2_get_eth_staking_account.__doc__ = Client.margin_v2_get_eth_staking_account.__doc__ - + return await self._request_margin_api( + "get", "eth-staking/account", signed=True, data=params, version=2 + ) + + margin_v2_get_eth_staking_account.__doc__ = ( + Client.margin_v2_get_eth_staking_account.__doc__ + ) + async def margin_v1_get_loan_income(self, **params): - return await self._request_margin_api("get", "loan/income", signed=True, data=params, version=1) - + return await self._request_margin_api( + "get", "loan/income", signed=True, data=params, version=1 + ) + margin_v1_get_loan_income.__doc__ = Client.margin_v1_get_loan_income.__doc__ - + async def futures_coin_v1_get_pm_account_info(self, **params): - return await self._request_futures_coin_api("get", "pmAccountInfo", signed=True, data=params, version=1) - - futures_coin_v1_get_pm_account_info.__doc__ = Client.futures_coin_v1_get_pm_account_info.__doc__ - - async def margin_v1_get_managed_subaccount_query_trans_log_for_investor(self, **params): - return await self._request_margin_api("get", "managed-subaccount/queryTransLogForInvestor", signed=True, data=params, version=1) - - margin_v1_get_managed_subaccount_query_trans_log_for_investor.__doc__ = Client.margin_v1_get_managed_subaccount_query_trans_log_for_investor.__doc__ - + return await self._request_futures_coin_api( + "get", "pmAccountInfo", signed=True, data=params, version=1 + ) + + futures_coin_v1_get_pm_account_info.__doc__ = ( + Client.futures_coin_v1_get_pm_account_info.__doc__ + ) + + async def margin_v1_get_managed_subaccount_query_trans_log_for_investor( + self, **params + ): + return await self._request_margin_api( + "get", + "managed-subaccount/queryTransLogForInvestor", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_managed_subaccount_query_trans_log_for_investor.__doc__ = ( + Client.margin_v1_get_managed_subaccount_query_trans_log_for_investor.__doc__ + ) + async def margin_v1_post_dci_product_auto_compound_edit_status(self, **params): - return await self._request_margin_api("post", "dci/product/auto_compound/edit-status", signed=True, data=params, version=1) - - margin_v1_post_dci_product_auto_compound_edit_status.__doc__ = Client.margin_v1_post_dci_product_auto_compound_edit_status.__doc__ - + return await self._request_margin_api( + "post", + "dci/product/auto_compound/edit-status", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_dci_product_auto_compound_edit_status.__doc__ = ( + Client.margin_v1_post_dci_product_auto_compound_edit_status.__doc__ + ) + async def futures_v1_get_trade_asyn(self, **params): - return await self._request_futures_api("get", "trade/asyn", signed=True, data=params, version=1) - + return await self._request_futures_api( + "get", "trade/asyn", signed=True, data=params, version=1 + ) + futures_v1_get_trade_asyn.__doc__ = Client.futures_v1_get_trade_asyn.__doc__ - + async def margin_v1_get_loan_vip_request_interest_rate(self, **params): - return await self._request_margin_api("get", "loan/vip/request/interestRate", signed=True, data=params, version=1) - - margin_v1_get_loan_vip_request_interest_rate.__doc__ = Client.margin_v1_get_loan_vip_request_interest_rate.__doc__ - + return await self._request_margin_api( + "get", "loan/vip/request/interestRate", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_vip_request_interest_rate.__doc__ = ( + Client.margin_v1_get_loan_vip_request_interest_rate.__doc__ + ) + async def futures_v1_get_funding_info(self, **params): - return await self._request_futures_api("get", "fundingInfo", signed=False, data=params, version=1) - + return await self._request_futures_api( + "get", "fundingInfo", signed=False, data=params, version=1 + ) + futures_v1_get_funding_info.__doc__ = Client.futures_v1_get_funding_info.__doc__ - + async def v3_get_all_orders(self, **params): - return await self._request_api("get", "allOrders", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "allOrders", signed=True, data=params, version="v3" + ) + async def margin_v2_get_loan_flexible_repay_rate(self, **params): - return await self._request_margin_api("get", "loan/flexible/repay/rate", signed=True, data=params, version=2) - - margin_v2_get_loan_flexible_repay_rate.__doc__ = Client.margin_v2_get_loan_flexible_repay_rate.__doc__ - + return await self._request_margin_api( + "get", "loan/flexible/repay/rate", signed=True, data=params, version=2 + ) + + margin_v2_get_loan_flexible_repay_rate.__doc__ = ( + Client.margin_v2_get_loan_flexible_repay_rate.__doc__ + ) + async def margin_v1_get_lending_auto_invest_plan_id(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/plan/id", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_plan_id.__doc__ = Client.margin_v1_get_lending_auto_invest_plan_id.__doc__ - + return await self._request_margin_api( + "get", "lending/auto-invest/plan/id", signed=True, data=params, version=1 + ) + + margin_v1_get_lending_auto_invest_plan_id.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_plan_id.__doc__ + ) + async def margin_v1_post_loan_adjust_ltv(self, **params): - return await self._request_margin_api("post", "loan/adjust/ltv", signed=True, data=params, version=1) - - margin_v1_post_loan_adjust_ltv.__doc__ = Client.margin_v1_post_loan_adjust_ltv.__doc__ - + return await self._request_margin_api( + "post", "loan/adjust/ltv", signed=True, data=params, version=1 + ) + + margin_v1_post_loan_adjust_ltv.__doc__ = ( + Client.margin_v1_post_loan_adjust_ltv.__doc__ + ) + async def margin_v1_get_mining_statistics_user_status(self, **params): - return await self._request_margin_api("get", "mining/statistics/user/status", signed=True, data=params, version=1) - - margin_v1_get_mining_statistics_user_status.__doc__ = Client.margin_v1_get_mining_statistics_user_status.__doc__ - + return await self._request_margin_api( + "get", "mining/statistics/user/status", signed=True, data=params, version=1 + ) + + margin_v1_get_mining_statistics_user_status.__doc__ = ( + Client.margin_v1_get_mining_statistics_user_status.__doc__ + ) + async def margin_v1_get_broker_transfer_futures(self, **params): - return await self._request_margin_api("get", "broker/transfer/futures", signed=True, data=params, version=1) - - margin_v1_get_broker_transfer_futures.__doc__ = Client.margin_v1_get_broker_transfer_futures.__doc__ - + return await self._request_margin_api( + "get", "broker/transfer/futures", signed=True, data=params, version=1 + ) + + margin_v1_get_broker_transfer_futures.__doc__ = ( + Client.margin_v1_get_broker_transfer_futures.__doc__ + ) + async def margin_v1_post_algo_spot_new_order_twap(self, **params): - return await self._request_margin_api("post", "algo/spot/newOrderTwap", signed=True, data=params, version=1) - - margin_v1_post_algo_spot_new_order_twap.__doc__ = Client.margin_v1_post_algo_spot_new_order_twap.__doc__ - + return await self._request_margin_api( + "post", "algo/spot/newOrderTwap", signed=True, data=params, version=1 + ) + + margin_v1_post_algo_spot_new_order_twap.__doc__ = ( + Client.margin_v1_post_algo_spot_new_order_twap.__doc__ + ) + async def margin_v1_get_lending_auto_invest_target_asset_list(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/target-asset/list", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_target_asset_list.__doc__ = Client.margin_v1_get_lending_auto_invest_target_asset_list.__doc__ - + return await self._request_margin_api( + "get", + "lending/auto-invest/target-asset/list", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_lending_auto_invest_target_asset_list.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_target_asset_list.__doc__ + ) + async def margin_v1_get_capital_deposit_address_list(self, **params): - return await self._request_margin_api("get", "capital/deposit/address/list", signed=True, data=params, version=1) - - margin_v1_get_capital_deposit_address_list.__doc__ = Client.margin_v1_get_capital_deposit_address_list.__doc__ - - async def margin_v1_post_broker_sub_account_bnb_burn_margin_interest(self, **params): - return await self._request_margin_api("post", "broker/subAccount/bnbBurn/marginInterest", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_bnb_burn_margin_interest.__doc__ = Client.margin_v1_post_broker_sub_account_bnb_burn_margin_interest.__doc__ - + return await self._request_margin_api( + "get", "capital/deposit/address/list", signed=True, data=params, version=1 + ) + + margin_v1_get_capital_deposit_address_list.__doc__ = ( + Client.margin_v1_get_capital_deposit_address_list.__doc__ + ) + + async def margin_v1_post_broker_sub_account_bnb_burn_margin_interest( + self, **params + ): + return await self._request_margin_api( + "post", + "broker/subAccount/bnbBurn/marginInterest", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_broker_sub_account_bnb_burn_margin_interest.__doc__ = ( + Client.margin_v1_post_broker_sub_account_bnb_burn_margin_interest.__doc__ + ) + async def margin_v2_post_loan_flexible_repay(self, **params): - return await self._request_margin_api("post", "loan/flexible/repay", signed=True, data=params, version=2) - - margin_v2_post_loan_flexible_repay.__doc__ = Client.margin_v2_post_loan_flexible_repay.__doc__ - + return await self._request_margin_api( + "post", "loan/flexible/repay", signed=True, data=params, version=2 + ) + + margin_v2_post_loan_flexible_repay.__doc__ = ( + Client.margin_v2_post_loan_flexible_repay.__doc__ + ) + async def margin_v2_get_loan_flexible_loanable_data(self, **params): - return await self._request_margin_api("get", "loan/flexible/loanable/data", signed=True, data=params, version=2) - - margin_v2_get_loan_flexible_loanable_data.__doc__ = Client.margin_v2_get_loan_flexible_loanable_data.__doc__ - + return await self._request_margin_api( + "get", "loan/flexible/loanable/data", signed=True, data=params, version=2 + ) + + margin_v2_get_loan_flexible_loanable_data.__doc__ = ( + Client.margin_v2_get_loan_flexible_loanable_data.__doc__ + ) + async def margin_v1_post_broker_sub_account_api_permission(self, **params): - return await self._request_margin_api("post", "broker/subAccountApi/permission", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_api_permission.__doc__ = Client.margin_v1_post_broker_sub_account_api_permission.__doc__ - + return await self._request_margin_api( + "post", + "broker/subAccountApi/permission", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_broker_sub_account_api_permission.__doc__ = ( + Client.margin_v1_post_broker_sub_account_api_permission.__doc__ + ) + async def margin_v1_post_broker_sub_account_api(self, **params): - return await self._request_margin_api("post", "broker/subAccountApi", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_api.__doc__ = Client.margin_v1_post_broker_sub_account_api.__doc__ - + return await self._request_margin_api( + "post", "broker/subAccountApi", signed=True, data=params, version=1 + ) + + margin_v1_post_broker_sub_account_api.__doc__ = ( + Client.margin_v1_post_broker_sub_account_api.__doc__ + ) + async def margin_v1_get_dci_product_positions(self, **params): - return await self._request_margin_api("get", "dci/product/positions", signed=True, data=params, version=1) - - margin_v1_get_dci_product_positions.__doc__ = Client.margin_v1_get_dci_product_positions.__doc__ - + return await self._request_margin_api( + "get", "dci/product/positions", signed=True, data=params, version=1 + ) + + margin_v1_get_dci_product_positions.__doc__ = ( + Client.margin_v1_get_dci_product_positions.__doc__ + ) + async def margin_v1_post_convert_limit_cancel_order(self, **params): - return await self._request_margin_api("post", "convert/limit/cancelOrder", signed=True, data=params, version=1) - - margin_v1_post_convert_limit_cancel_order.__doc__ = Client.margin_v1_post_convert_limit_cancel_order.__doc__ - + return await self._request_margin_api( + "post", "convert/limit/cancelOrder", signed=True, data=params, version=1 + ) + + margin_v1_post_convert_limit_cancel_order.__doc__ = ( + Client.margin_v1_post_convert_limit_cancel_order.__doc__ + ) + async def v3_post_order_list_oto(self, **params): - return await self._request_api("post", "orderList/oto", signed=True, data=params, version="v3") - + return await self._request_api( + "post", "orderList/oto", signed=True, data=params, version="v3" + ) + v3_post_order_list_oto.__doc__ = Client.v3_post_order_list_oto.__doc__ - + async def margin_v1_get_mining_hash_transfer_config_details_list(self, **params): - return await self._request_margin_api("get", "mining/hash-transfer/config/details/list", signed=True, data=params, version=1) - - margin_v1_get_mining_hash_transfer_config_details_list.__doc__ = Client.margin_v1_get_mining_hash_transfer_config_details_list.__doc__ - + return await self._request_margin_api( + "get", + "mining/hash-transfer/config/details/list", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_mining_hash_transfer_config_details_list.__doc__ = ( + Client.margin_v1_get_mining_hash_transfer_config_details_list.__doc__ + ) + async def margin_v1_get_mining_hash_transfer_profit_details(self, **params): - return await self._request_margin_api("get", "mining/hash-transfer/profit/details", signed=True, data=params, version=1) - - margin_v1_get_mining_hash_transfer_profit_details.__doc__ = Client.margin_v1_get_mining_hash_transfer_profit_details.__doc__ - + return await self._request_margin_api( + "get", + "mining/hash-transfer/profit/details", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_mining_hash_transfer_profit_details.__doc__ = ( + Client.margin_v1_get_mining_hash_transfer_profit_details.__doc__ + ) + async def margin_v1_get_broker_sub_account(self, **params): - return await self._request_margin_api("get", "broker/subAccount", signed=True, data=params, version=1) - - margin_v1_get_broker_sub_account.__doc__ = Client.margin_v1_get_broker_sub_account.__doc__ - + return await self._request_margin_api( + "get", "broker/subAccount", signed=True, data=params, version=1 + ) + + margin_v1_get_broker_sub_account.__doc__ = ( + Client.margin_v1_get_broker_sub_account.__doc__ + ) + async def margin_v1_get_portfolio_balance(self, **params): - return await self._request_margin_api("get", "portfolio/balance", signed=True, data=params, version=1) - - margin_v1_get_portfolio_balance.__doc__ = Client.margin_v1_get_portfolio_balance.__doc__ - + return await self._request_margin_api( + "get", "portfolio/balance", signed=True, data=params, version=1 + ) + + margin_v1_get_portfolio_balance.__doc__ = ( + Client.margin_v1_get_portfolio_balance.__doc__ + ) + async def margin_v1_post_sub_account_eoptions_enable(self, **params): - return await self._request_margin_api("post", "sub-account/eoptions/enable", signed=True, data=params, version=1) - - margin_v1_post_sub_account_eoptions_enable.__doc__ = Client.margin_v1_post_sub_account_eoptions_enable.__doc__ - + return await self._request_margin_api( + "post", "sub-account/eoptions/enable", signed=True, data=params, version=1 + ) + + margin_v1_post_sub_account_eoptions_enable.__doc__ = ( + Client.margin_v1_post_sub_account_eoptions_enable.__doc__ + ) + async def papi_v1_post_ping(self, **params): - return await self._request_papi_api("post", "ping", signed=True, data=params, version=1) - + return await self._request_papi_api( + "post", "ping", signed=True, data=params, version=1 + ) + papi_v1_post_ping.__doc__ = Client.papi_v1_post_ping.__doc__ - + async def margin_v1_get_loan_loanable_data(self, **params): - return await self._request_margin_api("get", "loan/loanable/data", signed=True, data=params, version=1) - - margin_v1_get_loan_loanable_data.__doc__ = Client.margin_v1_get_loan_loanable_data.__doc__ - - async def margin_v1_post_eth_staking_wbeth_unwrap(self, **params): - return await self._request_margin_api("post", "eth-staking/wbeth/unwrap", signed=True, data=params, version=1) - - margin_v1_post_eth_staking_wbeth_unwrap.__doc__ = Client.margin_v1_post_eth_staking_wbeth_unwrap.__doc__ - - async def margin_v1_get_eth_staking_eth_history_staking_history(self, **params): - return await self._request_margin_api("get", "eth-staking/eth/history/stakingHistory", signed=True, data=params, version=1) - - margin_v1_get_eth_staking_eth_history_staking_history.__doc__ = Client.margin_v1_get_eth_staking_eth_history_staking_history.__doc__ - + return await self._request_margin_api( + "get", "loan/loanable/data", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_loanable_data.__doc__ = ( + Client.margin_v1_get_loan_loanable_data.__doc__ + ) + + async def margin_v1_post_eth_staking_wbeth_unwrap(self, **params): + return await self._request_margin_api( + "post", "eth-staking/wbeth/unwrap", signed=True, data=params, version=1 + ) + + margin_v1_post_eth_staking_wbeth_unwrap.__doc__ = ( + Client.margin_v1_post_eth_staking_wbeth_unwrap.__doc__ + ) + + async def margin_v1_get_eth_staking_eth_history_staking_history(self, **params): + return await self._request_margin_api( + "get", + "eth-staking/eth/history/stakingHistory", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_eth_staking_eth_history_staking_history.__doc__ = ( + Client.margin_v1_get_eth_staking_eth_history_staking_history.__doc__ + ) + async def margin_v1_get_staking_staking_record(self, **params): - return await self._request_margin_api("get", "staking/stakingRecord", signed=True, data=params, version=1) - - margin_v1_get_staking_staking_record.__doc__ = Client.margin_v1_get_staking_staking_record.__doc__ - + return await self._request_margin_api( + "get", "staking/stakingRecord", signed=True, data=params, version=1 + ) + + margin_v1_get_staking_staking_record.__doc__ = ( + Client.margin_v1_get_staking_staking_record.__doc__ + ) + async def margin_v1_get_broker_rebate_recent_record(self, **params): - return await self._request_margin_api("get", "broker/rebate/recentRecord", signed=True, data=params, version=1) - - margin_v1_get_broker_rebate_recent_record.__doc__ = Client.margin_v1_get_broker_rebate_recent_record.__doc__ - + return await self._request_margin_api( + "get", "broker/rebate/recentRecord", signed=True, data=params, version=1 + ) + + margin_v1_get_broker_rebate_recent_record.__doc__ = ( + Client.margin_v1_get_broker_rebate_recent_record.__doc__ + ) + async def v3_delete_user_data_stream(self, **params): - return await self._request_api("delete", "userDataStream", signed=True, data=params, version="v3") - + return await self._request_api( + "delete", "userDataStream", signed=True, data=params, version="v3" + ) + async def v3_get_open_order_list(self, **params): - return await self._request_api("get", "openOrderList", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "openOrderList", signed=True, data=params, version="v3" + ) + async def margin_v1_get_loan_vip_collateral_account(self, **params): - return await self._request_margin_api("get", "loan/vip/collateral/account", signed=True, data=params, version=1) - - margin_v1_get_loan_vip_collateral_account.__doc__ = Client.margin_v1_get_loan_vip_collateral_account.__doc__ - + return await self._request_margin_api( + "get", "loan/vip/collateral/account", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_vip_collateral_account.__doc__ = ( + Client.margin_v1_get_loan_vip_collateral_account.__doc__ + ) + async def margin_v1_get_algo_spot_open_orders(self, **params): - return await self._request_margin_api("get", "algo/spot/openOrders", signed=True, data=params, version=1) - - margin_v1_get_algo_spot_open_orders.__doc__ = Client.margin_v1_get_algo_spot_open_orders.__doc__ - + return await self._request_margin_api( + "get", "algo/spot/openOrders", signed=True, data=params, version=1 + ) + + margin_v1_get_algo_spot_open_orders.__doc__ = ( + Client.margin_v1_get_algo_spot_open_orders.__doc__ + ) + async def margin_v1_post_loan_repay(self, **params): - return await self._request_margin_api("post", "loan/repay", signed=True, data=params, version=1) - + return await self._request_margin_api( + "post", "loan/repay", signed=True, data=params, version=1 + ) + margin_v1_post_loan_repay.__doc__ = Client.margin_v1_post_loan_repay.__doc__ - + async def futures_coin_v1_get_funding_info(self, **params): - return await self._request_futures_coin_api("get", "fundingInfo", signed=False, data=params, version=1) - - futures_coin_v1_get_funding_info.__doc__ = Client.futures_coin_v1_get_funding_info.__doc__ - + return await self._request_futures_coin_api( + "get", "fundingInfo", signed=False, data=params, version=1 + ) + + futures_coin_v1_get_funding_info.__doc__ = ( + Client.futures_coin_v1_get_funding_info.__doc__ + ) + async def margin_v1_get_margin_leverage_bracket(self, **params): - return await self._request_margin_api("get", "margin/leverageBracket", signed=True, data=params, version=1) - - margin_v1_get_margin_leverage_bracket.__doc__ = Client.margin_v1_get_margin_leverage_bracket.__doc__ - + return await self._request_margin_api( + "get", "margin/leverageBracket", signed=True, data=params, version=1 + ) + + margin_v1_get_margin_leverage_bracket.__doc__ = ( + Client.margin_v1_get_margin_leverage_bracket.__doc__ + ) + async def margin_v2_get_portfolio_collateral_rate(self, **params): - return await self._request_margin_api("get", "portfolio/collateralRate", signed=True, data=params, version=2) - - margin_v2_get_portfolio_collateral_rate.__doc__ = Client.margin_v2_get_portfolio_collateral_rate.__doc__ - + return await self._request_margin_api( + "get", "portfolio/collateralRate", signed=True, data=params, version=2 + ) + + margin_v2_get_portfolio_collateral_rate.__doc__ = ( + Client.margin_v2_get_portfolio_collateral_rate.__doc__ + ) + async def margin_v2_post_loan_flexible_adjust_ltv(self, **params): - return await self._request_margin_api("post", "loan/flexible/adjust/ltv", signed=True, data=params, version=2) - - margin_v2_post_loan_flexible_adjust_ltv.__doc__ = Client.margin_v2_post_loan_flexible_adjust_ltv.__doc__ - + return await self._request_margin_api( + "post", "loan/flexible/adjust/ltv", signed=True, data=params, version=2 + ) + + margin_v2_post_loan_flexible_adjust_ltv.__doc__ = ( + Client.margin_v2_post_loan_flexible_adjust_ltv.__doc__ + ) + async def margin_v1_get_convert_order_status(self, **params): - return await self._request_margin_api("get", "convert/orderStatus", signed=True, data=params, version=1) - - margin_v1_get_convert_order_status.__doc__ = Client.margin_v1_get_convert_order_status.__doc__ - + return await self._request_margin_api( + "get", "convert/orderStatus", signed=True, data=params, version=1 + ) + + margin_v1_get_convert_order_status.__doc__ = ( + Client.margin_v1_get_convert_order_status.__doc__ + ) + async def margin_v1_get_broker_sub_account_api_ip_restriction(self, **params): - return await self._request_margin_api("get", "broker/subAccountApi/ipRestriction", signed=True, data=params, version=1) - - margin_v1_get_broker_sub_account_api_ip_restriction.__doc__ = Client.margin_v1_get_broker_sub_account_api_ip_restriction.__doc__ - + return await self._request_margin_api( + "get", + "broker/subAccountApi/ipRestriction", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_broker_sub_account_api_ip_restriction.__doc__ = ( + Client.margin_v1_get_broker_sub_account_api_ip_restriction.__doc__ + ) + async def margin_v1_post_dci_product_subscribe(self, **params): - return await self._request_margin_api("post", "dci/product/subscribe", signed=True, data=params, version=1) - - margin_v1_post_dci_product_subscribe.__doc__ = Client.margin_v1_post_dci_product_subscribe.__doc__ - + return await self._request_margin_api( + "post", "dci/product/subscribe", signed=True, data=params, version=1 + ) + + margin_v1_post_dci_product_subscribe.__doc__ = ( + Client.margin_v1_post_dci_product_subscribe.__doc__ + ) + async def futures_v1_get_income_asyn_id(self, **params): - return await self._request_futures_api("get", "income/asyn/id", signed=True, data=params, version=1) - + return await self._request_futures_api( + "get", "income/asyn/id", signed=True, data=params, version=1 + ) + futures_v1_get_income_asyn_id.__doc__ = Client.futures_v1_get_income_asyn_id.__doc__ - + async def options_v1_post_countdown_cancel_all(self, **params): - return await self._request_options_api("post", "countdownCancelAll", signed=True, data=params) - - options_v1_post_countdown_cancel_all.__doc__ = Client.options_v1_post_countdown_cancel_all.__doc__ - + return await self._request_options_api( + "post", "countdownCancelAll", signed=True, data=params + ) + + options_v1_post_countdown_cancel_all.__doc__ = ( + Client.options_v1_post_countdown_cancel_all.__doc__ + ) + async def margin_v1_post_mining_hash_transfer_config_cancel(self, **params): - return await self._request_margin_api("post", "mining/hash-transfer/config/cancel", signed=True, data=params, version=1) - - margin_v1_post_mining_hash_transfer_config_cancel.__doc__ = Client.margin_v1_post_mining_hash_transfer_config_cancel.__doc__ - + return await self._request_margin_api( + "post", + "mining/hash-transfer/config/cancel", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_mining_hash_transfer_config_cancel.__doc__ = ( + Client.margin_v1_post_mining_hash_transfer_config_cancel.__doc__ + ) + async def margin_v1_get_broker_sub_account_deposit_hist(self, **params): - return await self._request_margin_api("get", "broker/subAccount/depositHist", signed=True, data=params, version=1) - - margin_v1_get_broker_sub_account_deposit_hist.__doc__ = Client.margin_v1_get_broker_sub_account_deposit_hist.__doc__ - + return await self._request_margin_api( + "get", "broker/subAccount/depositHist", signed=True, data=params, version=1 + ) + + margin_v1_get_broker_sub_account_deposit_hist.__doc__ = ( + Client.margin_v1_get_broker_sub_account_deposit_hist.__doc__ + ) + async def margin_v1_get_mining_payment_list(self, **params): - return await self._request_margin_api("get", "mining/payment/list", signed=True, data=params, version=1) - - margin_v1_get_mining_payment_list.__doc__ = Client.margin_v1_get_mining_payment_list.__doc__ - + return await self._request_margin_api( + "get", "mining/payment/list", signed=True, data=params, version=1 + ) + + margin_v1_get_mining_payment_list.__doc__ = ( + Client.margin_v1_get_mining_payment_list.__doc__ + ) + async def futures_v1_get_pm_account_info(self, **params): - return await self._request_futures_api("get", "pmAccountInfo", signed=True, data=params, version=1) - - futures_v1_get_pm_account_info.__doc__ = Client.futures_v1_get_pm_account_info.__doc__ - + return await self._request_futures_api( + "get", "pmAccountInfo", signed=True, data=params, version=1 + ) + + futures_v1_get_pm_account_info.__doc__ = ( + Client.futures_v1_get_pm_account_info.__doc__ + ) + async def futures_coin_v1_get_adl_quantile(self, **params): - return await self._request_futures_coin_api("get", "adlQuantile", signed=True, data=params, version=1) - - futures_coin_v1_get_adl_quantile.__doc__ = Client.futures_coin_v1_get_adl_quantile.__doc__ - + return await self._request_futures_coin_api( + "get", "adlQuantile", signed=True, data=params, version=1 + ) + + futures_coin_v1_get_adl_quantile.__doc__ = ( + Client.futures_coin_v1_get_adl_quantile.__doc__ + ) + async def options_v1_get_income_asyn_id(self, **params): - return await self._request_options_api("get", "income/asyn/id", signed=True, data=params) - + return await self._request_options_api( + "get", "income/asyn/id", signed=True, data=params + ) + options_v1_get_income_asyn_id.__doc__ = Client.options_v1_get_income_asyn_id.__doc__ - + async def v3_post_cancel_replace(self, **params): - return await self._request_api("post", "cancelReplace", signed=True, data=params, version="v3") - + return await self._request_api( + "post", "cancelReplace", signed=True, data=params, version="v3" + ) + v3_post_cancel_replace.__doc__ = Client.v3_post_cancel_replace.__doc__ - + async def v3_post_order_test(self, **params): - return await self._request_api("post", "order/test", signed=True, data=params, version="v3") - + return await self._request_api( + "post", "order/test", signed=True, data=params, version="v3" + ) + async def margin_v1_post_account_enable_fast_withdraw_switch(self, **params): - return await self._request_margin_api("post", "account/enableFastWithdrawSwitch", signed=True, data=params, version=1) - - margin_v1_post_account_enable_fast_withdraw_switch.__doc__ = Client.margin_v1_post_account_enable_fast_withdraw_switch.__doc__ - + return await self._request_margin_api( + "post", + "account/enableFastWithdrawSwitch", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_account_enable_fast_withdraw_switch.__doc__ = ( + Client.margin_v1_post_account_enable_fast_withdraw_switch.__doc__ + ) + async def margin_v1_post_broker_transfer_futures(self, **params): - return await self._request_margin_api("post", "broker/transfer/futures", signed=True, data=params, version=1) - - margin_v1_post_broker_transfer_futures.__doc__ = Client.margin_v1_post_broker_transfer_futures.__doc__ - + return await self._request_margin_api( + "post", "broker/transfer/futures", signed=True, data=params, version=1 + ) + + margin_v1_post_broker_transfer_futures.__doc__ = ( + Client.margin_v1_post_broker_transfer_futures.__doc__ + ) + async def margin_v1_get_margin_isolated_transfer(self, **params): - return await self._request_margin_api("get", "margin/isolated/transfer", signed=True, data=params, version=1) - + return await self._request_margin_api( + "get", "margin/isolated/transfer", signed=True, data=params, version=1 + ) + async def v3_post_order_cancel_replace(self, **params): - return await self._request_api("post", "order/cancelReplace", signed=True, data=params, version="v3") - + return await self._request_api( + "post", "order/cancelReplace", signed=True, data=params, version="v3" + ) + async def margin_v1_post_sol_staking_sol_stake(self, **params): - return await self._request_margin_api("post", "sol-staking/sol/stake", signed=True, data=params, version=1) - - margin_v1_post_sol_staking_sol_stake.__doc__ = Client.margin_v1_post_sol_staking_sol_stake.__doc__ - + return await self._request_margin_api( + "post", "sol-staking/sol/stake", signed=True, data=params, version=1 + ) + + margin_v1_post_sol_staking_sol_stake.__doc__ = ( + Client.margin_v1_post_sol_staking_sol_stake.__doc__ + ) + async def margin_v1_post_loan_borrow(self, **params): - return await self._request_margin_api("post", "loan/borrow", signed=True, data=params, version=1) - + return await self._request_margin_api( + "post", "loan/borrow", signed=True, data=params, version=1 + ) + margin_v1_post_loan_borrow.__doc__ = Client.margin_v1_post_loan_borrow.__doc__ - + async def margin_v1_get_managed_subaccount_info(self, **params): - return await self._request_margin_api("get", "managed-subaccount/info", signed=True, data=params, version=1) - - margin_v1_get_managed_subaccount_info.__doc__ = Client.margin_v1_get_managed_subaccount_info.__doc__ - + return await self._request_margin_api( + "get", "managed-subaccount/info", signed=True, data=params, version=1 + ) + + margin_v1_get_managed_subaccount_info.__doc__ = ( + Client.margin_v1_get_managed_subaccount_info.__doc__ + ) + async def margin_v1_post_lending_auto_invest_plan_edit_status(self, **params): - return await self._request_margin_api("post", "lending/auto-invest/plan/edit-status", signed=True, data=params, version=1) - - margin_v1_post_lending_auto_invest_plan_edit_status.__doc__ = Client.margin_v1_post_lending_auto_invest_plan_edit_status.__doc__ - + return await self._request_margin_api( + "post", + "lending/auto-invest/plan/edit-status", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_lending_auto_invest_plan_edit_status.__doc__ = ( + Client.margin_v1_post_lending_auto_invest_plan_edit_status.__doc__ + ) + async def margin_v1_get_sol_staking_sol_history_unclaimed_rewards(self, **params): - return await self._request_margin_api("get", "sol-staking/sol/history/unclaimedRewards", signed=True, data=params, version=1) - - margin_v1_get_sol_staking_sol_history_unclaimed_rewards.__doc__ = Client.margin_v1_get_sol_staking_sol_history_unclaimed_rewards.__doc__ - + return await self._request_margin_api( + "get", + "sol-staking/sol/history/unclaimedRewards", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_sol_staking_sol_history_unclaimed_rewards.__doc__ = ( + Client.margin_v1_get_sol_staking_sol_history_unclaimed_rewards.__doc__ + ) + async def margin_v1_post_asset_convert_transfer_query_by_page(self, **params): - return await self._request_margin_api("post", "asset/convert-transfer/queryByPage", signed=True, data=params, version=1) - - margin_v1_post_asset_convert_transfer_query_by_page.__doc__ = Client.margin_v1_post_asset_convert_transfer_query_by_page.__doc__ - - async def margin_v1_get_sol_staking_sol_history_boost_rewards_history(self, **params): - return await self._request_margin_api("get", "sol-staking/sol/history/boostRewardsHistory", signed=True, data=params, version=1) - - margin_v1_get_sol_staking_sol_history_boost_rewards_history.__doc__ = Client.margin_v1_get_sol_staking_sol_history_boost_rewards_history.__doc__ - + return await self._request_margin_api( + "post", + "asset/convert-transfer/queryByPage", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_asset_convert_transfer_query_by_page.__doc__ = ( + Client.margin_v1_post_asset_convert_transfer_query_by_page.__doc__ + ) + + async def margin_v1_get_sol_staking_sol_history_boost_rewards_history( + self, **params + ): + return await self._request_margin_api( + "get", + "sol-staking/sol/history/boostRewardsHistory", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_sol_staking_sol_history_boost_rewards_history.__doc__ = ( + Client.margin_v1_get_sol_staking_sol_history_boost_rewards_history.__doc__ + ) + async def margin_v1_get_lending_auto_invest_one_off_status(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/one-off/status", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_one_off_status.__doc__ = Client.margin_v1_get_lending_auto_invest_one_off_status.__doc__ - + return await self._request_margin_api( + "get", + "lending/auto-invest/one-off/status", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_lending_auto_invest_one_off_status.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_one_off_status.__doc__ + ) + async def margin_v1_post_broker_sub_account(self, **params): - return await self._request_margin_api("post", "broker/subAccount", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account.__doc__ = Client.margin_v1_post_broker_sub_account.__doc__ - - async def margin_v1_get_asset_ledger_transfer_cloud_mining_query_by_page(self, **params): - return await self._request_margin_api("get", "asset/ledger-transfer/cloud-mining/queryByPage", signed=True, data=params, version=1) - - margin_v1_get_asset_ledger_transfer_cloud_mining_query_by_page.__doc__ = Client.margin_v1_get_asset_ledger_transfer_cloud_mining_query_by_page.__doc__ - + return await self._request_margin_api( + "post", "broker/subAccount", signed=True, data=params, version=1 + ) + + margin_v1_post_broker_sub_account.__doc__ = ( + Client.margin_v1_post_broker_sub_account.__doc__ + ) + + async def margin_v1_get_asset_ledger_transfer_cloud_mining_query_by_page( + self, **params + ): + return await self._request_margin_api( + "get", + "asset/ledger-transfer/cloud-mining/queryByPage", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_asset_ledger_transfer_cloud_mining_query_by_page.__doc__ = ( + Client.margin_v1_get_asset_ledger_transfer_cloud_mining_query_by_page.__doc__ + ) + async def margin_v1_get_mining_pub_coin_list(self, **params): - return await self._request_margin_api("get", "mining/pub/coinList", signed=True, data=params, version=1) - - margin_v1_get_mining_pub_coin_list.__doc__ = Client.margin_v1_get_mining_pub_coin_list.__doc__ - + return await self._request_margin_api( + "get", "mining/pub/coinList", signed=True, data=params, version=1 + ) + + margin_v1_get_mining_pub_coin_list.__doc__ = ( + Client.margin_v1_get_mining_pub_coin_list.__doc__ + ) + async def margin_v2_get_loan_flexible_repay_history(self, **params): - return await self._request_margin_api("get", "loan/flexible/repay/history", signed=True, data=params, version=2) - - margin_v2_get_loan_flexible_repay_history.__doc__ = Client.margin_v2_get_loan_flexible_repay_history.__doc__ - + return await self._request_margin_api( + "get", "loan/flexible/repay/history", signed=True, data=params, version=2 + ) + + margin_v2_get_loan_flexible_repay_history.__doc__ = ( + Client.margin_v2_get_loan_flexible_repay_history.__doc__ + ) + async def v3_post_sor_order(self, **params): - return await self._request_api("post", "sor/order", signed=True, data=params, version="v3") - + return await self._request_api( + "post", "sor/order", signed=True, data=params, version="v3" + ) + v3_post_sor_order.__doc__ = Client.v3_post_sor_order.__doc__ - + async def margin_v1_post_capital_deposit_credit_apply(self, **params): - return await self._request_margin_api("post", "capital/deposit/credit-apply", signed=True, data=params, version=1) - - margin_v1_post_capital_deposit_credit_apply.__doc__ = Client.margin_v1_post_capital_deposit_credit_apply.__doc__ - + return await self._request_margin_api( + "post", "capital/deposit/credit-apply", signed=True, data=params, version=1 + ) + + margin_v1_post_capital_deposit_credit_apply.__doc__ = ( + Client.margin_v1_post_capital_deposit_credit_apply.__doc__ + ) + async def futures_v1_put_batch_order(self, **params): - return await self._request_futures_api("put", "batchOrder", signed=True, data=params, version=1) - + return await self._request_futures_api( + "put", "batchOrder", signed=True, data=params, version=1 + ) + futures_v1_put_batch_order.__doc__ = Client.futures_v1_put_batch_order.__doc__ - + async def v3_get_my_prevented_matches(self, **params): - return await self._request_api("get", "myPreventedMatches", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "myPreventedMatches", signed=True, data=params, version="v3" + ) + async def margin_v1_get_mining_statistics_user_list(self, **params): - return await self._request_margin_api("get", "mining/statistics/user/list", signed=True, data=params, version=1) - - margin_v1_get_mining_statistics_user_list.__doc__ = Client.margin_v1_get_mining_statistics_user_list.__doc__ - + return await self._request_margin_api( + "get", "mining/statistics/user/list", signed=True, data=params, version=1 + ) + + margin_v1_get_mining_statistics_user_list.__doc__ = ( + Client.margin_v1_get_mining_statistics_user_list.__doc__ + ) + async def futures_v1_post_batch_order(self, **params): - return await self._request_futures_api("post", "batchOrder", signed=True, data=params, version=1) - + return await self._request_futures_api( + "post", "batchOrder", signed=True, data=params, version=1 + ) + futures_v1_post_batch_order.__doc__ = Client.futures_v1_post_batch_order.__doc__ - + async def v3_get_ticker_trading_day(self, **params): - return await self._request_api("get", "ticker/tradingDay", signed=False, data=params, version="v3") - + return await self._request_api( + "get", "ticker/tradingDay", signed=False, data=params, version="v3" + ) + v3_get_ticker_trading_day.__doc__ = Client.v3_get_ticker_trading_day.__doc__ - + async def margin_v1_get_mining_worker_detail(self, **params): - return await self._request_margin_api("get", "mining/worker/detail", signed=True, data=params, version=1) - - margin_v1_get_mining_worker_detail.__doc__ = Client.margin_v1_get_mining_worker_detail.__doc__ - + return await self._request_margin_api( + "get", "mining/worker/detail", signed=True, data=params, version=1 + ) + + margin_v1_get_mining_worker_detail.__doc__ = ( + Client.margin_v1_get_mining_worker_detail.__doc__ + ) + async def margin_v1_get_managed_subaccount_fetch_future_asset(self, **params): - return await self._request_margin_api("get", "managed-subaccount/fetch-future-asset", signed=True, data=params, version=1) - - margin_v1_get_managed_subaccount_fetch_future_asset.__doc__ = Client.margin_v1_get_managed_subaccount_fetch_future_asset.__doc__ - + return await self._request_margin_api( + "get", + "managed-subaccount/fetch-future-asset", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_managed_subaccount_fetch_future_asset.__doc__ = ( + Client.margin_v1_get_managed_subaccount_fetch_future_asset.__doc__ + ) + async def margin_v1_get_margin_rate_limit_order(self, **params): - return await self._request_margin_api("get", "margin/rateLimit/order", signed=True, data=params, version=1) - - margin_v1_get_margin_rate_limit_order.__doc__ = Client.margin_v1_get_margin_rate_limit_order.__doc__ - + return await self._request_margin_api( + "get", "margin/rateLimit/order", signed=True, data=params, version=1 + ) + + margin_v1_get_margin_rate_limit_order.__doc__ = ( + Client.margin_v1_get_margin_rate_limit_order.__doc__ + ) + async def margin_v1_get_localentity_vasp(self, **params): - return await self._request_margin_api("get", "localentity/vasp", signed=True, data=params, version=1) - - margin_v1_get_localentity_vasp.__doc__ = Client.margin_v1_get_localentity_vasp.__doc__ - + return await self._request_margin_api( + "get", "localentity/vasp", signed=True, data=params, version=1 + ) + + margin_v1_get_localentity_vasp.__doc__ = ( + Client.margin_v1_get_localentity_vasp.__doc__ + ) + async def margin_v1_get_sol_staking_sol_history_rate_history(self, **params): - return await self._request_margin_api("get", "sol-staking/sol/history/rateHistory", signed=True, data=params, version=1) - - margin_v1_get_sol_staking_sol_history_rate_history.__doc__ = Client.margin_v1_get_sol_staking_sol_history_rate_history.__doc__ - - async def margin_v1_post_broker_sub_account_api_ip_restriction(self, **params): - return await self._request_margin_api("post", "broker/subAccountApi/ipRestriction", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_api_ip_restriction.__doc__ = Client.margin_v1_post_broker_sub_account_api_ip_restriction.__doc__ - - async def margin_v1_get_broker_transfer(self, **params): - return await self._request_margin_api("get", "broker/transfer", signed=True, data=params, version=1) - - margin_v1_get_broker_transfer.__doc__ = Client.margin_v1_get_broker_transfer.__doc__ - - async def margin_v1_get_sol_staking_account(self, **params): - return await self._request_margin_api("get", "sol-staking/account", signed=True, data=params, version=1) - - margin_v1_get_sol_staking_account.__doc__ = Client.margin_v1_get_sol_staking_account.__doc__ - + return await self._request_margin_api( + "get", + "sol-staking/sol/history/rateHistory", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_sol_staking_sol_history_rate_history.__doc__ = ( + Client.margin_v1_get_sol_staking_sol_history_rate_history.__doc__ + ) + + async def margin_v1_post_broker_sub_account_api_ip_restriction(self, **params): + return await self._request_margin_api( + "post", + "broker/subAccountApi/ipRestriction", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_broker_sub_account_api_ip_restriction.__doc__ = ( + Client.margin_v1_post_broker_sub_account_api_ip_restriction.__doc__ + ) + + async def margin_v1_get_broker_transfer(self, **params): + return await self._request_margin_api( + "get", "broker/transfer", signed=True, data=params, version=1 + ) + + margin_v1_get_broker_transfer.__doc__ = Client.margin_v1_get_broker_transfer.__doc__ + + async def margin_v1_get_sol_staking_account(self, **params): + return await self._request_margin_api( + "get", "sol-staking/account", signed=True, data=params, version=1 + ) + + margin_v1_get_sol_staking_account.__doc__ = ( + Client.margin_v1_get_sol_staking_account.__doc__ + ) + async def margin_v1_get_account_info(self, **params): - return await self._request_margin_api("get", "account/info", signed=True, data=params, version=1) - + return await self._request_margin_api( + "get", "account/info", signed=True, data=params, version=1 + ) + margin_v1_get_account_info.__doc__ = Client.margin_v1_get_account_info.__doc__ - + async def margin_v1_post_portfolio_repay_futures_switch(self, **params): - return await self._request_margin_api("post", "portfolio/repay-futures-switch", signed=True, data=params, version=1) - - margin_v1_post_portfolio_repay_futures_switch.__doc__ = Client.margin_v1_post_portfolio_repay_futures_switch.__doc__ - + return await self._request_margin_api( + "post", + "portfolio/repay-futures-switch", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_portfolio_repay_futures_switch.__doc__ = ( + Client.margin_v1_post_portfolio_repay_futures_switch.__doc__ + ) + async def margin_v1_post_loan_vip_borrow(self, **params): - return await self._request_margin_api("post", "loan/vip/borrow", signed=True, data=params, version=1) - - margin_v1_post_loan_vip_borrow.__doc__ = Client.margin_v1_post_loan_vip_borrow.__doc__ - + return await self._request_margin_api( + "post", "loan/vip/borrow", signed=True, data=params, version=1 + ) + + margin_v1_post_loan_vip_borrow.__doc__ = ( + Client.margin_v1_post_loan_vip_borrow.__doc__ + ) + async def margin_v2_get_loan_flexible_ltv_adjustment_history(self, **params): - return await self._request_margin_api("get", "loan/flexible/ltv/adjustment/history", signed=True, data=params, version=2) - - margin_v2_get_loan_flexible_ltv_adjustment_history.__doc__ = Client.margin_v2_get_loan_flexible_ltv_adjustment_history.__doc__ - + return await self._request_margin_api( + "get", + "loan/flexible/ltv/adjustment/history", + signed=True, + data=params, + version=2, + ) + + margin_v2_get_loan_flexible_ltv_adjustment_history.__doc__ = ( + Client.margin_v2_get_loan_flexible_ltv_adjustment_history.__doc__ + ) + async def options_v1_delete_all_open_orders_by_underlying(self, **params): - return await self._request_options_api("delete", "allOpenOrdersByUnderlying", signed=True, data=params) - - options_v1_delete_all_open_orders_by_underlying.__doc__ = Client.options_v1_delete_all_open_orders_by_underlying.__doc__ - + return await self._request_options_api( + "delete", "allOpenOrdersByUnderlying", signed=True, data=params + ) + + options_v1_delete_all_open_orders_by_underlying.__doc__ = ( + Client.options_v1_delete_all_open_orders_by_underlying.__doc__ + ) + async def margin_v1_get_broker_sub_account_futures_summary(self, **params): - return await self._request_margin_api("get", "broker/subAccount/futuresSummary", signed=True, data=params, version=1) - - margin_v1_get_broker_sub_account_futures_summary.__doc__ = Client.margin_v1_get_broker_sub_account_futures_summary.__doc__ - + return await self._request_margin_api( + "get", + "broker/subAccount/futuresSummary", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_broker_sub_account_futures_summary.__doc__ = ( + Client.margin_v1_get_broker_sub_account_futures_summary.__doc__ + ) + async def margin_v1_get_broker_sub_account_spot_summary(self, **params): - return await self._request_margin_api("get", "broker/subAccount/spotSummary", signed=True, data=params, version=1) - - margin_v1_get_broker_sub_account_spot_summary.__doc__ = Client.margin_v1_get_broker_sub_account_spot_summary.__doc__ - + return await self._request_margin_api( + "get", "broker/subAccount/spotSummary", signed=True, data=params, version=1 + ) + + margin_v1_get_broker_sub_account_spot_summary.__doc__ = ( + Client.margin_v1_get_broker_sub_account_spot_summary.__doc__ + ) + async def margin_v1_post_sub_account_blvt_enable(self, **params): - return await self._request_margin_api("post", "sub-account/blvt/enable", signed=True, data=params, version=1) - - margin_v1_post_sub_account_blvt_enable.__doc__ = Client.margin_v1_post_sub_account_blvt_enable.__doc__ - + return await self._request_margin_api( + "post", "sub-account/blvt/enable", signed=True, data=params, version=1 + ) + + margin_v1_post_sub_account_blvt_enable.__doc__ = ( + Client.margin_v1_post_sub_account_blvt_enable.__doc__ + ) + async def margin_v1_get_algo_spot_historical_orders(self, **params): - return await self._request_margin_api("get", "algo/spot/historicalOrders", signed=True, data=params, version=1) - - margin_v1_get_algo_spot_historical_orders.__doc__ = Client.margin_v1_get_algo_spot_historical_orders.__doc__ - + return await self._request_margin_api( + "get", "algo/spot/historicalOrders", signed=True, data=params, version=1 + ) + + margin_v1_get_algo_spot_historical_orders.__doc__ = ( + Client.margin_v1_get_algo_spot_historical_orders.__doc__ + ) + async def margin_v1_get_loan_vip_repay_history(self, **params): - return await self._request_margin_api("get", "loan/vip/repay/history", signed=True, data=params, version=1) - - margin_v1_get_loan_vip_repay_history.__doc__ = Client.margin_v1_get_loan_vip_repay_history.__doc__ - + return await self._request_margin_api( + "get", "loan/vip/repay/history", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_vip_repay_history.__doc__ = ( + Client.margin_v1_get_loan_vip_repay_history.__doc__ + ) + async def margin_v1_get_loan_borrow_history(self, **params): - return await self._request_margin_api("get", "loan/borrow/history", signed=True, data=params, version=1) - - margin_v1_get_loan_borrow_history.__doc__ = Client.margin_v1_get_loan_borrow_history.__doc__ - + return await self._request_margin_api( + "get", "loan/borrow/history", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_borrow_history.__doc__ = ( + Client.margin_v1_get_loan_borrow_history.__doc__ + ) + async def margin_v1_post_lending_auto_invest_redeem(self, **params): - return await self._request_margin_api("post", "lending/auto-invest/redeem", signed=True, data=params, version=1) - - margin_v1_post_lending_auto_invest_redeem.__doc__ = Client.margin_v1_post_lending_auto_invest_redeem.__doc__ - + return await self._request_margin_api( + "post", "lending/auto-invest/redeem", signed=True, data=params, version=1 + ) + + margin_v1_post_lending_auto_invest_redeem.__doc__ = ( + Client.margin_v1_post_lending_auto_invest_redeem.__doc__ + ) + async def v3_get_account(self, **params): - return await self._request_api("get", "account", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "account", signed=True, data=params, version="v3" + ) + async def v3_delete_order(self, **params): - return await self._request_api("delete", "order", signed=True, data=params, version="v3") - + return await self._request_api( + "delete", "order", signed=True, data=params, version="v3" + ) + async def futures_coin_v1_get_income_asyn(self, **params): - return await self._request_futures_coin_api("get", "income/asyn", signed=True, data=params, version=1) - - futures_coin_v1_get_income_asyn.__doc__ = Client.futures_coin_v1_get_income_asyn.__doc__ - + return await self._request_futures_coin_api( + "get", "income/asyn", signed=True, data=params, version=1 + ) + + futures_coin_v1_get_income_asyn.__doc__ = ( + Client.futures_coin_v1_get_income_asyn.__doc__ + ) + async def margin_v1_post_managed_subaccount_deposit(self, **params): - return await self._request_margin_api("post", "managed-subaccount/deposit", signed=True, data=params, version=1) - - margin_v1_post_managed_subaccount_deposit.__doc__ = Client.margin_v1_post_managed_subaccount_deposit.__doc__ - + return await self._request_margin_api( + "post", "managed-subaccount/deposit", signed=True, data=params, version=1 + ) + + margin_v1_post_managed_subaccount_deposit.__doc__ = ( + Client.margin_v1_post_managed_subaccount_deposit.__doc__ + ) + async def margin_v1_post_lending_daily_purchase(self, **params): - return await self._request_margin_api("post", "lending/daily/purchase", signed=True, data=params, version=1) - - margin_v1_post_lending_daily_purchase.__doc__ = Client.margin_v1_post_lending_daily_purchase.__doc__ - + return await self._request_margin_api( + "post", "lending/daily/purchase", signed=True, data=params, version=1 + ) + + margin_v1_post_lending_daily_purchase.__doc__ = ( + Client.margin_v1_post_lending_daily_purchase.__doc__ + ) + async def futures_v1_get_trade_asyn_id(self, **params): - return await self._request_futures_api("get", "trade/asyn/id", signed=True, data=params, version=1) - + return await self._request_futures_api( + "get", "trade/asyn/id", signed=True, data=params, version=1 + ) + futures_v1_get_trade_asyn_id.__doc__ = Client.futures_v1_get_trade_asyn_id.__doc__ - - async def margin_v1_delete_sub_account_sub_account_api_ip_restriction_ip_list(self, **params): - return await self._request_margin_api("delete", "sub-account/subAccountApi/ipRestriction/ipList", signed=True, data=params, version=1) - + + async def margin_v1_delete_sub_account_sub_account_api_ip_restriction_ip_list( + self, **params + ): + return await self._request_margin_api( + "delete", + "sub-account/subAccountApi/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + margin_v1_delete_sub_account_sub_account_api_ip_restriction_ip_list.__doc__ = Client.margin_v1_delete_sub_account_sub_account_api_ip_restriction_ip_list.__doc__ - + async def margin_v1_get_copy_trading_futures_user_status(self, **params): - return await self._request_margin_api("get", "copyTrading/futures/userStatus", signed=True, data=params, version=1) - - margin_v1_get_copy_trading_futures_user_status.__doc__ = Client.margin_v1_get_copy_trading_futures_user_status.__doc__ - + return await self._request_margin_api( + "get", "copyTrading/futures/userStatus", signed=True, data=params, version=1 + ) + + margin_v1_get_copy_trading_futures_user_status.__doc__ = ( + Client.margin_v1_get_copy_trading_futures_user_status.__doc__ + ) + async def options_v1_get_margin_account(self, **params): - return await self._request_options_api("get", "marginAccount", signed=True, data=params) - + return await self._request_options_api( + "get", "marginAccount", signed=True, data=params + ) + options_v1_get_margin_account.__doc__ = Client.options_v1_get_margin_account.__doc__ - + async def margin_v1_post_localentity_withdraw_apply(self, **params): - return await self._request_margin_api("post", "localentity/withdraw/apply", signed=True, data=params, version=1) - - margin_v1_post_localentity_withdraw_apply.__doc__ = Client.margin_v1_post_localentity_withdraw_apply.__doc__ - + return await self._request_margin_api( + "post", "localentity/withdraw/apply", signed=True, data=params, version=1 + ) + + margin_v1_post_localentity_withdraw_apply.__doc__ = ( + Client.margin_v1_post_localentity_withdraw_apply.__doc__ + ) + async def v3_put_user_data_stream(self, **params): - return await self._request_api("put", "userDataStream", signed=True, data=params, version="v3") - + return await self._request_api( + "put", "userDataStream", signed=True, data=params, version="v3" + ) + async def margin_v1_get_asset_wallet_balance(self, **params): - return await self._request_margin_api("get", "asset/wallet/balance", signed=True, data=params, version=1) - - margin_v1_get_asset_wallet_balance.__doc__ = Client.margin_v1_get_asset_wallet_balance.__doc__ - + return await self._request_margin_api( + "get", "asset/wallet/balance", signed=True, data=params, version=1 + ) + + margin_v1_get_asset_wallet_balance.__doc__ = ( + Client.margin_v1_get_asset_wallet_balance.__doc__ + ) + async def margin_v1_post_broker_transfer(self, **params): - return await self._request_margin_api("post", "broker/transfer", signed=True, data=params, version=1) - - margin_v1_post_broker_transfer.__doc__ = Client.margin_v1_post_broker_transfer.__doc__ - + return await self._request_margin_api( + "post", "broker/transfer", signed=True, data=params, version=1 + ) + + margin_v1_post_broker_transfer.__doc__ = ( + Client.margin_v1_post_broker_transfer.__doc__ + ) + async def margin_v1_post_lending_customized_fixed_purchase(self, **params): - return await self._request_margin_api("post", "lending/customizedFixed/purchase", signed=True, data=params, version=1) - - margin_v1_post_lending_customized_fixed_purchase.__doc__ = Client.margin_v1_post_lending_customized_fixed_purchase.__doc__ - + return await self._request_margin_api( + "post", + "lending/customizedFixed/purchase", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_lending_customized_fixed_purchase.__doc__ = ( + Client.margin_v1_post_lending_customized_fixed_purchase.__doc__ + ) + async def margin_v1_post_algo_futures_new_order_twap(self, **params): - return await self._request_margin_api("post", "algo/futures/newOrderTwap", signed=True, data=params, version=1) - - margin_v1_post_algo_futures_new_order_twap.__doc__ = Client.margin_v1_post_algo_futures_new_order_twap.__doc__ - + return await self._request_margin_api( + "post", "algo/futures/newOrderTwap", signed=True, data=params, version=1 + ) + + margin_v1_post_algo_futures_new_order_twap.__doc__ = ( + Client.margin_v1_post_algo_futures_new_order_twap.__doc__ + ) + async def margin_v2_post_eth_staking_eth_stake(self, **params): - return await self._request_margin_api("post", "eth-staking/eth/stake", signed=True, data=params, version=2) - - margin_v2_post_eth_staking_eth_stake.__doc__ = Client.margin_v2_post_eth_staking_eth_stake.__doc__ - + return await self._request_margin_api( + "post", "eth-staking/eth/stake", signed=True, data=params, version=2 + ) + + margin_v2_post_eth_staking_eth_stake.__doc__ = ( + Client.margin_v2_post_eth_staking_eth_stake.__doc__ + ) + async def margin_v1_post_loan_flexible_repay_history(self, **params): - return await self._request_margin_api("post", "loan/flexible/repay/history", signed=True, data=params, version=1) - - margin_v1_post_loan_flexible_repay_history.__doc__ = Client.margin_v1_post_loan_flexible_repay_history.__doc__ - + return await self._request_margin_api( + "post", "loan/flexible/repay/history", signed=True, data=params, version=1 + ) + + margin_v1_post_loan_flexible_repay_history.__doc__ = ( + Client.margin_v1_post_loan_flexible_repay_history.__doc__ + ) + async def v3_post_user_data_stream(self, **params): - return await self._request_api("post", "userDataStream", signed=True, data=params, version="v3") - + return await self._request_api( + "post", "userDataStream", signed=True, data=params, version="v3" + ) + async def margin_v1_get_lending_auto_invest_index_info(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/index/info", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_index_info.__doc__ = Client.margin_v1_get_lending_auto_invest_index_info.__doc__ - + return await self._request_margin_api( + "get", "lending/auto-invest/index/info", signed=True, data=params, version=1 + ) + + margin_v1_get_lending_auto_invest_index_info.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_index_info.__doc__ + ) + async def margin_v1_get_sol_staking_sol_history_redemption_history(self, **params): - return await self._request_margin_api("get", "sol-staking/sol/history/redemptionHistory", signed=True, data=params, version=1) - - margin_v1_get_sol_staking_sol_history_redemption_history.__doc__ = Client.margin_v1_get_sol_staking_sol_history_redemption_history.__doc__ - + return await self._request_margin_api( + "get", + "sol-staking/sol/history/redemptionHistory", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_sol_staking_sol_history_redemption_history.__doc__ = ( + Client.margin_v1_get_sol_staking_sol_history_redemption_history.__doc__ + ) + async def margin_v1_get_broker_rebate_futures_recent_record(self, **params): - return await self._request_margin_api("get", "broker/rebate/futures/recentRecord", signed=True, data=params, version=1) - - margin_v1_get_broker_rebate_futures_recent_record.__doc__ = Client.margin_v1_get_broker_rebate_futures_recent_record.__doc__ - + return await self._request_margin_api( + "get", + "broker/rebate/futures/recentRecord", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_broker_rebate_futures_recent_record.__doc__ = ( + Client.margin_v1_get_broker_rebate_futures_recent_record.__doc__ + ) + async def margin_v3_get_broker_sub_account_futures_summary(self, **params): - return await self._request_margin_api("get", "broker/subAccount/futuresSummary", signed=True, data=params, version=3) - - margin_v3_get_broker_sub_account_futures_summary.__doc__ = Client.margin_v3_get_broker_sub_account_futures_summary.__doc__ - + return await self._request_margin_api( + "get", + "broker/subAccount/futuresSummary", + signed=True, + data=params, + version=3, + ) + + margin_v3_get_broker_sub_account_futures_summary.__doc__ = ( + Client.margin_v3_get_broker_sub_account_futures_summary.__doc__ + ) + async def margin_v1_post_margin_manual_liquidation(self, **params): - return await self._request_margin_api("post", "margin/manual-liquidation", signed=True, data=params, version=1) - + return await self._request_margin_api( + "post", "margin/manual-liquidation", signed=True, data=params, version=1 + ) + async def margin_v1_get_lending_auto_invest_target_asset_roi_list(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/target-asset/roi/list", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_target_asset_roi_list.__doc__ = Client.margin_v1_get_lending_auto_invest_target_asset_roi_list.__doc__ - + return await self._request_margin_api( + "get", + "lending/auto-invest/target-asset/roi/list", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_lending_auto_invest_target_asset_roi_list.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_target_asset_roi_list.__doc__ + ) + async def margin_v1_get_broker_universal_transfer(self, **params): - return await self._request_margin_api("get", "broker/universalTransfer", signed=True, data=params, version=1) - - margin_v1_get_broker_universal_transfer.__doc__ = Client.margin_v1_get_broker_universal_transfer.__doc__ - + return await self._request_margin_api( + "get", "broker/universalTransfer", signed=True, data=params, version=1 + ) + + margin_v1_get_broker_universal_transfer.__doc__ = ( + Client.margin_v1_get_broker_universal_transfer.__doc__ + ) + async def futures_v1_put_batch_orders(self, **params): - return await self._request_futures_api("put", "batchOrders", signed=True, data=params, version=1) - + return await self._request_futures_api( + "put", "batchOrders", signed=True, data=params, version=1 + ) + futures_v1_put_batch_orders.__doc__ = Client.futures_v1_put_batch_orders.__doc__ - + async def options_v1_post_countdown_cancel_all_heart_beat(self, **params): - return await self._request_options_api("post", "countdownCancelAllHeartBeat", signed=True, data=params) - - options_v1_post_countdown_cancel_all_heart_beat.__doc__ = Client.options_v1_post_countdown_cancel_all_heart_beat.__doc__ - + return await self._request_options_api( + "post", "countdownCancelAllHeartBeat", signed=True, data=params + ) + + options_v1_post_countdown_cancel_all_heart_beat.__doc__ = ( + Client.options_v1_post_countdown_cancel_all_heart_beat.__doc__ + ) + async def margin_v1_get_loan_collateral_data(self, **params): - return await self._request_margin_api("get", "loan/collateral/data", signed=True, data=params, version=1) - - margin_v1_get_loan_collateral_data.__doc__ = Client.margin_v1_get_loan_collateral_data.__doc__ - + return await self._request_margin_api( + "get", "loan/collateral/data", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_collateral_data.__doc__ = ( + Client.margin_v1_get_loan_collateral_data.__doc__ + ) + async def margin_v1_get_loan_repay_history(self, **params): - return await self._request_margin_api("get", "loan/repay/history", signed=True, data=params, version=1) - - margin_v1_get_loan_repay_history.__doc__ = Client.margin_v1_get_loan_repay_history.__doc__ - + return await self._request_margin_api( + "get", "loan/repay/history", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_repay_history.__doc__ = ( + Client.margin_v1_get_loan_repay_history.__doc__ + ) + async def margin_v1_post_convert_limit_place_order(self, **params): - return await self._request_margin_api("post", "convert/limit/placeOrder", signed=True, data=params, version=1) - - margin_v1_post_convert_limit_place_order.__doc__ = Client.margin_v1_post_convert_limit_place_order.__doc__ - + return await self._request_margin_api( + "post", "convert/limit/placeOrder", signed=True, data=params, version=1 + ) + + margin_v1_post_convert_limit_place_order.__doc__ = ( + Client.margin_v1_post_convert_limit_place_order.__doc__ + ) + async def futures_v1_get_convert_exchange_info(self, **params): - return await self._request_futures_api("get", "convert/exchangeInfo", signed=False, data=params, version=1) - - futures_v1_get_convert_exchange_info.__doc__ = Client.futures_v1_get_convert_exchange_info.__doc__ - + return await self._request_futures_api( + "get", "convert/exchangeInfo", signed=False, data=params, version=1 + ) + + futures_v1_get_convert_exchange_info.__doc__ = ( + Client.futures_v1_get_convert_exchange_info.__doc__ + ) + async def v3_get_all_order_list(self, **params): - return await self._request_api("get", "allOrderList", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "allOrderList", signed=True, data=params, version="v3" + ) + v3_get_all_order_list.__doc__ = Client.v3_get_all_order_list.__doc__ - - async def margin_v1_delete_broker_sub_account_api_ip_restriction_ip_list(self, **params): - return await self._request_margin_api("delete", "broker/subAccountApi/ipRestriction/ipList", signed=True, data=params, version=1) - - margin_v1_delete_broker_sub_account_api_ip_restriction_ip_list.__doc__ = Client.margin_v1_delete_broker_sub_account_api_ip_restriction_ip_list.__doc__ - + + async def margin_v1_delete_broker_sub_account_api_ip_restriction_ip_list( + self, **params + ): + return await self._request_margin_api( + "delete", + "broker/subAccountApi/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + + margin_v1_delete_broker_sub_account_api_ip_restriction_ip_list.__doc__ = ( + Client.margin_v1_delete_broker_sub_account_api_ip_restriction_ip_list.__doc__ + ) + async def margin_v1_post_sub_account_virtual_sub_account(self, **params): - return await self._request_margin_api("post", "sub-account/virtualSubAccount", signed=True, data=params, version=1) - - margin_v1_post_sub_account_virtual_sub_account.__doc__ = Client.margin_v1_post_sub_account_virtual_sub_account.__doc__ - + return await self._request_margin_api( + "post", "sub-account/virtualSubAccount", signed=True, data=params, version=1 + ) + + margin_v1_post_sub_account_virtual_sub_account.__doc__ = ( + Client.margin_v1_post_sub_account_virtual_sub_account.__doc__ + ) + async def margin_v1_put_localentity_deposit_provide_info(self, **params): - return await self._request_margin_api("put", "localentity/deposit/provide-info", signed=True, data=params, version=1) - - margin_v1_put_localentity_deposit_provide_info.__doc__ = Client.margin_v1_put_localentity_deposit_provide_info.__doc__ - + return await self._request_margin_api( + "put", + "localentity/deposit/provide-info", + signed=True, + data=params, + version=1, + ) + + margin_v1_put_localentity_deposit_provide_info.__doc__ = ( + Client.margin_v1_put_localentity_deposit_provide_info.__doc__ + ) + async def margin_v1_post_portfolio_mint(self, **params): - return await self._request_margin_api("post", "portfolio/mint", signed=True, data=params, version=1) - + return await self._request_margin_api( + "post", "portfolio/mint", signed=True, data=params, version=1 + ) + margin_v1_post_portfolio_mint.__doc__ = Client.margin_v1_post_portfolio_mint.__doc__ - + async def futures_v1_get_order_amendment(self, **params): - return await self._request_futures_api("get", "orderAmendment", signed=True, data=params, version=1) - - futures_v1_get_order_amendment.__doc__ = Client.futures_v1_get_order_amendment.__doc__ - + return await self._request_futures_api( + "get", "orderAmendment", signed=True, data=params, version=1 + ) + + futures_v1_get_order_amendment.__doc__ = ( + Client.futures_v1_get_order_amendment.__doc__ + ) + async def margin_v1_post_sol_staking_sol_claim(self, **params): - return await self._request_margin_api("post", "sol-staking/sol/claim", signed=True, data=params, version=1) - - margin_v1_post_sol_staking_sol_claim.__doc__ = Client.margin_v1_post_sol_staking_sol_claim.__doc__ - - async def margin_v1_post_lending_daily_redeem(self, **params): - return await self._request_margin_api("post", "lending/daily/redeem", signed=True, data=params, version=1) - - margin_v1_post_lending_daily_redeem.__doc__ = Client.margin_v1_post_lending_daily_redeem.__doc__ - + return await self._request_margin_api( + "post", "sol-staking/sol/claim", signed=True, data=params, version=1 + ) + + margin_v1_post_sol_staking_sol_claim.__doc__ = ( + Client.margin_v1_post_sol_staking_sol_claim.__doc__ + ) + + async def margin_v1_post_lending_daily_redeem(self, **params): + return await self._request_margin_api( + "post", "lending/daily/redeem", signed=True, data=params, version=1 + ) + + margin_v1_post_lending_daily_redeem.__doc__ = ( + Client.margin_v1_post_lending_daily_redeem.__doc__ + ) + async def margin_v1_post_mining_hash_transfer_config(self, **params): - return await self._request_margin_api("post", "mining/hash-transfer/config", signed=True, data=params, version=1) - - margin_v1_post_mining_hash_transfer_config.__doc__ = Client.margin_v1_post_mining_hash_transfer_config.__doc__ - + return await self._request_margin_api( + "post", "mining/hash-transfer/config", signed=True, data=params, version=1 + ) + + margin_v1_post_mining_hash_transfer_config.__doc__ = ( + Client.margin_v1_post_mining_hash_transfer_config.__doc__ + ) + async def margin_v1_get_lending_auto_invest_rebalance_history(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/rebalance/history", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_rebalance_history.__doc__ = Client.margin_v1_get_lending_auto_invest_rebalance_history.__doc__ - + return await self._request_margin_api( + "get", + "lending/auto-invest/rebalance/history", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_lending_auto_invest_rebalance_history.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_rebalance_history.__doc__ + ) + async def margin_v1_get_loan_repay_collateral_rate(self, **params): - return await self._request_margin_api("get", "loan/repay/collateral/rate", signed=True, data=params, version=1) - - margin_v1_get_loan_repay_collateral_rate.__doc__ = Client.margin_v1_get_loan_repay_collateral_rate.__doc__ - + return await self._request_margin_api( + "get", "loan/repay/collateral/rate", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_repay_collateral_rate.__doc__ = ( + Client.margin_v1_get_loan_repay_collateral_rate.__doc__ + ) + async def futures_v1_get_income_asyn(self, **params): - return await self._request_futures_api("get", "income/asyn", signed=True, data=params, version=1) - + return await self._request_futures_api( + "get", "income/asyn", signed=True, data=params, version=1 + ) + futures_v1_get_income_asyn.__doc__ = Client.futures_v1_get_income_asyn.__doc__ - + async def margin_v1_get_mining_payment_uid(self, **params): - return await self._request_margin_api("get", "mining/payment/uid", signed=True, data=params, version=1) - - margin_v1_get_mining_payment_uid.__doc__ = Client.margin_v1_get_mining_payment_uid.__doc__ - + return await self._request_margin_api( + "get", "mining/payment/uid", signed=True, data=params, version=1 + ) + + margin_v1_get_mining_payment_uid.__doc__ = ( + Client.margin_v1_get_mining_payment_uid.__doc__ + ) + async def margin_v2_get_loan_flexible_borrow_history(self, **params): - return await self._request_margin_api("get", "loan/flexible/borrow/history", signed=True, data=params, version=2) - - margin_v2_get_loan_flexible_borrow_history.__doc__ = Client.margin_v2_get_loan_flexible_borrow_history.__doc__ - + return await self._request_margin_api( + "get", "loan/flexible/borrow/history", signed=True, data=params, version=2 + ) + + margin_v2_get_loan_flexible_borrow_history.__doc__ = ( + Client.margin_v2_get_loan_flexible_borrow_history.__doc__ + ) + async def v3_get_order(self, **params): - return await self._request_api("get", "order", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "order", signed=True, data=params, version="v3" + ) + async def margin_v1_get_capital_contract_convertible_coins(self, **params): - return await self._request_margin_api("get", "capital/contract/convertible-coins", signed=True, data=params, version=1) - - margin_v1_get_capital_contract_convertible_coins.__doc__ = Client.margin_v1_get_capital_contract_convertible_coins.__doc__ - - async def margin_v1_post_broker_sub_account_api_permission_vanilla_options(self, **params): - return await self._request_margin_api("post", "broker/subAccountApi/permission/vanillaOptions", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_api_permission_vanilla_options.__doc__ = Client.margin_v1_post_broker_sub_account_api_permission_vanilla_options.__doc__ - + return await self._request_margin_api( + "get", + "capital/contract/convertible-coins", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_capital_contract_convertible_coins.__doc__ = ( + Client.margin_v1_get_capital_contract_convertible_coins.__doc__ + ) + + async def margin_v1_post_broker_sub_account_api_permission_vanilla_options( + self, **params + ): + return await self._request_margin_api( + "post", + "broker/subAccountApi/permission/vanillaOptions", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_broker_sub_account_api_permission_vanilla_options.__doc__ = ( + Client.margin_v1_post_broker_sub_account_api_permission_vanilla_options.__doc__ + ) + async def margin_v1_get_lending_auto_invest_redeem_history(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/redeem/history", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_redeem_history.__doc__ = Client.margin_v1_get_lending_auto_invest_redeem_history.__doc__ - + return await self._request_margin_api( + "get", + "lending/auto-invest/redeem/history", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_lending_auto_invest_redeem_history.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_redeem_history.__doc__ + ) + async def margin_v2_get_localentity_withdraw_history(self, **params): - return await self._request_margin_api("get", "localentity/withdraw/history", signed=True, data=params, version=2) - - margin_v2_get_localentity_withdraw_history.__doc__ = Client.margin_v2_get_localentity_withdraw_history.__doc__ - + return await self._request_margin_api( + "get", "localentity/withdraw/history", signed=True, data=params, version=2 + ) + + margin_v2_get_localentity_withdraw_history.__doc__ = ( + Client.margin_v2_get_localentity_withdraw_history.__doc__ + ) + async def margin_v1_get_eth_staking_eth_history_redemption_history(self, **params): - return await self._request_margin_api("get", "eth-staking/eth/history/redemptionHistory", signed=True, data=params, version=1) - - margin_v1_get_eth_staking_eth_history_redemption_history.__doc__ = Client.margin_v1_get_eth_staking_eth_history_redemption_history.__doc__ - + return await self._request_margin_api( + "get", + "eth-staking/eth/history/redemptionHistory", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_eth_staking_eth_history_redemption_history.__doc__ = ( + Client.margin_v1_get_eth_staking_eth_history_redemption_history.__doc__ + ) + async def futures_v1_get_fee_burn(self, **params): - return await self._request_futures_api("get", "feeBurn", signed=True, data=params, version=1) - + return await self._request_futures_api( + "get", "feeBurn", signed=True, data=params, version=1 + ) + futures_v1_get_fee_burn.__doc__ = Client.futures_v1_get_fee_burn.__doc__ - + async def margin_v1_get_lending_auto_invest_index_user_summary(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/index/user-summary", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_index_user_summary.__doc__ = Client.margin_v1_get_lending_auto_invest_index_user_summary.__doc__ - + return await self._request_margin_api( + "get", + "lending/auto-invest/index/user-summary", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_lending_auto_invest_index_user_summary.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_index_user_summary.__doc__ + ) + async def margin_v2_post_loan_flexible_borrow(self, **params): - return await self._request_margin_api("post", "loan/flexible/borrow", signed=True, data=params, version=2) - - margin_v2_post_loan_flexible_borrow.__doc__ = Client.margin_v2_post_loan_flexible_borrow.__doc__ - + return await self._request_margin_api( + "post", "loan/flexible/borrow", signed=True, data=params, version=2 + ) + + margin_v2_post_loan_flexible_borrow.__doc__ = ( + Client.margin_v2_post_loan_flexible_borrow.__doc__ + ) + async def margin_v1_post_loan_vip_repay(self, **params): - return await self._request_margin_api("post", "loan/vip/repay", signed=True, data=params, version=1) - + return await self._request_margin_api( + "post", "loan/vip/repay", signed=True, data=params, version=1 + ) + margin_v1_post_loan_vip_repay.__doc__ = Client.margin_v1_post_loan_vip_repay.__doc__ - + async def futures_coin_v1_get_commission_rate(self, **params): - return await self._request_futures_coin_api("get", "commissionRate", signed=True, data=params, version=1) - - futures_coin_v1_get_commission_rate.__doc__ = Client.futures_coin_v1_get_commission_rate.__doc__ - + return await self._request_futures_coin_api( + "get", "commissionRate", signed=True, data=params, version=1 + ) + + futures_coin_v1_get_commission_rate.__doc__ = ( + Client.futures_coin_v1_get_commission_rate.__doc__ + ) + async def margin_v1_get_convert_asset_info(self, **params): - return await self._request_margin_api("get", "convert/assetInfo", signed=True, data=params, version=1) - - margin_v1_get_convert_asset_info.__doc__ = Client.margin_v1_get_convert_asset_info.__doc__ - + return await self._request_margin_api( + "get", "convert/assetInfo", signed=True, data=params, version=1 + ) + + margin_v1_get_convert_asset_info.__doc__ = ( + Client.margin_v1_get_convert_asset_info.__doc__ + ) + async def v3_post_sor_order_test(self, **params): - return await self._request_api("post", "sor/order/test", signed=True, data=params, version="v3") - + return await self._request_api( + "post", "sor/order/test", signed=True, data=params, version="v3" + ) + v3_post_sor_order_test.__doc__ = Client.v3_post_sor_order_test.__doc__ - + async def margin_v1_post_broker_universal_transfer(self, **params): - return await self._request_margin_api("post", "broker/universalTransfer", signed=True, data=params, version=1) - - margin_v1_post_broker_universal_transfer.__doc__ = Client.margin_v1_post_broker_universal_transfer.__doc__ - + return await self._request_margin_api( + "post", "broker/universalTransfer", signed=True, data=params, version=1 + ) + + margin_v1_post_broker_universal_transfer.__doc__ = ( + Client.margin_v1_post_broker_universal_transfer.__doc__ + ) + async def margin_v1_post_account_disable_fast_withdraw_switch(self, **params): - return await self._request_margin_api("post", "account/disableFastWithdrawSwitch", signed=True, data=params, version=1) - - margin_v1_post_account_disable_fast_withdraw_switch.__doc__ = Client.margin_v1_post_account_disable_fast_withdraw_switch.__doc__ - + return await self._request_margin_api( + "post", + "account/disableFastWithdrawSwitch", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_account_disable_fast_withdraw_switch.__doc__ = ( + Client.margin_v1_post_account_disable_fast_withdraw_switch.__doc__ + ) + async def futures_v1_get_asset_index(self, **params): - return await self._request_futures_api("get", "assetIndex", signed=False, data=params, version=1) - + return await self._request_futures_api( + "get", "assetIndex", signed=False, data=params, version=1 + ) + futures_v1_get_asset_index.__doc__ = Client.futures_v1_get_asset_index.__doc__ - + async def v3_get_rate_limit_order(self, **params): - return await self._request_api("get", "rateLimit/order", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "rateLimit/order", signed=True, data=params, version="v3" + ) + async def margin_v1_get_account_api_restrictions_ip_restriction(self, **params): - return await self._request_margin_api("get", "account/apiRestrictions/ipRestriction", signed=True, data=params, version=1) - - margin_v1_get_account_api_restrictions_ip_restriction.__doc__ = Client.margin_v1_get_account_api_restrictions_ip_restriction.__doc__ - + return await self._request_margin_api( + "get", + "account/apiRestrictions/ipRestriction", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_account_api_restrictions_ip_restriction.__doc__ = ( + Client.margin_v1_get_account_api_restrictions_ip_restriction.__doc__ + ) + async def margin_v1_post_broker_sub_account_bnb_burn_spot(self, **params): - return await self._request_margin_api("post", "broker/subAccount/bnbBurn/spot", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_bnb_burn_spot.__doc__ = Client.margin_v1_post_broker_sub_account_bnb_burn_spot.__doc__ - + return await self._request_margin_api( + "post", + "broker/subAccount/bnbBurn/spot", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_broker_sub_account_bnb_burn_spot.__doc__ = ( + Client.margin_v1_post_broker_sub_account_bnb_burn_spot.__doc__ + ) + async def futures_coin_v1_put_batch_orders(self, **params): - return await self._request_futures_coin_api("put", "batchOrders", signed=True, data=params, version=1) - - futures_coin_v1_put_batch_orders.__doc__ = Client.futures_coin_v1_put_batch_orders.__doc__ - + return await self._request_futures_coin_api( + "put", "batchOrders", signed=True, data=params, version=1 + ) + + futures_coin_v1_put_batch_orders.__doc__ = ( + Client.futures_coin_v1_put_batch_orders.__doc__ + ) + async def v3_delete_open_orders(self, **params): - return await self._request_api("delete", "openOrders", signed=True, data=params, version="v3") - - async def margin_v1_post_broker_sub_account_api_permission_universal_transfer(self, **params): - return await self._request_margin_api("post", "broker/subAccountApi/permission/universalTransfer", signed=True, data=params, version=1) - + return await self._request_api( + "delete", "openOrders", signed=True, data=params, version="v3" + ) + + async def margin_v1_post_broker_sub_account_api_permission_universal_transfer( + self, **params + ): + return await self._request_margin_api( + "post", + "broker/subAccountApi/permission/universalTransfer", + signed=True, + data=params, + version=1, + ) + margin_v1_post_broker_sub_account_api_permission_universal_transfer.__doc__ = Client.margin_v1_post_broker_sub_account_api_permission_universal_transfer.__doc__ - + async def v3_get_my_allocations(self, **params): - return await self._request_api("get", "myAllocations", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "myAllocations", signed=True, data=params, version="v3" + ) + async def margin_v1_get_loan_ltv_adjustment_history(self, **params): - return await self._request_margin_api("get", "loan/ltv/adjustment/history", signed=True, data=params, version=1) - - margin_v1_get_loan_ltv_adjustment_history.__doc__ = Client.margin_v1_get_loan_ltv_adjustment_history.__doc__ - + return await self._request_margin_api( + "get", "loan/ltv/adjustment/history", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_ltv_adjustment_history.__doc__ = ( + Client.margin_v1_get_loan_ltv_adjustment_history.__doc__ + ) + async def margin_v1_get_localentity_withdraw_history(self, **params): - return await self._request_margin_api("get", "localentity/withdraw/history", signed=True, data=params, version=1) - - margin_v1_get_localentity_withdraw_history.__doc__ = Client.margin_v1_get_localentity_withdraw_history.__doc__ - + return await self._request_margin_api( + "get", "localentity/withdraw/history", signed=True, data=params, version=1 + ) + + margin_v1_get_localentity_withdraw_history.__doc__ = ( + Client.margin_v1_get_localentity_withdraw_history.__doc__ + ) + async def margin_v2_post_sub_account_sub_account_api_ip_restriction(self, **params): - return await self._request_margin_api("post", "sub-account/subAccountApi/ipRestriction", signed=True, data=params, version=2) - - margin_v2_post_sub_account_sub_account_api_ip_restriction.__doc__ = Client.margin_v2_post_sub_account_sub_account_api_ip_restriction.__doc__ - + return await self._request_margin_api( + "post", + "sub-account/subAccountApi/ipRestriction", + signed=True, + data=params, + version=2, + ) + + margin_v2_post_sub_account_sub_account_api_ip_restriction.__doc__ = ( + Client.margin_v2_post_sub_account_sub_account_api_ip_restriction.__doc__ + ) + async def futures_v1_get_rate_limit_order(self, **params): - return await self._request_futures_api("get", "rateLimit/order", signed=True, data=params, version=1) - - futures_v1_get_rate_limit_order.__doc__ = Client.futures_v1_get_rate_limit_order.__doc__ - + return await self._request_futures_api( + "get", "rateLimit/order", signed=True, data=params, version=1 + ) + + futures_v1_get_rate_limit_order.__doc__ = ( + Client.futures_v1_get_rate_limit_order.__doc__ + ) + async def margin_v1_get_broker_sub_account_api_commission_futures(self, **params): - return await self._request_margin_api("get", "broker/subAccountApi/commission/futures", signed=True, data=params, version=1) - - margin_v1_get_broker_sub_account_api_commission_futures.__doc__ = Client.margin_v1_get_broker_sub_account_api_commission_futures.__doc__ - + return await self._request_margin_api( + "get", + "broker/subAccountApi/commission/futures", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_broker_sub_account_api_commission_futures.__doc__ = ( + Client.margin_v1_get_broker_sub_account_api_commission_futures.__doc__ + ) + async def margin_v1_get_sol_staking_sol_history_staking_history(self, **params): - return await self._request_margin_api("get", "sol-staking/sol/history/stakingHistory", signed=True, data=params, version=1) - - margin_v1_get_sol_staking_sol_history_staking_history.__doc__ = Client.margin_v1_get_sol_staking_sol_history_staking_history.__doc__ - + return await self._request_margin_api( + "get", + "sol-staking/sol/history/stakingHistory", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_sol_staking_sol_history_staking_history.__doc__ = ( + Client.margin_v1_get_sol_staking_sol_history_staking_history.__doc__ + ) + async def futures_v1_get_open_order(self, **params): - return await self._request_futures_api("get", "openOrder", signed=True, data=params, version=1) - + return await self._request_futures_api( + "get", "openOrder", signed=True, data=params, version=1 + ) + futures_v1_get_open_order.__doc__ = Client.futures_v1_get_open_order.__doc__ - + async def margin_v1_delete_algo_spot_order(self, **params): - return await self._request_margin_api("delete", "algo/spot/order", signed=True, data=params, version=1) - - margin_v1_delete_algo_spot_order.__doc__ = Client.margin_v1_delete_algo_spot_order.__doc__ - + return await self._request_margin_api( + "delete", "algo/spot/order", signed=True, data=params, version=1 + ) + + margin_v1_delete_algo_spot_order.__doc__ = ( + Client.margin_v1_delete_algo_spot_order.__doc__ + ) + async def v3_post_order(self, **params): - return await self._request_api("post", "order", signed=True, data=params, version="v3") - - async def margin_v1_delete_account_api_restrictions_ip_restriction_ip_list(self, **params): - return await self._request_margin_api("delete", "account/apiRestrictions/ipRestriction/ipList", signed=True, data=params, version=1) - - margin_v1_delete_account_api_restrictions_ip_restriction_ip_list.__doc__ = Client.margin_v1_delete_account_api_restrictions_ip_restriction_ip_list.__doc__ - + return await self._request_api( + "post", "order", signed=True, data=params, version="v3" + ) + + async def margin_v1_delete_account_api_restrictions_ip_restriction_ip_list( + self, **params + ): + return await self._request_margin_api( + "delete", + "account/apiRestrictions/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + + margin_v1_delete_account_api_restrictions_ip_restriction_ip_list.__doc__ = ( + Client.margin_v1_delete_account_api_restrictions_ip_restriction_ip_list.__doc__ + ) + async def margin_v1_post_capital_contract_convertible_coins(self, **params): - return await self._request_margin_api("post", "capital/contract/convertible-coins", signed=True, data=params, version=1) - - margin_v1_post_capital_contract_convertible_coins.__doc__ = Client.margin_v1_post_capital_contract_convertible_coins.__doc__ - + return await self._request_margin_api( + "post", + "capital/contract/convertible-coins", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_capital_contract_convertible_coins.__doc__ = ( + Client.margin_v1_post_capital_contract_convertible_coins.__doc__ + ) + async def margin_v1_get_managed_subaccount_margin_asset(self, **params): - return await self._request_margin_api("get", "managed-subaccount/marginAsset", signed=True, data=params, version=1) - - margin_v1_get_managed_subaccount_margin_asset.__doc__ = Client.margin_v1_get_managed_subaccount_margin_asset.__doc__ - + return await self._request_margin_api( + "get", "managed-subaccount/marginAsset", signed=True, data=params, version=1 + ) + + margin_v1_get_managed_subaccount_margin_asset.__doc__ = ( + Client.margin_v1_get_managed_subaccount_margin_asset.__doc__ + ) + async def v3_delete_order_list(self, **params): - return await self._request_api("delete", "orderList", signed=True, data=params, version="v3") - + return await self._request_api( + "delete", "orderList", signed=True, data=params, version="v3" + ) + v3_delete_order_list.__doc__ = Client.v3_delete_order_list.__doc__ - - async def margin_v1_post_sub_account_sub_account_api_ip_restriction_ip_list(self, **params): - return await self._request_margin_api("post", "sub-account/subAccountApi/ipRestriction/ipList", signed=True, data=params, version=1) - - margin_v1_post_sub_account_sub_account_api_ip_restriction_ip_list.__doc__ = Client.margin_v1_post_sub_account_sub_account_api_ip_restriction_ip_list.__doc__ - + + async def margin_v1_post_sub_account_sub_account_api_ip_restriction_ip_list( + self, **params + ): + return await self._request_margin_api( + "post", + "sub-account/subAccountApi/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_sub_account_sub_account_api_ip_restriction_ip_list.__doc__ = ( + Client.margin_v1_post_sub_account_sub_account_api_ip_restriction_ip_list.__doc__ + ) + async def margin_v1_post_broker_sub_account_api_commission(self, **params): - return await self._request_margin_api("post", "broker/subAccountApi/commission", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_api_commission.__doc__ = Client.margin_v1_post_broker_sub_account_api_commission.__doc__ - + return await self._request_margin_api( + "post", + "broker/subAccountApi/commission", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_broker_sub_account_api_commission.__doc__ = ( + Client.margin_v1_post_broker_sub_account_api_commission.__doc__ + ) + async def futures_v1_post_fee_burn(self, **params): - return await self._request_futures_api("post", "feeBurn", signed=True, data=params, version=1) - + return await self._request_futures_api( + "post", "feeBurn", signed=True, data=params, version=1 + ) + futures_v1_post_fee_burn.__doc__ = Client.futures_v1_post_fee_burn.__doc__ - + async def margin_v1_get_broker_sub_account_margin_summary(self, **params): - return await self._request_margin_api("get", "broker/subAccount/marginSummary", signed=True, data=params, version=1) - - margin_v1_get_broker_sub_account_margin_summary.__doc__ = Client.margin_v1_get_broker_sub_account_margin_summary.__doc__ - + return await self._request_margin_api( + "get", + "broker/subAccount/marginSummary", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_broker_sub_account_margin_summary.__doc__ = ( + Client.margin_v1_get_broker_sub_account_margin_summary.__doc__ + ) + async def margin_v1_get_lending_auto_invest_plan_list(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/plan/list", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_plan_list.__doc__ = Client.margin_v1_get_lending_auto_invest_plan_list.__doc__ - + return await self._request_margin_api( + "get", "lending/auto-invest/plan/list", signed=True, data=params, version=1 + ) + + margin_v1_get_lending_auto_invest_plan_list.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_plan_list.__doc__ + ) + async def margin_v1_get_loan_vip_loanable_data(self, **params): - return await self._request_margin_api("get", "loan/vip/loanable/data", signed=True, data=params, version=1) - - margin_v1_get_loan_vip_loanable_data.__doc__ = Client.margin_v1_get_loan_vip_loanable_data.__doc__ - + return await self._request_margin_api( + "get", "loan/vip/loanable/data", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_vip_loanable_data.__doc__ = ( + Client.margin_v1_get_loan_vip_loanable_data.__doc__ + ) + async def margin_v2_get_loan_flexible_collateral_data(self, **params): - return await self._request_margin_api("get", "loan/flexible/collateral/data", signed=True, data=params, version=2) - - margin_v2_get_loan_flexible_collateral_data.__doc__ = Client.margin_v2_get_loan_flexible_collateral_data.__doc__ - + return await self._request_margin_api( + "get", "loan/flexible/collateral/data", signed=True, data=params, version=2 + ) + + margin_v2_get_loan_flexible_collateral_data.__doc__ = ( + Client.margin_v2_get_loan_flexible_collateral_data.__doc__ + ) + async def margin_v1_delete_broker_sub_account_api(self, **params): - return await self._request_margin_api("delete", "broker/subAccountApi", signed=True, data=params, version=1) - - margin_v1_delete_broker_sub_account_api.__doc__ = Client.margin_v1_delete_broker_sub_account_api.__doc__ - - async def margin_v1_get_sol_staking_sol_history_bnsol_rewards_history(self, **params): - return await self._request_margin_api("get", "sol-staking/sol/history/bnsolRewardsHistory", signed=True, data=params, version=1) - - margin_v1_get_sol_staking_sol_history_bnsol_rewards_history.__doc__ = Client.margin_v1_get_sol_staking_sol_history_bnsol_rewards_history.__doc__ - + return await self._request_margin_api( + "delete", "broker/subAccountApi", signed=True, data=params, version=1 + ) + + margin_v1_delete_broker_sub_account_api.__doc__ = ( + Client.margin_v1_delete_broker_sub_account_api.__doc__ + ) + + async def margin_v1_get_sol_staking_sol_history_bnsol_rewards_history( + self, **params + ): + return await self._request_margin_api( + "get", + "sol-staking/sol/history/bnsolRewardsHistory", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_sol_staking_sol_history_bnsol_rewards_history.__doc__ = ( + Client.margin_v1_get_sol_staking_sol_history_bnsol_rewards_history.__doc__ + ) + async def margin_v1_get_convert_limit_query_open_orders(self, **params): - return await self._request_margin_api("get", "convert/limit/queryOpenOrders", signed=True, data=params, version=1) - - margin_v1_get_convert_limit_query_open_orders.__doc__ = Client.margin_v1_get_convert_limit_query_open_orders.__doc__ - - async def v3_get_account_commission(self, **params): - return await self._request_api("get", "account/commission", signed=True, data=params, version="v3") - + return await self._request_margin_api( + "get", "convert/limit/queryOpenOrders", signed=True, data=params, version=1 + ) + + margin_v1_get_convert_limit_query_open_orders.__doc__ = ( + Client.margin_v1_get_convert_limit_query_open_orders.__doc__ + ) + + async def v3_get_account_commission(self, **params): + return await self._request_api( + "get", "account/commission", signed=True, data=params, version="v3" + ) + v3_get_account_commission.__doc__ = Client.v3_get_account_commission.__doc__ - + async def v3_post_order_list_oco(self, **params): - return await self._request_api("post", "orderList/oco", signed=True, data=params, version="v3") - + return await self._request_api( + "post", "orderList/oco", signed=True, data=params, version="v3" + ) + async def margin_v1_get_managed_subaccount_query_trans_log(self, **params): - return await self._request_margin_api("get", "managed-subaccount/query-trans-log", signed=True, data=params, version=1) - - margin_v1_get_managed_subaccount_query_trans_log.__doc__ = Client.margin_v1_get_managed_subaccount_query_trans_log.__doc__ - + return await self._request_margin_api( + "get", + "managed-subaccount/query-trans-log", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_managed_subaccount_query_trans_log.__doc__ = ( + Client.margin_v1_get_managed_subaccount_query_trans_log.__doc__ + ) + async def margin_v2_post_broker_sub_account_api_ip_restriction(self, **params): - return await self._request_margin_api("post", "broker/subAccountApi/ipRestriction", signed=True, data=params, version=2) - - margin_v2_post_broker_sub_account_api_ip_restriction.__doc__ = Client.margin_v2_post_broker_sub_account_api_ip_restriction.__doc__ - + return await self._request_margin_api( + "post", + "broker/subAccountApi/ipRestriction", + signed=True, + data=params, + version=2, + ) + + margin_v2_post_broker_sub_account_api_ip_restriction.__doc__ = ( + Client.margin_v2_post_broker_sub_account_api_ip_restriction.__doc__ + ) + async def margin_v1_get_lending_auto_invest_all_asset(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/all/asset", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_all_asset.__doc__ = Client.margin_v1_get_lending_auto_invest_all_asset.__doc__ - + return await self._request_margin_api( + "get", "lending/auto-invest/all/asset", signed=True, data=params, version=1 + ) + + margin_v1_get_lending_auto_invest_all_asset.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_all_asset.__doc__ + ) + async def futures_v1_post_convert_accept_quote(self, **params): - return await self._request_futures_api("post", "convert/acceptQuote", signed=True, data=params, version=1) - - futures_v1_post_convert_accept_quote.__doc__ = Client.futures_v1_post_convert_accept_quote.__doc__ - + return await self._request_futures_api( + "post", "convert/acceptQuote", signed=True, data=params, version=1 + ) + + futures_v1_post_convert_accept_quote.__doc__ = ( + Client.futures_v1_post_convert_accept_quote.__doc__ + ) + async def margin_v1_get_spot_delist_schedule(self, **params): - return await self._request_margin_api("get", "spot/delist-schedule", signed=True, data=params, version=1) - - margin_v1_get_spot_delist_schedule.__doc__ = Client.margin_v1_get_spot_delist_schedule.__doc__ - + return await self._request_margin_api( + "get", "spot/delist-schedule", signed=True, data=params, version=1 + ) + + margin_v1_get_spot_delist_schedule.__doc__ = ( + Client.margin_v1_get_spot_delist_schedule.__doc__ + ) + async def margin_v1_post_account_api_restrictions_ip_restriction(self, **params): - return await self._request_margin_api("post", "account/apiRestrictions/ipRestriction", signed=True, data=params, version=1) - - margin_v1_post_account_api_restrictions_ip_restriction.__doc__ = Client.margin_v1_post_account_api_restrictions_ip_restriction.__doc__ - + return await self._request_margin_api( + "post", + "account/apiRestrictions/ipRestriction", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_account_api_restrictions_ip_restriction.__doc__ = ( + Client.margin_v1_post_account_api_restrictions_ip_restriction.__doc__ + ) + async def margin_v1_get_dci_product_accounts(self, **params): - return await self._request_margin_api("get", "dci/product/accounts", signed=True, data=params, version=1) - - margin_v1_get_dci_product_accounts.__doc__ = Client.margin_v1_get_dci_product_accounts.__doc__ - + return await self._request_margin_api( + "get", "dci/product/accounts", signed=True, data=params, version=1 + ) + + margin_v1_get_dci_product_accounts.__doc__ = ( + Client.margin_v1_get_dci_product_accounts.__doc__ + ) + async def margin_v1_get_sub_account_sub_account_api_ip_restriction(self, **params): - return await self._request_margin_api("get", "sub-account/subAccountApi/ipRestriction", signed=True, data=params, version=1) - - margin_v1_get_sub_account_sub_account_api_ip_restriction.__doc__ = Client.margin_v1_get_sub_account_sub_account_api_ip_restriction.__doc__ - + return await self._request_margin_api( + "get", + "sub-account/subAccountApi/ipRestriction", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_sub_account_sub_account_api_ip_restriction.__doc__ = ( + Client.margin_v1_get_sub_account_sub_account_api_ip_restriction.__doc__ + ) + async def margin_v1_get_sub_account_transaction_statistics(self, **params): - return await self._request_margin_api("get", "sub-account/transaction-statistics", signed=True, data=params, version=1) - - margin_v1_get_sub_account_transaction_statistics.__doc__ = Client.margin_v1_get_sub_account_transaction_statistics.__doc__ - + return await self._request_margin_api( + "get", + "sub-account/transaction-statistics", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_sub_account_transaction_statistics.__doc__ = ( + Client.margin_v1_get_sub_account_transaction_statistics.__doc__ + ) + async def margin_v1_get_managed_subaccount_deposit_address(self, **params): - return await self._request_margin_api("get", "managed-subaccount/deposit/address", signed=True, data=params, version=1) - - margin_v1_get_managed_subaccount_deposit_address.__doc__ = Client.margin_v1_get_managed_subaccount_deposit_address.__doc__ - + return await self._request_margin_api( + "get", + "managed-subaccount/deposit/address", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_managed_subaccount_deposit_address.__doc__ = ( + Client.margin_v1_get_managed_subaccount_deposit_address.__doc__ + ) + async def margin_v2_get_portfolio_account(self, **params): - return await self._request_margin_api("get", "portfolio/account", signed=True, data=params, version=2) - - margin_v2_get_portfolio_account.__doc__ = Client.margin_v2_get_portfolio_account.__doc__ - - async def margin_v1_get_simple_earn_locked_history_redemption_record(self, **params): - return await self._request_margin_api("get", "simple-earn/locked/history/redemptionRecord", signed=True, data=params, version=1) - - margin_v1_get_simple_earn_locked_history_redemption_record.__doc__ = Client.margin_v1_get_simple_earn_locked_history_redemption_record.__doc__ - + return await self._request_margin_api( + "get", "portfolio/account", signed=True, data=params, version=2 + ) + + margin_v2_get_portfolio_account.__doc__ = ( + Client.margin_v2_get_portfolio_account.__doc__ + ) + + async def margin_v1_get_simple_earn_locked_history_redemption_record( + self, **params + ): + return await self._request_margin_api( + "get", + "simple-earn/locked/history/redemptionRecord", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_simple_earn_locked_history_redemption_record.__doc__ = ( + Client.margin_v1_get_simple_earn_locked_history_redemption_record.__doc__ + ) + async def futures_v1_get_order_asyn_id(self, **params): - return await self._request_futures_api("get", "order/asyn/id", signed=True, data=params, version=1) - + return await self._request_futures_api( + "get", "order/asyn/id", signed=True, data=params, version=1 + ) + futures_v1_get_order_asyn_id.__doc__ = Client.futures_v1_get_order_asyn_id.__doc__ - + async def margin_v1_post_managed_subaccount_withdraw(self, **params): - return await self._request_margin_api("post", "managed-subaccount/withdraw", signed=True, data=params, version=1) - - margin_v1_post_managed_subaccount_withdraw.__doc__ = Client.margin_v1_post_managed_subaccount_withdraw.__doc__ - + return await self._request_margin_api( + "post", "managed-subaccount/withdraw", signed=True, data=params, version=1 + ) + + margin_v1_post_managed_subaccount_withdraw.__doc__ = ( + Client.margin_v1_post_managed_subaccount_withdraw.__doc__ + ) + async def margin_v1_get_localentity_deposit_history(self, **params): - return await self._request_margin_api("get", "localentity/deposit/history", signed=True, data=params, version=1) - - margin_v1_get_localentity_deposit_history.__doc__ = Client.margin_v1_get_localentity_deposit_history.__doc__ - + return await self._request_margin_api( + "get", "localentity/deposit/history", signed=True, data=params, version=1 + ) + + margin_v1_get_localentity_deposit_history.__doc__ = ( + Client.margin_v1_get_localentity_deposit_history.__doc__ + ) + async def margin_v1_post_eth_staking_wbeth_wrap(self, **params): - return await self._request_margin_api("post", "eth-staking/wbeth/wrap", signed=True, data=params, version=1) - - margin_v1_post_eth_staking_wbeth_wrap.__doc__ = Client.margin_v1_post_eth_staking_wbeth_wrap.__doc__ - + return await self._request_margin_api( + "post", "eth-staking/wbeth/wrap", signed=True, data=params, version=1 + ) + + margin_v1_post_eth_staking_wbeth_wrap.__doc__ = ( + Client.margin_v1_post_eth_staking_wbeth_wrap.__doc__ + ) + async def margin_v1_post_simple_earn_locked_set_redeem_option(self, **params): - return await self._request_margin_api("post", "simple-earn/locked/setRedeemOption", signed=True, data=params, version=1) - - margin_v1_post_simple_earn_locked_set_redeem_option.__doc__ = Client.margin_v1_post_simple_earn_locked_set_redeem_option.__doc__ - - async def margin_v1_post_broker_sub_account_api_ip_restriction_ip_list(self, **params): - return await self._request_margin_api("post", "broker/subAccountApi/ipRestriction/ipList", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_api_ip_restriction_ip_list.__doc__ = Client.margin_v1_post_broker_sub_account_api_ip_restriction_ip_list.__doc__ - + return await self._request_margin_api( + "post", + "simple-earn/locked/setRedeemOption", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_simple_earn_locked_set_redeem_option.__doc__ = ( + Client.margin_v1_post_simple_earn_locked_set_redeem_option.__doc__ + ) + + async def margin_v1_post_broker_sub_account_api_ip_restriction_ip_list( + self, **params + ): + return await self._request_margin_api( + "post", + "broker/subAccountApi/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_broker_sub_account_api_ip_restriction_ip_list.__doc__ = ( + Client.margin_v1_post_broker_sub_account_api_ip_restriction_ip_list.__doc__ + ) + async def margin_v1_post_broker_sub_account_api_commission_futures(self, **params): - return await self._request_margin_api("post", "broker/subAccountApi/commission/futures", signed=True, data=params, version=1) - - margin_v1_post_broker_sub_account_api_commission_futures.__doc__ = Client.margin_v1_post_broker_sub_account_api_commission_futures.__doc__ - + return await self._request_margin_api( + "post", + "broker/subAccountApi/commission/futures", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_broker_sub_account_api_commission_futures.__doc__ = ( + Client.margin_v1_post_broker_sub_account_api_commission_futures.__doc__ + ) + async def v3_get_open_orders(self, **params): - return await self._request_api("get", "openOrders", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "openOrders", signed=True, data=params, version="v3" + ) + async def margin_v1_get_lending_auto_invest_history_list(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/history/list", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_history_list.__doc__ = Client.margin_v1_get_lending_auto_invest_history_list.__doc__ - + return await self._request_margin_api( + "get", + "lending/auto-invest/history/list", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_lending_auto_invest_history_list.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_history_list.__doc__ + ) + async def margin_v1_post_loan_customize_margin_call(self, **params): - return await self._request_margin_api("post", "loan/customize/margin_call", signed=True, data=params, version=1) - - margin_v1_post_loan_customize_margin_call.__doc__ = Client.margin_v1_post_loan_customize_margin_call.__doc__ - + return await self._request_margin_api( + "post", "loan/customize/margin_call", signed=True, data=params, version=1 + ) + + margin_v1_post_loan_customize_margin_call.__doc__ = ( + Client.margin_v1_post_loan_customize_margin_call.__doc__ + ) + async def margin_v1_get_broker_sub_account_bnb_burn_status(self, **params): - return await self._request_margin_api("get", "broker/subAccount/bnbBurn/status", signed=True, data=params, version=1) - - margin_v1_get_broker_sub_account_bnb_burn_status.__doc__ = Client.margin_v1_get_broker_sub_account_bnb_burn_status.__doc__ - + return await self._request_margin_api( + "get", + "broker/subAccount/bnbBurn/status", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_broker_sub_account_bnb_burn_status.__doc__ = ( + Client.margin_v1_get_broker_sub_account_bnb_burn_status.__doc__ + ) + async def margin_v1_get_managed_subaccount_account_snapshot(self, **params): - return await self._request_margin_api("get", "managed-subaccount/accountSnapshot", signed=True, data=params, version=1) - - margin_v1_get_managed_subaccount_account_snapshot.__doc__ = Client.margin_v1_get_managed_subaccount_account_snapshot.__doc__ - + return await self._request_margin_api( + "get", + "managed-subaccount/accountSnapshot", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_managed_subaccount_account_snapshot.__doc__ = ( + Client.margin_v1_get_managed_subaccount_account_snapshot.__doc__ + ) + async def margin_v1_post_asset_convert_transfer(self, **params): - return await self._request_margin_api("post", "asset/convert-transfer", signed=True, data=params, version=1) - - margin_v1_post_asset_convert_transfer.__doc__ = Client.margin_v1_post_asset_convert_transfer.__doc__ - + return await self._request_margin_api( + "post", "asset/convert-transfer", signed=True, data=params, version=1 + ) + + margin_v1_post_asset_convert_transfer.__doc__ = ( + Client.margin_v1_post_asset_convert_transfer.__doc__ + ) + async def options_v1_get_income_asyn(self, **params): - return await self._request_options_api("get", "income/asyn", signed=True, data=params) - + return await self._request_options_api( + "get", "income/asyn", signed=True, data=params + ) + options_v1_get_income_asyn.__doc__ = Client.options_v1_get_income_asyn.__doc__ - - async def margin_v1_get_broker_sub_account_api_commission_coin_futures(self, **params): - return await self._request_margin_api("get", "broker/subAccountApi/commission/coinFutures", signed=True, data=params, version=1) - - margin_v1_get_broker_sub_account_api_commission_coin_futures.__doc__ = Client.margin_v1_get_broker_sub_account_api_commission_coin_futures.__doc__ - + + async def margin_v1_get_broker_sub_account_api_commission_coin_futures( + self, **params + ): + return await self._request_margin_api( + "get", + "broker/subAccountApi/commission/coinFutures", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_broker_sub_account_api_commission_coin_futures.__doc__ = ( + Client.margin_v1_get_broker_sub_account_api_commission_coin_futures.__doc__ + ) + async def margin_v2_get_broker_sub_account_futures_summary(self, **params): - return await self._request_margin_api("get", "broker/subAccount/futuresSummary", signed=True, data=params, version=2) - - margin_v2_get_broker_sub_account_futures_summary.__doc__ = Client.margin_v2_get_broker_sub_account_futures_summary.__doc__ - + return await self._request_margin_api( + "get", + "broker/subAccount/futuresSummary", + signed=True, + data=params, + version=2, + ) + + margin_v2_get_broker_sub_account_futures_summary.__doc__ = ( + Client.margin_v2_get_broker_sub_account_futures_summary.__doc__ + ) + async def margin_v1_get_loan_ongoing_orders(self, **params): - return await self._request_margin_api("get", "loan/ongoing/orders", signed=True, data=params, version=1) - - margin_v1_get_loan_ongoing_orders.__doc__ = Client.margin_v1_get_loan_ongoing_orders.__doc__ - + return await self._request_margin_api( + "get", "loan/ongoing/orders", signed=True, data=params, version=1 + ) + + margin_v1_get_loan_ongoing_orders.__doc__ = ( + Client.margin_v1_get_loan_ongoing_orders.__doc__ + ) + async def margin_v2_get_loan_flexible_ongoing_orders(self, **params): - return await self._request_margin_api("get", "loan/flexible/ongoing/orders", signed=True, data=params, version=2) - - margin_v2_get_loan_flexible_ongoing_orders.__doc__ = Client.margin_v2_get_loan_flexible_ongoing_orders.__doc__ - + return await self._request_margin_api( + "get", "loan/flexible/ongoing/orders", signed=True, data=params, version=2 + ) + + margin_v2_get_loan_flexible_ongoing_orders.__doc__ = ( + Client.margin_v2_get_loan_flexible_ongoing_orders.__doc__ + ) + async def margin_v1_post_algo_futures_new_order_vp(self, **params): - return await self._request_margin_api("post", "algo/futures/newOrderVp", signed=True, data=params, version=1) - - margin_v1_post_algo_futures_new_order_vp.__doc__ = Client.margin_v1_post_algo_futures_new_order_vp.__doc__ - + return await self._request_margin_api( + "post", "algo/futures/newOrderVp", signed=True, data=params, version=1 + ) + + margin_v1_post_algo_futures_new_order_vp.__doc__ = ( + Client.margin_v1_post_algo_futures_new_order_vp.__doc__ + ) + async def futures_v1_post_convert_get_quote(self, **params): - return await self._request_futures_api("post", "convert/getQuote", signed=True, data=params, version=1) - - futures_v1_post_convert_get_quote.__doc__ = Client.futures_v1_post_convert_get_quote.__doc__ - + return await self._request_futures_api( + "post", "convert/getQuote", signed=True, data=params, version=1 + ) + + futures_v1_post_convert_get_quote.__doc__ = ( + Client.futures_v1_post_convert_get_quote.__doc__ + ) + async def margin_v1_get_algo_spot_sub_orders(self, **params): - return await self._request_margin_api("get", "algo/spot/subOrders", signed=True, data=params, version=1) - - margin_v1_get_algo_spot_sub_orders.__doc__ = Client.margin_v1_get_algo_spot_sub_orders.__doc__ - + return await self._request_margin_api( + "get", "algo/spot/subOrders", signed=True, data=params, version=1 + ) + + margin_v1_get_algo_spot_sub_orders.__doc__ = ( + Client.margin_v1_get_algo_spot_sub_orders.__doc__ + ) + async def margin_v1_post_portfolio_redeem(self, **params): - return await self._request_margin_api("post", "portfolio/redeem", signed=True, data=params, version=1) - - margin_v1_post_portfolio_redeem.__doc__ = Client.margin_v1_post_portfolio_redeem.__doc__ - + return await self._request_margin_api( + "post", "portfolio/redeem", signed=True, data=params, version=1 + ) + + margin_v1_post_portfolio_redeem.__doc__ = ( + Client.margin_v1_post_portfolio_redeem.__doc__ + ) + async def margin_v1_post_lending_auto_invest_plan_add(self, **params): - return await self._request_margin_api("post", "lending/auto-invest/plan/add", signed=True, data=params, version=1) - - margin_v1_post_lending_auto_invest_plan_add.__doc__ = Client.margin_v1_post_lending_auto_invest_plan_add.__doc__ - + return await self._request_margin_api( + "post", "lending/auto-invest/plan/add", signed=True, data=params, version=1 + ) + + margin_v1_post_lending_auto_invest_plan_add.__doc__ = ( + Client.margin_v1_post_lending_auto_invest_plan_add.__doc__ + ) + async def v3_get_order_list(self, **params): - return await self._request_api("get", "orderList", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "orderList", signed=True, data=params, version="v3" + ) + v3_get_order_list.__doc__ = Client.v3_get_order_list.__doc__ - + async def v3_get_my_trades(self, **params): - return await self._request_api("get", "myTrades", signed=True, data=params, version="v3") - + return await self._request_api( + "get", "myTrades", signed=True, data=params, version="v3" + ) + async def margin_v1_get_lending_auto_invest_source_asset_list(self, **params): - return await self._request_margin_api("get", "lending/auto-invest/source-asset/list", signed=True, data=params, version=1) - - margin_v1_get_lending_auto_invest_source_asset_list.__doc__ = Client.margin_v1_get_lending_auto_invest_source_asset_list.__doc__ - + return await self._request_margin_api( + "get", + "lending/auto-invest/source-asset/list", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_lending_auto_invest_source_asset_list.__doc__ = ( + Client.margin_v1_get_lending_auto_invest_source_asset_list.__doc__ + ) + async def margin_v1_get_margin_all_order_list(self, **params): - return await self._request_margin_api("get", "margin/allOrderList", signed=True, data=params, version=1) - - margin_v1_get_margin_all_order_list.__doc__ = Client.margin_v1_get_margin_all_order_list.__doc__ - + return await self._request_margin_api( + "get", "margin/allOrderList", signed=True, data=params, version=1 + ) + + margin_v1_get_margin_all_order_list.__doc__ = ( + Client.margin_v1_get_margin_all_order_list.__doc__ + ) + async def margin_v1_post_eth_staking_eth_redeem(self, **params): - return await self._request_margin_api("post", "eth-staking/eth/redeem", signed=True, data=params, version=1) - - margin_v1_post_eth_staking_eth_redeem.__doc__ = Client.margin_v1_post_eth_staking_eth_redeem.__doc__ - + return await self._request_margin_api( + "post", "eth-staking/eth/redeem", signed=True, data=params, version=1 + ) + + margin_v1_post_eth_staking_eth_redeem.__doc__ = ( + Client.margin_v1_post_eth_staking_eth_redeem.__doc__ + ) + async def margin_v1_get_broker_rebate_historical_record(self, **params): - return await self._request_margin_api("get", "broker/rebate/historicalRecord", signed=True, data=params, version=1) - - margin_v1_get_broker_rebate_historical_record.__doc__ = Client.margin_v1_get_broker_rebate_historical_record.__doc__ - - async def margin_v1_get_simple_earn_locked_history_subscription_record(self, **params): - return await self._request_margin_api("get", "simple-earn/locked/history/subscriptionRecord", signed=True, data=params, version=1) - - margin_v1_get_simple_earn_locked_history_subscription_record.__doc__ = Client.margin_v1_get_simple_earn_locked_history_subscription_record.__doc__ - + return await self._request_margin_api( + "get", "broker/rebate/historicalRecord", signed=True, data=params, version=1 + ) + + margin_v1_get_broker_rebate_historical_record.__doc__ = ( + Client.margin_v1_get_broker_rebate_historical_record.__doc__ + ) + + async def margin_v1_get_simple_earn_locked_history_subscription_record( + self, **params + ): + return await self._request_margin_api( + "get", + "simple-earn/locked/history/subscriptionRecord", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_simple_earn_locked_history_subscription_record.__doc__ = ( + Client.margin_v1_get_simple_earn_locked_history_subscription_record.__doc__ + ) + async def futures_coin_v1_put_order(self, **params): - return await self._request_futures_coin_api("put", "order", signed=True, data=params, version=1) - + return await self._request_futures_coin_api( + "put", "order", signed=True, data=params, version=1 + ) + futures_coin_v1_put_order.__doc__ = Client.futures_coin_v1_put_order.__doc__ - + async def margin_v1_get_managed_subaccount_asset(self, **params): - return await self._request_margin_api("get", "managed-subaccount/asset", signed=True, data=params, version=1) - - margin_v1_get_managed_subaccount_asset.__doc__ = Client.margin_v1_get_managed_subaccount_asset.__doc__ - + return await self._request_margin_api( + "get", "managed-subaccount/asset", signed=True, data=params, version=1 + ) + + margin_v1_get_managed_subaccount_asset.__doc__ = ( + Client.margin_v1_get_managed_subaccount_asset.__doc__ + ) + async def margin_v1_get_sol_staking_sol_quota(self, **params): - return await self._request_margin_api("get", "sol-staking/sol/quota", signed=True, data=params, version=1) - - margin_v1_get_sol_staking_sol_quota.__doc__ = Client.margin_v1_get_sol_staking_sol_quota.__doc__ - + return await self._request_margin_api( + "get", "sol-staking/sol/quota", signed=True, data=params, version=1 + ) + + margin_v1_get_sol_staking_sol_quota.__doc__ = ( + Client.margin_v1_get_sol_staking_sol_quota.__doc__ + ) + async def margin_v1_post_loan_vip_renew(self, **params): - return await self._request_margin_api("post", "loan/vip/renew", signed=True, data=params, version=1) - + return await self._request_margin_api( + "post", "loan/vip/renew", signed=True, data=params, version=1 + ) + margin_v1_post_loan_vip_renew.__doc__ = Client.margin_v1_post_loan_vip_renew.__doc__ - - async def margin_v1_get_managed_subaccount_query_trans_log_for_trade_parent(self, **params): - return await self._request_margin_api("get", "managed-subaccount/queryTransLogForTradeParent", signed=True, data=params, version=1) - - margin_v1_get_managed_subaccount_query_trans_log_for_trade_parent.__doc__ = Client.margin_v1_get_managed_subaccount_query_trans_log_for_trade_parent.__doc__ - + + async def margin_v1_get_managed_subaccount_query_trans_log_for_trade_parent( + self, **params + ): + return await self._request_margin_api( + "get", + "managed-subaccount/queryTransLogForTradeParent", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_managed_subaccount_query_trans_log_for_trade_parent.__doc__ = ( + Client.margin_v1_get_managed_subaccount_query_trans_log_for_trade_parent.__doc__ + ) + async def margin_v1_post_sub_account_sub_account_api_ip_restriction(self, **params): - return await self._request_margin_api("post", "sub-account/subAccountApi/ipRestriction", signed=True, data=params, version=1) - - margin_v1_post_sub_account_sub_account_api_ip_restriction.__doc__ = Client.margin_v1_post_sub_account_sub_account_api_ip_restriction.__doc__ - - async def margin_v1_get_simple_earn_flexible_history_redemption_record(self, **params): - return await self._request_margin_api("get", "simple-earn/flexible/history/redemptionRecord", signed=True, data=params, version=1) - - margin_v1_get_simple_earn_flexible_history_redemption_record.__doc__ = Client.margin_v1_get_simple_earn_flexible_history_redemption_record.__doc__ - + return await self._request_margin_api( + "post", + "sub-account/subAccountApi/ipRestriction", + signed=True, + data=params, + version=1, + ) + + margin_v1_post_sub_account_sub_account_api_ip_restriction.__doc__ = ( + Client.margin_v1_post_sub_account_sub_account_api_ip_restriction.__doc__ + ) + + async def margin_v1_get_simple_earn_flexible_history_redemption_record( + self, **params + ): + return await self._request_margin_api( + "get", + "simple-earn/flexible/history/redemptionRecord", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_simple_earn_flexible_history_redemption_record.__doc__ = ( + Client.margin_v1_get_simple_earn_flexible_history_redemption_record.__doc__ + ) + async def margin_v1_get_broker_sub_account_api(self, **params): - return await self._request_margin_api("get", "broker/subAccountApi", signed=True, data=params, version=1) - - margin_v1_get_broker_sub_account_api.__doc__ = Client.margin_v1_get_broker_sub_account_api.__doc__ - + return await self._request_margin_api( + "get", "broker/subAccountApi", signed=True, data=params, version=1 + ) + + margin_v1_get_broker_sub_account_api.__doc__ = ( + Client.margin_v1_get_broker_sub_account_api.__doc__ + ) + async def options_v1_get_exercise_history(self, **params): - return await self._request_options_api("get", "exerciseHistory", signed=False, data=params) - - options_v1_get_exercise_history.__doc__ = Client.options_v1_get_exercise_history.__doc__ - + return await self._request_options_api( + "get", "exerciseHistory", signed=False, data=params + ) + + options_v1_get_exercise_history.__doc__ = ( + Client.options_v1_get_exercise_history.__doc__ + ) + async def margin_v1_get_convert_exchange_info(self, **params): - return await self._request_margin_api("get", "convert/exchangeInfo", signed=False, data=params, version=1) - - margin_v1_get_convert_exchange_info.__doc__ = Client.margin_v1_get_convert_exchange_info.__doc__ - + return await self._request_margin_api( + "get", "convert/exchangeInfo", signed=False, data=params, version=1 + ) + + margin_v1_get_convert_exchange_info.__doc__ = ( + Client.margin_v1_get_convert_exchange_info.__doc__ + ) + async def futures_v1_delete_batch_order(self, **params): - return await self._request_futures_api("delete", "batchOrder", signed=True, data=params, version=1) - + return await self._request_futures_api( + "delete", "batchOrder", signed=True, data=params, version=1 + ) + futures_v1_delete_batch_order.__doc__ = Client.futures_v1_delete_batch_order.__doc__ - - async def margin_v1_get_eth_staking_eth_history_wbeth_rewards_history(self, **params): - return await self._request_margin_api("get", "eth-staking/eth/history/wbethRewardsHistory", signed=True, data=params, version=1) - - margin_v1_get_eth_staking_eth_history_wbeth_rewards_history.__doc__ = Client.margin_v1_get_eth_staking_eth_history_wbeth_rewards_history.__doc__ - + + async def margin_v1_get_eth_staking_eth_history_wbeth_rewards_history( + self, **params + ): + return await self._request_margin_api( + "get", + "eth-staking/eth/history/wbethRewardsHistory", + signed=True, + data=params, + version=1, + ) + + margin_v1_get_eth_staking_eth_history_wbeth_rewards_history.__doc__ = ( + Client.margin_v1_get_eth_staking_eth_history_wbeth_rewards_history.__doc__ + ) + async def margin_v1_get_mining_pub_algo_list(self, **params): - return await self._request_margin_api("get", "mining/pub/algoList", signed=True, data=params, version=1) - - margin_v1_get_mining_pub_algo_list.__doc__ = Client.margin_v1_get_mining_pub_algo_list.__doc__ - + return await self._request_margin_api( + "get", "mining/pub/algoList", signed=True, data=params, version=1 + ) + + margin_v1_get_mining_pub_algo_list.__doc__ = ( + Client.margin_v1_get_mining_pub_algo_list.__doc__ + ) + async def options_v1_get_block_trades(self, **params): - return await self._request_options_api("get", "blockTrades", signed=False, data=params) - + return await self._request_options_api( + "get", "blockTrades", signed=False, data=params + ) + options_v1_get_block_trades.__doc__ = Client.options_v1_get_block_trades.__doc__ - + async def margin_v1_get_copy_trading_futures_lead_symbol(self, **params): - return await self._request_margin_api("get", "copyTrading/futures/leadSymbol", signed=True, data=params, version=1) - - margin_v1_get_copy_trading_futures_lead_symbol.__doc__ = Client.margin_v1_get_copy_trading_futures_lead_symbol.__doc__ - + return await self._request_margin_api( + "get", "copyTrading/futures/leadSymbol", signed=True, data=params, version=1 + ) + + margin_v1_get_copy_trading_futures_lead_symbol.__doc__ = ( + Client.margin_v1_get_copy_trading_futures_lead_symbol.__doc__ + ) + async def margin_v1_get_mining_worker_list(self, **params): - return await self._request_margin_api("get", "mining/worker/list", signed=True, data=params, version=1) - - margin_v1_get_mining_worker_list.__doc__ = Client.margin_v1_get_mining_worker_list.__doc__ - + return await self._request_margin_api( + "get", "mining/worker/list", signed=True, data=params, version=1 + ) + + margin_v1_get_mining_worker_list.__doc__ = ( + Client.margin_v1_get_mining_worker_list.__doc__ + ) + async def margin_v1_get_dci_product_list(self, **params): - return await self._request_margin_api("get", "dci/product/list", signed=True, data=params, version=1) - - margin_v1_get_dci_product_list.__doc__ = Client.margin_v1_get_dci_product_list.__doc__ - + return await self._request_margin_api( + "get", "dci/product/list", signed=True, data=params, version=1 + ) + + margin_v1_get_dci_product_list.__doc__ = ( + Client.margin_v1_get_dci_product_list.__doc__ + ) + async def futures_v1_get_convert_order_status(self, **params): - return await self._request_futures_api("get", "convert/orderStatus", signed=True, data=params, version=1) - - futures_v1_get_convert_order_status.__doc__ = Client.futures_v1_get_convert_order_status.__doc__ - \ No newline at end of file + return await self._request_futures_api( + "get", "convert/orderStatus", signed=True, data=params, version=1 + ) + + futures_v1_get_convert_order_status.__doc__ = ( + Client.futures_v1_get_convert_order_status.__doc__ + ) diff --git a/binance/client.py b/binance/client.py index 68e6fc622..d10135384 100755 --- a/binance/client.py +++ b/binance/client.py @@ -77,15 +77,19 @@ def _request( if data is not None: del kwargs["data"] - if signed and self.PRIVATE_KEY and data: # handle issues with signing using eddsa/rsa and POST requests + if ( + signed and self.PRIVATE_KEY and data + ): # handle issues with signing using eddsa/rsa and POST requests dict_data = Client.convert_to_dict(data) - signature = dict_data["signature"] if "signature" in dict_data else None + signature = dict_data["signature"] if "signature" in dict_data else None if signature: del dict_data["signature"] url_encoded_data = urlencode(dict_data) data = f"{url_encoded_data}&signature={signature}" - self.response = getattr(self.session, method)(uri, headers=headers, data=data, **kwargs) + self.response = getattr(self.session, method)( + uri, headers=headers, data=data, **kwargs + ) return self._handle_response(self.response) @staticmethod @@ -96,7 +100,7 @@ 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 {} @@ -387,7 +391,9 @@ def get_all_tickers(self) -> List[Dict[str, str]]: """ response = self._get("ticker/price") - if isinstance(response, list) and all(isinstance(item, dict) for item in response): + if isinstance(response, list) and all( + isinstance(item, dict) for item in response + ): return response raise TypeError("Expected a list of dictionaries") @@ -430,9 +436,7 @@ def get_orderbook_tickers(self, **params) -> Dict: data["symbol"] = params["symbol"] elif "symbols" in params: data["symbols"] = params["symbols"] - return self._get( - "ticker/bookTicker", data=data - ) + return self._get("ticker/bookTicker", data=data) def get_order_book(self, **params) -> Dict: """Get the Order Book for the market @@ -531,14 +535,12 @@ def get_historical_trades(self, **params) -> Dict: :raises: BinanceRequestException, BinanceAPIException """ - return self._get( - "historicalTrades", data=params - ) + return self._get("historicalTrades", data=params) def get_aggregate_trades(self, **params) -> Dict: """Get compressed, aggregate trades. Trades that fill at the time, from the same order, with the same price will have the quantity aggregated. - + https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints :param symbol: required @@ -698,7 +700,7 @@ def get_ui_klines(self, **params) -> Dict: """ return self._get("uiKlines", data=params) - + def get_klines(self, **params) -> Dict: """Kline/candlestick bars for a symbol. Klines are uniquely identified by their open time. @@ -1058,7 +1060,7 @@ def _historical_klines_generator( def get_avg_price(self, **params): """Current average price for a symbol. - + https://developers.binance.com/docs/binance-spot-api-docs/rest-api/market-data-endpoints#current-average-price :param symbol: @@ -1254,9 +1256,7 @@ def get_orderbook_ticker(self, **params): :raises: BinanceRequestException, BinanceAPIException """ - return self._get( - "ticker/bookTicker", data=params - ) + return self._get("ticker/bookTicker", data=params) # Account Endpoints @@ -3128,9 +3128,7 @@ def stream_get_listen_key(self): :raises: BinanceRequestException, BinanceAPIException """ - res = self._post( - "userDataStream", False, data={} - ) + res = self._post("userDataStream", False, data={}) return res["listenKey"] def stream_keepalive(self, listenKey): @@ -3151,9 +3149,7 @@ def stream_keepalive(self, listenKey): """ params = {"listenKey": listenKey} - return self._put( - "userDataStream", False, data=params - ) + return self._put("userDataStream", False, data=params) def stream_close(self, listenKey): """Close out a user data stream. @@ -7400,15 +7396,13 @@ def futures_global_longshort_ratio(self, **params): return self._request_futures_data_api( "get", "globalLongShortAccountRatio", data=params ) - + def futures_taker_longshort_ratio(self, **params): """Get taker buy to sell volume ratio of a specific symbol https://developers.binance.com/docs/derivatives/usds-margined-futures/market-data/rest-api/Taker-BuySell-Volume """ - return self._request_futures_data_api( - "get", "takerlongshortRatio", data=params - ) + return self._request_futures_data_api("get", "takerlongshortRatio", data=params) def futures_ticker(self, **params): """24 hour rolling window price change statistics. @@ -9575,7 +9569,9 @@ def papi_get_rate_limit(self, **params): :returns: API response """ - return self._request_papi_api("get", "rateLimit/order", signed=True, data=params) + return self._request_papi_api( + "get", "rateLimit/order", signed=True, data=params + ) def papi_stream_get_listen_key(self): """Start a new user data stream for Portfolio Margin account. @@ -10004,7 +10000,6 @@ def papi_get_portfolio_interest_history(self, **params): "get", "portfolio/interest-history", signed=True, data=params ) - def papi_get_portfolio_negative_balance_exchange_record(self, **params): """Query user negative balance auto exchange record. @@ -10017,7 +10012,10 @@ def papi_get_portfolio_negative_balance_exchange_record(self, **params): """ return self._request_papi_api( - "get", "portfolio/negative-balance-exchange-record", signed=True, data=params + "get", + "portfolio/negative-balance-exchange-record", + signed=True, + data=params, ) def papi_fund_auto_collection(self, **params): @@ -13735,7 +13733,9 @@ def futures_historical_data_link(self, **params): - Only VIP users can query this endpoint - Weight: 200 """ - return self._request_margin_api("get", "futures/data/histDataLink", signed=True, data=params) + return self._request_margin_api( + "get", "futures/data/histDataLink", signed=True, data=params + ) def margin_v1_get_loan_vip_ongoing_orders(self, **params): """ @@ -13747,8 +13747,10 @@ def margin_v1_get_loan_vip_ongoing_orders(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/vip/ongoing/orders", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/vip/ongoing/orders", signed=True, data=params, version=1 + ) + def margin_v1_get_mining_payment_other(self, **params): """ Placeholder function for GET /sapi/v1/mining/payment/other. @@ -13759,8 +13761,10 @@ def margin_v1_get_mining_payment_other(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/payment/other", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "mining/payment/other", signed=True, data=params, version=1 + ) + def futures_coin_v1_get_income_asyn_id(self, **params): """ Placeholder function for GET /dapi/v1/income/asyn/id. @@ -13771,8 +13775,10 @@ def futures_coin_v1_get_income_asyn_id(self, **params): :returns: API response """ - return self._request_futures_coin_api("get", "income/asyn/id", signed=True, data=params, version=1) - + return self._request_futures_coin_api( + "get", "income/asyn/id", signed=True, data=params, version=1 + ) + def margin_v1_get_simple_earn_flexible_history_subscription_record(self, **params): """ Placeholder function for GET /sapi/v1/simple-earn/flexible/history/subscriptionRecord. @@ -13783,8 +13789,14 @@ def margin_v1_get_simple_earn_flexible_history_subscription_record(self, **param :returns: API response """ - return self._request_margin_api("get", "simple-earn/flexible/history/subscriptionRecord", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "simple-earn/flexible/history/subscriptionRecord", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_lending_auto_invest_one_off(self, **params): """ Placeholder function for POST /sapi/v1/lending/auto-invest/one-off. @@ -13795,8 +13807,10 @@ def margin_v1_post_lending_auto_invest_one_off(self, **params): :returns: API response """ - return self._request_margin_api("post", "lending/auto-invest/one-off", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "lending/auto-invest/one-off", signed=True, data=params, version=1 + ) + def margin_v1_post_broker_sub_account_api_commission_coin_futures(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccountApi/commission/coinFutures. @@ -13807,8 +13821,14 @@ def margin_v1_post_broker_sub_account_api_commission_coin_futures(self, **params :returns: API response """ - return self._request_margin_api("post", "broker/subAccountApi/commission/coinFutures", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "broker/subAccountApi/commission/coinFutures", + signed=True, + data=params, + version=1, + ) + def v3_post_order_list_otoco(self, **params): """ Placeholder function for POST /api/v3/orderList/otoco. @@ -13819,8 +13839,10 @@ def v3_post_order_list_otoco(self, **params): :returns: API response """ - return self._request_api("post", "orderList/otoco", signed=True, data=params, version="v3") - + return self._request_api( + "post", "orderList/otoco", signed=True, data=params, version="v3" + ) + def futures_v1_get_order_asyn(self, **params): """ Placeholder function for GET /fapi/v1/order/asyn. @@ -13831,8 +13853,10 @@ def futures_v1_get_order_asyn(self, **params): :returns: API response """ - return self._request_futures_api("get", "order/asyn", signed=True, data=params, version=1) - + return self._request_futures_api( + "get", "order/asyn", signed=True, data=params, version=1 + ) + def margin_v1_get_asset_custody_transfer_history(self, **params): """ Placeholder function for GET /sapi/v1/asset/custody/transfer-history. @@ -13843,8 +13867,10 @@ def margin_v1_get_asset_custody_transfer_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "asset/custody/transfer-history", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "asset/custody/transfer-history", signed=True, data=params, version=1 + ) + def margin_v1_post_broker_sub_account_blvt(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccount/blvt. @@ -13855,8 +13881,10 @@ def margin_v1_post_broker_sub_account_blvt(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/subAccount/blvt", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "broker/subAccount/blvt", signed=True, data=params, version=1 + ) + def margin_v1_post_sol_staking_sol_redeem(self, **params): """ Placeholder function for POST /sapi/v1/sol-staking/sol/redeem. @@ -13867,8 +13895,10 @@ def margin_v1_post_sol_staking_sol_redeem(self, **params): :returns: API response """ - return self._request_margin_api("post", "sol-staking/sol/redeem", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "sol-staking/sol/redeem", signed=True, data=params, version=1 + ) + def options_v1_get_countdown_cancel_all(self, **params): """ Placeholder function for GET /eapi/v1/countdownCancelAll. @@ -13879,8 +13909,10 @@ def options_v1_get_countdown_cancel_all(self, **params): :returns: API response """ - return self._request_options_api("get", "countdownCancelAll", signed=True, data=params) - + return self._request_options_api( + "get", "countdownCancelAll", signed=True, data=params + ) + def margin_v1_get_margin_trade_coeff(self, **params): """ Placeholder function for GET /sapi/v1/margin/tradeCoeff. @@ -13891,8 +13923,10 @@ def margin_v1_get_margin_trade_coeff(self, **params): :returns: API response """ - return self._request_margin_api("get", "margin/tradeCoeff", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "margin/tradeCoeff", signed=True, data=params, version=1 + ) + def futures_coin_v1_get_order_amendment(self, **params): """ Placeholder function for GET /dapi/v1/orderAmendment. @@ -13903,8 +13937,10 @@ def futures_coin_v1_get_order_amendment(self, **params): :returns: API response """ - return self._request_futures_coin_api("get", "orderAmendment", signed=True, data=params, version=1) - + return self._request_futures_coin_api( + "get", "orderAmendment", signed=True, data=params, version=1 + ) + def margin_v1_get_margin_available_inventory(self, **params): """ Placeholder function for GET /sapi/v1/margin/available-inventory. @@ -13915,8 +13951,10 @@ def margin_v1_get_margin_available_inventory(self, **params): :returns: API response """ - return self._request_margin_api("get", "margin/available-inventory", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "margin/available-inventory", signed=True, data=params, version=1 + ) + def margin_v1_post_account_api_restrictions_ip_restriction_ip_list(self, **params): """ Placeholder function for POST /sapi/v1/account/apiRestrictions/ipRestriction/ipList. @@ -13927,8 +13965,14 @@ def margin_v1_post_account_api_restrictions_ip_restriction_ip_list(self, **param :returns: API response """ - return self._request_margin_api("post", "account/apiRestrictions/ipRestriction/ipList", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "account/apiRestrictions/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + def margin_v2_get_eth_staking_account(self, **params): """ Placeholder function for GET /sapi/v2/eth-staking/account. @@ -13939,8 +13983,10 @@ def margin_v2_get_eth_staking_account(self, **params): :returns: API response """ - return self._request_margin_api("get", "eth-staking/account", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", "eth-staking/account", signed=True, data=params, version=2 + ) + def margin_v1_get_loan_income(self, **params): """ Placeholder function for GET /sapi/v1/loan/income. @@ -13951,8 +13997,10 @@ def margin_v1_get_loan_income(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/income", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/income", signed=True, data=params, version=1 + ) + def futures_coin_v1_get_pm_account_info(self, **params): """ Placeholder function for GET /dapi/v1/pmAccountInfo. @@ -13963,8 +14011,10 @@ def futures_coin_v1_get_pm_account_info(self, **params): :returns: API response """ - return self._request_futures_coin_api("get", "pmAccountInfo", signed=True, data=params, version=1) - + return self._request_futures_coin_api( + "get", "pmAccountInfo", signed=True, data=params, version=1 + ) + def margin_v1_get_managed_subaccount_query_trans_log_for_investor(self, **params): """ Placeholder function for GET /sapi/v1/managed-subaccount/queryTransLogForInvestor. @@ -13975,8 +14025,14 @@ def margin_v1_get_managed_subaccount_query_trans_log_for_investor(self, **params :returns: API response """ - return self._request_margin_api("get", "managed-subaccount/queryTransLogForInvestor", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "managed-subaccount/queryTransLogForInvestor", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_dci_product_auto_compound_edit_status(self, **params): """ Placeholder function for POST /sapi/v1/dci/product/auto_compound/edit-status. @@ -13987,8 +14043,14 @@ def margin_v1_post_dci_product_auto_compound_edit_status(self, **params): :returns: API response """ - return self._request_margin_api("post", "dci/product/auto_compound/edit-status", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "dci/product/auto_compound/edit-status", + signed=True, + data=params, + version=1, + ) + def futures_v1_get_trade_asyn(self, **params): """ Placeholder function for GET /fapi/v1/trade/asyn. @@ -13999,8 +14061,10 @@ def futures_v1_get_trade_asyn(self, **params): :returns: API response """ - return self._request_futures_api("get", "trade/asyn", signed=True, data=params, version=1) - + return self._request_futures_api( + "get", "trade/asyn", signed=True, data=params, version=1 + ) + def margin_v1_get_loan_vip_request_interest_rate(self, **params): """ Placeholder function for GET /sapi/v1/loan/vip/request/interestRate. @@ -14011,8 +14075,10 @@ def margin_v1_get_loan_vip_request_interest_rate(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/vip/request/interestRate", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/vip/request/interestRate", signed=True, data=params, version=1 + ) + def futures_v1_get_funding_info(self, **params): """ Placeholder function for GET /fapi/v1/fundingInfo. @@ -14023,8 +14089,10 @@ def futures_v1_get_funding_info(self, **params): :returns: API response """ - return self._request_futures_api("get", "fundingInfo", signed=False, data=params, version=1) - + return self._request_futures_api( + "get", "fundingInfo", signed=False, data=params, version=1 + ) + def margin_v2_get_loan_flexible_repay_rate(self, **params): """ Placeholder function for GET /sapi/v2/loan/flexible/repay/rate. @@ -14035,8 +14103,10 @@ def margin_v2_get_loan_flexible_repay_rate(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/flexible/repay/rate", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", "loan/flexible/repay/rate", signed=True, data=params, version=2 + ) + def margin_v1_get_lending_auto_invest_plan_id(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/plan/id. @@ -14047,8 +14117,10 @@ def margin_v1_get_lending_auto_invest_plan_id(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/plan/id", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "lending/auto-invest/plan/id", signed=True, data=params, version=1 + ) + def margin_v1_post_loan_adjust_ltv(self, **params): """ Placeholder function for POST /sapi/v1/loan/adjust/ltv. @@ -14059,8 +14131,10 @@ def margin_v1_post_loan_adjust_ltv(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/adjust/ltv", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "loan/adjust/ltv", signed=True, data=params, version=1 + ) + def margin_v1_get_mining_statistics_user_status(self, **params): """ Placeholder function for GET /sapi/v1/mining/statistics/user/status. @@ -14071,8 +14145,10 @@ def margin_v1_get_mining_statistics_user_status(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/statistics/user/status", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "mining/statistics/user/status", signed=True, data=params, version=1 + ) + def margin_v1_get_broker_transfer_futures(self, **params): """ Placeholder function for GET /sapi/v1/broker/transfer/futures. @@ -14083,8 +14159,10 @@ def margin_v1_get_broker_transfer_futures(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/transfer/futures", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "broker/transfer/futures", signed=True, data=params, version=1 + ) + def margin_v1_post_algo_spot_new_order_twap(self, **params): """ Placeholder function for POST /sapi/v1/algo/spot/newOrderTwap. @@ -14095,8 +14173,10 @@ def margin_v1_post_algo_spot_new_order_twap(self, **params): :returns: API response """ - return self._request_margin_api("post", "algo/spot/newOrderTwap", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "algo/spot/newOrderTwap", signed=True, data=params, version=1 + ) + def margin_v1_get_lending_auto_invest_target_asset_list(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/target-asset/list. @@ -14107,8 +14187,14 @@ def margin_v1_get_lending_auto_invest_target_asset_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/target-asset/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "lending/auto-invest/target-asset/list", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_capital_deposit_address_list(self, **params): """ Placeholder function for GET /sapi/v1/capital/deposit/address/list. @@ -14119,8 +14205,10 @@ def margin_v1_get_capital_deposit_address_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "capital/deposit/address/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "capital/deposit/address/list", signed=True, data=params, version=1 + ) + def margin_v1_post_broker_sub_account_bnb_burn_margin_interest(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccount/bnbBurn/marginInterest. @@ -14131,8 +14219,14 @@ def margin_v1_post_broker_sub_account_bnb_burn_margin_interest(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/subAccount/bnbBurn/marginInterest", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "broker/subAccount/bnbBurn/marginInterest", + signed=True, + data=params, + version=1, + ) + def margin_v2_post_loan_flexible_repay(self, **params): """ Placeholder function for POST /sapi/v2/loan/flexible/repay. @@ -14143,8 +14237,10 @@ def margin_v2_post_loan_flexible_repay(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/flexible/repay", signed=True, data=params, version=2) - + return self._request_margin_api( + "post", "loan/flexible/repay", signed=True, data=params, version=2 + ) + def margin_v2_get_loan_flexible_loanable_data(self, **params): """ Placeholder function for GET /sapi/v2/loan/flexible/loanable/data. @@ -14155,8 +14251,10 @@ def margin_v2_get_loan_flexible_loanable_data(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/flexible/loanable/data", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", "loan/flexible/loanable/data", signed=True, data=params, version=2 + ) + def margin_v1_post_broker_sub_account_api_permission(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccountApi/permission. @@ -14167,8 +14265,14 @@ def margin_v1_post_broker_sub_account_api_permission(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/subAccountApi/permission", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "broker/subAccountApi/permission", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_broker_sub_account_api(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccountApi. @@ -14179,8 +14283,10 @@ def margin_v1_post_broker_sub_account_api(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/subAccountApi", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "broker/subAccountApi", signed=True, data=params, version=1 + ) + def margin_v1_get_dci_product_positions(self, **params): """ Placeholder function for GET /sapi/v1/dci/product/positions. @@ -14191,8 +14297,10 @@ def margin_v1_get_dci_product_positions(self, **params): :returns: API response """ - return self._request_margin_api("get", "dci/product/positions", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "dci/product/positions", signed=True, data=params, version=1 + ) + def margin_v1_post_convert_limit_cancel_order(self, **params): """ Placeholder function for POST /sapi/v1/convert/limit/cancelOrder. @@ -14203,8 +14311,10 @@ def margin_v1_post_convert_limit_cancel_order(self, **params): :returns: API response """ - return self._request_margin_api("post", "convert/limit/cancelOrder", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "convert/limit/cancelOrder", signed=True, data=params, version=1 + ) + def v3_post_order_list_oto(self, **params): """ Placeholder function for POST /api/v3/orderList/oto. @@ -14215,8 +14325,10 @@ def v3_post_order_list_oto(self, **params): :returns: API response """ - return self._request_api("post", "orderList/oto", signed=True, data=params, version="v3") - + return self._request_api( + "post", "orderList/oto", signed=True, data=params, version="v3" + ) + def margin_v1_get_mining_hash_transfer_config_details_list(self, **params): """ Placeholder function for GET /sapi/v1/mining/hash-transfer/config/details/list. @@ -14227,8 +14339,14 @@ def margin_v1_get_mining_hash_transfer_config_details_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/hash-transfer/config/details/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "mining/hash-transfer/config/details/list", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_mining_hash_transfer_profit_details(self, **params): """ Placeholder function for GET /sapi/v1/mining/hash-transfer/profit/details. @@ -14239,8 +14357,14 @@ def margin_v1_get_mining_hash_transfer_profit_details(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/hash-transfer/profit/details", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "mining/hash-transfer/profit/details", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_broker_sub_account(self, **params): """ Placeholder function for GET /sapi/v1/broker/subAccount. @@ -14251,8 +14375,10 @@ def margin_v1_get_broker_sub_account(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccount", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "broker/subAccount", signed=True, data=params, version=1 + ) + def margin_v1_get_portfolio_balance(self, **params): """ Placeholder function for GET /sapi/v1/portfolio/balance. @@ -14263,8 +14389,10 @@ def margin_v1_get_portfolio_balance(self, **params): :returns: API response """ - return self._request_margin_api("get", "portfolio/balance", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "portfolio/balance", signed=True, data=params, version=1 + ) + def margin_v1_post_sub_account_eoptions_enable(self, **params): """ Placeholder function for POST /sapi/v1/sub-account/eoptions/enable. @@ -14275,8 +14403,10 @@ def margin_v1_post_sub_account_eoptions_enable(self, **params): :returns: API response """ - return self._request_margin_api("post", "sub-account/eoptions/enable", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "sub-account/eoptions/enable", signed=True, data=params, version=1 + ) + def papi_v1_post_ping(self, **params): """ Placeholder function for POST /papi/v1/ping. @@ -14287,8 +14417,10 @@ def papi_v1_post_ping(self, **params): :returns: API response """ - return self._request_papi_api("post", "ping", signed=True, data=params, version=1) - + return self._request_papi_api( + "post", "ping", signed=True, data=params, version=1 + ) + def margin_v1_get_loan_loanable_data(self, **params): """ Placeholder function for GET /sapi/v1/loan/loanable/data. @@ -14299,8 +14431,10 @@ def margin_v1_get_loan_loanable_data(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/loanable/data", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/loanable/data", signed=True, data=params, version=1 + ) + def margin_v1_post_eth_staking_wbeth_unwrap(self, **params): """ Placeholder function for POST /sapi/v1/eth-staking/wbeth/unwrap. @@ -14311,8 +14445,10 @@ def margin_v1_post_eth_staking_wbeth_unwrap(self, **params): :returns: API response """ - return self._request_margin_api("post", "eth-staking/wbeth/unwrap", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "eth-staking/wbeth/unwrap", signed=True, data=params, version=1 + ) + def margin_v1_get_eth_staking_eth_history_staking_history(self, **params): """ Placeholder function for GET /sapi/v1/eth-staking/eth/history/stakingHistory. @@ -14323,8 +14459,14 @@ def margin_v1_get_eth_staking_eth_history_staking_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "eth-staking/eth/history/stakingHistory", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "eth-staking/eth/history/stakingHistory", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_staking_staking_record(self, **params): """ Placeholder function for GET /sapi/v1/staking/stakingRecord. @@ -14335,8 +14477,10 @@ def margin_v1_get_staking_staking_record(self, **params): :returns: API response """ - return self._request_margin_api("get", "staking/stakingRecord", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "staking/stakingRecord", signed=True, data=params, version=1 + ) + def margin_v1_get_broker_rebate_recent_record(self, **params): """ Placeholder function for GET /sapi/v1/broker/rebate/recentRecord. @@ -14347,8 +14491,10 @@ def margin_v1_get_broker_rebate_recent_record(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/rebate/recentRecord", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "broker/rebate/recentRecord", signed=True, data=params, version=1 + ) + def margin_v1_get_loan_vip_collateral_account(self, **params): """ Placeholder function for GET /sapi/v1/loan/vip/collateral/account. @@ -14359,8 +14505,10 @@ def margin_v1_get_loan_vip_collateral_account(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/vip/collateral/account", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/vip/collateral/account", signed=True, data=params, version=1 + ) + def margin_v1_get_algo_spot_open_orders(self, **params): """ Placeholder function for GET /sapi/v1/algo/spot/openOrders. @@ -14371,8 +14519,10 @@ def margin_v1_get_algo_spot_open_orders(self, **params): :returns: API response """ - return self._request_margin_api("get", "algo/spot/openOrders", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "algo/spot/openOrders", signed=True, data=params, version=1 + ) + def margin_v1_post_loan_repay(self, **params): """ Placeholder function for POST /sapi/v1/loan/repay. @@ -14383,8 +14533,10 @@ def margin_v1_post_loan_repay(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/repay", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "loan/repay", signed=True, data=params, version=1 + ) + def futures_coin_v1_get_funding_info(self, **params): """ Placeholder function for GET /dapi/v1/fundingInfo. @@ -14395,8 +14547,10 @@ def futures_coin_v1_get_funding_info(self, **params): :returns: API response """ - return self._request_futures_coin_api("get", "fundingInfo", signed=False, data=params, version=1) - + return self._request_futures_coin_api( + "get", "fundingInfo", signed=False, data=params, version=1 + ) + def margin_v1_get_margin_leverage_bracket(self, **params): """ Placeholder function for GET /sapi/v1/margin/leverageBracket. @@ -14407,8 +14561,10 @@ def margin_v1_get_margin_leverage_bracket(self, **params): :returns: API response """ - return self._request_margin_api("get", "margin/leverageBracket", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "margin/leverageBracket", signed=True, data=params, version=1 + ) + def margin_v2_get_portfolio_collateral_rate(self, **params): """ Placeholder function for GET /sapi/v2/portfolio/collateralRate. @@ -14419,8 +14575,10 @@ def margin_v2_get_portfolio_collateral_rate(self, **params): :returns: API response """ - return self._request_margin_api("get", "portfolio/collateralRate", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", "portfolio/collateralRate", signed=True, data=params, version=2 + ) + def margin_v2_post_loan_flexible_adjust_ltv(self, **params): """ Placeholder function for POST /sapi/v2/loan/flexible/adjust/ltv. @@ -14431,8 +14589,10 @@ def margin_v2_post_loan_flexible_adjust_ltv(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/flexible/adjust/ltv", signed=True, data=params, version=2) - + return self._request_margin_api( + "post", "loan/flexible/adjust/ltv", signed=True, data=params, version=2 + ) + def margin_v1_get_convert_order_status(self, **params): """ Placeholder function for GET /sapi/v1/convert/orderStatus. @@ -14443,8 +14603,10 @@ def margin_v1_get_convert_order_status(self, **params): :returns: API response """ - return self._request_margin_api("get", "convert/orderStatus", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "convert/orderStatus", signed=True, data=params, version=1 + ) + def margin_v1_get_broker_sub_account_api_ip_restriction(self, **params): """ Placeholder function for GET /sapi/v1/broker/subAccountApi/ipRestriction. @@ -14455,8 +14617,14 @@ def margin_v1_get_broker_sub_account_api_ip_restriction(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccountApi/ipRestriction", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "broker/subAccountApi/ipRestriction", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_dci_product_subscribe(self, **params): """ Placeholder function for POST /sapi/v1/dci/product/subscribe. @@ -14467,8 +14635,10 @@ def margin_v1_post_dci_product_subscribe(self, **params): :returns: API response """ - return self._request_margin_api("post", "dci/product/subscribe", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "dci/product/subscribe", signed=True, data=params, version=1 + ) + def futures_v1_get_income_asyn_id(self, **params): """ Placeholder function for GET /fapi/v1/income/asyn/id. @@ -14479,8 +14649,10 @@ def futures_v1_get_income_asyn_id(self, **params): :returns: API response """ - return self._request_futures_api("get", "income/asyn/id", signed=True, data=params, version=1) - + return self._request_futures_api( + "get", "income/asyn/id", signed=True, data=params, version=1 + ) + def options_v1_post_countdown_cancel_all(self, **params): """ Placeholder function for POST /eapi/v1/countdownCancelAll. @@ -14491,8 +14663,10 @@ def options_v1_post_countdown_cancel_all(self, **params): :returns: API response """ - return self._request_options_api("post", "countdownCancelAll", signed=True, data=params) - + return self._request_options_api( + "post", "countdownCancelAll", signed=True, data=params + ) + def margin_v1_post_mining_hash_transfer_config_cancel(self, **params): """ Placeholder function for POST /sapi/v1/mining/hash-transfer/config/cancel. @@ -14503,8 +14677,14 @@ def margin_v1_post_mining_hash_transfer_config_cancel(self, **params): :returns: API response """ - return self._request_margin_api("post", "mining/hash-transfer/config/cancel", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "mining/hash-transfer/config/cancel", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_broker_sub_account_deposit_hist(self, **params): """ Placeholder function for GET /sapi/v1/broker/subAccount/depositHist. @@ -14515,8 +14695,10 @@ def margin_v1_get_broker_sub_account_deposit_hist(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccount/depositHist", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "broker/subAccount/depositHist", signed=True, data=params, version=1 + ) + def margin_v1_get_mining_payment_list(self, **params): """ Placeholder function for GET /sapi/v1/mining/payment/list. @@ -14527,8 +14709,10 @@ def margin_v1_get_mining_payment_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/payment/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "mining/payment/list", signed=True, data=params, version=1 + ) + def futures_v1_get_pm_account_info(self, **params): """ Placeholder function for GET /fapi/v1/pmAccountInfo. @@ -14539,8 +14723,10 @@ def futures_v1_get_pm_account_info(self, **params): :returns: API response """ - return self._request_futures_api("get", "pmAccountInfo", signed=True, data=params, version=1) - + return self._request_futures_api( + "get", "pmAccountInfo", signed=True, data=params, version=1 + ) + def futures_coin_v1_get_adl_quantile(self, **params): """ Placeholder function for GET /dapi/v1/adlQuantile. @@ -14551,8 +14737,10 @@ def futures_coin_v1_get_adl_quantile(self, **params): :returns: API response """ - return self._request_futures_coin_api("get", "adlQuantile", signed=True, data=params, version=1) - + return self._request_futures_coin_api( + "get", "adlQuantile", signed=True, data=params, version=1 + ) + def options_v1_get_income_asyn_id(self, **params): """ Placeholder function for GET /eapi/v1/income/asyn/id. @@ -14563,8 +14751,10 @@ def options_v1_get_income_asyn_id(self, **params): :returns: API response """ - return self._request_options_api("get", "income/asyn/id", signed=True, data=params) - + return self._request_options_api( + "get", "income/asyn/id", signed=True, data=params + ) + def v3_post_cancel_replace(self, **params): """ Placeholder function for POST /api/v3/cancelReplace. @@ -14575,8 +14765,10 @@ def v3_post_cancel_replace(self, **params): :returns: API response """ - return self._request_api("post", "cancelReplace", signed=True, data=params, version="v3") - + return self._request_api( + "post", "cancelReplace", signed=True, data=params, version="v3" + ) + def margin_v1_post_account_enable_fast_withdraw_switch(self, **params): """ Placeholder function for POST /sapi/v1/account/enableFastWithdrawSwitch. @@ -14587,8 +14779,14 @@ def margin_v1_post_account_enable_fast_withdraw_switch(self, **params): :returns: API response """ - return self._request_margin_api("post", "account/enableFastWithdrawSwitch", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "account/enableFastWithdrawSwitch", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_broker_transfer_futures(self, **params): """ Placeholder function for POST /sapi/v1/broker/transfer/futures. @@ -14599,8 +14797,10 @@ def margin_v1_post_broker_transfer_futures(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/transfer/futures", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "broker/transfer/futures", signed=True, data=params, version=1 + ) + def margin_v1_post_sol_staking_sol_stake(self, **params): """ Placeholder function for POST /sapi/v1/sol-staking/sol/stake. @@ -14611,8 +14811,10 @@ def margin_v1_post_sol_staking_sol_stake(self, **params): :returns: API response """ - return self._request_margin_api("post", "sol-staking/sol/stake", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "sol-staking/sol/stake", signed=True, data=params, version=1 + ) + def margin_v1_post_loan_borrow(self, **params): """ Placeholder function for POST /sapi/v1/loan/borrow. @@ -14623,8 +14825,10 @@ def margin_v1_post_loan_borrow(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/borrow", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "loan/borrow", signed=True, data=params, version=1 + ) + def margin_v1_get_managed_subaccount_info(self, **params): """ Placeholder function for GET /sapi/v1/managed-subaccount/info. @@ -14635,8 +14839,10 @@ def margin_v1_get_managed_subaccount_info(self, **params): :returns: API response """ - return self._request_margin_api("get", "managed-subaccount/info", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "managed-subaccount/info", signed=True, data=params, version=1 + ) + def margin_v1_post_lending_auto_invest_plan_edit_status(self, **params): """ Placeholder function for POST /sapi/v1/lending/auto-invest/plan/edit-status. @@ -14647,8 +14853,14 @@ def margin_v1_post_lending_auto_invest_plan_edit_status(self, **params): :returns: API response """ - return self._request_margin_api("post", "lending/auto-invest/plan/edit-status", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "lending/auto-invest/plan/edit-status", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_sol_staking_sol_history_unclaimed_rewards(self, **params): """ Placeholder function for GET /sapi/v1/sol-staking/sol/history/unclaimedRewards. @@ -14659,8 +14871,14 @@ def margin_v1_get_sol_staking_sol_history_unclaimed_rewards(self, **params): :returns: API response """ - return self._request_margin_api("get", "sol-staking/sol/history/unclaimedRewards", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "sol-staking/sol/history/unclaimedRewards", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_asset_convert_transfer_query_by_page(self, **params): """ Placeholder function for POST /sapi/v1/asset/convert-transfer/queryByPage. @@ -14671,9 +14889,15 @@ def margin_v1_post_asset_convert_transfer_query_by_page(self, **params): :returns: API response """ - return self._request_margin_api("post", "asset/convert-transfer/queryByPage", signed=True, data=params, version=1) - - def margin_v1_get_sol_staking_sol_history_boost_rewards_history(self, **params): + return self._request_margin_api( + "post", + "asset/convert-transfer/queryByPage", + signed=True, + data=params, + version=1, + ) + + def margin_v1_get_sol_staking_sol_history_boost_rewards_history(self, **params): """ Placeholder function for GET /sapi/v1/sol-staking/sol/history/boostRewardsHistory. Note: This function was auto-generated. Any issue please open an issue on GitHub. @@ -14683,8 +14907,14 @@ def margin_v1_get_sol_staking_sol_history_boost_rewards_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "sol-staking/sol/history/boostRewardsHistory", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "sol-staking/sol/history/boostRewardsHistory", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_lending_auto_invest_one_off_status(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/one-off/status. @@ -14695,8 +14925,14 @@ def margin_v1_get_lending_auto_invest_one_off_status(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/one-off/status", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "lending/auto-invest/one-off/status", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_broker_sub_account(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccount. @@ -14707,8 +14943,10 @@ def margin_v1_post_broker_sub_account(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/subAccount", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "broker/subAccount", signed=True, data=params, version=1 + ) + def margin_v1_get_asset_ledger_transfer_cloud_mining_query_by_page(self, **params): """ Placeholder function for GET /sapi/v1/asset/ledger-transfer/cloud-mining/queryByPage. @@ -14719,8 +14957,14 @@ def margin_v1_get_asset_ledger_transfer_cloud_mining_query_by_page(self, **param :returns: API response """ - return self._request_margin_api("get", "asset/ledger-transfer/cloud-mining/queryByPage", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "asset/ledger-transfer/cloud-mining/queryByPage", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_mining_pub_coin_list(self, **params): """ Placeholder function for GET /sapi/v1/mining/pub/coinList. @@ -14731,8 +14975,10 @@ def margin_v1_get_mining_pub_coin_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/pub/coinList", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "mining/pub/coinList", signed=True, data=params, version=1 + ) + def margin_v2_get_loan_flexible_repay_history(self, **params): """ Placeholder function for GET /sapi/v2/loan/flexible/repay/history. @@ -14743,8 +14989,10 @@ def margin_v2_get_loan_flexible_repay_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/flexible/repay/history", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", "loan/flexible/repay/history", signed=True, data=params, version=2 + ) + def v3_post_sor_order(self, **params): """ Placeholder function for POST /api/v3/sor/order. @@ -14755,8 +15003,10 @@ def v3_post_sor_order(self, **params): :returns: API response """ - return self._request_api("post", "sor/order", signed=True, data=params, version="v3") - + return self._request_api( + "post", "sor/order", signed=True, data=params, version="v3" + ) + def margin_v1_post_capital_deposit_credit_apply(self, **params): """ Placeholder function for POST /sapi/v1/capital/deposit/credit-apply. @@ -14767,8 +15017,10 @@ def margin_v1_post_capital_deposit_credit_apply(self, **params): :returns: API response """ - return self._request_margin_api("post", "capital/deposit/credit-apply", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "capital/deposit/credit-apply", signed=True, data=params, version=1 + ) + def futures_v1_put_batch_order(self, **params): """ Placeholder function for PUT /fapi/v1/batchOrder. @@ -14779,8 +15031,10 @@ def futures_v1_put_batch_order(self, **params): :returns: API response """ - return self._request_futures_api("put", "batchOrder", signed=True, data=params, version=1) - + return self._request_futures_api( + "put", "batchOrder", signed=True, data=params, version=1 + ) + def margin_v1_get_mining_statistics_user_list(self, **params): """ Placeholder function for GET /sapi/v1/mining/statistics/user/list. @@ -14791,8 +15045,10 @@ def margin_v1_get_mining_statistics_user_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/statistics/user/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "mining/statistics/user/list", signed=True, data=params, version=1 + ) + def futures_v1_post_batch_order(self, **params): """ Placeholder function for POST /fapi/v1/batchOrder. @@ -14803,8 +15059,10 @@ def futures_v1_post_batch_order(self, **params): :returns: API response """ - return self._request_futures_api("post", "batchOrder", signed=True, data=params, version=1) - + return self._request_futures_api( + "post", "batchOrder", signed=True, data=params, version=1 + ) + def v3_get_ticker_trading_day(self, **params): """ Placeholder function for GET /api/v3/ticker/tradingDay. @@ -14815,8 +15073,10 @@ def v3_get_ticker_trading_day(self, **params): :returns: API response """ - return self._request_api("get", "ticker/tradingDay", signed=False, data=params, version="v3") - + return self._request_api( + "get", "ticker/tradingDay", signed=False, data=params, version="v3" + ) + def margin_v1_get_mining_worker_detail(self, **params): """ Placeholder function for GET /sapi/v1/mining/worker/detail. @@ -14827,8 +15087,10 @@ def margin_v1_get_mining_worker_detail(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/worker/detail", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "mining/worker/detail", signed=True, data=params, version=1 + ) + def margin_v1_get_managed_subaccount_fetch_future_asset(self, **params): """ Placeholder function for GET /sapi/v1/managed-subaccount/fetch-future-asset. @@ -14839,8 +15101,14 @@ def margin_v1_get_managed_subaccount_fetch_future_asset(self, **params): :returns: API response """ - return self._request_margin_api("get", "managed-subaccount/fetch-future-asset", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "managed-subaccount/fetch-future-asset", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_margin_rate_limit_order(self, **params): """ Placeholder function for GET /sapi/v1/margin/rateLimit/order. @@ -14851,8 +15119,10 @@ def margin_v1_get_margin_rate_limit_order(self, **params): :returns: API response """ - return self._request_margin_api("get", "margin/rateLimit/order", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "margin/rateLimit/order", signed=True, data=params, version=1 + ) + def margin_v1_get_localentity_vasp(self, **params): """ Placeholder function for GET /sapi/v1/localentity/vasp. @@ -14863,8 +15133,10 @@ def margin_v1_get_localentity_vasp(self, **params): :returns: API response """ - return self._request_margin_api("get", "localentity/vasp", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "localentity/vasp", signed=True, data=params, version=1 + ) + def margin_v1_get_sol_staking_sol_history_rate_history(self, **params): """ Placeholder function for GET /sapi/v1/sol-staking/sol/history/rateHistory. @@ -14875,8 +15147,14 @@ def margin_v1_get_sol_staking_sol_history_rate_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "sol-staking/sol/history/rateHistory", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "sol-staking/sol/history/rateHistory", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_broker_sub_account_api_ip_restriction(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccountApi/ipRestriction. @@ -14887,8 +15165,14 @@ def margin_v1_post_broker_sub_account_api_ip_restriction(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/subAccountApi/ipRestriction", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "broker/subAccountApi/ipRestriction", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_broker_transfer(self, **params): """ Placeholder function for GET /sapi/v1/broker/transfer. @@ -14899,8 +15183,10 @@ def margin_v1_get_broker_transfer(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/transfer", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "broker/transfer", signed=True, data=params, version=1 + ) + def margin_v1_get_sol_staking_account(self, **params): """ Placeholder function for GET /sapi/v1/sol-staking/account. @@ -14911,8 +15197,10 @@ def margin_v1_get_sol_staking_account(self, **params): :returns: API response """ - return self._request_margin_api("get", "sol-staking/account", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "sol-staking/account", signed=True, data=params, version=1 + ) + def margin_v1_get_account_info(self, **params): """ Placeholder function for GET /sapi/v1/account/info. @@ -14923,8 +15211,10 @@ def margin_v1_get_account_info(self, **params): :returns: API response """ - return self._request_margin_api("get", "account/info", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "account/info", signed=True, data=params, version=1 + ) + def margin_v1_post_portfolio_repay_futures_switch(self, **params): """ Placeholder function for POST /sapi/v1/portfolio/repay-futures-switch. @@ -14935,8 +15225,14 @@ def margin_v1_post_portfolio_repay_futures_switch(self, **params): :returns: API response """ - return self._request_margin_api("post", "portfolio/repay-futures-switch", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "portfolio/repay-futures-switch", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_loan_vip_borrow(self, **params): """ Placeholder function for POST /sapi/v1/loan/vip/borrow. @@ -14947,8 +15243,10 @@ def margin_v1_post_loan_vip_borrow(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/vip/borrow", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "loan/vip/borrow", signed=True, data=params, version=1 + ) + def margin_v2_get_loan_flexible_ltv_adjustment_history(self, **params): """ Placeholder function for GET /sapi/v2/loan/flexible/ltv/adjustment/history. @@ -14959,8 +15257,14 @@ def margin_v2_get_loan_flexible_ltv_adjustment_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/flexible/ltv/adjustment/history", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", + "loan/flexible/ltv/adjustment/history", + signed=True, + data=params, + version=2, + ) + def options_v1_delete_all_open_orders_by_underlying(self, **params): """ Placeholder function for DELETE /eapi/v1/allOpenOrdersByUnderlying. @@ -14971,8 +15275,10 @@ def options_v1_delete_all_open_orders_by_underlying(self, **params): :returns: API response """ - return self._request_options_api("delete", "allOpenOrdersByUnderlying", signed=True, data=params) - + return self._request_options_api( + "delete", "allOpenOrdersByUnderlying", signed=True, data=params + ) + def margin_v1_get_broker_sub_account_futures_summary(self, **params): """ Placeholder function for GET /sapi/v1/broker/subAccount/futuresSummary. @@ -14983,8 +15289,14 @@ def margin_v1_get_broker_sub_account_futures_summary(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccount/futuresSummary", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "broker/subAccount/futuresSummary", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_broker_sub_account_spot_summary(self, **params): """ Placeholder function for GET /sapi/v1/broker/subAccount/spotSummary. @@ -14995,8 +15307,10 @@ def margin_v1_get_broker_sub_account_spot_summary(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccount/spotSummary", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "broker/subAccount/spotSummary", signed=True, data=params, version=1 + ) + def margin_v1_post_sub_account_blvt_enable(self, **params): """ Placeholder function for POST /sapi/v1/sub-account/blvt/enable. @@ -15007,8 +15321,10 @@ def margin_v1_post_sub_account_blvt_enable(self, **params): :returns: API response """ - return self._request_margin_api("post", "sub-account/blvt/enable", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "sub-account/blvt/enable", signed=True, data=params, version=1 + ) + def margin_v1_get_algo_spot_historical_orders(self, **params): """ Placeholder function for GET /sapi/v1/algo/spot/historicalOrders. @@ -15019,8 +15335,10 @@ def margin_v1_get_algo_spot_historical_orders(self, **params): :returns: API response """ - return self._request_margin_api("get", "algo/spot/historicalOrders", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "algo/spot/historicalOrders", signed=True, data=params, version=1 + ) + def margin_v1_get_loan_vip_repay_history(self, **params): """ Placeholder function for GET /sapi/v1/loan/vip/repay/history. @@ -15031,8 +15349,10 @@ def margin_v1_get_loan_vip_repay_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/vip/repay/history", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/vip/repay/history", signed=True, data=params, version=1 + ) + def margin_v1_get_loan_borrow_history(self, **params): """ Placeholder function for GET /sapi/v1/loan/borrow/history. @@ -15043,8 +15363,10 @@ def margin_v1_get_loan_borrow_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/borrow/history", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/borrow/history", signed=True, data=params, version=1 + ) + def margin_v1_post_lending_auto_invest_redeem(self, **params): """ Placeholder function for POST /sapi/v1/lending/auto-invest/redeem. @@ -15055,8 +15377,10 @@ def margin_v1_post_lending_auto_invest_redeem(self, **params): :returns: API response """ - return self._request_margin_api("post", "lending/auto-invest/redeem", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "lending/auto-invest/redeem", signed=True, data=params, version=1 + ) + def futures_coin_v1_get_income_asyn(self, **params): """ Placeholder function for GET /dapi/v1/income/asyn. @@ -15067,8 +15391,10 @@ def futures_coin_v1_get_income_asyn(self, **params): :returns: API response """ - return self._request_futures_coin_api("get", "income/asyn", signed=True, data=params, version=1) - + return self._request_futures_coin_api( + "get", "income/asyn", signed=True, data=params, version=1 + ) + def margin_v1_post_managed_subaccount_deposit(self, **params): """ Placeholder function for POST /sapi/v1/managed-subaccount/deposit. @@ -15079,8 +15405,10 @@ def margin_v1_post_managed_subaccount_deposit(self, **params): :returns: API response """ - return self._request_margin_api("post", "managed-subaccount/deposit", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "managed-subaccount/deposit", signed=True, data=params, version=1 + ) + def margin_v1_post_lending_daily_purchase(self, **params): """ Placeholder function for POST /sapi/v1/lending/daily/purchase. @@ -15091,8 +15419,10 @@ def margin_v1_post_lending_daily_purchase(self, **params): :returns: API response """ - return self._request_margin_api("post", "lending/daily/purchase", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "lending/daily/purchase", signed=True, data=params, version=1 + ) + def futures_v1_get_trade_asyn_id(self, **params): """ Placeholder function for GET /fapi/v1/trade/asyn/id. @@ -15103,9 +15433,13 @@ def futures_v1_get_trade_asyn_id(self, **params): :returns: API response """ - return self._request_futures_api("get", "trade/asyn/id", signed=True, data=params, version=1) - - def margin_v1_delete_sub_account_sub_account_api_ip_restriction_ip_list(self, **params): + return self._request_futures_api( + "get", "trade/asyn/id", signed=True, data=params, version=1 + ) + + def margin_v1_delete_sub_account_sub_account_api_ip_restriction_ip_list( + self, **params + ): """ Placeholder function for DELETE /sapi/v1/sub-account/subAccountApi/ipRestriction/ipList. Note: This function was auto-generated. Any issue please open an issue on GitHub. @@ -15115,8 +15449,14 @@ def margin_v1_delete_sub_account_sub_account_api_ip_restriction_ip_list(self, ** :returns: API response """ - return self._request_margin_api("delete", "sub-account/subAccountApi/ipRestriction/ipList", signed=True, data=params, version=1) - + return self._request_margin_api( + "delete", + "sub-account/subAccountApi/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_copy_trading_futures_user_status(self, **params): """ Placeholder function for GET /sapi/v1/copyTrading/futures/userStatus. @@ -15127,8 +15467,10 @@ def margin_v1_get_copy_trading_futures_user_status(self, **params): :returns: API response """ - return self._request_margin_api("get", "copyTrading/futures/userStatus", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "copyTrading/futures/userStatus", signed=True, data=params, version=1 + ) + def options_v1_get_margin_account(self, **params): """ Placeholder function for GET /eapi/v1/marginAccount. @@ -15139,8 +15481,10 @@ def options_v1_get_margin_account(self, **params): :returns: API response """ - return self._request_options_api("get", "marginAccount", signed=True, data=params) - + return self._request_options_api( + "get", "marginAccount", signed=True, data=params + ) + def margin_v1_post_localentity_withdraw_apply(self, **params): """ Placeholder function for POST /sapi/v1/localentity/withdraw/apply. @@ -15151,8 +15495,10 @@ def margin_v1_post_localentity_withdraw_apply(self, **params): :returns: API response """ - return self._request_margin_api("post", "localentity/withdraw/apply", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "localentity/withdraw/apply", signed=True, data=params, version=1 + ) + def margin_v1_get_asset_wallet_balance(self, **params): """ Placeholder function for GET /sapi/v1/asset/wallet/balance. @@ -15163,8 +15509,10 @@ def margin_v1_get_asset_wallet_balance(self, **params): :returns: API response """ - return self._request_margin_api("get", "asset/wallet/balance", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "asset/wallet/balance", signed=True, data=params, version=1 + ) + def margin_v1_post_broker_transfer(self, **params): """ Placeholder function for POST /sapi/v1/broker/transfer. @@ -15175,8 +15523,10 @@ def margin_v1_post_broker_transfer(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/transfer", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "broker/transfer", signed=True, data=params, version=1 + ) + def margin_v1_post_lending_customized_fixed_purchase(self, **params): """ Placeholder function for POST /sapi/v1/lending/customizedFixed/purchase. @@ -15187,8 +15537,14 @@ def margin_v1_post_lending_customized_fixed_purchase(self, **params): :returns: API response """ - return self._request_margin_api("post", "lending/customizedFixed/purchase", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "lending/customizedFixed/purchase", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_algo_futures_new_order_twap(self, **params): """ Placeholder function for POST /sapi/v1/algo/futures/newOrderTwap. @@ -15199,8 +15555,10 @@ def margin_v1_post_algo_futures_new_order_twap(self, **params): :returns: API response """ - return self._request_margin_api("post", "algo/futures/newOrderTwap", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "algo/futures/newOrderTwap", signed=True, data=params, version=1 + ) + def margin_v2_post_eth_staking_eth_stake(self, **params): """ Placeholder function for POST /sapi/v2/eth-staking/eth/stake. @@ -15211,8 +15569,10 @@ def margin_v2_post_eth_staking_eth_stake(self, **params): :returns: API response """ - return self._request_margin_api("post", "eth-staking/eth/stake", signed=True, data=params, version=2) - + return self._request_margin_api( + "post", "eth-staking/eth/stake", signed=True, data=params, version=2 + ) + def margin_v1_post_loan_flexible_repay_history(self, **params): """ Placeholder function for POST /sapi/v1/loan/flexible/repay/history. @@ -15223,8 +15583,10 @@ def margin_v1_post_loan_flexible_repay_history(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/flexible/repay/history", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "loan/flexible/repay/history", signed=True, data=params, version=1 + ) + def margin_v1_get_lending_auto_invest_index_info(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/index/info. @@ -15235,8 +15597,10 @@ def margin_v1_get_lending_auto_invest_index_info(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/index/info", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "lending/auto-invest/index/info", signed=True, data=params, version=1 + ) + def margin_v1_get_sol_staking_sol_history_redemption_history(self, **params): """ Placeholder function for GET /sapi/v1/sol-staking/sol/history/redemptionHistory. @@ -15247,8 +15611,14 @@ def margin_v1_get_sol_staking_sol_history_redemption_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "sol-staking/sol/history/redemptionHistory", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "sol-staking/sol/history/redemptionHistory", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_broker_rebate_futures_recent_record(self, **params): """ Placeholder function for GET /sapi/v1/broker/rebate/futures/recentRecord. @@ -15259,8 +15629,14 @@ def margin_v1_get_broker_rebate_futures_recent_record(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/rebate/futures/recentRecord", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "broker/rebate/futures/recentRecord", + signed=True, + data=params, + version=1, + ) + def margin_v3_get_broker_sub_account_futures_summary(self, **params): """ Placeholder function for GET /sapi/v3/broker/subAccount/futuresSummary. @@ -15271,8 +15647,14 @@ def margin_v3_get_broker_sub_account_futures_summary(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccount/futuresSummary", signed=True, data=params, version=3) - + return self._request_margin_api( + "get", + "broker/subAccount/futuresSummary", + signed=True, + data=params, + version=3, + ) + def margin_v1_get_lending_auto_invest_target_asset_roi_list(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/target-asset/roi/list. @@ -15283,8 +15665,14 @@ def margin_v1_get_lending_auto_invest_target_asset_roi_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/target-asset/roi/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "lending/auto-invest/target-asset/roi/list", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_broker_universal_transfer(self, **params): """ Placeholder function for GET /sapi/v1/broker/universalTransfer. @@ -15295,8 +15683,10 @@ def margin_v1_get_broker_universal_transfer(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/universalTransfer", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "broker/universalTransfer", signed=True, data=params, version=1 + ) + def futures_v1_put_batch_orders(self, **params): """ Placeholder function for PUT /fapi/v1/batchOrders. @@ -15307,8 +15697,10 @@ def futures_v1_put_batch_orders(self, **params): :returns: API response """ - return self._request_futures_api("put", "batchOrders", signed=True, data=params, version=1) - + return self._request_futures_api( + "put", "batchOrders", signed=True, data=params, version=1 + ) + def options_v1_post_countdown_cancel_all_heart_beat(self, **params): """ Placeholder function for POST /eapi/v1/countdownCancelAllHeartBeat. @@ -15319,8 +15711,10 @@ def options_v1_post_countdown_cancel_all_heart_beat(self, **params): :returns: API response """ - return self._request_options_api("post", "countdownCancelAllHeartBeat", signed=True, data=params) - + return self._request_options_api( + "post", "countdownCancelAllHeartBeat", signed=True, data=params + ) + def margin_v1_get_loan_collateral_data(self, **params): """ Placeholder function for GET /sapi/v1/loan/collateral/data. @@ -15331,8 +15725,10 @@ def margin_v1_get_loan_collateral_data(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/collateral/data", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/collateral/data", signed=True, data=params, version=1 + ) + def margin_v1_get_loan_repay_history(self, **params): """ Placeholder function for GET /sapi/v1/loan/repay/history. @@ -15343,8 +15739,10 @@ def margin_v1_get_loan_repay_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/repay/history", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/repay/history", signed=True, data=params, version=1 + ) + def margin_v1_post_convert_limit_place_order(self, **params): """ Placeholder function for POST /sapi/v1/convert/limit/placeOrder. @@ -15355,8 +15753,10 @@ def margin_v1_post_convert_limit_place_order(self, **params): :returns: API response """ - return self._request_margin_api("post", "convert/limit/placeOrder", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "convert/limit/placeOrder", signed=True, data=params, version=1 + ) + def futures_v1_get_convert_exchange_info(self, **params): """ Placeholder function for GET /fapi/v1/convert/exchangeInfo. @@ -15367,8 +15767,10 @@ def futures_v1_get_convert_exchange_info(self, **params): :returns: API response """ - return self._request_futures_api("get", "convert/exchangeInfo", signed=False, data=params, version=1) - + return self._request_futures_api( + "get", "convert/exchangeInfo", signed=False, data=params, version=1 + ) + def v3_get_all_order_list(self, **params): """ Placeholder function for GET /api/v3/allOrderList. @@ -15379,8 +15781,10 @@ def v3_get_all_order_list(self, **params): :returns: API response """ - return self._request_api("get", "allOrderList", signed=True, data=params, version="v3") - + return self._request_api( + "get", "allOrderList", signed=True, data=params, version="v3" + ) + def margin_v1_delete_broker_sub_account_api_ip_restriction_ip_list(self, **params): """ Placeholder function for DELETE /sapi/v1/broker/subAccountApi/ipRestriction/ipList. @@ -15391,8 +15795,14 @@ def margin_v1_delete_broker_sub_account_api_ip_restriction_ip_list(self, **param :returns: API response """ - return self._request_margin_api("delete", "broker/subAccountApi/ipRestriction/ipList", signed=True, data=params, version=1) - + return self._request_margin_api( + "delete", + "broker/subAccountApi/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_sub_account_virtual_sub_account(self, **params): """ Placeholder function for POST /sapi/v1/sub-account/virtualSubAccount. @@ -15403,8 +15813,10 @@ def margin_v1_post_sub_account_virtual_sub_account(self, **params): :returns: API response """ - return self._request_margin_api("post", "sub-account/virtualSubAccount", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "sub-account/virtualSubAccount", signed=True, data=params, version=1 + ) + def margin_v1_put_localentity_deposit_provide_info(self, **params): """ Placeholder function for PUT /sapi/v1/localentity/deposit/provide-info. @@ -15415,8 +15827,14 @@ def margin_v1_put_localentity_deposit_provide_info(self, **params): :returns: API response """ - return self._request_margin_api("put", "localentity/deposit/provide-info", signed=True, data=params, version=1) - + return self._request_margin_api( + "put", + "localentity/deposit/provide-info", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_portfolio_mint(self, **params): """ Placeholder function for POST /sapi/v1/portfolio/mint. @@ -15427,8 +15845,10 @@ def margin_v1_post_portfolio_mint(self, **params): :returns: API response """ - return self._request_margin_api("post", "portfolio/mint", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "portfolio/mint", signed=True, data=params, version=1 + ) + def futures_v1_get_order_amendment(self, **params): """ Placeholder function for GET /fapi/v1/orderAmendment. @@ -15439,8 +15859,10 @@ def futures_v1_get_order_amendment(self, **params): :returns: API response """ - return self._request_futures_api("get", "orderAmendment", signed=True, data=params, version=1) - + return self._request_futures_api( + "get", "orderAmendment", signed=True, data=params, version=1 + ) + def margin_v1_post_sol_staking_sol_claim(self, **params): """ Placeholder function for POST /sapi/v1/sol-staking/sol/claim. @@ -15451,8 +15873,10 @@ def margin_v1_post_sol_staking_sol_claim(self, **params): :returns: API response """ - return self._request_margin_api("post", "sol-staking/sol/claim", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "sol-staking/sol/claim", signed=True, data=params, version=1 + ) + def margin_v1_post_lending_daily_redeem(self, **params): """ Placeholder function for POST /sapi/v1/lending/daily/redeem. @@ -15463,8 +15887,10 @@ def margin_v1_post_lending_daily_redeem(self, **params): :returns: API response """ - return self._request_margin_api("post", "lending/daily/redeem", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "lending/daily/redeem", signed=True, data=params, version=1 + ) + def margin_v1_post_mining_hash_transfer_config(self, **params): """ Placeholder function for POST /sapi/v1/mining/hash-transfer/config. @@ -15475,8 +15901,10 @@ def margin_v1_post_mining_hash_transfer_config(self, **params): :returns: API response """ - return self._request_margin_api("post", "mining/hash-transfer/config", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "mining/hash-transfer/config", signed=True, data=params, version=1 + ) + def margin_v1_get_lending_auto_invest_rebalance_history(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/rebalance/history. @@ -15487,8 +15915,14 @@ def margin_v1_get_lending_auto_invest_rebalance_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/rebalance/history", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "lending/auto-invest/rebalance/history", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_loan_repay_collateral_rate(self, **params): """ Placeholder function for GET /sapi/v1/loan/repay/collateral/rate. @@ -15499,8 +15933,10 @@ def margin_v1_get_loan_repay_collateral_rate(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/repay/collateral/rate", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/repay/collateral/rate", signed=True, data=params, version=1 + ) + def futures_v1_get_income_asyn(self, **params): """ Placeholder function for GET /fapi/v1/income/asyn. @@ -15511,8 +15947,10 @@ def futures_v1_get_income_asyn(self, **params): :returns: API response """ - return self._request_futures_api("get", "income/asyn", signed=True, data=params, version=1) - + return self._request_futures_api( + "get", "income/asyn", signed=True, data=params, version=1 + ) + def margin_v1_get_mining_payment_uid(self, **params): """ Placeholder function for GET /sapi/v1/mining/payment/uid. @@ -15523,8 +15961,10 @@ def margin_v1_get_mining_payment_uid(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/payment/uid", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "mining/payment/uid", signed=True, data=params, version=1 + ) + def margin_v2_get_loan_flexible_borrow_history(self, **params): """ Placeholder function for GET /sapi/v2/loan/flexible/borrow/history. @@ -15535,8 +15975,10 @@ def margin_v2_get_loan_flexible_borrow_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/flexible/borrow/history", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", "loan/flexible/borrow/history", signed=True, data=params, version=2 + ) + def margin_v1_get_capital_contract_convertible_coins(self, **params): """ Placeholder function for GET /sapi/v1/capital/contract/convertible-coins. @@ -15547,9 +15989,17 @@ def margin_v1_get_capital_contract_convertible_coins(self, **params): :returns: API response """ - return self._request_margin_api("get", "capital/contract/convertible-coins", signed=True, data=params, version=1) - - def margin_v1_post_broker_sub_account_api_permission_vanilla_options(self, **params): + return self._request_margin_api( + "get", + "capital/contract/convertible-coins", + signed=True, + data=params, + version=1, + ) + + def margin_v1_post_broker_sub_account_api_permission_vanilla_options( + self, **params + ): """ Placeholder function for POST /sapi/v1/broker/subAccountApi/permission/vanillaOptions. Note: This function was auto-generated. Any issue please open an issue on GitHub. @@ -15559,8 +16009,14 @@ def margin_v1_post_broker_sub_account_api_permission_vanilla_options(self, **par :returns: API response """ - return self._request_margin_api("post", "broker/subAccountApi/permission/vanillaOptions", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "broker/subAccountApi/permission/vanillaOptions", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_lending_auto_invest_redeem_history(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/redeem/history. @@ -15571,8 +16027,14 @@ def margin_v1_get_lending_auto_invest_redeem_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/redeem/history", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "lending/auto-invest/redeem/history", + signed=True, + data=params, + version=1, + ) + def margin_v2_get_localentity_withdraw_history(self, **params): """ Placeholder function for GET /sapi/v2/localentity/withdraw/history. @@ -15583,8 +16045,10 @@ def margin_v2_get_localentity_withdraw_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "localentity/withdraw/history", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", "localentity/withdraw/history", signed=True, data=params, version=2 + ) + def margin_v1_get_eth_staking_eth_history_redemption_history(self, **params): """ Placeholder function for GET /sapi/v1/eth-staking/eth/history/redemptionHistory. @@ -15595,8 +16059,14 @@ def margin_v1_get_eth_staking_eth_history_redemption_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "eth-staking/eth/history/redemptionHistory", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "eth-staking/eth/history/redemptionHistory", + signed=True, + data=params, + version=1, + ) + def futures_v1_get_fee_burn(self, **params): """ Placeholder function for GET /fapi/v1/feeBurn. @@ -15607,8 +16077,10 @@ def futures_v1_get_fee_burn(self, **params): :returns: API response """ - return self._request_futures_api("get", "feeBurn", signed=True, data=params, version=1) - + return self._request_futures_api( + "get", "feeBurn", signed=True, data=params, version=1 + ) + def margin_v1_get_lending_auto_invest_index_user_summary(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/index/user-summary. @@ -15619,8 +16091,14 @@ def margin_v1_get_lending_auto_invest_index_user_summary(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/index/user-summary", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "lending/auto-invest/index/user-summary", + signed=True, + data=params, + version=1, + ) + def margin_v2_post_loan_flexible_borrow(self, **params): """ Placeholder function for POST /sapi/v2/loan/flexible/borrow. @@ -15631,8 +16109,10 @@ def margin_v2_post_loan_flexible_borrow(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/flexible/borrow", signed=True, data=params, version=2) - + return self._request_margin_api( + "post", "loan/flexible/borrow", signed=True, data=params, version=2 + ) + def margin_v1_post_loan_vip_repay(self, **params): """ Placeholder function for POST /sapi/v1/loan/vip/repay. @@ -15643,8 +16123,10 @@ def margin_v1_post_loan_vip_repay(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/vip/repay", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "loan/vip/repay", signed=True, data=params, version=1 + ) + def futures_coin_v1_get_commission_rate(self, **params): """ Placeholder function for GET /dapi/v1/commissionRate. @@ -15655,8 +16137,10 @@ def futures_coin_v1_get_commission_rate(self, **params): :returns: API response """ - return self._request_futures_coin_api("get", "commissionRate", signed=True, data=params, version=1) - + return self._request_futures_coin_api( + "get", "commissionRate", signed=True, data=params, version=1 + ) + def margin_v1_get_convert_asset_info(self, **params): """ Placeholder function for GET /sapi/v1/convert/assetInfo. @@ -15667,8 +16151,10 @@ def margin_v1_get_convert_asset_info(self, **params): :returns: API response """ - return self._request_margin_api("get", "convert/assetInfo", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "convert/assetInfo", signed=True, data=params, version=1 + ) + def v3_post_sor_order_test(self, **params): """ Placeholder function for POST /api/v3/sor/order/test. @@ -15679,8 +16165,10 @@ def v3_post_sor_order_test(self, **params): :returns: API response """ - return self._request_api("post", "sor/order/test", signed=True, data=params, version="v3") - + return self._request_api( + "post", "sor/order/test", signed=True, data=params, version="v3" + ) + def margin_v1_post_broker_universal_transfer(self, **params): """ Placeholder function for POST /sapi/v1/broker/universalTransfer. @@ -15691,8 +16179,10 @@ def margin_v1_post_broker_universal_transfer(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/universalTransfer", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "broker/universalTransfer", signed=True, data=params, version=1 + ) + def margin_v1_post_account_disable_fast_withdraw_switch(self, **params): """ Placeholder function for POST /sapi/v1/account/disableFastWithdrawSwitch. @@ -15703,8 +16193,14 @@ def margin_v1_post_account_disable_fast_withdraw_switch(self, **params): :returns: API response """ - return self._request_margin_api("post", "account/disableFastWithdrawSwitch", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "account/disableFastWithdrawSwitch", + signed=True, + data=params, + version=1, + ) + def futures_v1_get_asset_index(self, **params): """ Placeholder function for GET /fapi/v1/assetIndex. @@ -15715,8 +16211,10 @@ def futures_v1_get_asset_index(self, **params): :returns: API response """ - return self._request_futures_api("get", "assetIndex", signed=False, data=params, version=1) - + return self._request_futures_api( + "get", "assetIndex", signed=False, data=params, version=1 + ) + def margin_v1_get_account_api_restrictions_ip_restriction(self, **params): """ Placeholder function for GET /sapi/v1/account/apiRestrictions/ipRestriction. @@ -15727,8 +16225,14 @@ def margin_v1_get_account_api_restrictions_ip_restriction(self, **params): :returns: API response """ - return self._request_margin_api("get", "account/apiRestrictions/ipRestriction", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "account/apiRestrictions/ipRestriction", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_broker_sub_account_bnb_burn_spot(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccount/bnbBurn/spot. @@ -15739,8 +16243,14 @@ def margin_v1_post_broker_sub_account_bnb_burn_spot(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/subAccount/bnbBurn/spot", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "broker/subAccount/bnbBurn/spot", + signed=True, + data=params, + version=1, + ) + def futures_coin_v1_put_batch_orders(self, **params): """ Placeholder function for PUT /dapi/v1/batchOrders. @@ -15751,8 +16261,10 @@ def futures_coin_v1_put_batch_orders(self, **params): :returns: API response """ - return self._request_futures_coin_api("put", "batchOrders", signed=True, data=params, version=1) - + return self._request_futures_coin_api( + "put", "batchOrders", signed=True, data=params, version=1 + ) + def margin_v1_get_margin_delist_schedule(self, **params): """ Placeholder function for GET /sapi/v1/margin/delist-schedule. @@ -15763,9 +16275,13 @@ def margin_v1_get_margin_delist_schedule(self, **params): :returns: API response """ - return self._request_margin_api("get", "margin/delist-schedule", signed=True, data=params, version=1) - - def margin_v1_post_broker_sub_account_api_permission_universal_transfer(self, **params): + return self._request_margin_api( + "get", "margin/delist-schedule", signed=True, data=params, version=1 + ) + + def margin_v1_post_broker_sub_account_api_permission_universal_transfer( + self, **params + ): """ Placeholder function for POST /sapi/v1/broker/subAccountApi/permission/universalTransfer. Note: This function was auto-generated. Any issue please open an issue on GitHub. @@ -15775,8 +16291,14 @@ def margin_v1_post_broker_sub_account_api_permission_universal_transfer(self, ** :returns: API response """ - return self._request_margin_api("post", "broker/subAccountApi/permission/universalTransfer", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "broker/subAccountApi/permission/universalTransfer", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_loan_ltv_adjustment_history(self, **params): """ Placeholder function for GET /sapi/v1/loan/ltv/adjustment/history. @@ -15787,8 +16309,10 @@ def margin_v1_get_loan_ltv_adjustment_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/ltv/adjustment/history", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/ltv/adjustment/history", signed=True, data=params, version=1 + ) + def margin_v1_get_localentity_withdraw_history(self, **params): """ Placeholder function for GET /sapi/v1/localentity/withdraw/history. @@ -15799,8 +16323,10 @@ def margin_v1_get_localentity_withdraw_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "localentity/withdraw/history", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "localentity/withdraw/history", signed=True, data=params, version=1 + ) + def margin_v2_post_sub_account_sub_account_api_ip_restriction(self, **params): """ Placeholder function for POST /sapi/v2/sub-account/subAccountApi/ipRestriction. @@ -15811,8 +16337,14 @@ def margin_v2_post_sub_account_sub_account_api_ip_restriction(self, **params): :returns: API response """ - return self._request_margin_api("post", "sub-account/subAccountApi/ipRestriction", signed=True, data=params, version=2) - + return self._request_margin_api( + "post", + "sub-account/subAccountApi/ipRestriction", + signed=True, + data=params, + version=2, + ) + def futures_v1_get_rate_limit_order(self, **params): """ Placeholder function for GET /fapi/v1/rateLimit/order. @@ -15823,8 +16355,10 @@ def futures_v1_get_rate_limit_order(self, **params): :returns: API response """ - return self._request_futures_api("get", "rateLimit/order", signed=True, data=params, version=1) - + return self._request_futures_api( + "get", "rateLimit/order", signed=True, data=params, version=1 + ) + def margin_v1_get_broker_sub_account_api_commission_futures(self, **params): """ Placeholder function for GET /sapi/v1/broker/subAccountApi/commission/futures. @@ -15835,8 +16369,14 @@ def margin_v1_get_broker_sub_account_api_commission_futures(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccountApi/commission/futures", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "broker/subAccountApi/commission/futures", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_sol_staking_sol_history_staking_history(self, **params): """ Placeholder function for GET /sapi/v1/sol-staking/sol/history/stakingHistory. @@ -15847,8 +16387,14 @@ def margin_v1_get_sol_staking_sol_history_staking_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "sol-staking/sol/history/stakingHistory", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "sol-staking/sol/history/stakingHistory", + signed=True, + data=params, + version=1, + ) + def futures_v1_get_open_order(self, **params): """ Placeholder function for GET /fapi/v1/openOrder. @@ -15859,8 +16405,10 @@ def futures_v1_get_open_order(self, **params): :returns: API response """ - return self._request_futures_api("get", "openOrder", signed=True, data=params, version=1) - + return self._request_futures_api( + "get", "openOrder", signed=True, data=params, version=1 + ) + def margin_v1_delete_algo_spot_order(self, **params): """ Placeholder function for DELETE /sapi/v1/algo/spot/order. @@ -15871,9 +16419,13 @@ def margin_v1_delete_algo_spot_order(self, **params): :returns: API response """ - return self._request_margin_api("delete", "algo/spot/order", signed=True, data=params, version=1) - - def margin_v1_delete_account_api_restrictions_ip_restriction_ip_list(self, **params): + return self._request_margin_api( + "delete", "algo/spot/order", signed=True, data=params, version=1 + ) + + def margin_v1_delete_account_api_restrictions_ip_restriction_ip_list( + self, **params + ): """ Placeholder function for DELETE /sapi/v1/account/apiRestrictions/ipRestriction/ipList. Note: This function was auto-generated. Any issue please open an issue on GitHub. @@ -15883,8 +16435,14 @@ def margin_v1_delete_account_api_restrictions_ip_restriction_ip_list(self, **par :returns: API response """ - return self._request_margin_api("delete", "account/apiRestrictions/ipRestriction/ipList", signed=True, data=params, version=1) - + return self._request_margin_api( + "delete", + "account/apiRestrictions/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_capital_contract_convertible_coins(self, **params): """ Placeholder function for POST /sapi/v1/capital/contract/convertible-coins. @@ -15895,8 +16453,14 @@ def margin_v1_post_capital_contract_convertible_coins(self, **params): :returns: API response """ - return self._request_margin_api("post", "capital/contract/convertible-coins", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "capital/contract/convertible-coins", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_managed_subaccount_margin_asset(self, **params): """ Placeholder function for GET /sapi/v1/managed-subaccount/marginAsset. @@ -15907,8 +16471,10 @@ def margin_v1_get_managed_subaccount_margin_asset(self, **params): :returns: API response """ - return self._request_margin_api("get", "managed-subaccount/marginAsset", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "managed-subaccount/marginAsset", signed=True, data=params, version=1 + ) + def v3_delete_order_list(self, **params): """ Placeholder function for DELETE /api/v3/orderList. @@ -15919,9 +16485,13 @@ def v3_delete_order_list(self, **params): :returns: API response """ - return self._request_api("delete", "orderList", signed=True, data=params, version="v3") - - def margin_v1_post_sub_account_sub_account_api_ip_restriction_ip_list(self, **params): + return self._request_api( + "delete", "orderList", signed=True, data=params, version="v3" + ) + + def margin_v1_post_sub_account_sub_account_api_ip_restriction_ip_list( + self, **params + ): """ Placeholder function for POST /sapi/v1/sub-account/subAccountApi/ipRestriction/ipList. Note: This function was auto-generated. Any issue please open an issue on GitHub. @@ -15931,8 +16501,14 @@ def margin_v1_post_sub_account_sub_account_api_ip_restriction_ip_list(self, **pa :returns: API response """ - return self._request_margin_api("post", "sub-account/subAccountApi/ipRestriction/ipList", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "sub-account/subAccountApi/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_broker_sub_account_api_commission(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccountApi/commission. @@ -15943,8 +16519,14 @@ def margin_v1_post_broker_sub_account_api_commission(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/subAccountApi/commission", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "broker/subAccountApi/commission", + signed=True, + data=params, + version=1, + ) + def futures_v1_post_fee_burn(self, **params): """ Placeholder function for POST /fapi/v1/feeBurn. @@ -15955,8 +16537,10 @@ def futures_v1_post_fee_burn(self, **params): :returns: API response """ - return self._request_futures_api("post", "feeBurn", signed=True, data=params, version=1) - + return self._request_futures_api( + "post", "feeBurn", signed=True, data=params, version=1 + ) + def margin_v1_get_broker_sub_account_margin_summary(self, **params): """ Placeholder function for GET /sapi/v1/broker/subAccount/marginSummary. @@ -15967,8 +16551,14 @@ def margin_v1_get_broker_sub_account_margin_summary(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccount/marginSummary", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "broker/subAccount/marginSummary", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_lending_auto_invest_plan_list(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/plan/list. @@ -15979,8 +16569,10 @@ def margin_v1_get_lending_auto_invest_plan_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/plan/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "lending/auto-invest/plan/list", signed=True, data=params, version=1 + ) + def margin_v1_get_loan_vip_loanable_data(self, **params): """ Placeholder function for GET /sapi/v1/loan/vip/loanable/data. @@ -15991,8 +16583,10 @@ def margin_v1_get_loan_vip_loanable_data(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/vip/loanable/data", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/vip/loanable/data", signed=True, data=params, version=1 + ) + def margin_v2_get_loan_flexible_collateral_data(self, **params): """ Placeholder function for GET /sapi/v2/loan/flexible/collateral/data. @@ -16003,8 +16597,10 @@ def margin_v2_get_loan_flexible_collateral_data(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/flexible/collateral/data", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", "loan/flexible/collateral/data", signed=True, data=params, version=2 + ) + def margin_v1_delete_broker_sub_account_api(self, **params): """ Placeholder function for DELETE /sapi/v1/broker/subAccountApi. @@ -16015,8 +16611,10 @@ def margin_v1_delete_broker_sub_account_api(self, **params): :returns: API response """ - return self._request_margin_api("delete", "broker/subAccountApi", signed=True, data=params, version=1) - + return self._request_margin_api( + "delete", "broker/subAccountApi", signed=True, data=params, version=1 + ) + def margin_v1_get_sol_staking_sol_history_bnsol_rewards_history(self, **params): """ Placeholder function for GET /sapi/v1/sol-staking/sol/history/bnsolRewardsHistory. @@ -16027,8 +16625,14 @@ def margin_v1_get_sol_staking_sol_history_bnsol_rewards_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "sol-staking/sol/history/bnsolRewardsHistory", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "sol-staking/sol/history/bnsolRewardsHistory", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_convert_limit_query_open_orders(self, **params): """ Placeholder function for GET /sapi/v1/convert/limit/queryOpenOrders. @@ -16039,8 +16643,10 @@ def margin_v1_get_convert_limit_query_open_orders(self, **params): :returns: API response """ - return self._request_margin_api("get", "convert/limit/queryOpenOrders", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "convert/limit/queryOpenOrders", signed=True, data=params, version=1 + ) + def v3_get_account_commission(self, **params): """ Placeholder function for GET /api/v3/account/commission. @@ -16051,8 +16657,10 @@ def v3_get_account_commission(self, **params): :returns: API response """ - return self._request_api("get", "account/commission", signed=True, data=params, version="v3") - + return self._request_api( + "get", "account/commission", signed=True, data=params, version="v3" + ) + def margin_v1_get_managed_subaccount_query_trans_log(self, **params): """ Placeholder function for GET /sapi/v1/managed-subaccount/query-trans-log. @@ -16063,8 +16671,14 @@ def margin_v1_get_managed_subaccount_query_trans_log(self, **params): :returns: API response """ - return self._request_margin_api("get", "managed-subaccount/query-trans-log", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "managed-subaccount/query-trans-log", + signed=True, + data=params, + version=1, + ) + def margin_v2_post_broker_sub_account_api_ip_restriction(self, **params): """ Placeholder function for POST /sapi/v2/broker/subAccountApi/ipRestriction. @@ -16075,8 +16689,14 @@ def margin_v2_post_broker_sub_account_api_ip_restriction(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/subAccountApi/ipRestriction", signed=True, data=params, version=2) - + return self._request_margin_api( + "post", + "broker/subAccountApi/ipRestriction", + signed=True, + data=params, + version=2, + ) + def margin_v1_get_lending_auto_invest_all_asset(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/all/asset. @@ -16087,8 +16707,10 @@ def margin_v1_get_lending_auto_invest_all_asset(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/all/asset", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "lending/auto-invest/all/asset", signed=True, data=params, version=1 + ) + def futures_v1_post_convert_accept_quote(self, **params): """ Placeholder function for POST /fapi/v1/convert/acceptQuote. @@ -16099,8 +16721,10 @@ def futures_v1_post_convert_accept_quote(self, **params): :returns: API response """ - return self._request_futures_api("post", "convert/acceptQuote", signed=True, data=params, version=1) - + return self._request_futures_api( + "post", "convert/acceptQuote", signed=True, data=params, version=1 + ) + def margin_v1_get_spot_delist_schedule(self, **params): """ Placeholder function for GET /sapi/v1/spot/delist-schedule. @@ -16111,8 +16735,10 @@ def margin_v1_get_spot_delist_schedule(self, **params): :returns: API response """ - return self._request_margin_api("get", "spot/delist-schedule", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "spot/delist-schedule", signed=True, data=params, version=1 + ) + def margin_v1_post_account_api_restrictions_ip_restriction(self, **params): """ Placeholder function for POST /sapi/v1/account/apiRestrictions/ipRestriction. @@ -16123,8 +16749,14 @@ def margin_v1_post_account_api_restrictions_ip_restriction(self, **params): :returns: API response """ - return self._request_margin_api("post", "account/apiRestrictions/ipRestriction", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "account/apiRestrictions/ipRestriction", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_dci_product_accounts(self, **params): """ Placeholder function for GET /sapi/v1/dci/product/accounts. @@ -16135,8 +16767,10 @@ def margin_v1_get_dci_product_accounts(self, **params): :returns: API response """ - return self._request_margin_api("get", "dci/product/accounts", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "dci/product/accounts", signed=True, data=params, version=1 + ) + def margin_v1_get_sub_account_sub_account_api_ip_restriction(self, **params): """ Placeholder function for GET /sapi/v1/sub-account/subAccountApi/ipRestriction. @@ -16147,8 +16781,14 @@ def margin_v1_get_sub_account_sub_account_api_ip_restriction(self, **params): :returns: API response """ - return self._request_margin_api("get", "sub-account/subAccountApi/ipRestriction", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "sub-account/subAccountApi/ipRestriction", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_sub_account_transaction_statistics(self, **params): """ Placeholder function for GET /sapi/v1/sub-account/transaction-statistics. @@ -16159,8 +16799,14 @@ def margin_v1_get_sub_account_transaction_statistics(self, **params): :returns: API response """ - return self._request_margin_api("get", "sub-account/transaction-statistics", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "sub-account/transaction-statistics", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_managed_subaccount_deposit_address(self, **params): """ Placeholder function for GET /sapi/v1/managed-subaccount/deposit/address. @@ -16171,8 +16817,14 @@ def margin_v1_get_managed_subaccount_deposit_address(self, **params): :returns: API response """ - return self._request_margin_api("get", "managed-subaccount/deposit/address", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "managed-subaccount/deposit/address", + signed=True, + data=params, + version=1, + ) + def margin_v2_get_portfolio_account(self, **params): """ Placeholder function for GET /sapi/v2/portfolio/account. @@ -16183,8 +16835,10 @@ def margin_v2_get_portfolio_account(self, **params): :returns: API response """ - return self._request_margin_api("get", "portfolio/account", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", "portfolio/account", signed=True, data=params, version=2 + ) + def margin_v1_get_simple_earn_locked_history_redemption_record(self, **params): """ Placeholder function for GET /sapi/v1/simple-earn/locked/history/redemptionRecord. @@ -16195,8 +16849,14 @@ def margin_v1_get_simple_earn_locked_history_redemption_record(self, **params): :returns: API response """ - return self._request_margin_api("get", "simple-earn/locked/history/redemptionRecord", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "simple-earn/locked/history/redemptionRecord", + signed=True, + data=params, + version=1, + ) + def futures_v1_get_order_asyn_id(self, **params): """ Placeholder function for GET /fapi/v1/order/asyn/id. @@ -16207,8 +16867,10 @@ def futures_v1_get_order_asyn_id(self, **params): :returns: API response """ - return self._request_futures_api("get", "order/asyn/id", signed=True, data=params, version=1) - + return self._request_futures_api( + "get", "order/asyn/id", signed=True, data=params, version=1 + ) + def margin_v1_post_managed_subaccount_withdraw(self, **params): """ Placeholder function for POST /sapi/v1/managed-subaccount/withdraw. @@ -16219,8 +16881,10 @@ def margin_v1_post_managed_subaccount_withdraw(self, **params): :returns: API response """ - return self._request_margin_api("post", "managed-subaccount/withdraw", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "managed-subaccount/withdraw", signed=True, data=params, version=1 + ) + def margin_v1_get_localentity_deposit_history(self, **params): """ Placeholder function for GET /sapi/v1/localentity/deposit/history. @@ -16231,8 +16895,10 @@ def margin_v1_get_localentity_deposit_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "localentity/deposit/history", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "localentity/deposit/history", signed=True, data=params, version=1 + ) + def margin_v1_post_eth_staking_wbeth_wrap(self, **params): """ Placeholder function for POST /sapi/v1/eth-staking/wbeth/wrap. @@ -16243,8 +16909,10 @@ def margin_v1_post_eth_staking_wbeth_wrap(self, **params): :returns: API response """ - return self._request_margin_api("post", "eth-staking/wbeth/wrap", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "eth-staking/wbeth/wrap", signed=True, data=params, version=1 + ) + def margin_v1_post_simple_earn_locked_set_redeem_option(self, **params): """ Placeholder function for POST /sapi/v1/simple-earn/locked/setRedeemOption. @@ -16255,8 +16923,14 @@ def margin_v1_post_simple_earn_locked_set_redeem_option(self, **params): :returns: API response """ - return self._request_margin_api("post", "simple-earn/locked/setRedeemOption", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "simple-earn/locked/setRedeemOption", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_broker_sub_account_api_ip_restriction_ip_list(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccountApi/ipRestriction/ipList. @@ -16267,8 +16941,14 @@ def margin_v1_post_broker_sub_account_api_ip_restriction_ip_list(self, **params) :returns: API response """ - return self._request_margin_api("post", "broker/subAccountApi/ipRestriction/ipList", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "broker/subAccountApi/ipRestriction/ipList", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_broker_sub_account_api_commission_futures(self, **params): """ Placeholder function for POST /sapi/v1/broker/subAccountApi/commission/futures. @@ -16279,8 +16959,14 @@ def margin_v1_post_broker_sub_account_api_commission_futures(self, **params): :returns: API response """ - return self._request_margin_api("post", "broker/subAccountApi/commission/futures", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "broker/subAccountApi/commission/futures", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_lending_auto_invest_history_list(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/history/list. @@ -16291,8 +16977,14 @@ def margin_v1_get_lending_auto_invest_history_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/history/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "lending/auto-invest/history/list", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_loan_customize_margin_call(self, **params): """ Placeholder function for POST /sapi/v1/loan/customize/margin_call. @@ -16303,8 +16995,10 @@ def margin_v1_post_loan_customize_margin_call(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/customize/margin_call", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "loan/customize/margin_call", signed=True, data=params, version=1 + ) + def margin_v1_get_broker_sub_account_bnb_burn_status(self, **params): """ Placeholder function for GET /sapi/v1/broker/subAccount/bnbBurn/status. @@ -16315,8 +17009,14 @@ def margin_v1_get_broker_sub_account_bnb_burn_status(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccount/bnbBurn/status", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "broker/subAccount/bnbBurn/status", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_managed_subaccount_account_snapshot(self, **params): """ Placeholder function for GET /sapi/v1/managed-subaccount/accountSnapshot. @@ -16327,8 +17027,14 @@ def margin_v1_get_managed_subaccount_account_snapshot(self, **params): :returns: API response """ - return self._request_margin_api("get", "managed-subaccount/accountSnapshot", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "managed-subaccount/accountSnapshot", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_asset_convert_transfer(self, **params): """ Placeholder function for POST /sapi/v1/asset/convert-transfer. @@ -16339,8 +17045,10 @@ def margin_v1_post_asset_convert_transfer(self, **params): :returns: API response """ - return self._request_margin_api("post", "asset/convert-transfer", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "asset/convert-transfer", signed=True, data=params, version=1 + ) + def options_v1_get_income_asyn(self, **params): """ Placeholder function for GET /eapi/v1/income/asyn. @@ -16352,7 +17060,7 @@ def options_v1_get_income_asyn(self, **params): :returns: API response """ return self._request_options_api("get", "income/asyn", signed=True, data=params) - + def margin_v1_get_broker_sub_account_api_commission_coin_futures(self, **params): """ Placeholder function for GET /sapi/v1/broker/subAccountApi/commission/coinFutures. @@ -16363,8 +17071,14 @@ def margin_v1_get_broker_sub_account_api_commission_coin_futures(self, **params) :returns: API response """ - return self._request_margin_api("get", "broker/subAccountApi/commission/coinFutures", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "broker/subAccountApi/commission/coinFutures", + signed=True, + data=params, + version=1, + ) + def margin_v2_get_broker_sub_account_futures_summary(self, **params): """ Placeholder function for GET /sapi/v2/broker/subAccount/futuresSummary. @@ -16375,8 +17089,14 @@ def margin_v2_get_broker_sub_account_futures_summary(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccount/futuresSummary", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", + "broker/subAccount/futuresSummary", + signed=True, + data=params, + version=2, + ) + def margin_v1_get_loan_ongoing_orders(self, **params): """ Placeholder function for GET /sapi/v1/loan/ongoing/orders. @@ -16387,8 +17107,10 @@ def margin_v1_get_loan_ongoing_orders(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/ongoing/orders", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "loan/ongoing/orders", signed=True, data=params, version=1 + ) + def margin_v2_get_loan_flexible_ongoing_orders(self, **params): """ Placeholder function for GET /sapi/v2/loan/flexible/ongoing/orders. @@ -16399,8 +17121,10 @@ def margin_v2_get_loan_flexible_ongoing_orders(self, **params): :returns: API response """ - return self._request_margin_api("get", "loan/flexible/ongoing/orders", signed=True, data=params, version=2) - + return self._request_margin_api( + "get", "loan/flexible/ongoing/orders", signed=True, data=params, version=2 + ) + def margin_v1_post_algo_futures_new_order_vp(self, **params): """ Placeholder function for POST /sapi/v1/algo/futures/newOrderVp. @@ -16411,8 +17135,10 @@ def margin_v1_post_algo_futures_new_order_vp(self, **params): :returns: API response """ - return self._request_margin_api("post", "algo/futures/newOrderVp", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "algo/futures/newOrderVp", signed=True, data=params, version=1 + ) + def futures_v1_post_convert_get_quote(self, **params): """ Placeholder function for POST /fapi/v1/convert/getQuote. @@ -16423,8 +17149,10 @@ def futures_v1_post_convert_get_quote(self, **params): :returns: API response """ - return self._request_futures_api("post", "convert/getQuote", signed=True, data=params, version=1) - + return self._request_futures_api( + "post", "convert/getQuote", signed=True, data=params, version=1 + ) + def margin_v1_get_algo_spot_sub_orders(self, **params): """ Placeholder function for GET /sapi/v1/algo/spot/subOrders. @@ -16435,8 +17163,10 @@ def margin_v1_get_algo_spot_sub_orders(self, **params): :returns: API response """ - return self._request_margin_api("get", "algo/spot/subOrders", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "algo/spot/subOrders", signed=True, data=params, version=1 + ) + def margin_v1_post_portfolio_redeem(self, **params): """ Placeholder function for POST /sapi/v1/portfolio/redeem. @@ -16447,8 +17177,10 @@ def margin_v1_post_portfolio_redeem(self, **params): :returns: API response """ - return self._request_margin_api("post", "portfolio/redeem", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "portfolio/redeem", signed=True, data=params, version=1 + ) + def margin_v1_post_lending_auto_invest_plan_add(self, **params): """ Placeholder function for POST /sapi/v1/lending/auto-invest/plan/add. @@ -16459,8 +17191,10 @@ def margin_v1_post_lending_auto_invest_plan_add(self, **params): :returns: API response """ - return self._request_margin_api("post", "lending/auto-invest/plan/add", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "lending/auto-invest/plan/add", signed=True, data=params, version=1 + ) + def v3_get_order_list(self, **params): """ Placeholder function for GET /api/v3/orderList. @@ -16471,8 +17205,10 @@ def v3_get_order_list(self, **params): :returns: API response """ - return self._request_api("get", "orderList", signed=True, data=params, version="v3") - + return self._request_api( + "get", "orderList", signed=True, data=params, version="v3" + ) + def margin_v1_get_lending_auto_invest_source_asset_list(self, **params): """ Placeholder function for GET /sapi/v1/lending/auto-invest/source-asset/list. @@ -16483,8 +17219,14 @@ def margin_v1_get_lending_auto_invest_source_asset_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "lending/auto-invest/source-asset/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "lending/auto-invest/source-asset/list", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_margin_all_order_list(self, **params): """ Placeholder function for GET /sapi/v1/margin/allOrderList. @@ -16495,8 +17237,10 @@ def margin_v1_get_margin_all_order_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "margin/allOrderList", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "margin/allOrderList", signed=True, data=params, version=1 + ) + def margin_v1_post_eth_staking_eth_redeem(self, **params): """ Placeholder function for POST /sapi/v1/eth-staking/eth/redeem. @@ -16507,8 +17251,10 @@ def margin_v1_post_eth_staking_eth_redeem(self, **params): :returns: API response """ - return self._request_margin_api("post", "eth-staking/eth/redeem", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", "eth-staking/eth/redeem", signed=True, data=params, version=1 + ) + def margin_v1_get_broker_rebate_historical_record(self, **params): """ Placeholder function for GET /sapi/v1/broker/rebate/historicalRecord. @@ -16519,8 +17265,10 @@ def margin_v1_get_broker_rebate_historical_record(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/rebate/historicalRecord", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "broker/rebate/historicalRecord", signed=True, data=params, version=1 + ) + def margin_v1_get_simple_earn_locked_history_subscription_record(self, **params): """ Placeholder function for GET /sapi/v1/simple-earn/locked/history/subscriptionRecord. @@ -16531,8 +17279,14 @@ def margin_v1_get_simple_earn_locked_history_subscription_record(self, **params) :returns: API response """ - return self._request_margin_api("get", "simple-earn/locked/history/subscriptionRecord", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "simple-earn/locked/history/subscriptionRecord", + signed=True, + data=params, + version=1, + ) + def futures_coin_v1_put_order(self, **params): """ Placeholder function for PUT /dapi/v1/order. @@ -16543,8 +17297,10 @@ def futures_coin_v1_put_order(self, **params): :returns: API response """ - return self._request_futures_coin_api("put", "order", signed=True, data=params, version=1) - + return self._request_futures_coin_api( + "put", "order", signed=True, data=params, version=1 + ) + def margin_v1_get_managed_subaccount_asset(self, **params): """ Placeholder function for GET /sapi/v1/managed-subaccount/asset. @@ -16555,8 +17311,10 @@ def margin_v1_get_managed_subaccount_asset(self, **params): :returns: API response """ - return self._request_margin_api("get", "managed-subaccount/asset", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "managed-subaccount/asset", signed=True, data=params, version=1 + ) + def margin_v1_get_sol_staking_sol_quota(self, **params): """ Placeholder function for GET /sapi/v1/sol-staking/sol/quota. @@ -16567,8 +17325,10 @@ def margin_v1_get_sol_staking_sol_quota(self, **params): :returns: API response """ - return self._request_margin_api("get", "sol-staking/sol/quota", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "sol-staking/sol/quota", signed=True, data=params, version=1 + ) + def margin_v1_post_loan_vip_renew(self, **params): """ Placeholder function for POST /sapi/v1/loan/vip/renew. @@ -16579,9 +17339,13 @@ def margin_v1_post_loan_vip_renew(self, **params): :returns: API response """ - return self._request_margin_api("post", "loan/vip/renew", signed=True, data=params, version=1) - - def margin_v1_get_managed_subaccount_query_trans_log_for_trade_parent(self, **params): + return self._request_margin_api( + "post", "loan/vip/renew", signed=True, data=params, version=1 + ) + + def margin_v1_get_managed_subaccount_query_trans_log_for_trade_parent( + self, **params + ): """ Placeholder function for GET /sapi/v1/managed-subaccount/queryTransLogForTradeParent. Note: This function was auto-generated. Any issue please open an issue on GitHub. @@ -16591,8 +17355,14 @@ def margin_v1_get_managed_subaccount_query_trans_log_for_trade_parent(self, **pa :returns: API response """ - return self._request_margin_api("get", "managed-subaccount/queryTransLogForTradeParent", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "managed-subaccount/queryTransLogForTradeParent", + signed=True, + data=params, + version=1, + ) + def margin_v1_post_sub_account_sub_account_api_ip_restriction(self, **params): """ Placeholder function for POST /sapi/v1/sub-account/subAccountApi/ipRestriction. @@ -16603,8 +17373,14 @@ def margin_v1_post_sub_account_sub_account_api_ip_restriction(self, **params): :returns: API response """ - return self._request_margin_api("post", "sub-account/subAccountApi/ipRestriction", signed=True, data=params, version=1) - + return self._request_margin_api( + "post", + "sub-account/subAccountApi/ipRestriction", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_simple_earn_flexible_history_redemption_record(self, **params): """ Placeholder function for GET /sapi/v1/simple-earn/flexible/history/redemptionRecord. @@ -16615,8 +17391,14 @@ def margin_v1_get_simple_earn_flexible_history_redemption_record(self, **params) :returns: API response """ - return self._request_margin_api("get", "simple-earn/flexible/history/redemptionRecord", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "simple-earn/flexible/history/redemptionRecord", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_broker_sub_account_api(self, **params): """ Placeholder function for GET /sapi/v1/broker/subAccountApi. @@ -16627,8 +17409,10 @@ def margin_v1_get_broker_sub_account_api(self, **params): :returns: API response """ - return self._request_margin_api("get", "broker/subAccountApi", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "broker/subAccountApi", signed=True, data=params, version=1 + ) + def options_v1_get_exercise_history(self, **params): """ Placeholder function for GET /eapi/v1/exerciseHistory. @@ -16639,8 +17423,10 @@ def options_v1_get_exercise_history(self, **params): :returns: API response """ - return self._request_options_api("get", "exerciseHistory", signed=False, data=params) - + return self._request_options_api( + "get", "exerciseHistory", signed=False, data=params + ) + def margin_v1_get_convert_exchange_info(self, **params): """ Placeholder function for GET /sapi/v1/convert/exchangeInfo. @@ -16651,8 +17437,10 @@ def margin_v1_get_convert_exchange_info(self, **params): :returns: API response """ - return self._request_margin_api("get", "convert/exchangeInfo", signed=False, data=params, version=1) - + return self._request_margin_api( + "get", "convert/exchangeInfo", signed=False, data=params, version=1 + ) + def futures_v1_delete_batch_order(self, **params): """ Placeholder function for DELETE /fapi/v1/batchOrder. @@ -16663,8 +17451,10 @@ def futures_v1_delete_batch_order(self, **params): :returns: API response """ - return self._request_futures_api("delete", "batchOrder", signed=True, data=params, version=1) - + return self._request_futures_api( + "delete", "batchOrder", signed=True, data=params, version=1 + ) + def margin_v1_get_eth_staking_eth_history_wbeth_rewards_history(self, **params): """ Placeholder function for GET /sapi/v1/eth-staking/eth/history/wbethRewardsHistory. @@ -16675,8 +17465,14 @@ def margin_v1_get_eth_staking_eth_history_wbeth_rewards_history(self, **params): :returns: API response """ - return self._request_margin_api("get", "eth-staking/eth/history/wbethRewardsHistory", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", + "eth-staking/eth/history/wbethRewardsHistory", + signed=True, + data=params, + version=1, + ) + def margin_v1_get_mining_pub_algo_list(self, **params): """ Placeholder function for GET /sapi/v1/mining/pub/algoList. @@ -16687,8 +17483,10 @@ def margin_v1_get_mining_pub_algo_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/pub/algoList", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "mining/pub/algoList", signed=True, data=params, version=1 + ) + def options_v1_get_block_trades(self, **params): """ Placeholder function for GET /eapi/v1/blockTrades. @@ -16699,8 +17497,10 @@ def options_v1_get_block_trades(self, **params): :returns: API response """ - return self._request_options_api("get", "blockTrades", signed=False, data=params) - + return self._request_options_api( + "get", "blockTrades", signed=False, data=params + ) + def margin_v1_get_copy_trading_futures_lead_symbol(self, **params): """ Placeholder function for GET /sapi/v1/copyTrading/futures/leadSymbol. @@ -16711,8 +17511,10 @@ def margin_v1_get_copy_trading_futures_lead_symbol(self, **params): :returns: API response """ - return self._request_margin_api("get", "copyTrading/futures/leadSymbol", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "copyTrading/futures/leadSymbol", signed=True, data=params, version=1 + ) + def margin_v1_get_mining_worker_list(self, **params): """ Placeholder function for GET /sapi/v1/mining/worker/list. @@ -16723,8 +17525,10 @@ def margin_v1_get_mining_worker_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "mining/worker/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "mining/worker/list", signed=True, data=params, version=1 + ) + def margin_v1_get_dci_product_list(self, **params): """ Placeholder function for GET /sapi/v1/dci/product/list. @@ -16735,8 +17539,10 @@ def margin_v1_get_dci_product_list(self, **params): :returns: API response """ - return self._request_margin_api("get", "dci/product/list", signed=True, data=params, version=1) - + return self._request_margin_api( + "get", "dci/product/list", signed=True, data=params, version=1 + ) + def futures_v1_get_convert_order_status(self, **params): """ Placeholder function for GET /fapi/v1/convert/orderStatus. @@ -16747,5 +17553,6 @@ def futures_v1_get_convert_order_status(self, **params): :returns: API response """ - return self._request_futures_api("get", "convert/orderStatus", signed=True, data=params, version=1) - \ No newline at end of file + return self._request_futures_api( + "get", "convert/orderStatus", signed=True, data=params, version=1 + ) diff --git a/binance/exceptions.py b/binance/exceptions.py index ec84d6518..73373c853 100644 --- a/binance/exceptions.py +++ b/binance/exceptions.py @@ -75,10 +75,13 @@ class BinanceWebsocketUnableToConnect(Exception): class BinanceWebsocketQueueOverflow(Exception): """Raised when the websocket message queue exceeds its maximum size.""" + pass + class BinanceWebsocketClosed(Exception): """Raised when websocket connection is closed.""" + pass class ReadLoopClosed(Exception): @@ -91,5 +94,4 @@ def __init__(self, value): super().__init__(message) -class UnknownDateFormat(Exception): - ... +class UnknownDateFormat(Exception): ... diff --git a/binance/helpers.py b/binance/helpers.py index 302e3b29d..794eb54fc 100644 --- a/binance/helpers.py +++ b/binance/helpers.py @@ -21,7 +21,7 @@ def date_to_milliseconds(date_str: str) -> int: :param date_str: date in readable format, i.e. "January 01, 2018", "11 hours ago UTC", "now UTC" """ # get epoch value in UTC - epoch: datetime = datetime.fromtimestamp(0,timezone.utc) + epoch: datetime = datetime.fromtimestamp(0, timezone.utc) # parse our date string d: Optional[datetime] = dateparser.parse(date_str, settings={"TIMEZONE": "UTC"}) if not d: diff --git a/binance/ws/depthcache.py b/binance/ws/depthcache.py index a25a81b92..0984baef3 100644 --- a/binance/ws/depthcache.py +++ b/binance/ws/depthcache.py @@ -195,7 +195,9 @@ async def recv(self): res = await asyncio.wait_for(self._socket.recv(), timeout=self.TIMEOUT) self._log.debug(f"Received message: {res}") except Exception as e: - self._log.warning(f"Exception recieving message: {e.__class__.__name__} (e) ") + self._log.warning( + f"Exception recieving message: {e.__class__.__name__} (e) " + ) else: dc = await self._depth_event(res) return dc diff --git a/binance/ws/streams.py b/binance/ws/streams.py index 8c73d8c7b..219ed407b 100755 --- a/binance/ws/streams.py +++ b/binance/ws/streams.py @@ -37,8 +37,8 @@ class BinanceSocketManager: WEBSOCKET_DEPTH_20 = "20" def __init__( - self, - client: AsyncClient, + self, + client: AsyncClient, user_timeout=KEEPALIVE_TIMEOUT, max_queue_size: int = 100, ): @@ -861,7 +861,7 @@ def multiplex_socket(self, streams: List[str]): def options_multiplex_socket(self, streams: List[str]): """Start a multiplexed socket using a list of socket names. - + https://developers.binance.com/docs/derivatives/option/websocket-market-streams """ @@ -1015,7 +1015,7 @@ def options_ticker_socket(self, symbol: str): API Reference: https://developers.binance.com/docs/derivatives/option/websocket-market-streams/24-hour-TICKER - Stream provides real-time 24hr ticker information for all symbols. Only symbols whose ticker info + Stream provides real-time 24hr ticker information for all symbols. Only symbols whose ticker info changed will be sent. Updates every 1000ms. :param symbol: The option symbol to subscribe to (e.g. "BTC-220930-18000-C") @@ -1040,7 +1040,7 @@ def options_ticker_by_expiration_socket(self, symbol: str, expiration_date: str) def options_recent_trades_socket(self, symbol: str): """Subscribe to a real-time trade information stream. - + API Reference: https://developers.binance.com/docs/derivatives/option/websocket-market-streams/Trade-Streams Stream pushes raw trade information for a specific symbol or underlying asset. @@ -1055,7 +1055,7 @@ def options_kline_socket( self, symbol: str, interval=AsyncClient.KLINE_INTERVAL_1MINUTE ): """Subscribe to a Kline/Candlestick data stream. - + API Reference: https://developers.binance.com/docs/derivatives/option/websocket-market-streams/Kline-Candlestick-Streams Stream pushes updates to the current klines/candlestick every 1000ms (if existing). @@ -1088,7 +1088,9 @@ def options_depth_socket(self, symbol: str, depth: str = "10"): """ return self._get_options_socket(symbol.upper() + "@depth" + str(depth)) - def futures_depth_socket(self, symbol: str, depth: str = "10", futures_type=FuturesType.USD_M): + def futures_depth_socket( + self, symbol: str, depth: str = "10", futures_type=FuturesType.USD_M + ): """Subscribe to a futures depth data stream https://binance-docs.github.io/apidocs/futures/en/#partial-book-depth-streams @@ -1145,7 +1147,9 @@ def options_open_interest_socket(self, symbol: str, expiration_date: str): :param expiration_date: The expiration date (e.g., "221125" for Nov 25, 2022) :type expiration_date: str """ - return self._get_options_socket(symbol.upper() + "@openInterest@" + expiration_date) + return self._get_options_socket( + symbol.upper() + "@openInterest@" + expiration_date + ) def options_mark_price_socket(self, symbol: str): """Subscribe to an options mark price stream. @@ -1228,8 +1232,7 @@ def __init__( async def _before_socket_listener_start(self): assert self._client self._bsm = BinanceSocketManager( - client=self._client, - max_queue_size=self._max_queue_size + client=self._client, max_queue_size=self._max_queue_size ) def _start_async_socket( @@ -1242,7 +1245,9 @@ def _start_async_socket( start_time = time.time() while not self._bsm: if time.time() - start_time > 5: - raise RuntimeError("Binance Socket Manager failed to initialize after 5 seconds") + raise RuntimeError( + "Binance Socket Manager failed to initialize after 5 seconds" + ) time.sleep(0.1) socket = getattr(self._bsm, socket_name)(**params) socket_path: str = path or socket._path # noqa diff --git a/binance/ws/threaded_stream.py b/binance/ws/threaded_stream.py index 47993e0c6..f92c0e77b 100755 --- a/binance/ws/threaded_stream.py +++ b/binance/ws/threaded_stream.py @@ -40,7 +40,9 @@ async def _before_socket_listener_start(self): ... async def socket_listener(self): try: - self._client = await AsyncClient.create(loop=self._loop, **self._client_params) + self._client = await AsyncClient.create( + loop=self._loop, **self._client_params + ) await self._before_socket_listener_start() except Exception as e: self._log.error(f"Failed to create client: {e}") diff --git a/binance/ws/websocket_api.py b/binance/ws/websocket_api.py index 8542b62db..6d912f1d3 100644 --- a/binance/ws/websocket_api.py +++ b/binance/ws/websocket_api.py @@ -30,7 +30,9 @@ def _handle_message(self, msg): if "status" in parsed_msg: if parsed_msg["status"] != 200: exception = BinanceAPIException( - parsed_msg, parsed_msg["status"], self.json_dumps(parsed_msg["error"]) + parsed_msg, + parsed_msg["status"], + self.json_dumps(parsed_msg["error"]), ) if req_id is not None and req_id in self._responses: if exception is not None: diff --git a/examples/create_oco_order.py b/examples/create_oco_order.py index df17ba033..589a81f61 100644 --- a/examples/create_oco_order.py +++ b/examples/create_oco_order.py @@ -89,4 +89,5 @@ def create_oco_order(): def main(): create_oco_order() + main() diff --git a/examples/depth_cache_example.py b/examples/depth_cache_example.py index a179f745f..ed5520600 100644 --- a/examples/depth_cache_example.py +++ b/examples/depth_cache_example.py @@ -9,52 +9,58 @@ import asyncio import logging from binance import AsyncClient -from binance.ws.depthcache import DepthCacheManager +from binance.ws.depthcache import DepthCacheManager logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) + async def main(): # Initialize the client client = await AsyncClient.create() # Symbol to monitor - symbol = 'BTCUSDT' - + symbol = "BTCUSDT" + # Create a depth cache manager instance async with DepthCacheManager( client=client, symbol=symbol, ) as dcm: logger.info(f"Started depth cache for {symbol}") - + # Monitor depth cache updates for 1 minute for _ in range(100): # 6 iterations * 10 seconds = 1 minute depth_cache = await dcm.recv() - if isinstance(depth_cache, dict) and depth_cache.get('e') == 'error': + if isinstance(depth_cache, dict) and depth_cache.get("e") == "error": logger.error(f"Received depth cache error in callback: {depth_cache}") - if type == 'BinanceWebsocketClosed': + if depth_cache.get("type") == "BinanceWebsocketClosed": # ignore as attempts to reconnect continue break - + + # Type guard: ensure depth_cache is not a dict before using DepthCache methods + if isinstance(depth_cache, dict): + continue + # Get current bids and asks bids = depth_cache.get_bids()[:5] # Top 5 bids asks = depth_cache.get_asks()[:5] # Top 5 asks - + logger.info("Top 5 bids:") for bid in bids: logger.info(f"Price: {bid[0]}, Quantity: {bid[1]}") - + logger.info("Top 5 asks:") for ask in asks: logger.info(f"Price: {ask[0]}, Quantity: {ask[1]}") - + logger.info(f"Last update time: {depth_cache.update_time}") - + # Close the client await client.close_connection() -if __name__ == '__main__': + +if __name__ == "__main__": # Run the async example asyncio.run(main()) diff --git a/examples/depth_cache_threaded_example.py b/examples/depth_cache_threaded_example.py index 6b20e5aac..d8b5167a8 100644 --- a/examples/depth_cache_threaded_example.py +++ b/examples/depth_cache_threaded_example.py @@ -12,27 +12,32 @@ logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) + def main(): - dcm = ThreadedDepthCacheManager() - dcm.start() - - def handle_depth_cache(depth_cache): - if isinstance(depth_cache, dict) and depth_cache.get('e') == 'error': - logger.error(f"Received depth cache error in callback: {depth_cache}") - type = depth_cache.get('type') - if type == 'BinanceWebsocketClosed': - # Automatically attempts to reconnect - return - logger.error(f"Error received - Closing depth cache: {depth_cache}") - dcm.stop() + dcm = ThreadedDepthCacheManager() + dcm.start() + + def handle_depth_cache(depth_cache): + if isinstance(depth_cache, dict) and depth_cache.get("e") == "error": + logger.error(f"Received depth cache error in callback: {depth_cache}") + error_type = depth_cache.get("type") + if error_type == "BinanceWebsocketClosed": + # Automatically attempts to reconnect return - - logger.info(f"symbol {depth_cache.symbol}") - logger.info(depth_cache.get_bids()[:5]) - - dcm.start_depth_cache(handle_depth_cache, symbol='BNBBTC') - dcm.join() + logger.error(f"Error received - Closing depth cache: {depth_cache}") + dcm.stop() + return + + # Type guard: ensure depth_cache is not a dict before using DepthCache methods + if isinstance(depth_cache, dict): + return + + logger.info(f"symbol {depth_cache.symbol}") + logger.info(depth_cache.get_bids()[:5]) + + dcm.start_depth_cache(handle_depth_cache, symbol="BNBBTC") + dcm.join() if __name__ == "__main__": - main() + main() diff --git a/pyproject.toml b/pyproject.toml index c9f1e92f6..2c13362c1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,6 @@ [tool.ruff] preview = true +target-version = "py39" lint.ignore = ["F722","F841","F821","E402","E501","E902","E713","E741","E714", "E275","E721","E266", "E261"] [tool.pytest.ini_options] diff --git a/pyrightconfig.json b/pyrightconfig.json index b25b31253..70a57b998 100644 --- a/pyrightconfig.json +++ b/pyrightconfig.json @@ -1,7 +1,4 @@ { - "include": [ - "binance" - ], "reportMissingImports": false, "reportMissingModuleSource": false, "typeCheckingMode": "basic", diff --git a/test-requirements.txt b/test-requirements.txt index 371fe3e17..22e95e17a 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -11,3 +11,5 @@ setuptools aioresponses pre-commit orjson +ruff==0.11.12 +pyright diff --git a/tests/conftest.py b/tests/conftest.py index afb29b038..10c14b500 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -84,12 +84,14 @@ async def liveClientAsync(): yield client await client.close_connection() + @pytest.fixture(scope="function") def manager(): return ThreadedWebsocketManager( api_key="test_key", api_secret="test_secret", https_proxy=proxy, testnet=True ) + @pytest.fixture(autouse=True, scope="function") def event_loop(): """Create new event loop for each test""" @@ -162,36 +164,40 @@ def pytest_collection_modifyitems(config, items): item.add_marker(skip_gift_card) -def call_method_and_assert_uri_contains(client, method_name, expected_string, *args, **kwargs): +def call_method_and_assert_uri_contains( + client, method_name, expected_string, *args, **kwargs +): """ Helper function to test that a client method calls the expected URI. - + Args: client: The client instance to test method_name: Name of the method to call (as string) expected_string: String that should be present in the URI *args, **kwargs: Arguments to pass to the client method - + Returns: The result of the method call """ from unittest.mock import patch - - with patch.object(client, '_request', wraps=client._request) as mock_request: + + with patch.object(client, "_request", wraps=client._request) as mock_request: # Get the method from the client and call it method = getattr(client, method_name) result = method(*args, **kwargs) - + # Assert that _request was called mock_request.assert_called_once() - + # Get the arguments passed to _request args_passed, kwargs_passed = mock_request.call_args - + # The second argument is the URI uri = args_passed[1] - + # Assert that the URL contains the expected string - assert expected_string in uri, f"Expected '{expected_string}' in URL, but got: {uri}" - + assert expected_string in uri, ( + f"Expected '{expected_string}' in URL, but got: {uri}" + ) + return result diff --git a/tests/test_async_client.py b/tests/test_async_client.py index fab9806b0..4d0f9bf8a 100644 --- a/tests/test_async_client.py +++ b/tests/test_async_client.py @@ -18,94 +18,117 @@ async def test_clientAsync_initialization(clientAsync): @pytest.mark.skip(reason="Endpoint not documented") async def test_get_products(clientAsync): await clientAsync.get_products() - + async def test_get_exchange_info(clientAsync): await clientAsync.get_exchange_info() - + + async def test_get_symbol_info(clientAsync): await clientAsync.get_symbol_info("BTCUSDT") - + async def test_ping(clientAsync): await clientAsync.ping() - + + async def test_get_server_time(clientAsync): await clientAsync.get_server_time() - + + async def test_get_all_tickers(clientAsync): await clientAsync.get_all_tickers() + async def test_get_orderbook_tickers(clientAsync): await clientAsync.get_orderbook_tickers() - + + async def test_get_order_book(clientAsync): await clientAsync.get_order_book(symbol="BTCUSDT") - + + async def test_get_recent_trades(clientAsync): await clientAsync.get_recent_trades(symbol="BTCUSDT") async def test_get_historical_trades(clientAsync): await clientAsync.get_historical_trades(symbol="BTCUSDT") - + async def test_get_aggregate_trades(clientAsync): await clientAsync.get_aggregate_trades(symbol="BTCUSDT") - + + async def test_get_klines(clientAsync): await clientAsync.get_klines(symbol="BTCUSDT", interval="1d") - + + async def test_get_uiklines(clientAsync): await clientAsync.get_ui_klines(symbol="BTCUSDT", interval="1d") - + + async def test_futures_mark_price_klines(clientAsync): await clientAsync.futures_mark_price_klines(symbol="BTCUSDT", interval="1h") - + + async def test_futures_index_price_klines(clientAsync): await clientAsync.futures_index_price_klines(pair="BTCUSDT", interval="1h") - + + async def test_futures_premium_index_klines(clientAsync): await clientAsync.futures_premium_index_klines(symbol="BTCUSDT", interval="1h") - + + @pytest.mark.skip(reason="network error") async def test_futures_coin_premium_index_klines(clientAsync): await clientAsync.futures_coin_premium_index_klines(symbol="BTCUSD", interval="1h") - + + async def test_get_avg_price(clientAsync): await clientAsync.get_avg_price(symbol="BTCUSDT") - + + async def test_get_ticker(clientAsync): await clientAsync.get_ticker(symbol="BTCUSDT") - + + async def test_get_symbol_ticker(clientAsync): await clientAsync.get_symbol_ticker(symbol="BTCUSDT") - + + async def test_get_orderbook_ticker(clientAsync): await clientAsync.get_orderbook_ticker(symbol="BTCUSDT") - + + async def test_get_account(clientAsync): await clientAsync.get_account() - + + async def test_get_asset_balance(clientAsync): await clientAsync.get_asset_balance(asset="BTC") - + + async def test_get_asset_balance_no_asset_provided(clientAsync): await clientAsync.get_asset_balance() - + + async def test_get_my_trades(clientAsync): await clientAsync.get_my_trades(symbol="BTCUSDT") - + + async def test_get_system_status(clientAsync): await clientAsync.get_system_status() - + + # User Stream Endpoints async def test_stream_get_listen_key_and_close(clientAsync): listen_key = await clientAsync.stream_get_listen_key() await clientAsync.stream_close(listen_key) - + + # Quoting interface endpoints @@ -116,91 +139,105 @@ async def test_stream_get_listen_key_and_close(clientAsync): async def test_ws_get_order_book(clientAsync): await clientAsync.ws_get_order_book(symbol="BTCUSDT") - + + async def test_ws_get_recent_trades(clientAsync): await clientAsync.ws_get_recent_trades(symbol="BTCUSDT") - + + async def test_ws_get_historical_trades(clientAsync): await clientAsync.ws_get_historical_trades(symbol="BTCUSDT") - + + async def test_ws_get_aggregate_trades(clientAsync): await clientAsync.ws_get_aggregate_trades(symbol="BTCUSDT") - + + async def test_ws_get_klines(clientAsync): await clientAsync.ws_get_klines(symbol="BTCUSDT", interval="1m") - + + async def test_ws_get_uiKlines(clientAsync): await clientAsync.ws_get_uiKlines(symbol="BTCUSDT", interval="1m") - + + async def test_ws_get_avg_price(clientAsync): await clientAsync.ws_get_avg_price(symbol="BTCUSDT") - + + async def test_ws_get_ticker(clientAsync): ticker = await clientAsync.ws_get_ticker(symbol="BTCUSDT") - + + async def test_ws_get_trading_day_ticker(clientAsync): await clientAsync.ws_get_trading_day_ticker(symbol="BTCUSDT") - + + async def test_ws_get_symbol_ticker_window(clientAsync): await clientAsync.ws_get_symbol_ticker_window(symbol="BTCUSDT") - + + async def test_ws_get_symbol_ticker(clientAsync): await clientAsync.ws_get_symbol_ticker(symbol="BTCUSDT") - + + async def test_ws_get_orderbook_ticker(clientAsync): await clientAsync.ws_get_orderbook_ticker(symbol="BTCUSDT") - + + async def test_ws_ping(clientAsync): await clientAsync.ws_ping() - + + async def test_ws_get_time(clientAsync): await clientAsync.ws_get_time() - + + async def test_ws_get_exchange_info(clientAsync): await clientAsync.ws_get_exchange_info(symbol="BTCUSDT") - + + @pytest.mark.skip(reason="can't test margin endpoints") async def test_margin_next_hourly_interest_rate(clientAsync): - await clientAsync.margin_next_hourly_interest_rate( - assets="BTC", - isIsolated="FALSE" - ) - + await clientAsync.margin_next_hourly_interest_rate(assets="BTC", isIsolated="FALSE") + + @pytest.mark.skip(reason="can't test margin endpoints") async def test_margin_interest_history(clientAsync): await clientAsync.margin_interest_history( asset="BTC", ) - + + @pytest.mark.skip(reason="can't test margin endpoints") async def test_margin_borrow_repay(clientAsync): await clientAsync.margin_borrow_repay( - asset="BTC", - amount=0.1, - isIsolated="FALSE", - symbol="BTCUSDT", - type="BORROW" + asset="BTC", amount=0.1, isIsolated="FALSE", symbol="BTCUSDT", type="BORROW" ) - + + @pytest.mark.skip(reason="can't test margin endpoints") async def test_margin_get_borrow_repay_records(clientAsync): await clientAsync.margin_get_borrow_repay_records( asset="BTC", isolatedSymbol="BTCUSDT", ) - + + @pytest.mark.skip(reason="can't test margin endpoints") async def test_margin_interest_rate_history(clientAsync): await clientAsync.margin_interest_rate_history( asset="BTC", ) - + + @pytest.mark.skip(reason="can't test margin endpoints") async def test_margin_max_borrowable(clientAsync): await clientAsync.margin_max_borrowable( asset="BTC", ) - + + async def test_time_unit_microseconds(): micro_client = AsyncClient( api_key, api_secret, https_proxy=proxy, testnet=testnet, time_unit="MICROSECOND" @@ -211,6 +248,7 @@ async def test_time_unit_microseconds(): ) await micro_client.close_connection() + async def test_time_unit_milloseconds(): milli_client = AsyncClient( api_key, api_secret, https_proxy=proxy, testnet=testnet, time_unit="MILLISECOND" @@ -225,17 +263,18 @@ async def test_time_unit_milloseconds(): async def test_handle_response(clientAsync): # Create base response object mock_response = ClientResponse( - 'GET', URL('http://test.com'), - request_info=None, + "GET", + URL("http://test.com"), + request_info=None, # type: ignore writer=None, continue100=None, timer=TimerNoop(), traces=[], loop=clientAsync.loop, - session=None, + session=None, # type: ignore ) # Initialize headers - mock_response._headers = {hdrs.CONTENT_TYPE: 'application/json'} + mock_response._headers = {hdrs.CONTENT_TYPE: "application/json"} # type: ignore # Test successful JSON response mock_response.status = 200 @@ -244,18 +283,17 @@ async def test_handle_response(clientAsync): # Test empty response mock_response.status = 200 - mock_response._body = b'' + mock_response._body = b"" assert await clientAsync._handle_response(mock_response) == {} # Test invalid JSON response mock_response.status = 200 - mock_response._body = b'invalid json' + mock_response._body = b"invalid json" with pytest.raises(BinanceRequestException): await clientAsync._handle_response(mock_response) # Test error status code mock_response.status = 400 - mock_response._body = b'error message' + mock_response._body = b"error message" with pytest.raises(BinanceAPIException): await clientAsync._handle_response(mock_response) - \ No newline at end of file diff --git a/tests/test_async_client_futures.py b/tests/test_async_client_futures.py index d8d83504b..bba27688b 100644 --- a/tests/test_async_client_futures.py +++ b/tests/test_async_client_futures.py @@ -6,144 +6,183 @@ pytestmark = [pytest.mark.futures, pytest.mark.asyncio] + async def test_futures_ping(futuresClientAsync): await futuresClientAsync.futures_ping() + async def test_futures_time(futuresClientAsync): await futuresClientAsync.futures_time() + + async def test_futures_exchange_info(futuresClientAsync): await futuresClientAsync.futures_exchange_info() + async def test_futures_order_book(futuresClientAsync): order_book = await futuresClientAsync.futures_order_book(symbol="BTCUSDT") assert_ob(order_book) + async def test_futures_recent_trades(futuresClientAsync): await futuresClientAsync.futures_recent_trades(symbol="BTCUSDT") + async def test_futures_historical_trades(futuresClientAsync): await futuresClientAsync.futures_historical_trades(symbol="BTCUSDT") + async def test_futures_aggregate_trades(futuresClientAsync): await futuresClientAsync.futures_aggregate_trades(symbol="BTCUSDT") + async def test_futures_klines(futuresClientAsync): await futuresClientAsync.futures_klines(symbol="BTCUSDT", interval="1h") + async def test_futures_continous_klines(futuresClientAsync): await futuresClientAsync.futures_continous_klines( pair="BTCUSDT", contractType="PERPETUAL", interval="1h" ) + async def test_futures_historical_klines(futuresClientAsync): await futuresClientAsync.futures_historical_klines( symbol="BTCUSDT", interval="1h", start_str=datetime.now().strftime("%Y-%m-%d") ) + async def test_futures_historical_klines_generator(futuresClientAsync): await futuresClientAsync.futures_historical_klines_generator( symbol="BTCUSDT", interval="1h", start_str=datetime.now().strftime("%Y-%m-%d") ) + async def test_futures_mark_price(futuresClientAsync): await futuresClientAsync.futures_mark_price() + async def test_futures_funding_rate(futuresClientAsync): await futuresClientAsync.futures_funding_rate() + @pytest.mark.skip(reason="No Sandbox Environment to test") async def test_futures_top_longshort_account_ratio(futuresClientAsync): await futuresClientAsync.futures_top_longshort_account_ratio( symbol="BTCUSDT", period="5m" ) + @pytest.mark.skip(reason="No Sandbox Environment to test") async def test_futures_top_longshort_position_ratio(futuresClientAsync): await futuresClientAsync.futures_top_longshort_position_ratio( symbol="BTCUSDT", period="5m" ) + @pytest.mark.skip(reason="No Sandbox Environment to test") async def test_futures_global_longshort_ratio(futuresClientAsync): await futuresClientAsync.futures_global_longshort_ratio( symbol="BTCUSDT", period="5m" ) + @pytest.mark.skip(reason="No Sandbox Environment to test") async def test_futures_taker_longshort_ratio(futuresClientAsync): await futuresClientAsync.futures_taker_longshort_ratio( symbol="BTCUSDT", period="5m" ) + async def test_futures_ticker(futuresClientAsync): await futuresClientAsync.futures_ticker() + async def test_futures_symbol_ticker(futuresClientAsync): await futuresClientAsync.futures_symbol_ticker() + async def test_futures_orderbook_ticker(futuresClientAsync): await futuresClientAsync.futures_orderbook_ticker() + async def test_futures_index_index_price_constituents(futuresClientAsync): await futuresClientAsync.futures_index_price_constituents(symbol="BTCUSD") + async def test_futures_liquidation_orders(futuresClientAsync): await futuresClientAsync.futures_liquidation_orders() + async def test_futures_api_trading_status(futuresClientAsync): await futuresClientAsync.futures_api_trading_status() + async def test_futures_commission_rate(futuresClientAsync): await futuresClientAsync.futures_commission_rate(symbol="BTCUSDT") + async def test_futures_adl_quantile_estimate(futuresClientAsync): await futuresClientAsync.futures_adl_quantile_estimate() + async def test_futures_open_interest(futuresClientAsync): await futuresClientAsync.futures_open_interest(symbol="BTCUSDT") + async def test_futures_index_info(futuresClientAsync): await futuresClientAsync.futures_index_info() + @pytest.mark.skip(reason="No Sandbox Environment to test") async def test_futures_open_interest_hist(futuresClientAsync): await futuresClientAsync.futures_open_interest_hist(symbol="BTCUSDT", period="5m") + async def test_futures_leverage_bracket(futuresClientAsync): await futuresClientAsync.futures_leverage_bracket() + @pytest.mark.skip(reason="Not implemented") async def test_futures_account_transfer(futuresClientAsync): await futuresClientAsync.futures_account_transfer() + @pytest.mark.skip(reason="Not implemented") async def test_transfer_history(client): client.transfer_history() + @pytest.mark.skip(reason="Not implemented") async def test_futures_loan_borrow_history(futuresClientAsync): await futuresClientAsync.futures_loan_borrow_history() + @pytest.mark.skip(reason="Not implemented") async def test_futures_loan_repay_history(futuresClientAsync): await futuresClientAsync.futures_loan_repay_history() + @pytest.mark.skip(reason="Not implemented") async def test_futures_loan_wallet(futuresClientAsync): await futuresClientAsync.futures_loan_wallet() + @pytest.mark.skip(reason="Not implemented") async def test_futures_cross_collateral_adjust_history(futuresClientAsync): await futuresClientAsync.futures_cross_collateral_adjust_history() + @pytest.mark.skip(reason="Not implemented") async def test_futures_cross_collateral_liquidation_history(futuresClientAsync): await futuresClientAsync.futures_cross_collateral_liquidation_history() + @pytest.mark.skip(reason="Not implemented") async def test_futures_loan_interest_history(futuresClientAsync): await futuresClientAsync.futures_loan_interest_history() + async def test_futures_create_get_edit_cancel_order(futuresClientAsync): ticker = await futuresClientAsync.futures_ticker(symbol="LTCUSDT") positions = await futuresClientAsync.futures_position_information(symbol="LTCUSDT") @@ -173,6 +212,7 @@ async def test_futures_create_get_edit_cancel_order(futuresClientAsync): orderid=order["orderId"], symbol=order["symbol"] ) + async def test_futures_create_test_order(futuresClientAsync): ticker = await futuresClientAsync.futures_ticker(symbol="LTCUSDT") positions = await futuresClientAsync.futures_position_information(symbol="LTCUSDT") @@ -186,6 +226,7 @@ async def test_futures_create_test_order(futuresClientAsync): price=str(round(float(ticker["lastPrice"]) - 1, 0)), ) + async def test_futures_place_batch_order_and_cancel(futuresClientAsync): ticker = await futuresClientAsync.futures_ticker(symbol="LTCUSDT") positions = await futuresClientAsync.futures_position_information(symbol="LTCUSDT") @@ -229,30 +270,38 @@ async def test_futures_place_batch_order_and_cancel(futuresClientAsync): for order in cancelled_orders: assert_contract_order(futuresClientAsync, order) + async def test_futures_get_open_orders(futuresClientAsync): await futuresClientAsync.futures_get_open_orders() + async def test_futures_get_all_orders(futuresClientAsync): orders = futuresClientAsync.futures_get_all_orders() print(orders) + async def test_futures_cancel_all_open_orders(futuresClientAsync): await futuresClientAsync.futures_cancel_all_open_orders(symbol="LTCUSDT") + async def test_futures_countdown_cancel_all(futuresClientAsync): await futuresClientAsync.futures_countdown_cancel_all( symbol="LTCUSDT", countdownTime=10 ) + async def test_futures_account_balance(futuresClientAsync): await futuresClientAsync.futures_account_balance() + async def test_futures_account(futuresClientAsync): await futuresClientAsync.futures_account() + async def test_futures_change_leverage(futuresClientAsync): await futuresClientAsync.futures_change_leverage(symbol="LTCUSDT", leverage=10) + async def test_futures_change_margin_type(futuresClientAsync): try: await futuresClientAsync.futures_change_margin_type( @@ -263,20 +312,25 @@ async def test_futures_change_margin_type(futuresClientAsync): symbol="XRPUSDT", marginType="ISOLATED" ) + async def test_futures_position_margin_history(futuresClientAsync): position = await futuresClientAsync.futures_position_margin_history( symbol="LTCUSDT" ) + async def test_futures_position_information(futuresClientAsync): await futuresClientAsync.futures_position_information() + async def test_futures_account_trades(futuresClientAsync): await futuresClientAsync.futures_account_trades() + async def test_futures_income_history(futuresClientAsync): await futuresClientAsync.futures_income_history() + async def close_all_futures_positions(futuresClientAsync): # Get all open positions positions = await futuresClientAsync.futures_position_information(symbol="LTCUSDT") @@ -298,6 +352,7 @@ async def close_all_futures_positions(futuresClientAsync): except Exception as e: print(f"Failed to close position for {symbol}: {e}") + @pytest.mark.skip(reason="Not implemented") async def test_futures_get_and_change_position_mode(futuresClientAsync): mode = await futuresClientAsync.futures_get_position_mode() @@ -305,101 +360,129 @@ async def test_futures_get_and_change_position_mode(futuresClientAsync): dualSidePosition=not mode["dualSidePosition"] ) + @pytest.mark.skip(reason="Not implemented") async def test_futures_change_multi_assets_mode(futuresClientAsync): await futuresClientAsync.futures_change_multi_assets_mode() + async def test_futures_get_multi_assets_mode(futuresClientAsync): await futuresClientAsync.futures_get_multi_assets_mode() + async def test_futures_stream_get_listen_key(futuresClientAsync): await futuresClientAsync.futures_stream_get_listen_key() + @pytest.mark.skip(reason="Not implemented") async def test_futures_stream_close(futuresClientAsync): await futuresClientAsync.futures_stream_close() + # new methods async def test_futures_account_config(futuresClientAsync): await futuresClientAsync.futures_account_config() + async def test_futures_symbol_config(futuresClientAsync): await futuresClientAsync.futures_symbol_config() + # COIN Futures API async def test_futures_coin_ping(futuresClientAsync): await futuresClientAsync.futures_coin_ping() + async def test_futures_coin_time(futuresClientAsync): await futuresClientAsync.futures_coin_time() + async def test_futures_coin_exchange_info(futuresClientAsync): await futuresClientAsync.futures_coin_exchange_info() + async def test_futures_coin_order_book(futuresClientAsync): order_book = await futuresClientAsync.futures_coin_order_book(symbol="BTCUSD_PERP") assert_ob(order_book) + async def test_futures_coin_recent_trades(futuresClientAsync): await futuresClientAsync.futures_coin_recent_trades(symbol="BTCUSD_PERP") + async def test_futures_coin_historical_trades(futuresClientAsync): await futuresClientAsync.futures_coin_historical_trades(symbol="BTCUSD_PERP") + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_aggregate_trades(futuresClientAsync): await futuresClientAsync.futures_coin_aggregate_trades(symbol="BTCUSD_PERP") + async def test_futures_coin_klines(futuresClientAsync): await futuresClientAsync.futures_coin_klines(symbol="BTCUSD_PERP", interval="1h") + async def test_futures_coin_continous_klines(futuresClientAsync): await futuresClientAsync.futures_coin_continous_klines( pair="BTCUSD", contractType="PERPETUAL", interval="1h" ) + async def test_futures_coin_index_price_klines(futuresClientAsync): await futuresClientAsync.futures_coin_index_price_klines( pair="BTCUSD", interval="1m" ) + async def test_futures_coin_mark_price_klines(futuresClientAsync): await futuresClientAsync.futures_coin_mark_price_klines( symbol="BTCUSD_PERP", interval="1m" ) + async def test_futures_coin_mark_price(futuresClientAsync): await futuresClientAsync.futures_coin_mark_price() + async def test_futures_coin_funding_rate(futuresClientAsync): await futuresClientAsync.futures_coin_funding_rate(symbol="BTCUSD_PERP") + async def test_futures_coin_ticker(futuresClientAsync): await futuresClientAsync.futures_coin_ticker() + async def test_futures_coin_symbol_ticker(futuresClientAsync): await futuresClientAsync.futures_coin_symbol_ticker() + async def test_futures_coin_orderbook_ticker(futuresClientAsync): await futuresClientAsync.futures_coin_orderbook_ticker() + async def test_futures_coin_index_index_price_constituents(futuresClientAsync): await futuresClientAsync.futures_coin_index_price_constituents(symbol="BTCUSD") + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_liquidation_orders(futuresClientAsync): await futuresClientAsync.futures_coin_liquidation_orders() + async def test_futures_coin_open_interest(futuresClientAsync): await futuresClientAsync.futures_coin_open_interest(symbol="BTCUSD_PERP") + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_open_interest_hist(futuresClientAsync): await futuresClientAsync.futures_coin_open_interest_hist(symbol="BTCUSD_PERP") + async def test_futures_coin_leverage_bracket(futuresClientAsync): await futuresClientAsync.futures_coin_leverage_bracket() + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_create_order(futuresClientAsync): positions = await futuresClientAsync.futures_coin_position_information() @@ -429,88 +512,111 @@ async def test_futures_coin_create_order(futuresClientAsync): orderid=order["orderId"], symbol=order["symbol"] ) + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_place_batch_order(futuresClientAsync): await futuresClientAsync.futures_coin_place_batch_order() + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_get_order(futuresClientAsync): await futuresClientAsync.futures_coin_get_order() + async def test_futures_coin_get_open_orders(futuresClientAsync): await futuresClientAsync.futures_coin_get_open_orders() + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_get_all_orders(futuresClientAsync): await futuresClientAsync.futures_coin_get_all_orders() + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_cancel_order(futuresClientAsync): await futuresClientAsync.futures_coin_cancel_order() + async def test_futures_coin_cancel_all_open_orders(futuresClientAsync): await futuresClientAsync.futures_coin_cancel_all_open_orders(symbol="BTCUSD_PERP") + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_cancel_orders(futuresClientAsync): await futuresClientAsync.futures_coin_cancel_orders() + async def test_futures_coin_account_balance(futuresClientAsync): await futuresClientAsync.futures_coin_account_balance() + async def test_futures_coin_account(futuresClientAsync): await futuresClientAsync.futures_coin_account() + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_change_leverage(futuresClientAsync): await futuresClientAsync.futures_coin_change_leverage(symbol="XRPUSDT", leverage=10) + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_change_margin_type(futuresClientAsync): await futuresClientAsync.futures_coin_change_margin_type() + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_change_position_margin(futuresClientAsync): await futuresClientAsync.futures_coin_change_position_margin() + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_position_margin_history(futuresClientAsync): await futuresClientAsync.futures_coin_position_margin_history() + async def test_futures_coin_position_information(futuresClientAsync): await futuresClientAsync.futures_coin_position_information() + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_account_trades(futuresClientAsync): await futuresClientAsync.futures_coin_account_trades() + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_income_history(futuresClientAsync): await futuresClientAsync.futures_coin_income_history() + @pytest.mark.skip(reason="Not implemented") async def test_futures_coin_change_position_mode(futuresClientAsync): await futuresClientAsync.futures_coin_change_position_mode() + async def test_futures_coin_get_position_mode(futuresClientAsync): await futuresClientAsync.futures_coin_get_position_mode() + async def test_futures_coin_stream_close(futuresClientAsync): listen_key = await futuresClientAsync.futures_coin_stream_get_listen_key() await futuresClientAsync.futures_coin_stream_close(listenKey=listen_key) + @pytest.mark.skip(reason="No sandbox support") async def test_futures_coin_account_order_history_download(futuresClientAsync): await futuresClientAsync.futures_coin_account_order_download() + @pytest.mark.skip(reason="No sandbox support") async def test_futures_coin_account_order_download_id(futuresClientAsync): await futuresClientAsync.futures_coin_account_order_download_link(downloadId="123") + @pytest.mark.skip(reason="No sandbox support") async def test_futures_coin_account_trade_history_download(futuresClientAsync): await futuresClientAsync.futures_coin_account_trade_history_download() + @pytest.mark.skip(reason="No sandbox support") async def test_futures_coin_account_trade_download_id(futuresClientAsync): await futuresClientAsync.futures_coin_account_trade_history_download_link( diff --git a/tests/test_async_client_margin.py b/tests/test_async_client_margin.py index a13f7c099..0f976b85e 100644 --- a/tests/test_async_client_margin.py +++ b/tests/test_async_client_margin.py @@ -2,417 +2,560 @@ pytestmark = [pytest.mark.margin, pytest.mark.asyncio] + async def test_margin__get_account_status(asyncClient): await asyncClient.get_account_status() + async def test_margin_get_account_api_trading_status(asyncClient): await asyncClient.get_account_api_trading_status() + async def test_margin_get_account_api_permissions(asyncClient): await asyncClient.get_account_api_permissions() + async def test_margin_get_dust_assets(asyncClient): await asyncClient.get_dust_assets() + async def test_margin_get_dust_log(asyncClient): await asyncClient.test_get_dust_log() + async def test_margin_transfer_dust(asyncClient): await asyncClient.transfer_dust() + async def test_margin_get_asset_dividend_history(asyncClient): await asyncClient.get_asset_dividend_history() + async def test_margin_make_universal_transfer(asyncClient): await asyncClient.make_universal_transfer() + async def test_margin_query_universal_transfer_history(asyncClient): await asyncClient.query_universal_transfer_history() + async def test_margin_get_trade_fee(asyncClient): await asyncClient.get_trade_fee() + async def test_margin_get_asset_details(asyncClient): await asyncClient.get_asset_details() + async def test_margin_get_spot_delist_schedule(asyncClient): await asyncClient.get_spot_delist_schedule() + # Withdraw Endpoints + async def test_margin_withdraw(asyncClient): await asyncClient.withdraw() + async def test_margin_get_deposit_history(asyncClient): await asyncClient.get_deposit_history() + async def test_margin_get_withdraw_history(asyncClient): await asyncClient.get_withdraw_history() + async def test_margin_get_withdraw_history_id(asyncClient): await asyncClient.get_withdraw_history_id() + async def test_margin_get_deposit_address(asyncClient): await asyncClient.get_deposit_address() + # Margin Trading Endpoints + async def test_margin_get_margin_account(asyncClient): await asyncClient.get_margin_account() + async def test_margin_get_isolated_margin_account(asyncClient): await asyncClient.get_isolated_margin_account() + async def test_margin_enable_isolated_margin_account(asyncClient): await asyncClient.enable_isolated_margin_account() + async def test_margin_disable_isolated_margin_account(asyncClient): await asyncClient.disable_isolated_margin_account() + async def test_margin_get_enabled_isolated_margin_account_limit(asyncClient): await asyncClient.get_enabled_isolated_margin_account_limit() + async def test_margin_get_margin_dustlog(asyncClient): await asyncClient.get_margin_dustlog() + async def test_margin_get_margin_dust_assets(asyncClient): await asyncClient.get_margin_dust_assets() + async def test_margin_transfer_margin_dust(asyncClient): await asyncClient.transfer_margin_dust() + async def test_margin_get_cross_margin_collateral_ratio(asyncClient): await asyncClient.get_cross_margin_collateral_ratio() + async def test_margin_get_small_liability_exchange_assets(asyncClient): await asyncClient.get_small_liability_exchange_assets() + async def test_margin_exchange_small_liability_assets(asyncClient): await asyncClient.exchange_small_liability_assets() + async def test_margin_get_small_liability_exchange_history(asyncClient): await asyncClient.get_small_liability_exchange_history() + async def test_margin_get_future_hourly_interest_rate(asyncClient): await asyncClient.get_future_hourly_interest_rate() + async def test_margin_get_margin_capital_flow(asyncClient): await asyncClient.get_margin_capital_flow() + async def test_margin_get_margin_asset(asyncClient): await asyncClient.get_margin_asset() + async def test_margin_get_margin_symbol(asyncClient): await asyncClient.get_margin_symbol() + async def test_margin_get_margin_all_assets(asyncClient): await asyncClient.get_margin_all_assets() + async def test_margin_get_margin_all_pairs(asyncClient): await asyncClient.get_margin_all_pairs() + async def test_margin_create_isolated_margin_account(asyncClient): await asyncClient.create_isolated_margin_account() + async def test_margin_get_isolated_margin_symbol(asyncClient): await asyncClient.get_isolated_margin_symbol() + async def test_margin_get_all_isolated_margin_symbols(asyncClient): await asyncClient.get_all_isolated_margin_symbols() + async def test_margin_get_isolated_margin_fee_data(asyncClient): await asyncClient.get_isolated_margin_fee_data() + async def test_margin_get_isolated_margin_tier_data(asyncClient): await asyncClient.get_isolated_margin_tier_data() + async def test_margin_margin_manual_liquidation(asyncClient): await asyncClient.margin_manual_liquidation() + async def test_margin_toggle_bnb_burn_spot_margin(asyncClient): await asyncClient.toggle_bnb_burn_spot_margin() + async def test_margin_get_bnb_burn_spot_margin(asyncClient): await asyncClient.get_bnb_burn_spot_margin() + async def test_margin_get_margin_price_index(asyncClient): await asyncClient.get_margin_price_index() + async def test_margin_transfer_margin_to_spot(asyncClient): await asyncClient.transfer_margin_to_spot() + async def test_margin_transfer_spot_to_margin(asyncClient): await asyncClient.transfer_spot_to_margin() + async def test_margin_transfer_isolated_margin_to_spot(asyncClient): await asyncClient.transfer_isolated_margin_to_spot() + async def test_margin_transfer_spot_to_isolated_margin(asyncClient): await asyncClient.transfer_spot_to_isolated_margin() + async def test_margin_get_isolated_margin_tranfer_history(asyncClient): await asyncClient.get_isolated_margin_tranfer_history() + async def test_margin_create_margin_loan(asyncClient): await asyncClient.create_margin_loan() + async def test_margin_repay_margin_loan(asyncClient): await asyncClient.repay_margin_loan() + async def create_margin_ordertest_(asyncClient): await asyncClient.create_margin_order() + async def test_margin_cancel_margin_order(asyncClient): await asyncClient.cancel_margin_order() + async def test_margin_set_margin_max_leverage(asyncClient): await asyncClient.set_margin_max_leverage() + async def test_margin_get_margin_transfer_history(asyncClient): await asyncClient.get_margin_transfer_history() + async def test_margin_get_margin_loan_details(asyncClient): await asyncClient.get_margin_loan_details() + async def test_margin_get_margin_repay_details(asyncClient): await asyncClient.get_margin_repay_details() + async def test_margin_get_cross_margin_data(asyncClient): await asyncClient.get_cross_margin_data() + async def test_margin_get_margin_interest_history(asyncClient): await asyncClient.get_margin_interest_history() + async def test_margin_get_margin_force_liquidation_rec(asyncClient): await asyncClient.get_margin_force_liquidation_rec() + async def test_margin_get_margin_order(asyncClient): await asyncClient.get_margin_order() + async def test_margin_get_open_margin_orders(asyncClient): await asyncClient.get_open_margin_orders() + async def test_margin_get_all_margin_orders(asyncClient): await asyncClient.get_all_margin_orders() + async def test_margin_get_margin_trades(asyncClient): await asyncClient.get_margin_trades() + async def test_margin_get_max_margin_loan(asyncClient): await asyncClient.get_max_margin_loan() + async def test_margin_get_max_margin_transfer(asyncClient): await asyncClient.get_max_margin_transfer() + async def test_margin_get_margin_delist_schedule(asyncClient): await asyncClient.get_margin_delist_schedule() + # Margin OCO + async def test_margin_create_margin_oco_order(asyncClient): await asyncClient.create_margin_oco_order() + async def test_margin_cancel_margin_oco_order(asyncClient): await asyncClient.cancel_margin_oco_order() + async def test_margin_get_margin_oco_order(asyncClient): await asyncClient.get_margin_oco_order() + async def test_margin_get_open_margin_oco_orders(asyncClient): await asyncClient.get_open_margin_oco_orders() + # Cross-margin + async def test_margin_margin_stream_get_listen_key(asyncClient): await asyncClient.margin_stream_get_listen_key() + async def test_margin_margin_stream_close(asyncClient): await asyncClient.margin_stream_close() + # Isolated margin + async def test_margin_isolated_margin_stream_get_listen_key(asyncClient): await asyncClient.isolated_margin_stream_get_listen_key() + async def test_margin_isolated_margin_stream_close(asyncClient): await asyncClient.isolated_margin_stream_close() + # Simple Earn Endpoints + async def test_margin_get_simple_earn_flexible_product_list(asyncClient): await asyncClient.get_simple_earn_flexible_product_list() + async def test_margin_get_simple_earn_locked_product_list(asyncClient): await asyncClient.get_simple_earn_locked_product_list() + async def test_margin_subscribe_simple_earn_flexible_product(asyncClient): await asyncClient.subscribe_simple_earn_flexible_product() + async def test_margin_subscribe_simple_earn_locked_product(asyncClient): await asyncClient.subscribe_simple_earn_locked_product() + async def test_margin_redeem_simple_earn_flexible_product(asyncClient): await asyncClient.redeem_simple_earn_flexible_product() + async def test_margin_redeem_simple_earn_locked_product(asyncClient): await asyncClient.redeem_simple_earn_locked_product() + async def test_margin_get_simple_earn_flexible_product_position(asyncClient): await asyncClient.get_simple_earn_flexible_product_position() + async def test_margin_get_simple_earn_locked_product_position(asyncClient): await asyncClient.get_simple_earn_locked_product_position() + async def test_margin_get_simple_earn_account(asyncClient): await asyncClient.get_simple_earn_account() + # Lending Endpoints + async def test_margin_get_fixed_activity_project_list(asyncClient): await asyncClient.get_fixed_activity_project_list() + async def test_margin_change_fixed_activity_to_daily_position(asyncClient): await asyncClient.change_fixed_activity_to_daily_position() + # Staking Endpoints + async def test_margin_get_staking_product_list(asyncClient): await asyncClient.get_staking_product_list() + async def test_margin_purchase_staking_product(asyncClient): await asyncClient.purchase_staking_product() + async def test_margin_redeem_staking_product(asyncClient): await asyncClient.redeem_staking_product() + async def test_margin_get_staking_position(asyncClient): await asyncClient.get_staking_position() + async def test_margin_get_staking_purchase_history(asyncClient): await asyncClient.get_staking_purchase_history() + async def test_margin_set_auto_staking(asyncClient): await asyncClient.set_auto_staking() + async def test_margin_get_personal_left_quota(asyncClient): await asyncClient.get_personal_left_quota() + # US Staking Endpoints + async def test_margin_get_staking_asset_us(asyncClient): await asyncClient.get_staking_asset_us() + async def test_margin_stake_asset_us(asyncClient): await asyncClient.stake_asset_us() + async def test_margin_unstake_asset_us(asyncClient): await asyncClient.unstake_asset_us() + async def test_margin_get_staking_balance_us(asyncClient): await asyncClient.get_staking_balance_us() + async def test_margin_get_staking_history_us(asyncClient): await asyncClient.get_staking_history_us() + async def test_margin_get_staking_rewards_history_us(asyncClient): await asyncClient.get_staking_rewards_history_us() + # Sub Accounts + async def test_margin_get_sub_account_list(asyncClient): await asyncClient.get_sub_account_list() + async def test_margin_get_sub_account_transfer_history(asyncClient): await asyncClient.get_sub_account_transfer_history() + async def test_margin_get_sub_account_futures_transfer_history(asyncClient): await asyncClient.get_sub_account_futures_transfer_history() + async def test_margin_create_sub_account_futures_transfer(asyncClient): await asyncClient.create_sub_account_futures_transfer() + async def test_margin_get_sub_account_assets(asyncClient): await asyncClient.get_sub_account_assets() + async def test_margin_query_subaccount_spot_summary(asyncClient): await asyncClient.query_subaccount_spot_summary() + async def test_margin_get_subaccount_deposit_address(asyncClient): await asyncClient.get_subaccount_deposit_address() + async def test_margin_get_subaccount_deposit_history(asyncClient): await asyncClient.get_subaccount_deposit_history() + async def test_margin_get_subaccount_futures_margin_status(asyncClient): await asyncClient.get_subaccount_futures_margin_status() + async def test_margin_enable_subaccount_margin(asyncClient): await asyncClient.enable_subaccount_margin() + async def test_margin_get_subaccount_margin_details(asyncClient): await asyncClient.get_subaccount_margin_details() + async def test_margin_get_subaccount_margin_summary(asyncClient): await asyncClient.get_subaccount_margin_summary() + async def test_margin_enable_subaccount_futures(asyncClient): await asyncClient.enable_subaccount_futures() + async def test_margin_get_subaccount_futures_details(asyncClient): await asyncClient.get_subaccount_futures_details() + async def test_margin_get_subaccount_futures_summary(asyncClient): await asyncClient.get_subaccount_futures_summary() + async def test_margin_get_subaccount_futures_positionrisk(asyncClient): await asyncClient.get_subaccount_futures_positionrisk() + async def test_margin_make_subaccount_futures_transfer(asyncClient): await asyncClient.make_subaccount_futures_transfer() + async def test_margin_make_subaccount_margin_transfer(asyncClient): await asyncClient.make_subaccount_margin_transfer() + async def test_margin_make_subaccount_to_subaccount_transfer(asyncClient): await asyncClient.make_subaccount_to_subaccount_transfer() + async def test_margin_make_subaccount_to_master_transfer(asyncClient): await asyncClient.make_subaccount_to_master_transfer() + async def test_margin_get_subaccount_transfer_history(asyncClient): await asyncClient.get_subaccount_transfer_history() + async def test_margin_make_subaccount_universal_transfer(asyncClient): await asyncClient.make_subaccount_universal_transfer() + async def test_margin_get_universal_transfer_history(asyncClient): await asyncClient.get_universal_transfer_history() + # Fiat Endpoints + async def test_margin_get_fiat_deposit_withdraw_history(asyncClient): await asyncClient.get_fiat_deposit_withdraw_history() + async def test_margin_get_fiat_payments_history(asyncClient): await asyncClient.get_fiat_payments_history() + # C2C Endpoints + async def test_margin_get_c2c_trade_history(asyncClient): await asyncClient.get_c2c_trade_history() + # Pay Endpoints + async def test_margin_get_pay_trade_history(asyncClient): await asyncClient.get_pay_trade_history() + # Convert Endpoints + async def test_margin_get_convert_trade_history(asyncClient): await asyncClient.get_convert_trade_history() + async def test_margin_convert_request_quote(asyncClient): await asyncClient.convert_request_quote() + async def test_margin_convert_accept_quote(asyncClient): await asyncClient.convert_accept_quote() diff --git a/tests/test_async_client_options.py b/tests/test_async_client_options.py index 51211253e..29780ca55 100644 --- a/tests/test_async_client_options.py +++ b/tests/test_async_client_options.py @@ -2,95 +2,121 @@ pytestmark = [pytest.mark.options, pytest.mark.asyncio] + @pytest.fixture def options_symbol(liveClient): prices = liveClient.options_price() return prices[0]["symbol"] + async def test_options_ping(liveClientAsync): await liveClientAsync.options_ping() + async def test_options_time(liveClientAsync): await liveClientAsync.options_time() + @pytest.mark.skip(reason="Not implemented") async def test_options_info(liveClientAsync): await liveClientAsync.options_info() + async def test_options_exchange_info(liveClientAsync): await liveClientAsync.options_exchange_info() + async def test_options_index_price(liveClientAsync): await liveClientAsync.options_index_price(underlying="BTCUSDT") + async def test_options_price(liveClientAsync): prices = await liveClientAsync.options_price() + async def test_options_mark_price(liveClientAsync): await liveClientAsync.options_mark_price() + async def test_options_order_book(liveClientAsync, options_symbol): await liveClientAsync.options_order_book(symbol=options_symbol) + async def test_options_klines(liveClientAsync, options_symbol): await liveClientAsync.options_klines(symbol=options_symbol, interval="1m") + async def test_options_recent_trades(liveClientAsync, options_symbol): await liveClientAsync.options_recent_trades(symbol=options_symbol) + async def test_options_historical_trades(liveClientAsync, options_symbol): await liveClientAsync.options_historical_trades(symbol=options_symbol) + # Account and trading interface endpoints + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_account_info(liveClientAsync): await liveClientAsync.options_account_info() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_funds_transfer(liveClientAsync): await liveClientAsync.options_funds_transfer() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_positions(liveClientAsync): await liveClientAsync.options_positions() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_bill(liveClientAsync): await liveClientAsync.options_bill() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_place_order(liveClientAsync): await liveClientAsync.options_place_order() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_test_options_place_batch_order(liveClientAsync): await liveClientAsync.test_options_place_batch_order() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_cancel_order(liveClientAsync): await liveClientAsync.options_cancel_order() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_cancel_batch_order(liveClientAsync): await liveClientAsync.options_cancel_batch_order() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_cancel_all_orders(liveClientAsync): await liveClientAsync.options_cancel_all_orders() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_query_order(liveClientAsync): await liveClientAsync.options_query_order() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_query_pending_orders(liveClientAsync): await liveClientAsync.options_query_pending_orders() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_query_order_history(liveClientAsync): await liveClientAsync.options_query_order_history() + @pytest.mark.skip(reason="No sandbox to environmnet to test") async def test_options_user_trades(liveClientAsync): await liveClientAsync.options_user_trades() diff --git a/tests/test_async_client_ws_api.py b/tests/test_async_client_ws_api.py index 8475c17ec..c72a8e7da 100644 --- a/tests/test_async_client_ws_api.py +++ b/tests/test_async_client_ws_api.py @@ -1,61 +1,76 @@ import pytest + @pytest.mark.asyncio() async def test_ws_get_order_book(clientAsync): await clientAsync.ws_get_order_book(symbol="BTCUSDT") + @pytest.mark.asyncio() async def test_ws_get_recent_trades(clientAsync): await clientAsync.ws_get_recent_trades(symbol="BTCUSDT") + @pytest.mark.asyncio() async def test_ws_get_historical_trades(clientAsync): await clientAsync.ws_get_historical_trades(symbol="BTCUSDT") + @pytest.mark.asyncio() async def test_ws_get_aggregate_trades(clientAsync): await clientAsync.ws_get_aggregate_trades(symbol="BTCUSDT") + @pytest.mark.asyncio() async def test_ws_get_klines(clientAsync): await clientAsync.ws_get_klines(symbol="BTCUSDT", interval="1m") + @pytest.mark.asyncio() async def test_ws_get_uiKlines(clientAsync): await clientAsync.ws_get_uiKlines(symbol="BTCUSDT", interval="1m") + @pytest.mark.asyncio() async def test_ws_get_avg_price(clientAsync): await clientAsync.ws_get_avg_price(symbol="BTCUSDT") + @pytest.mark.asyncio() async def test_ws_get_ticker(clientAsync): await clientAsync.ws_get_ticker(symbol="BTCUSDT") + @pytest.mark.asyncio() async def test_ws_get_trading_day_ticker(clientAsync): await clientAsync.ws_get_trading_day_ticker(symbol="BTCUSDT") + @pytest.mark.asyncio() async def test_ws_get_symbol_ticker_window(clientAsync): await clientAsync.ws_get_symbol_ticker_window(symbol="BTCUSDT") + @pytest.mark.asyncio() async def test_ws_get_symbol_ticker(clientAsync): await clientAsync.ws_get_symbol_ticker(symbol="BTCUSDT") + @pytest.mark.asyncio() async def test_ws_get_orderbook_ticker(clientAsync): await clientAsync.ws_get_orderbook_ticker(symbol="BTCUSDT") + @pytest.mark.asyncio() async def test_ws_ping(clientAsync): await clientAsync.ws_ping() + @pytest.mark.asyncio() async def test_ws_get_time(clientAsync): await clientAsync.ws_get_time() + @pytest.mark.asyncio() async def test_ws_get_exchange_info(clientAsync): await clientAsync.ws_get_exchange_info(symbol="BTCUSDT") diff --git a/tests/test_async_client_ws_futures_requests.py b/tests/test_async_client_ws_futures_requests.py index cde6fcfbe..4194ca23a 100644 --- a/tests/test_async_client_ws_futures_requests.py +++ b/tests/test_async_client_ws_futures_requests.py @@ -54,9 +54,9 @@ async def test_ws_futures_get_order_book_ticker(futuresClientAsync): @pytest.mark.asyncio() async def test_ws_futures_create_get_edit_cancel_order_with_orjson(futuresClientAsync): - if 'orjson' not in sys.modules: + if "orjson" not in sys.modules: raise ImportError("orjson is not available") - + ticker = await futuresClientAsync.ws_futures_get_order_book_ticker(symbol="LTCUSDT") positions = await futuresClientAsync.ws_futures_v2_account_position( symbol="LTCUSDT" @@ -87,10 +87,15 @@ async def test_ws_futures_create_get_edit_cancel_order_with_orjson(futuresClient orderid=order["orderId"], symbol=order["symbol"] ) + @pytest.mark.asyncio() -async def test_ws_futures_create_get_edit_cancel_order_without_orjson(futuresClientAsync): - with patch.dict('sys.modules', {'orjson': None}): - ticker = await futuresClientAsync.ws_futures_get_order_book_ticker(symbol="LTCUSDT") +async def test_ws_futures_create_get_edit_cancel_order_without_orjson( + futuresClientAsync, +): + with patch.dict("sys.modules", {"orjson": None}): + ticker = await futuresClientAsync.ws_futures_get_order_book_ticker( + symbol="LTCUSDT" + ) positions = await futuresClientAsync.ws_futures_v2_account_position( symbol="LTCUSDT" ) diff --git a/tests/test_client.py b/tests/test_client.py index 10fea4cf8..8b65fd354 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1,7 +1,13 @@ import pytest from binance.client import Client from binance.exceptions import BinanceAPIException, BinanceRequestException -from .conftest import proxies, api_key, api_secret, testnet, call_method_and_assert_uri_contains +from .conftest import ( + proxies, + api_key, + api_secret, + testnet, + call_method_and_assert_uri_contains, +) def test_client_initialization(client): @@ -23,8 +29,7 @@ def test_get_symbol_info(client): def test_ping(client): - call_method_and_assert_uri_contains(client, 'ping', '/v3/') - + call_method_and_assert_uri_contains(client, "ping", "/v3/") def test_get_server_time(client): @@ -58,9 +63,11 @@ def test_get_aggregate_trades(client): def test_get_klines(client): client.get_klines(symbol="BTCUSDT", interval="1d") + def test_get_ui_klines(client): client.get_ui_klines(symbol="BTCUSDT", interval="1d") + def test_get_avg_price(client): client.get_avg_price(symbol="BTCUSDT") @@ -74,7 +81,9 @@ def test_get_symbol_ticker(client): def test_get_orderbook_ticker(client): - call_method_and_assert_uri_contains(client, 'get_orderbook_ticker', '/v3/', symbol="BTCUSDT") + call_method_and_assert_uri_contains( + client, "get_orderbook_ticker", "/v3/", symbol="BTCUSDT" + ) def test_get_account(client): @@ -221,33 +230,37 @@ def test_time_unit_milloseconds(): def test_handle_response(client): # Test successful JSON response - mock_response = type('Response', (), { - 'status_code': 200, - 'text': '{"key": "value"}', - 'json': lambda: {"key": "value"} - }) + mock_response = type( + "Response", + (), + { + "status_code": 200, + "text": '{"key": "value"}', + "json": lambda: {"key": "value"}, + }, + ) assert client._handle_response(mock_response) == {"key": "value"} # Test empty response - mock_empty_response = type('Response', (), { - 'status_code': 200, - 'text': '' - }) + mock_empty_response = type("Response", (), {"status_code": 200, "text": ""}) assert client._handle_response(mock_empty_response) == {} # Test invalid JSON response - mock_invalid_response = type('Response', (), { - 'status_code': 200, - 'text': 'invalid json', - 'json': lambda: exec('raise ValueError()') - }) + mock_invalid_response = type( + "Response", + (), + { + "status_code": 200, + "text": "invalid json", + "json": lambda: exec("raise ValueError()"), + }, + ) with pytest.raises(BinanceRequestException): client._handle_response(mock_invalid_response) # Test error status code - mock_error_response = type('Response', (), { - 'status_code': 400, - 'text': 'error message' - }) + mock_error_response = type( + "Response", (), {"status_code": 400, "text": "error message"} + ) with pytest.raises(BinanceAPIException): client._handle_response(mock_error_response) diff --git a/tests/test_client_margin.py b/tests/test_client_margin.py index 07e2d54d1..b98e2cff6 100644 --- a/tests/test_client_margin.py +++ b/tests/test_client_margin.py @@ -596,10 +596,7 @@ def test_margin_enable_fast_withdraw_switch(client): @pytest.mark.skip(reason="can't test margin endpoints") def test_margin_next_hourly_interest_rate(client): - client.margin_next_hourly_interest_rate( - assets="BTC", - isIsolated="FALSE" - ) + client.margin_next_hourly_interest_rate(assets="BTC", isIsolated="FALSE") @pytest.mark.skip(reason="can't test margin endpoints") @@ -612,11 +609,7 @@ def test_margin_interest_history(client): @pytest.mark.skip(reason="can't test margin endpoints") def test_margin_borrow_repay(client): client.margin_borrow_repay( - asset="BTC", - amount=0.1, - isIsolated="FALSE", - symbol="BTCUSDT", - type="BORROW" + asset="BTC", amount=0.1, isIsolated="FALSE", symbol="BTCUSDT", type="BORROW" ) @@ -629,15 +622,17 @@ def test_margin_get_borrow_repay_records(client): startTime=1563438204000, endTime=1563438204000, current=1, - size=10 + size=10, ) + @pytest.mark.skip(reason="can't test margin endpoints") def test_margin_interest_rate_history(client): client.margin_interest_rate_history( asset="BTC", ) + @pytest.mark.skip(reason="can't test margin endpoints") def test_margin_max_borrowable(client): client.margin_max_borrowable( diff --git a/tests/test_init.py b/tests/test_init.py index d7afbd8d0..251e54e52 100644 --- a/tests/test_init.py +++ b/tests/test_init.py @@ -9,25 +9,30 @@ ThreadedWebsocketManager, BinanceSocketType, KeepAliveWebsocket, - ReconnectingWebsocket + ReconnectingWebsocket, ) + def test_version(): """Test that __version__ is defined""" from binance import __version__ + assert isinstance(__version__, str) assert __version__ is not None + def test_client_import(): """Test Client class import""" assert Client is not None assert isinstance(Client, type) + def test_async_client_import(): """Test AsyncClient class import""" assert AsyncClient is not None assert isinstance(AsyncClient, type) + def test_depth_cache_imports(): """Test depth cache related imports""" assert DepthCacheManager is not None @@ -39,6 +44,7 @@ def test_depth_cache_imports(): assert isinstance(ThreadedDepthCacheManager, type) assert isinstance(FuturesDepthCacheManager, type) + def test_websocket_imports(): """Test websocket related imports""" assert BinanceSocketManager is not None @@ -47,6 +53,7 @@ def test_websocket_imports(): assert isinstance(BinanceSocketManager, type) assert isinstance(ThreadedWebsocketManager, type) + def test_websocket_utility_imports(): """Test websocket utility imports""" assert KeepAliveWebsocket is not None diff --git a/tests/test_streams.py b/tests/test_streams.py index a2ab66348..ceacb0e90 100644 --- a/tests/test_streams.py +++ b/tests/test_streams.py @@ -18,6 +18,7 @@ async def test_socket_stopped_on_aexit(clientAsync): assert ts2 is not ts1, "socket should be removed from _conn on exit" await clientAsync.close_connection() + @pytest.mark.skipif(sys.version_info < (3, 8), reason="websockets_proxy Python 3.8+") @pytest.mark.asyncio async def test_socket_stopped_on_aexit_futures(futuresClientAsync): diff --git a/tests/test_streams_options.py b/tests/test_streams_options.py index 8d77144ca..df4411fa0 100644 --- a/tests/test_streams_options.py +++ b/tests/test_streams_options.py @@ -4,8 +4,10 @@ from binance import BinanceSocketManager pytestmark = [ - pytest.mark.skipif(sys.version_info < (3, 8), reason="websockets_proxy Python 3.8+"), - pytest.mark.asyncio + pytest.mark.skipif( + sys.version_info < (3, 8), reason="websockets_proxy Python 3.8+" + ), + pytest.mark.asyncio, ] # Configure logger for this module @@ -18,6 +20,7 @@ INTERVAL = "1m" DEPTH = "20" + async def test_options_ticker(clientAsync): """Test options ticker socket""" logger.info(f"Starting options ticker test for symbol: {OPTION_SYMBOL}") @@ -27,13 +30,16 @@ async def test_options_ticker(clientAsync): logger.debug("Waiting for ticker message...") msg = await ts.recv() logger.info(f"Received ticker message: {msg}") - assert msg['e'] == '24hrTicker' + assert msg["e"] == "24hrTicker" logger.info("Options ticker test completed successfully") await clientAsync.close_connection() + async def test_options_ticker_by_expiration(clientAsync): """Test options ticker by expiration socket""" - logger.info(f"Starting options ticker by expiration test for {UNDERLYING_SYMBOL}, expiration: {EXPIRATION_DATE}") + logger.info( + f"Starting options ticker by expiration test for {UNDERLYING_SYMBOL}, expiration: {EXPIRATION_DATE}" + ) bm = BinanceSocketManager(clientAsync) socket = bm.options_ticker_by_expiration_socket(UNDERLYING_SYMBOL, EXPIRATION_DATE) async with socket as ts: @@ -44,6 +50,7 @@ async def test_options_ticker_by_expiration(clientAsync): logger.info("Options ticker by expiration test completed successfully") await clientAsync.close_connection() + async def test_options_recent_trades(clientAsync): """Test options recent trades socket""" logger.info(f"Starting options recent trades test for {UNDERLYING_SYMBOL}") @@ -53,23 +60,27 @@ async def test_options_recent_trades(clientAsync): logger.debug("Waiting for trade message...") msg = await ts.recv() logger.info(f"Received trade message: {msg}") - assert msg['e'] == 'trade' + assert msg["e"] == "trade" logger.info("Options recent trades test completed successfully") await clientAsync.close_connection() + async def test_options_kline(clientAsync): """Test options kline socket""" - logger.info(f"Starting options kline test for {OPTION_SYMBOL}, interval: {INTERVAL}") + logger.info( + f"Starting options kline test for {OPTION_SYMBOL}, interval: {INTERVAL}" + ) bm = BinanceSocketManager(clientAsync) socket = bm.options_kline_socket(OPTION_SYMBOL, INTERVAL) async with socket as ts: logger.debug("Waiting for kline message...") msg = await ts.recv() logger.info(f"Received kline message: {msg}") - assert msg['e'] == 'kline' + assert msg["e"] == "kline" logger.info("Options kline test completed successfully") await clientAsync.close_connection() + async def test_options_depth(clientAsync): """Test options depth socket""" logger.info(f"Starting options depth test for {OPTION_SYMBOL}, depth: {DEPTH}") @@ -79,10 +90,11 @@ async def test_options_depth(clientAsync): logger.debug("Waiting for depth message...") msg = await ts.recv() logger.info(f"Received depth message: {msg}") - assert msg['e'] == 'depth' + assert msg["e"] == "depth" logger.info("Options depth test completed successfully") await clientAsync.close_connection() + async def test_options_multiplex(clientAsync): """Test options multiplex socket""" streams = [ @@ -96,13 +108,16 @@ async def test_options_multiplex(clientAsync): logger.debug("Waiting for multiplex message...") msg = await ts.recv() logger.info(f"Received multiplex message: {msg}") - assert 'stream' in msg + assert "stream" in msg logger.info("Options multiplex test completed successfully") await clientAsync.close_connection() + async def test_options_open_interest(clientAsync): """Test options open interest socket""" - logger.info(f"Starting options open interest test for {UNDERLYING_SYMBOL}, expiration: {EXPIRATION_DATE}") + logger.info( + f"Starting options open interest test for {UNDERLYING_SYMBOL}, expiration: {EXPIRATION_DATE}" + ) bm = BinanceSocketManager(clientAsync) socket = bm.options_open_interest_socket(UNDERLYING_SYMBOL, EXPIRATION_DATE) async with socket as ts: @@ -113,6 +128,7 @@ async def test_options_open_interest(clientAsync): logger.info("Options open interest test completed successfully") await clientAsync.close_connection() + async def test_options_mark_price(clientAsync): """Test options mark price socket""" logger.info(f"Starting options mark price test for {UNDERLYING_SYMBOL}") @@ -126,9 +142,10 @@ async def test_options_mark_price(clientAsync): logger.info("Options mark price test completed successfully") await clientAsync.close_connection() + async def test_options_index_price(clientAsync): """Test options index price socket""" - symbol = 'ETHUSDT' + symbol = "ETHUSDT" logger.info(f"Starting options index price test for {symbol}") bm = BinanceSocketManager(clientAsync) socket = bm.options_index_price_socket(symbol) @@ -136,6 +153,6 @@ async def test_options_index_price(clientAsync): logger.debug("Waiting for index price message...") msg = await ts.recv() logger.info(f"Received index price message: {msg}") - assert msg['e'] == 'index' + assert msg["e"] == "index" logger.info("Options index price test completed successfully") await clientAsync.close_connection() diff --git a/tests/test_threaded_socket_manager.py b/tests/test_threaded_socket_manager.py index d76f30cec..bb2eb6ff4 100644 --- a/tests/test_threaded_socket_manager.py +++ b/tests/test_threaded_socket_manager.py @@ -9,7 +9,7 @@ pytestmark = pytest.mark.skipif( sys.version_info <= (3, 8), - reason="These tests require Python 3.8+ for proper websocket proxy support" + reason="These tests require Python 3.8+ for proper websocket proxy support", ) received_ohlcv = False @@ -24,8 +24,11 @@ # Get real symbols from Binance API client = Client(api_key, api_secret, {"proxies": proxies}) exchange_info = client.get_exchange_info() -symbols = [info['symbol'].lower() for info in exchange_info['symbols']] -streams = [f"{symbol}@bookTicker" for symbol in symbols][0:100] # Take first 800 symbols +symbols = [info["symbol"].lower() for info in exchange_info["symbols"]] +streams = [f"{symbol}@bookTicker" for symbol in symbols][ + 0:100 +] # Take first 800 symbols + def test_threaded_socket_manager(): logger.debug("Starting test_threaded_socket_manager") @@ -63,20 +66,22 @@ def handle_socket_message(msg): def test_many_symbols_small_queue(): logger.debug("Starting test_many_symbols_small_queue with queue size 1") - twm = ThreadedWebsocketManager(api_key, api_secret, https_proxy=proxy, testnet=True, max_queue_size=1) - + twm = ThreadedWebsocketManager( + api_key, api_secret, https_proxy=proxy, testnet=True, max_queue_size=1 + ) + error_received = False msg_received = False - + def handle_message(msg): nonlocal error_received, msg_received if msg.get("e") == "error": error_received = True - logger.debug("Received WebSocket error: %s", msg.get('m', 'Unknown error')) + logger.debug("Received WebSocket error: %s", msg.get("m", "Unknown error")) return msg_received = True logger.debug("Received valid message") - + try: logger.debug("Starting ThreadedWebsocketManager") twm.start() @@ -84,7 +89,7 @@ def handle_message(msg): twm.start_multiplex_socket(callback=handle_message, streams=streams) logger.debug("Waiting 10 seconds for messages") time.sleep(10) - + assert msg_received, "Should have received messages" finally: logger.debug("Cleaning up test_many_symbols_small_queue") @@ -94,22 +99,24 @@ def handle_message(msg): def test_many_symbols_adequate_queue(): logger.debug("Starting test_many_symbols_adequate_queue with queue size 200") - twm = ThreadedWebsocketManager(api_key, api_secret, https_proxy=proxy, testnet=True, max_queue_size=200) - + twm = ThreadedWebsocketManager( + api_key, api_secret, https_proxy=proxy, testnet=True, max_queue_size=200 + ) + messages_received = 0 error_received = False - + def handle_message(msg): nonlocal messages_received, error_received if msg.get("e") == "error": error_received = True - logger.debug("Received WebSocket error: %s", msg.get('m', 'Unknown error')) + logger.debug("Received WebSocket error: %s", msg.get("m", "Unknown error")) return - + messages_received += 1 if messages_received % 10 == 0: # Log every 10th message logger.debug("Processed %d messages", messages_received) - + try: logger.debug("Starting ThreadedWebsocketManager") twm.start() @@ -117,8 +124,12 @@ def handle_message(msg): twm.start_futures_multiplex_socket(callback=handle_message, streams=streams) logger.debug("Waiting 10 seconds for messages") time.sleep(10) - - logger.debug("Test completed. Messages received: %d, Errors: %s", messages_received, error_received) + + logger.debug( + "Test completed. Messages received: %d, Errors: %s", + messages_received, + error_received, + ) assert messages_received > 0, "Should have received some messages" assert not error_received, "Should not have received any errors" finally: @@ -129,32 +140,40 @@ def handle_message(msg): def test_slow_async_callback_no_error(): logger.debug("Starting test_slow_async_callback_no_error with queue size 400") - twm = ThreadedWebsocketManager(api_key, api_secret, https_proxy=proxy, testnet=True, max_queue_size=400) - + twm = ThreadedWebsocketManager( + api_key, api_secret, https_proxy=proxy, testnet=True, max_queue_size=400 + ) + messages_processed = 0 error_received = False - + async def slow_async_callback(msg): nonlocal messages_processed, error_received if msg.get("e") == "error": error_received = True - logger.debug("Received WebSocket error: %s", msg.get('m', 'Unknown error')) + logger.debug("Received WebSocket error: %s", msg.get("m", "Unknown error")) return - + logger.debug("Processing message with 2 second delay") await asyncio.sleep(2) messages_processed += 1 logger.debug("Message processed. Total processed: %d", messages_processed) - + try: logger.debug("Starting ThreadedWebsocketManager") twm.start() logger.debug("Starting futures multiplex socket with %d streams", len(streams)) - twm.start_futures_multiplex_socket(callback=slow_async_callback, streams=streams) + twm.start_futures_multiplex_socket( + callback=slow_async_callback, streams=streams + ) logger.debug("Waiting 10 seconds for messages") time.sleep(10) - - logger.debug("Test completed. Messages processed: %d, Errors: %s", messages_processed, error_received) + + logger.debug( + "Test completed. Messages processed: %d, Errors: %s", + messages_processed, + error_received, + ) assert messages_processed > 0, "Should have processed some messages" assert not error_received, "Should not have received any errors" finally: @@ -168,23 +187,22 @@ def test_no_internet_connection(): logger.debug("Starting test_no_internet_connection") invalid_proxy = "http://invalid.proxy:1234" logger.debug("Using invalid proxy: %s", invalid_proxy) - - with pytest.raises(RuntimeError, match="Binance Socket Manager failed to initialize after 5 seconds"): + + with pytest.raises( + RuntimeError, + match="Binance Socket Manager failed to initialize after 5 seconds", + ): twm = ThreadedWebsocketManager( - api_key, - api_secret, - https_proxy=invalid_proxy, - testnet=True + api_key, api_secret, https_proxy=invalid_proxy, testnet=True ) - + try: - logger.debug("Attempting to start ThreadedWebsocketManager with invalid proxy") + logger.debug( + "Attempting to start ThreadedWebsocketManager with invalid proxy" + ) twm.start() logger.debug("Attempting to start kline socket (should fail)") - twm.start_kline_socket( - callback=lambda x: print(x), - symbol="BTCUSDT" - ) + twm.start_kline_socket(callback=lambda x: print(x), symbol="BTCUSDT") finally: logger.debug("Cleaning up test_no_internet_connection") twm.stop() diff --git a/tests/test_threaded_stream.py b/tests/test_threaded_stream.py index 2d726934a..dbfb4cbea 100644 --- a/tests/test_threaded_stream.py +++ b/tests/test_threaded_stream.py @@ -26,6 +26,7 @@ async def __aiter__(self): async def __anext__(self): raise StopAsyncIteration + @pytest.mark.asyncio async def test_initialization(): """Test that manager initializes with correct parameters""" @@ -63,6 +64,7 @@ async def test_start_and_stop_socket(manager): # Track number of recv calls recv_count = 0 + async def controlled_recv(): nonlocal recv_count recv_count += 1 diff --git a/tests/test_ws_api.py b/tests/test_ws_api.py index e7f116522..32d8933ff 100644 --- a/tests/test_ws_api.py +++ b/tests/test_ws_api.py @@ -121,24 +121,36 @@ async def test_message_handling(clientAsync): clientAsync.ws_api._handle_message(json.dumps(valid_msg)) result = await clientAsync.ws_api._responses["123"] assert result == valid_msg - + + @pytest.mark.asyncio async def test_message_handling_raise_exception(clientAsync): with pytest.raises(BinanceAPIException): future = asyncio.Future() clientAsync.ws_api._responses["123"] = future - valid_msg = {"id": "123", "status": 400, "error": {"code": "0", "msg": "error message"}} + valid_msg = { + "id": "123", + "status": 400, + "error": {"code": "0", "msg": "error message"}, + } clientAsync.ws_api._handle_message(json.dumps(valid_msg)) await future + + @pytest.mark.asyncio async def test_message_handling_raise_exception_without_id(clientAsync): with pytest.raises(BinanceAPIException): future = asyncio.Future() clientAsync.ws_api._responses["123"] = future - valid_msg = {"id": "123", "status": 400, "error": {"code": "0", "msg": "error message"}} + valid_msg = { + "id": "123", + "status": 400, + "error": {"code": "0", "msg": "error message"}, + } clientAsync.ws_api._handle_message(json.dumps(valid_msg)) await future - + + @pytest.mark.asyncio async def test_message_handling_invalid_json(clientAsync): with pytest.raises(json.JSONDecodeError): @@ -176,7 +188,7 @@ async def test_cleanup_on_exit(clientAsync): @pytest.mark.asyncio async def test_ws_queue_overflow(clientAsync): """WebSocket API should not overflow queue""" - # + # original_size = clientAsync.ws_api.max_queue_size clientAsync.ws_api.max_queue_size = 1 @@ -184,36 +196,39 @@ async def test_ws_queue_overflow(clientAsync): # Request multiple order books concurrently symbols = ["BTCUSDT", "ETHUSDT", "BNBUSDT"] tasks = [clientAsync.ws_get_order_book(symbol=symbol) for symbol in symbols] - + # Execute all requests concurrently and wait for results results = await asyncio.gather(*tasks, return_exceptions=True) - + # Check that we got valid responses or expected overflow errors valid_responses = [r for r in results if not isinstance(r, Exception)] - assert len(valid_responses) == len(symbols), "Should get at least one valid response" - + assert len(valid_responses) == len(symbols), ( + "Should get at least one valid response" + ) + for result in valid_responses: assert_ob(result) - + finally: # Restore original queue size clientAsync.ws_api.MAX_QUEUE_SIZE = original_size + @pytest.mark.skipif(sys.version_info < (3, 8), reason="websockets_proxy Python 3.8+") @pytest.mark.asyncio async def test_ws_api_with_stream(clientAsync): """Test combining WebSocket API requests with stream listening""" from binance import BinanceSocketManager - + # Create socket manager and trade socket bm = BinanceSocketManager(clientAsync) ts = bm.trade_socket("BTCUSDT") - + async with ts: # Make WS API request while stream is active order_book = await clientAsync.ws_get_order_book(symbol="BTCUSDT") assert_ob(order_book) - + # Verify we can still receive stream data trade = await ts.recv() assert "s" in trade # Symbol