ccxt 4.3.91__py2.py3-none-any.whl → 4.3.93__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ccxt/__init__.py +1 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/hyperliquid.py +4 -3
- ccxt/async_support/kucoin.py +34 -10
- ccxt/base/exchange.py +1 -1
- ccxt/hyperliquid.py +4 -3
- ccxt/kucoin.py +34 -10
- ccxt/pro/__init__.py +1 -1
- {ccxt-4.3.91.dist-info → ccxt-4.3.93.dist-info}/METADATA +4 -4
- {ccxt-4.3.91.dist-info → ccxt-4.3.93.dist-info}/RECORD +14 -14
- {ccxt-4.3.91.dist-info → ccxt-4.3.93.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.3.91.dist-info → ccxt-4.3.93.dist-info}/WHEEL +0 -0
- {ccxt-4.3.91.dist-info → ccxt-4.3.93.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
@@ -329,7 +329,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
329
329
|
#
|
330
330
|
meta = self.safe_dict(response, 0, {})
|
331
331
|
universe = self.safe_list(meta, 'universe', [])
|
332
|
-
assetCtxs = self.
|
332
|
+
assetCtxs = self.safe_list(response, 1, [])
|
333
333
|
result = []
|
334
334
|
for i in range(0, len(universe)):
|
335
335
|
data = self.extend(
|
@@ -687,7 +687,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
687
687
|
total = self.safe_string(balance, 'total')
|
688
688
|
free = self.safe_string(balance, 'hold')
|
689
689
|
account['total'] = total
|
690
|
-
account['
|
690
|
+
account['used'] = free
|
691
691
|
spotBalances[code] = account
|
692
692
|
return self.safe_balance(spotBalances)
|
693
693
|
data = self.safe_dict(response, 'marginSummary', {})
|
@@ -1694,9 +1694,10 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
1694
1694
|
userAddress, params = self.handle_public_address('fetchOrder', params)
|
1695
1695
|
await self.load_markets()
|
1696
1696
|
market = self.safe_market(symbol)
|
1697
|
+
isClientOrderId = len(id) >= 34
|
1697
1698
|
request: dict = {
|
1698
1699
|
'type': 'orderStatus',
|
1699
|
-
'oid': self.parse_to_numeric(id),
|
1700
|
+
'oid': id if isClientOrderId else self.parse_to_numeric(id),
|
1700
1701
|
'user': userAddress,
|
1701
1702
|
}
|
1702
1703
|
response = await self.publicPostInfo(self.extend(request, params))
|
ccxt/async_support/kucoin.py
CHANGED
@@ -1222,7 +1222,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
1222
1222
|
return result
|
1223
1223
|
|
1224
1224
|
async def load_migration_status(self, force: bool = False):
|
1225
|
-
if not ('hfMigrated' in self.options) or force:
|
1225
|
+
if not ('hfMigrated' in self.options) or (self.options['hfMigrated'] is None) or force:
|
1226
1226
|
result: dict = await self.privateGetMigrateUserAccountStatus()
|
1227
1227
|
data: dict = self.safe_dict(result, 'data', {})
|
1228
1228
|
status: Int = self.safe_integer(data, 'status')
|
@@ -1755,7 +1755,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
1755
1755
|
# }
|
1756
1756
|
# }
|
1757
1757
|
#
|
1758
|
-
|
1758
|
+
data = self.safe_dict(response, 'data', {})
|
1759
|
+
return self.parse_ticker(data, market)
|
1759
1760
|
|
1760
1761
|
def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
|
1761
1762
|
#
|
@@ -2028,6 +2029,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2028
2029
|
:see: https://docs.kucoin.com/spot-hf/#place-hf-order
|
2029
2030
|
:see: https://www.kucoin.com/docs/rest/spot-trading/orders/place-order-test
|
2030
2031
|
:see: https://www.kucoin.com/docs/rest/margin-trading/orders/place-margin-order-test
|
2032
|
+
:see: https://www.kucoin.com/docs/rest/spot-trading/spot-hf-trade-pro-account/sync-place-hf-order
|
2031
2033
|
:param str symbol: Unified CCXT market symbol
|
2032
2034
|
:param str type: 'limit' or 'market'
|
2033
2035
|
:param str side: 'buy' or 'sell'
|
@@ -2058,6 +2060,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2058
2060
|
:param bool [params.autoBorrow]: False, # The system will first borrow you funds at the optimal interest rate and then place an order for you
|
2059
2061
|
:param bool [params.hf]: False, # True for hf order
|
2060
2062
|
:param bool [params.test]: set to True to test an order, no order will be created but the request will be validated
|
2063
|
+
:param bool [params.sync]: set to True to use the hf sync call
|
2061
2064
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
2062
2065
|
"""
|
2063
2066
|
await self.load_markets()
|
@@ -2066,6 +2069,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2066
2069
|
params = self.omit(params, 'test')
|
2067
2070
|
hf = None
|
2068
2071
|
hf, params = await self.handle_hf_and_params(params)
|
2072
|
+
useSync = False
|
2073
|
+
useSync, params = self.handle_option_and_params(params, 'createOrder', 'sync', False)
|
2069
2074
|
triggerPrice, stopLossPrice, takeProfitPrice = self.handle_trigger_prices(params)
|
2070
2075
|
tradeType = self.safe_string(params, 'tradeType') # keep it for backward compatibility
|
2071
2076
|
isTriggerOrder = (triggerPrice or stopLossPrice or takeProfitPrice)
|
@@ -2086,6 +2091,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2086
2091
|
response = await self.privatePostStopOrder(orderRequest)
|
2087
2092
|
elif isMarginOrder:
|
2088
2093
|
response = await self.privatePostMarginOrder(orderRequest)
|
2094
|
+
elif useSync:
|
2095
|
+
response = await self.privatePostHfOrdersSync(orderRequest)
|
2089
2096
|
elif hf:
|
2090
2097
|
response = await self.privatePostHfOrders(orderRequest)
|
2091
2098
|
else:
|
@@ -2144,9 +2151,11 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2144
2151
|
create a list of trade orders
|
2145
2152
|
:see: https://www.kucoin.com/docs/rest/spot-trading/orders/place-multiple-orders
|
2146
2153
|
:see: https://www.kucoin.com/docs/rest/spot-trading/spot-hf-trade-pro-account/place-multiple-hf-orders
|
2154
|
+
:see: https://www.kucoin.com/docs/rest/spot-trading/spot-hf-trade-pro-account/sync-place-multiple-hf-orders
|
2147
2155
|
:param Array orders: list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
|
2148
2156
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
2149
2157
|
:param bool [params.hf]: False, # True for hf orders
|
2158
|
+
:param bool [params.sync]: False, # True to use the hf sync call
|
2150
2159
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
2151
2160
|
"""
|
2152
2161
|
await self.load_markets()
|
@@ -2176,8 +2185,12 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2176
2185
|
}
|
2177
2186
|
hf = None
|
2178
2187
|
hf, params = await self.handle_hf_and_params(params)
|
2188
|
+
useSync = False
|
2189
|
+
useSync, params = self.handle_option_and_params(params, 'createOrders', 'sync', False)
|
2179
2190
|
response = None
|
2180
|
-
if
|
2191
|
+
if useSync:
|
2192
|
+
response = await self.privatePostHfOrdersMultiSync(self.extend(request, params))
|
2193
|
+
elif hf:
|
2181
2194
|
response = await self.privatePostHfOrdersMulti(self.extend(request, params))
|
2182
2195
|
else:
|
2183
2196
|
response = await self.privatePostOrdersMulti(self.extend(request, params))
|
@@ -2328,11 +2341,14 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2328
2341
|
:see: https://docs.kucoin.com/spot#cancel-single-order-by-clientoid-2
|
2329
2342
|
:see: https://docs.kucoin.com/spot-hf/#cancel-orders-by-orderid
|
2330
2343
|
:see: https://docs.kucoin.com/spot-hf/#cancel-order-by-clientoid
|
2344
|
+
:see: https://www.kucoin.com/docs/rest/spot-trading/spot-hf-trade-pro-account/sync-cancel-hf-order-by-orderid
|
2345
|
+
:see: https://www.kucoin.com/docs/rest/spot-trading/spot-hf-trade-pro-account/sync-cancel-hf-order-by-clientoid
|
2331
2346
|
:param str id: order id
|
2332
2347
|
:param str symbol: unified symbol of the market the order was made in
|
2333
2348
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
2334
2349
|
:param bool [params.stop]: True if cancelling a stop order
|
2335
2350
|
:param bool [params.hf]: False, # True for hf order
|
2351
|
+
:param bool [params.sync]: False, # True to use the hf sync call
|
2336
2352
|
:returns: Response from the exchange
|
2337
2353
|
"""
|
2338
2354
|
await self.load_markets()
|
@@ -2341,7 +2357,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2341
2357
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2342
2358
|
hf = None
|
2343
2359
|
hf, params = await self.handle_hf_and_params(params)
|
2344
|
-
|
2360
|
+
useSync = False
|
2361
|
+
useSync, params = self.handle_option_and_params(params, 'cancelOrder', 'sync', False)
|
2362
|
+
if hf or useSync:
|
2345
2363
|
if symbol is None:
|
2346
2364
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol parameter for hf orders')
|
2347
2365
|
market = self.market(symbol)
|
@@ -2361,6 +2379,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2361
2379
|
# }
|
2362
2380
|
# }
|
2363
2381
|
#
|
2382
|
+
elif useSync:
|
2383
|
+
response = await self.privateDeleteHfOrdersSyncClientOrderClientOid(self.extend(request, params))
|
2364
2384
|
elif hf:
|
2365
2385
|
response = await self.privateDeleteHfOrdersClientOrderClientOid(self.extend(request, params))
|
2366
2386
|
#
|
@@ -2395,6 +2415,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2395
2415
|
# data: {cancelledOrderIds: ['vs8lgpiuaco91qk8003vebu9']}
|
2396
2416
|
# }
|
2397
2417
|
#
|
2418
|
+
elif useSync:
|
2419
|
+
response = await self.privateDeleteHfOrdersSyncOrderId(self.extend(request, params))
|
2398
2420
|
elif hf:
|
2399
2421
|
response = await self.privateDeleteHfOrdersOrderId(self.extend(request, params))
|
2400
2422
|
#
|
@@ -3464,8 +3486,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3464
3486
|
# }
|
3465
3487
|
# }
|
3466
3488
|
#
|
3467
|
-
|
3468
|
-
|
3489
|
+
data = self.safe_dict(response, 'data', {})
|
3490
|
+
items = self.safe_list(data, 'items', [])
|
3491
|
+
return self.parse_transactions(items, currency, since, limit, {'type': 'deposit'})
|
3469
3492
|
|
3470
3493
|
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
3471
3494
|
"""
|
@@ -3541,8 +3564,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3541
3564
|
# }
|
3542
3565
|
# }
|
3543
3566
|
#
|
3544
|
-
|
3545
|
-
|
3567
|
+
data = self.safe_dict(response, 'data', {})
|
3568
|
+
items = self.safe_list(data, 'items', [])
|
3569
|
+
return self.parse_transactions(items, currency, since, limit, {'type': 'withdrawal'})
|
3546
3570
|
|
3547
3571
|
def parse_balance_helper(self, entry):
|
3548
3572
|
account = self.account()
|
@@ -4346,7 +4370,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4346
4370
|
# }
|
4347
4371
|
#
|
4348
4372
|
data = self.safe_dict(response, 'data')
|
4349
|
-
rows = self.safe_list(data, 'items')
|
4373
|
+
rows = self.safe_list(data, 'items', [])
|
4350
4374
|
return self.parse_borrow_rate_histories(rows, codes, since, limit)
|
4351
4375
|
|
4352
4376
|
async def fetch_borrow_rate_history(self, code: str, since: Int = None, limit: Int = None, params={}):
|
@@ -4397,7 +4421,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4397
4421
|
# }
|
4398
4422
|
#
|
4399
4423
|
data = self.safe_dict(response, 'data')
|
4400
|
-
rows = self.safe_list(data, 'items')
|
4424
|
+
rows = self.safe_list(data, 'items', [])
|
4401
4425
|
return self.parse_borrow_rate_history(rows, code, since, limit)
|
4402
4426
|
|
4403
4427
|
def parse_borrow_rate_histories(self, response, codes, since, limit):
|
ccxt/base/exchange.py
CHANGED
ccxt/hyperliquid.py
CHANGED
@@ -328,7 +328,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
328
328
|
#
|
329
329
|
meta = self.safe_dict(response, 0, {})
|
330
330
|
universe = self.safe_list(meta, 'universe', [])
|
331
|
-
assetCtxs = self.
|
331
|
+
assetCtxs = self.safe_list(response, 1, [])
|
332
332
|
result = []
|
333
333
|
for i in range(0, len(universe)):
|
334
334
|
data = self.extend(
|
@@ -686,7 +686,7 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
686
686
|
total = self.safe_string(balance, 'total')
|
687
687
|
free = self.safe_string(balance, 'hold')
|
688
688
|
account['total'] = total
|
689
|
-
account['
|
689
|
+
account['used'] = free
|
690
690
|
spotBalances[code] = account
|
691
691
|
return self.safe_balance(spotBalances)
|
692
692
|
data = self.safe_dict(response, 'marginSummary', {})
|
@@ -1693,9 +1693,10 @@ class hyperliquid(Exchange, ImplicitAPI):
|
|
1693
1693
|
userAddress, params = self.handle_public_address('fetchOrder', params)
|
1694
1694
|
self.load_markets()
|
1695
1695
|
market = self.safe_market(symbol)
|
1696
|
+
isClientOrderId = len(id) >= 34
|
1696
1697
|
request: dict = {
|
1697
1698
|
'type': 'orderStatus',
|
1698
|
-
'oid': self.parse_to_numeric(id),
|
1699
|
+
'oid': id if isClientOrderId else self.parse_to_numeric(id),
|
1699
1700
|
'user': userAddress,
|
1700
1701
|
}
|
1701
1702
|
response = self.publicPostInfo(self.extend(request, params))
|
ccxt/kucoin.py
CHANGED
@@ -1221,7 +1221,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
1221
1221
|
return result
|
1222
1222
|
|
1223
1223
|
def load_migration_status(self, force: bool = False):
|
1224
|
-
if not ('hfMigrated' in self.options) or force:
|
1224
|
+
if not ('hfMigrated' in self.options) or (self.options['hfMigrated'] is None) or force:
|
1225
1225
|
result: dict = self.privateGetMigrateUserAccountStatus()
|
1226
1226
|
data: dict = self.safe_dict(result, 'data', {})
|
1227
1227
|
status: Int = self.safe_integer(data, 'status')
|
@@ -1754,7 +1754,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
1754
1754
|
# }
|
1755
1755
|
# }
|
1756
1756
|
#
|
1757
|
-
|
1757
|
+
data = self.safe_dict(response, 'data', {})
|
1758
|
+
return self.parse_ticker(data, market)
|
1758
1759
|
|
1759
1760
|
def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
|
1760
1761
|
#
|
@@ -2027,6 +2028,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2027
2028
|
:see: https://docs.kucoin.com/spot-hf/#place-hf-order
|
2028
2029
|
:see: https://www.kucoin.com/docs/rest/spot-trading/orders/place-order-test
|
2029
2030
|
:see: https://www.kucoin.com/docs/rest/margin-trading/orders/place-margin-order-test
|
2031
|
+
:see: https://www.kucoin.com/docs/rest/spot-trading/spot-hf-trade-pro-account/sync-place-hf-order
|
2030
2032
|
:param str symbol: Unified CCXT market symbol
|
2031
2033
|
:param str type: 'limit' or 'market'
|
2032
2034
|
:param str side: 'buy' or 'sell'
|
@@ -2057,6 +2059,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2057
2059
|
:param bool [params.autoBorrow]: False, # The system will first borrow you funds at the optimal interest rate and then place an order for you
|
2058
2060
|
:param bool [params.hf]: False, # True for hf order
|
2059
2061
|
:param bool [params.test]: set to True to test an order, no order will be created but the request will be validated
|
2062
|
+
:param bool [params.sync]: set to True to use the hf sync call
|
2060
2063
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
2061
2064
|
"""
|
2062
2065
|
self.load_markets()
|
@@ -2065,6 +2068,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2065
2068
|
params = self.omit(params, 'test')
|
2066
2069
|
hf = None
|
2067
2070
|
hf, params = self.handle_hf_and_params(params)
|
2071
|
+
useSync = False
|
2072
|
+
useSync, params = self.handle_option_and_params(params, 'createOrder', 'sync', False)
|
2068
2073
|
triggerPrice, stopLossPrice, takeProfitPrice = self.handle_trigger_prices(params)
|
2069
2074
|
tradeType = self.safe_string(params, 'tradeType') # keep it for backward compatibility
|
2070
2075
|
isTriggerOrder = (triggerPrice or stopLossPrice or takeProfitPrice)
|
@@ -2085,6 +2090,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2085
2090
|
response = self.privatePostStopOrder(orderRequest)
|
2086
2091
|
elif isMarginOrder:
|
2087
2092
|
response = self.privatePostMarginOrder(orderRequest)
|
2093
|
+
elif useSync:
|
2094
|
+
response = self.privatePostHfOrdersSync(orderRequest)
|
2088
2095
|
elif hf:
|
2089
2096
|
response = self.privatePostHfOrders(orderRequest)
|
2090
2097
|
else:
|
@@ -2143,9 +2150,11 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2143
2150
|
create a list of trade orders
|
2144
2151
|
:see: https://www.kucoin.com/docs/rest/spot-trading/orders/place-multiple-orders
|
2145
2152
|
:see: https://www.kucoin.com/docs/rest/spot-trading/spot-hf-trade-pro-account/place-multiple-hf-orders
|
2153
|
+
:see: https://www.kucoin.com/docs/rest/spot-trading/spot-hf-trade-pro-account/sync-place-multiple-hf-orders
|
2146
2154
|
:param Array orders: list of orders to create, each object should contain the parameters required by createOrder, namely symbol, type, side, amount, price and params
|
2147
2155
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
2148
2156
|
:param bool [params.hf]: False, # True for hf orders
|
2157
|
+
:param bool [params.sync]: False, # True to use the hf sync call
|
2149
2158
|
:returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
|
2150
2159
|
"""
|
2151
2160
|
self.load_markets()
|
@@ -2175,8 +2184,12 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2175
2184
|
}
|
2176
2185
|
hf = None
|
2177
2186
|
hf, params = self.handle_hf_and_params(params)
|
2187
|
+
useSync = False
|
2188
|
+
useSync, params = self.handle_option_and_params(params, 'createOrders', 'sync', False)
|
2178
2189
|
response = None
|
2179
|
-
if
|
2190
|
+
if useSync:
|
2191
|
+
response = self.privatePostHfOrdersMultiSync(self.extend(request, params))
|
2192
|
+
elif hf:
|
2180
2193
|
response = self.privatePostHfOrdersMulti(self.extend(request, params))
|
2181
2194
|
else:
|
2182
2195
|
response = self.privatePostOrdersMulti(self.extend(request, params))
|
@@ -2327,11 +2340,14 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2327
2340
|
:see: https://docs.kucoin.com/spot#cancel-single-order-by-clientoid-2
|
2328
2341
|
:see: https://docs.kucoin.com/spot-hf/#cancel-orders-by-orderid
|
2329
2342
|
:see: https://docs.kucoin.com/spot-hf/#cancel-order-by-clientoid
|
2343
|
+
:see: https://www.kucoin.com/docs/rest/spot-trading/spot-hf-trade-pro-account/sync-cancel-hf-order-by-orderid
|
2344
|
+
:see: https://www.kucoin.com/docs/rest/spot-trading/spot-hf-trade-pro-account/sync-cancel-hf-order-by-clientoid
|
2330
2345
|
:param str id: order id
|
2331
2346
|
:param str symbol: unified symbol of the market the order was made in
|
2332
2347
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
2333
2348
|
:param bool [params.stop]: True if cancelling a stop order
|
2334
2349
|
:param bool [params.hf]: False, # True for hf order
|
2350
|
+
:param bool [params.sync]: False, # True to use the hf sync call
|
2335
2351
|
:returns: Response from the exchange
|
2336
2352
|
"""
|
2337
2353
|
self.load_markets()
|
@@ -2340,7 +2356,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2340
2356
|
stop = self.safe_bool_2(params, 'stop', 'trigger', False)
|
2341
2357
|
hf = None
|
2342
2358
|
hf, params = self.handle_hf_and_params(params)
|
2343
|
-
|
2359
|
+
useSync = False
|
2360
|
+
useSync, params = self.handle_option_and_params(params, 'cancelOrder', 'sync', False)
|
2361
|
+
if hf or useSync:
|
2344
2362
|
if symbol is None:
|
2345
2363
|
raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol parameter for hf orders')
|
2346
2364
|
market = self.market(symbol)
|
@@ -2360,6 +2378,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2360
2378
|
# }
|
2361
2379
|
# }
|
2362
2380
|
#
|
2381
|
+
elif useSync:
|
2382
|
+
response = self.privateDeleteHfOrdersSyncClientOrderClientOid(self.extend(request, params))
|
2363
2383
|
elif hf:
|
2364
2384
|
response = self.privateDeleteHfOrdersClientOrderClientOid(self.extend(request, params))
|
2365
2385
|
#
|
@@ -2394,6 +2414,8 @@ class kucoin(Exchange, ImplicitAPI):
|
|
2394
2414
|
# data: {cancelledOrderIds: ['vs8lgpiuaco91qk8003vebu9']}
|
2395
2415
|
# }
|
2396
2416
|
#
|
2417
|
+
elif useSync:
|
2418
|
+
response = self.privateDeleteHfOrdersSyncOrderId(self.extend(request, params))
|
2397
2419
|
elif hf:
|
2398
2420
|
response = self.privateDeleteHfOrdersOrderId(self.extend(request, params))
|
2399
2421
|
#
|
@@ -3463,8 +3485,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3463
3485
|
# }
|
3464
3486
|
# }
|
3465
3487
|
#
|
3466
|
-
|
3467
|
-
|
3488
|
+
data = self.safe_dict(response, 'data', {})
|
3489
|
+
items = self.safe_list(data, 'items', [])
|
3490
|
+
return self.parse_transactions(items, currency, since, limit, {'type': 'deposit'})
|
3468
3491
|
|
3469
3492
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
3470
3493
|
"""
|
@@ -3540,8 +3563,9 @@ class kucoin(Exchange, ImplicitAPI):
|
|
3540
3563
|
# }
|
3541
3564
|
# }
|
3542
3565
|
#
|
3543
|
-
|
3544
|
-
|
3566
|
+
data = self.safe_dict(response, 'data', {})
|
3567
|
+
items = self.safe_list(data, 'items', [])
|
3568
|
+
return self.parse_transactions(items, currency, since, limit, {'type': 'withdrawal'})
|
3545
3569
|
|
3546
3570
|
def parse_balance_helper(self, entry):
|
3547
3571
|
account = self.account()
|
@@ -4345,7 +4369,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4345
4369
|
# }
|
4346
4370
|
#
|
4347
4371
|
data = self.safe_dict(response, 'data')
|
4348
|
-
rows = self.safe_list(data, 'items')
|
4372
|
+
rows = self.safe_list(data, 'items', [])
|
4349
4373
|
return self.parse_borrow_rate_histories(rows, codes, since, limit)
|
4350
4374
|
|
4351
4375
|
def fetch_borrow_rate_history(self, code: str, since: Int = None, limit: Int = None, params={}):
|
@@ -4396,7 +4420,7 @@ class kucoin(Exchange, ImplicitAPI):
|
|
4396
4420
|
# }
|
4397
4421
|
#
|
4398
4422
|
data = self.safe_dict(response, 'data')
|
4399
|
-
rows = self.safe_list(data, 'items')
|
4423
|
+
rows = self.safe_list(data, 'items', [])
|
4400
4424
|
return self.parse_borrow_rate_history(rows, code, since, limit)
|
4401
4425
|
|
4402
4426
|
def parse_borrow_rate_histories(self, response, codes, since, limit):
|
ccxt/pro/__init__.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.3.
|
3
|
+
Version: 4.3.93
|
4
4
|
Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
|
5
5
|
Home-page: https://ccxt.com
|
6
6
|
Author: Igor Kroitor
|
@@ -272,13 +272,13 @@ console.log(version, Object.keys(exchanges));
|
|
272
272
|
|
273
273
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
274
274
|
|
275
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
276
|
-
* unpkg: https://unpkg.com/ccxt@4.3.
|
275
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.93/dist/ccxt.browser.min.js
|
276
|
+
* unpkg: https://unpkg.com/ccxt@4.3.93/dist/ccxt.browser.min.js
|
277
277
|
|
278
278
|
CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
|
279
279
|
|
280
280
|
```HTML
|
281
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
281
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.93/dist/ccxt.browser.min.js"></script>
|
282
282
|
```
|
283
283
|
|
284
284
|
Creates a global `ccxt` object:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=qMb5cd9Zow3Yt6euqQjtAIXIr45UOEiYPgOZMxwLebs,16681
|
2
2
|
ccxt/ace.py,sha256=3KFlbRm6N9hXsKUsgZbQCFPZT5WGLm4HOjR19Q3uPts,42419
|
3
3
|
ccxt/alpaca.py,sha256=nVQJ8vG4JrjEvMlu_nPoyR2lBq41j9Z2smPq95nDhng,47504
|
4
4
|
ccxt/ascendex.py,sha256=RCJrO6WUMycfZZsiok9DG3KWpHOeImbZcFNI-AX98k4,151336
|
@@ -66,13 +66,13 @@ ccxt/hollaex.py,sha256=2KIbenZ3vcBDN_rs2CxG5_foKLaYxJd73vVV7M8n_8E,76140
|
|
66
66
|
ccxt/htx.py,sha256=X4A5SVzO1wPzbxK5OHG_u67ewOqj-xtb5YIkl1tSG_c,427883
|
67
67
|
ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
|
68
68
|
ccxt/huobijp.py,sha256=m9rYCCApGDtpbiqCK6Gw4GDd5EskEmho4xSemGbY1kY,89852
|
69
|
-
ccxt/hyperliquid.py,sha256=
|
69
|
+
ccxt/hyperliquid.py,sha256=k_VhEFiZobaYwef9G3D3xFRL4_z0BAVpItX5tRyAi4c,110769
|
70
70
|
ccxt/idex.py,sha256=P2jNsxiwIlMgrfPKbtmjLJQrzFcWp_TjgJaLq793oco,73255
|
71
71
|
ccxt/independentreserve.py,sha256=ChkSnahGsn0aN_cfaAonSk-V2Aa1UB-0cPTa1d3AdI4,37713
|
72
72
|
ccxt/indodax.py,sha256=VdTGxm49I6s-DhT0H1NLFVJ1XYaDWpq51jP2tyK68Ks,54580
|
73
73
|
ccxt/kraken.py,sha256=DMy-Lncp9zYsid59O7cn3OLlCIT4Nf1BQa_kqM5dSJM,133417
|
74
74
|
ccxt/krakenfutures.py,sha256=_-bbgzshifKnbyOB1pSs_bRfRepkRAdiDlsLDRiAw9w,119597
|
75
|
-
ccxt/kucoin.py,sha256=
|
75
|
+
ccxt/kucoin.py,sha256=LOjf8-8O9w79w5W59Lf9oXIC52WP-imHuncHdpBZqkI,229626
|
76
76
|
ccxt/kucoinfutures.py,sha256=KNh4biqkvaVzgQ2DGUTnNf5853iwF628jKWk3rdOcB4,125860
|
77
77
|
ccxt/kuna.py,sha256=GnIMk8R_IL84FTUHDNP6jHxd2FKNX9YwfoCXoYG83uA,96157
|
78
78
|
ccxt/latoken.py,sha256=wBhaMcTEsB316nFCxm_WbLRZ_G2Q0Vi1FK-850Q07D0,79516
|
@@ -220,7 +220,7 @@ ccxt/abstract/xt.py,sha256=JkWvsic3L2O968BCr9H5Wd5NIbRE9aTT2A-9WbAtl0c,27146
|
|
220
220
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
221
221
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
222
222
|
ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
|
223
|
-
ccxt/async_support/__init__.py,sha256
|
223
|
+
ccxt/async_support/__init__.py,sha256=-tW5QrlMh0noJZj-oGJdDFNwWEg0OdPSqkn5s1kfYqs,16504
|
224
224
|
ccxt/async_support/ace.py,sha256=ucCkKaWRkILAIK9g4iEi1Q_-zmn0V89-rX8Al4WdK8s,42643
|
225
225
|
ccxt/async_support/alpaca.py,sha256=HxonsP_MzbE7Z9r6hZ1rgmf_jPcP4H7H3z1YQgCv4qc,47716
|
226
226
|
ccxt/async_support/ascendex.py,sha256=PIgHokT4gFPEUaoi_ze2T0qgu6vEs8SytRG9ocM3r7M,152124
|
@@ -288,13 +288,13 @@ ccxt/async_support/hollaex.py,sha256=msUnnbWLNeCxFW77BnfLoFWBdvQIDwV7Rtbi9TA4TYY
|
|
288
288
|
ccxt/async_support/htx.py,sha256=pPdetpi1Y2bHxNIXrFO9VDgMOra0v8Y2hggVbe2Qzdk,430275
|
289
289
|
ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
|
290
290
|
ccxt/async_support/huobijp.py,sha256=OeEHn0GXQ56YGeUM21zwRqsEm8d2LD_SDspBsQMlds4,90352
|
291
|
-
ccxt/async_support/hyperliquid.py,sha256=
|
291
|
+
ccxt/async_support/hyperliquid.py,sha256=_BdankH5o4gS69IpQaqZRLXrITooJy3IhA1EFNxBjXs,111325
|
292
292
|
ccxt/async_support/idex.py,sha256=UcAvdMc2CP_6E8lET4rmQiIP-RaUfZHSo6pQeA17v-g,73731
|
293
293
|
ccxt/async_support/independentreserve.py,sha256=fCTAQ1U74KOZHIoYbDxzEly1xSgykcYcdpeiJiCEXkU,37991
|
294
294
|
ccxt/async_support/indodax.py,sha256=S4qV7w3gMTRLnzahoCKR70oeRlpxOV3mXDdJw8XpIo8,54888
|
295
295
|
ccxt/async_support/kraken.py,sha256=aDndekk6rCIyASRAjJNg1oNzxcProwA1ezZ7ftKLOY8,134067
|
296
296
|
ccxt/async_support/krakenfutures.py,sha256=stPhBne9pFVlgFkw4mwqtaaI6NTZCAcmOIFVlQSbl8I,120085
|
297
|
-
ccxt/async_support/kucoin.py,sha256=
|
297
|
+
ccxt/async_support/kucoin.py,sha256=24QweuT-YJmfpN9aq5MiQfuZGkN87JAfk2IxDXQRsfs,230835
|
298
298
|
ccxt/async_support/kucoinfutures.py,sha256=a2oRhfH61LsSnhSlhwSJM7yRUUsegkmQenOa_nPwHuA,126516
|
299
299
|
ccxt/async_support/kuna.py,sha256=QtzLgqgv8mLXECN2drWNVtdvm_vy-bawdxKvozDzbVE,96573
|
300
300
|
ccxt/async_support/latoken.py,sha256=9BUu8akWtbBtAzVr_c_cYLkiLQqcJdSdkJbHmuLee-Y,79992
|
@@ -332,7 +332,7 @@ ccxt/async_support/yobit.py,sha256=GQhvYrsGHQrVdTrNHQxx9isEGqUABexlllzao9HL3f8,5
|
|
332
332
|
ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
|
333
333
|
ccxt/async_support/zonda.py,sha256=jncr6Wg12S72CTpu6mCKCse1pm1f8oefVQurQSrFvP0,81733
|
334
334
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
335
|
-
ccxt/async_support/base/exchange.py,sha256=
|
335
|
+
ccxt/async_support/base/exchange.py,sha256=vvVe0ZeV4s-oKc_ngg1T0PvuCLKa2gNpkiK90Ct0LqM,110810
|
336
336
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
337
337
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
338
338
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
|
@@ -346,10 +346,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
|
|
346
346
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
347
347
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
348
348
|
ccxt/base/errors.py,sha256=Pad-6ugvGUwhoYuKUliX-N7FTrcnKCQGFjsaq2tMn0I,4610
|
349
|
-
ccxt/base/exchange.py,sha256=
|
349
|
+
ccxt/base/exchange.py,sha256=_1S1LvBBZERPgzkNKpqe7709TrXEBdvTKNRDtJAD4ow,296075
|
350
350
|
ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
|
351
351
|
ccxt/base/types.py,sha256=TaP_RElKjGEZWuzyp4o4u2YhREyTG3rUeVT6gDffY9A,9613
|
352
|
-
ccxt/pro/__init__.py,sha256=
|
352
|
+
ccxt/pro/__init__.py,sha256=nzX_q7c1I4rZzu3tncM_q2Kdh23J0mqhlkYYtKyfz7o,7710
|
353
353
|
ccxt/pro/alpaca.py,sha256=xh1yg1Ok-Zh_Mfx-MBjNrfJDs6MUU0exFfEj3GuQPC4,27631
|
354
354
|
ccxt/pro/ascendex.py,sha256=QueLgISoIxgGSOta2W7En4pwAsEXbTP5q5ef4UjpTQQ,37524
|
355
355
|
ccxt/pro/bequant.py,sha256=33OEUWBi4D9-2w8CmkwN3aF1qS-AlLqX3pxrWwNbXPY,1552
|
@@ -652,8 +652,8 @@ ccxt/test/tests_async.py,sha256=yVoLZLPkB-_ay0ab_oCyYOSwkLQkLXkPFj5jHTE3esw,8442
|
|
652
652
|
ccxt/test/tests_helpers.py,sha256=xhOILoZ_x3RSfQjtKt6AQlkp9DkOtpTQe8GAUUZoM6s,10069
|
653
653
|
ccxt/test/tests_init.py,sha256=eVwwUHujX9t4rjgo4TqEeg7DDhR1Hb_e2SJN8NVGyl0,998
|
654
654
|
ccxt/test/tests_sync.py,sha256=uu0QsWOuEpkmtV12nIffsiZZFUpM-f1k6W9nlgCDqXs,83485
|
655
|
-
ccxt-4.3.
|
656
|
-
ccxt-4.3.
|
657
|
-
ccxt-4.3.
|
658
|
-
ccxt-4.3.
|
659
|
-
ccxt-4.3.
|
655
|
+
ccxt-4.3.93.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
656
|
+
ccxt-4.3.93.dist-info/METADATA,sha256=ZCISg0my8CR3dd_hIt87BZuyiYgTs4l70h_hKC8uSfU,118342
|
657
|
+
ccxt-4.3.93.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
658
|
+
ccxt-4.3.93.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
659
|
+
ccxt-4.3.93.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|