ccxt 4.3.17__py2.py3-none-any.whl → 4.3.18__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.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

ccxt/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.17'
25
+ __version__ = '4.3.18'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.17'
7
+ __version__ = '4.3.18'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.17'
5
+ __version__ = '4.3.18'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -5516,6 +5516,7 @@ class binance(Exchange, ImplicitAPI):
5516
5516
  :param float [params.stopLossPrice]: the price that a stop loss order is triggered at
5517
5517
  :param float [params.takeProfitPrice]: the price that a take profit order is triggered at
5518
5518
  :param boolean [params.portfolioMargin]: set to True if you would like to create an order in a portfolio margin account
5519
+ :param str [params.stopLossOrTakeProfit]: 'stopLoss' or 'takeProfit', required for spot trailing orders
5519
5520
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
5520
5521
  """
5521
5522
  await self.load_markets()
@@ -5614,8 +5615,8 @@ class binance(Exchange, ImplicitAPI):
5614
5615
  stopLossPrice = self.safe_string(params, 'stopLossPrice', triggerPrice) # fallback to stopLoss
5615
5616
  takeProfitPrice = self.safe_string(params, 'takeProfitPrice')
5616
5617
  trailingDelta = self.safe_string(params, 'trailingDelta')
5617
- trailingTriggerPrice = self.safe_string_2(params, 'trailingTriggerPrice', 'activationPrice', self.number_to_string(price))
5618
- trailingPercent = self.safe_string_2(params, 'trailingPercent', 'callbackRate')
5618
+ trailingTriggerPrice = self.safe_string_2(params, 'trailingTriggerPrice', 'activationPrice')
5619
+ trailingPercent = self.safe_string_n(params, ['trailingPercent', 'callbackRate', 'trailingDelta'])
5619
5620
  priceMatch = self.safe_string(params, 'priceMatch')
5620
5621
  isTrailingPercentOrder = trailingPercent is not None
5621
5622
  isStopLoss = stopLossPrice is not None or trailingDelta is not None
@@ -5627,10 +5628,26 @@ class binance(Exchange, ImplicitAPI):
5627
5628
  uppercaseType = type.upper()
5628
5629
  stopPrice = None
5629
5630
  if isTrailingPercentOrder:
5630
- uppercaseType = 'TRAILING_STOP_MARKET'
5631
- request['callbackRate'] = trailingPercent
5632
- if trailingTriggerPrice is not None:
5633
- request['activationPrice'] = self.price_to_precision(symbol, trailingTriggerPrice)
5631
+ if market['swap']:
5632
+ uppercaseType = 'TRAILING_STOP_MARKET'
5633
+ request['callbackRate'] = trailingPercent
5634
+ if trailingTriggerPrice is not None:
5635
+ request['activationPrice'] = self.price_to_precision(symbol, trailingTriggerPrice)
5636
+ else:
5637
+ if isMarketOrder:
5638
+ raise InvalidOrder(self.id + ' trailingPercent orders are not supported for ' + symbol + ' ' + type + ' orders')
5639
+ stopLossOrTakeProfit = self.safe_string(params, 'stopLossOrTakeProfit')
5640
+ params = self.omit(params, 'stopLossOrTakeProfit')
5641
+ if stopLossOrTakeProfit != 'stopLoss' and stopLossOrTakeProfit != 'takeProfit':
5642
+ raise InvalidOrder(self.id + symbol + ' trailingPercent orders require a stopLossOrTakeProfit parameter of either stopLoss or takeProfit')
5643
+ if stopLossOrTakeProfit == 'stopLoss':
5644
+ uppercaseType = 'STOP_LOSS_LIMIT'
5645
+ elif stopLossOrTakeProfit == 'takeProfit':
5646
+ uppercaseType = 'TAKE_PROFIT_LIMIT'
5647
+ if trailingTriggerPrice is not None:
5648
+ stopPrice = self.price_to_precision(symbol, trailingTriggerPrice)
5649
+ trailingPercentConverted = Precise.string_mul(trailingPercent, '100')
5650
+ request['trailingDelta'] = trailingPercentConverted
5634
5651
  elif isStopLoss:
5635
5652
  stopPrice = stopLossPrice
5636
5653
  if isMarketOrder:
@@ -5770,8 +5787,8 @@ class binance(Exchange, ImplicitAPI):
5770
5787
  raise InvalidOrder(self.id + ' createOrder() requires a stopPrice extra param for a ' + type + ' order')
5771
5788
  else:
5772
5789
  # check for delta price
5773
- if trailingDelta is None and stopPrice is None:
5774
- raise InvalidOrder(self.id + ' createOrder() requires a stopPrice or trailingDelta param for a ' + type + ' order')
5790
+ if trailingDelta is None and stopPrice is None and trailingPercent is None:
5791
+ raise InvalidOrder(self.id + ' createOrder() requires a stopPrice, trailingDelta or trailingPercent param for a ' + type + ' order')
5775
5792
  if stopPrice is not None:
5776
5793
  request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
5777
5794
  if timeInForceIsRequired and (self.safe_string(params, 'timeInForce') is None):
ccxt/async_support/htx.py CHANGED
@@ -3124,7 +3124,7 @@ class htx(Exchange, ImplicitAPI):
3124
3124
  }
3125
3125
  return result
3126
3126
 
3127
- def network_id_to_code(self, networkId, currencyCode=None):
3127
+ def network_id_to_code(self, networkId: Str = None, currencyCode: Str = None):
3128
3128
  # here network-id is provided pair of currency & chain(i.e. trc20usdt)
3129
3129
  keys = list(self.options['networkNamesByChainIds'].keys())
3130
3130
  keysLength = len(keys)
@@ -3133,7 +3133,7 @@ class htx(Exchange, ImplicitAPI):
3133
3133
  networkTitle = self.safe_value(self.options['networkNamesByChainIds'], networkId, networkId)
3134
3134
  return super(htx, self).network_id_to_code(networkTitle)
3135
3135
 
3136
- def network_code_to_id(self, networkCode, currencyCode=None):
3136
+ def network_code_to_id(self, networkCode: str, currencyCode: Str = None):
3137
3137
  if currencyCode is None:
3138
3138
  raise ArgumentsRequired(self.id + ' networkCodeToId() requires a currencyCode argument')
3139
3139
  keys = list(self.options['networkChainIdsByNames'].keys())
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.17'
7
+ __version__ = '4.3.18'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -3362,7 +3362,7 @@ class Exchange(object):
3362
3362
  networkId = networkCode
3363
3363
  return networkId
3364
3364
 
3365
- def network_id_to_code(self, networkId: str, currencyCode: Str = None):
3365
+ def network_id_to_code(self, networkId: Str = None, currencyCode: Str = None):
3366
3366
  """
3367
3367
  * @ignore
3368
3368
  tries to convert the provided exchange-specific networkId to an unified network Code. In order to achieve self, derived class needs to have "options['networksById']" defined.
ccxt/binance.py CHANGED
@@ -5515,6 +5515,7 @@ class binance(Exchange, ImplicitAPI):
5515
5515
  :param float [params.stopLossPrice]: the price that a stop loss order is triggered at
5516
5516
  :param float [params.takeProfitPrice]: the price that a take profit order is triggered at
5517
5517
  :param boolean [params.portfolioMargin]: set to True if you would like to create an order in a portfolio margin account
5518
+ :param str [params.stopLossOrTakeProfit]: 'stopLoss' or 'takeProfit', required for spot trailing orders
5518
5519
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
5519
5520
  """
5520
5521
  self.load_markets()
@@ -5613,8 +5614,8 @@ class binance(Exchange, ImplicitAPI):
5613
5614
  stopLossPrice = self.safe_string(params, 'stopLossPrice', triggerPrice) # fallback to stopLoss
5614
5615
  takeProfitPrice = self.safe_string(params, 'takeProfitPrice')
5615
5616
  trailingDelta = self.safe_string(params, 'trailingDelta')
5616
- trailingTriggerPrice = self.safe_string_2(params, 'trailingTriggerPrice', 'activationPrice', self.number_to_string(price))
5617
- trailingPercent = self.safe_string_2(params, 'trailingPercent', 'callbackRate')
5617
+ trailingTriggerPrice = self.safe_string_2(params, 'trailingTriggerPrice', 'activationPrice')
5618
+ trailingPercent = self.safe_string_n(params, ['trailingPercent', 'callbackRate', 'trailingDelta'])
5618
5619
  priceMatch = self.safe_string(params, 'priceMatch')
5619
5620
  isTrailingPercentOrder = trailingPercent is not None
5620
5621
  isStopLoss = stopLossPrice is not None or trailingDelta is not None
@@ -5626,10 +5627,26 @@ class binance(Exchange, ImplicitAPI):
5626
5627
  uppercaseType = type.upper()
5627
5628
  stopPrice = None
5628
5629
  if isTrailingPercentOrder:
5629
- uppercaseType = 'TRAILING_STOP_MARKET'
5630
- request['callbackRate'] = trailingPercent
5631
- if trailingTriggerPrice is not None:
5632
- request['activationPrice'] = self.price_to_precision(symbol, trailingTriggerPrice)
5630
+ if market['swap']:
5631
+ uppercaseType = 'TRAILING_STOP_MARKET'
5632
+ request['callbackRate'] = trailingPercent
5633
+ if trailingTriggerPrice is not None:
5634
+ request['activationPrice'] = self.price_to_precision(symbol, trailingTriggerPrice)
5635
+ else:
5636
+ if isMarketOrder:
5637
+ raise InvalidOrder(self.id + ' trailingPercent orders are not supported for ' + symbol + ' ' + type + ' orders')
5638
+ stopLossOrTakeProfit = self.safe_string(params, 'stopLossOrTakeProfit')
5639
+ params = self.omit(params, 'stopLossOrTakeProfit')
5640
+ if stopLossOrTakeProfit != 'stopLoss' and stopLossOrTakeProfit != 'takeProfit':
5641
+ raise InvalidOrder(self.id + symbol + ' trailingPercent orders require a stopLossOrTakeProfit parameter of either stopLoss or takeProfit')
5642
+ if stopLossOrTakeProfit == 'stopLoss':
5643
+ uppercaseType = 'STOP_LOSS_LIMIT'
5644
+ elif stopLossOrTakeProfit == 'takeProfit':
5645
+ uppercaseType = 'TAKE_PROFIT_LIMIT'
5646
+ if trailingTriggerPrice is not None:
5647
+ stopPrice = self.price_to_precision(symbol, trailingTriggerPrice)
5648
+ trailingPercentConverted = Precise.string_mul(trailingPercent, '100')
5649
+ request['trailingDelta'] = trailingPercentConverted
5633
5650
  elif isStopLoss:
5634
5651
  stopPrice = stopLossPrice
5635
5652
  if isMarketOrder:
@@ -5769,8 +5786,8 @@ class binance(Exchange, ImplicitAPI):
5769
5786
  raise InvalidOrder(self.id + ' createOrder() requires a stopPrice extra param for a ' + type + ' order')
5770
5787
  else:
5771
5788
  # check for delta price
5772
- if trailingDelta is None and stopPrice is None:
5773
- raise InvalidOrder(self.id + ' createOrder() requires a stopPrice or trailingDelta param for a ' + type + ' order')
5789
+ if trailingDelta is None and stopPrice is None and trailingPercent is None:
5790
+ raise InvalidOrder(self.id + ' createOrder() requires a stopPrice, trailingDelta or trailingPercent param for a ' + type + ' order')
5774
5791
  if stopPrice is not None:
5775
5792
  request['stopPrice'] = self.price_to_precision(symbol, stopPrice)
5776
5793
  if timeInForceIsRequired and (self.safe_string(params, 'timeInForce') is None):
ccxt/htx.py CHANGED
@@ -3123,7 +3123,7 @@ class htx(Exchange, ImplicitAPI):
3123
3123
  }
3124
3124
  return result
3125
3125
 
3126
- def network_id_to_code(self, networkId, currencyCode=None):
3126
+ def network_id_to_code(self, networkId: Str = None, currencyCode: Str = None):
3127
3127
  # here network-id is provided pair of currency & chain(i.e. trc20usdt)
3128
3128
  keys = list(self.options['networkNamesByChainIds'].keys())
3129
3129
  keysLength = len(keys)
@@ -3132,7 +3132,7 @@ class htx(Exchange, ImplicitAPI):
3132
3132
  networkTitle = self.safe_value(self.options['networkNamesByChainIds'], networkId, networkId)
3133
3133
  return super(htx, self).network_id_to_code(networkTitle)
3134
3134
 
3135
- def network_code_to_id(self, networkCode, currencyCode=None):
3135
+ def network_code_to_id(self, networkCode: str, currencyCode: Str = None):
3136
3136
  if currencyCode is None:
3137
3137
  raise ArgumentsRequired(self.id + ' networkCodeToId() requires a currencyCode argument')
3138
3138
  keys = list(self.options['networkChainIdsByNames'].keys())
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.17'
7
+ __version__ = '4.3.18'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/bitvavo.py CHANGED
@@ -559,7 +559,7 @@ class bitvavo(ccxt.async_support.bitvavo):
559
559
  """
560
560
  await self.load_markets()
561
561
  await self.authenticate()
562
- request = self.cancelOrderRequest(id, symbol, params)
562
+ request = self.cancel_order_request(id, symbol, params)
563
563
  return await self.watch_request('privateCancelOrder', request)
564
564
 
565
565
  async def cancel_all_orders_ws(self, symbol: Str = None, params={}):
ccxt/pro/bybit.py CHANGED
@@ -60,7 +60,7 @@ class bybit(ccxt.async_support.bybit):
60
60
  },
61
61
  'contract': 'wss://stream.{hostname}/v5/private',
62
62
  'usdc': 'wss://stream.{hostname}/trade/option/usdc/private/v1',
63
- 'trade': 'wss://stream-testnet.bybit.com/v5/trade',
63
+ 'trade': 'wss://stream.bybit.com/v5/trade',
64
64
  },
65
65
  },
66
66
  },
@@ -277,11 +277,12 @@ class bybit(ccxt.async_support.bybit):
277
277
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
278
278
  """
279
279
  await self.load_markets()
280
- orderRequest = self.cancelOrderRequest(id, symbol, params)
280
+ orderRequest = self.cancel_order_request(id, symbol, params)
281
281
  url = self.urls['api']['ws']['private']['trade']
282
282
  await self.authenticate(url)
283
283
  requestId = str(self.request_id())
284
- del orderRequest['orderFilter']
284
+ if 'orderFilter' in orderRequest:
285
+ del orderRequest['orderFilter']
285
286
  request = {
286
287
  'op': 'order.cancel',
287
288
  'reqId': requestId,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.17
3
+ Version: 4.3.18
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
@@ -262,13 +262,13 @@ console.log(version, Object.keys(exchanges));
262
262
 
263
263
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
264
264
 
265
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.17/dist/ccxt.browser.js
266
- * unpkg: https://unpkg.com/ccxt@4.3.17/dist/ccxt.browser.js
265
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.18/dist/ccxt.browser.js
266
+ * unpkg: https://unpkg.com/ccxt@4.3.18/dist/ccxt.browser.js
267
267
 
268
268
  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.
269
269
 
270
270
  ```HTML
271
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.17/dist/ccxt.browser.js"></script>
271
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.18/dist/ccxt.browser.js"></script>
272
272
  ```
273
273
 
274
274
  Creates a global `ccxt` object:
@@ -1,10 +1,10 @@
1
- ccxt/__init__.py,sha256=PKQAL6JNGsit5jrG5-x55O0-anLpPCPxDm8zCl6CQKs,15739
1
+ ccxt/__init__.py,sha256=CDyam3J5hlCRyFoqMqWMPqPHVZjNO2l_obiPWcnpoPo,15739
2
2
  ccxt/ace.py,sha256=j7Aq0hnsMTcUCIrWCm-ZZMkptWzAY23D8zi3jZWjq3c,41650
3
3
  ccxt/alpaca.py,sha256=NadHil-XkNFteqE7GwzIhKCCRjQ7m0xBQBCUlKxS6Sc,47215
4
4
  ccxt/ascendex.py,sha256=0W7umzuDzp6_DRcESoL7IAiBapPNMaAJ13R04SgqbbQ,151431
5
5
  ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
6
6
  ccxt/bigone.py,sha256=e9bOBUENqxUI1IjcCRBpc_eb7CilAxgk0tHGguESOEU,92168
7
- ccxt/binance.py,sha256=cZMky2HgTBh6svMy-xe7PWfWgY_JYvjfVPCGgK4R7F4,615718
7
+ ccxt/binance.py,sha256=jHWlDPjOAjEoFhLGM6R7ykaCPgz20P8ac6sioMo01_A,617023
8
8
  ccxt/binancecoinm.py,sha256=pncdw6Xw2X1Po-vEvAB4nL37scoS_axGAVxetPy1YQs,1645
9
9
  ccxt/binanceus.py,sha256=hdcT4OnadcdFFFjF3GtM0nWv90jqojqwdVS3xWGuW40,9163
10
10
  ccxt/binanceusdm.py,sha256=KPQGlCalQ0eGlPCs2tSanOxaP8O0zFRQjGntA16Yprw,2480
@@ -61,7 +61,7 @@ ccxt/gemini.py,sha256=k64XV333w1KpzF5e2pvhDjJGj5lTxP3CCFglFNPpuGU,80652
61
61
  ccxt/hitbtc.py,sha256=6_2aHWzD5al0aZqU3U44141Fnn2RPGJnj_xRu6xqTHs,152997
62
62
  ccxt/hitbtc3.py,sha256=qRAr4Zvaju9IQWRZUohdoN7xRnzIMPq8AyYb3gPv-Is,455
63
63
  ccxt/hollaex.py,sha256=xpXNrVP3yTEInjk3dz_-QzIYC-T7aC53wYwXaNiyZ7k,75931
64
- ccxt/htx.py,sha256=VwErziLq0kj3BH0Yt4cbpIgfXZlLkE7Ap1QTqYzcRNA,420397
64
+ ccxt/htx.py,sha256=0LH_fAeKkE3s8uwKzPxb_6VQ70WtVXvYliw1OWW74Us,420428
65
65
  ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
66
66
  ccxt/huobijp.py,sha256=mPsEYc3A5keD5r23UMpXce0edCgvlG22wkVxZ3Yl00U,87962
67
67
  ccxt/hyperliquid.py,sha256=0trDGiIGIBB37T8zL457ygdT12nlgcfrPY5l7NzpySw,99839
@@ -206,13 +206,13 @@ ccxt/abstract/woo.py,sha256=yH0aXeyohXdyS3jZrztapwRmzNWk7JGpbrrf7pX_LKU,10368
206
206
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
207
207
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
208
208
  ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
209
- ccxt/async_support/__init__.py,sha256=Y04DLbQkLgyTS0mRwYr_NqgwFkc1i8LkMmxTc9vDhqQ,15492
209
+ ccxt/async_support/__init__.py,sha256=D7u_GNmPja3hY-e1yOtHb4C9bom4F3SKMahfJsb3Ap0,15492
210
210
  ccxt/async_support/ace.py,sha256=FNZKajNtvFhDEmBYzgv46pGMwvHbPQcqhsWRpAk9iwU,41874
211
211
  ccxt/async_support/alpaca.py,sha256=rjD8PdQr1B5e9hvaoTQBKVtWwHLs04e6_-gooXl4eEE,47427
212
212
  ccxt/async_support/ascendex.py,sha256=pprQOgeyclQtFMPtXmTMyXj_WU5PIn9rOfBZi8fxmLs,152219
213
213
  ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
214
214
  ccxt/async_support/bigone.py,sha256=VRcmcf65P0Uw-EpEf78u_KQdE9J6MVOKdd311z-thRA,92622
215
- ccxt/async_support/binance.py,sha256=7yqKN2HLM4FB6QkyVK8zMEGdbZ_U2GLSKB7ua_ykkyw,618416
215
+ ccxt/async_support/binance.py,sha256=tx0t0T28oHhIIz-LsJnlm9pZqwFMmx5WsFHFpd-abfk,619721
216
216
  ccxt/async_support/binancecoinm.py,sha256=IY3RLZptQA2nmZaUYRGfTa5ZY4VMWBpFYfwHc8zTHw0,1683
217
217
  ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
218
218
  ccxt/async_support/binanceusdm.py,sha256=-1r4A4tmV2pCiLGO80hzq7MIIj4MTzOD7buZGv6JauA,2518
@@ -269,7 +269,7 @@ ccxt/async_support/gemini.py,sha256=1hoUC5_LClvKFTeUFcDXgIjuir_9KHgz26DEECZymVI,
269
269
  ccxt/async_support/hitbtc.py,sha256=pBNZxUF4qehqmpIvjXGnNFbhZS3Y0wL3t4LJiMeuZ1s,154043
270
270
  ccxt/async_support/hitbtc3.py,sha256=dmSYoD2o4av_zzbZI8HNIoj8BWxA7QozsVpy8JaOXzU,469
271
271
  ccxt/async_support/hollaex.py,sha256=ptF9O2Ey5nzmqf38-XJmSKpqmZLWCralqLqgJwhRsSU,76365
272
- ccxt/async_support/htx.py,sha256=L6pNRAQQam7sV7dCEDfp1-DApVIwt2fqykM_LqIU_aA,422753
272
+ ccxt/async_support/htx.py,sha256=0K1ww4cZsnKZ7BWNDXRWSMpAsvO141fr_WmWNM4N1L0,422784
273
273
  ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
274
274
  ccxt/async_support/huobijp.py,sha256=4tWEtGyxFxvM_ASYRhIfmLWKz7vqpE0vBRxi8qc5xnw,88462
275
275
  ccxt/async_support/hyperliquid.py,sha256=3fhFF2T4QIlKV8kDcPrYN2DLVszlHZ2YnB1M5o2TD4g,100359
@@ -311,7 +311,7 @@ ccxt/async_support/yobit.py,sha256=6eqYOcSBmXhJgcKDRMj8oRH_7aoz2E21hxgzvA1TzrA,5
311
311
  ccxt/async_support/zaif.py,sha256=laP7nbqRvoVT8u829fgoI5Svm3AUSlII_5WjRvhVNvM,28155
312
312
  ccxt/async_support/zonda.py,sha256=nHlJJSlr_zBSiw4WrKOp2FbO33_UFMK5YyLuf2Pvjr0,80871
313
313
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
314
- ccxt/async_support/base/exchange.py,sha256=eIyMM5IaCh3jzSC6Z2deT1uxKn1GJw2ulZDGP363WKg,107442
314
+ ccxt/async_support/base/exchange.py,sha256=xP7s-IxZAI4uK5OPhlkGQdlVmr3Vu2D5f6ioI9028Hk,107442
315
315
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
316
316
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
317
317
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=Ed1765emEde2Hj8Ys6f5EjS54ZI1wQ0qIhd04eB7yhU,5751
@@ -325,10 +325,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=Pxrq22nCODckJ6G1OXkYEmUunIu
325
325
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
326
326
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
327
327
  ccxt/base/errors.py,sha256=FGdyULeNCNcl52gA_CNhe2dZmat9GJGkTdlIyDXAF_A,4213
328
- ccxt/base/exchange.py,sha256=5kQbE3fgKdj5aFz6SVd6d1z-xUf1je6PgRWwnT6QKs8,275941
328
+ ccxt/base/exchange.py,sha256=uqoEeRKXDPFuZgtnXpA_P6OOxDPO6NafYt7j55Qh3go,275948
329
329
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
330
330
  ccxt/base/types.py,sha256=m9kkJ1elksA8JwVeoSZyL6BBH4qu3l8h5zhi3W22-1o,8495
331
- ccxt/pro/__init__.py,sha256=dWwwODlWmY4G_Af9c7IGkWY6cJpt59GEJK1WjcHsZlc,6999
331
+ ccxt/pro/__init__.py,sha256=CiKbg47R1mQqWtVOcccqn0VqHGaDqmM2tuaXjyhL7PQ,6999
332
332
  ccxt/pro/alpaca.py,sha256=7ePyWli0949ti5UheIn553xmnFpedrNc2W5CKauSZio,27167
333
333
  ccxt/pro/ascendex.py,sha256=fCM3EujSfJvtvffqI56UAstTtwjXFIocwukm15cF8rE,35432
334
334
  ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
@@ -348,9 +348,9 @@ ccxt/pro/bitopro.py,sha256=eRtfFh8Xv9VO0ebaEDCOCZ7LsvxYcfAKdIAvMh1ihLU,18724
348
348
  ccxt/pro/bitpanda.py,sha256=ELrhfFKN9YJJdmm9wBf-vpk6WsXGWGf-SyJdqm-E_Lg,415
349
349
  ccxt/pro/bitrue.py,sha256=gPN1lVaDZ4IBYGhaS-1WCkcNQ5__RMbtn2dC2sKZUI4,16448
350
350
  ccxt/pro/bitstamp.py,sha256=nlqEaAMHpFI-FbQBXnvBee6DW0LcZRprJ8Sp8bIzsSs,20886
351
- ccxt/pro/bitvavo.py,sha256=5xzpVRMcI2z0r41eoN-NORr5-qQYBao_bMsH8all9Q0,56143
351
+ ccxt/pro/bitvavo.py,sha256=ueyEkwp1KLedmh0fTjHLV2M_yiOWPPfr-bTR9N6hXsw,56145
352
352
  ccxt/pro/blockchaincom.py,sha256=Uv1ijvxvFGrqFPH6iifCk5AgQYTDsXUa5n0ktpusVjM,29560
353
- ccxt/pro/bybit.py,sha256=4NoyThWt5wiIwGU8NGx311Y_TzWb3umusv4bfX-dPNI,85058
353
+ ccxt/pro/bybit.py,sha256=FWN3ixxNYBIlHBkfD5wg5kaJ_lxLppvTDySvCvyOebI,85098
354
354
  ccxt/pro/cex.py,sha256=psU0k-icE931Z_wpkr16IdSZ2iDUwLnqJz3KUmQ5Xls,58380
355
355
  ccxt/pro/coinbase.py,sha256=j1iI52eNa-qya7Q7BZCpd1SAJQZc4LEGu25DIu0LMwo,29324
356
356
  ccxt/pro/coinbaseinternational.py,sha256=9Pbe6je_6nqA7SviyzmcR_4CscKdQzBYNLECOYJ4BoU,25428
@@ -527,7 +527,7 @@ ccxt/test/base/test_ticker.py,sha256=cMTIMb1oySNORUCmqI5ZzMswlEyCF6gJMah3vfvo8wQ
527
527
  ccxt/test/base/test_trade.py,sha256=PMtmB8V38dpaP-eb8h488xYMlR6D69yCOhsA1RuWrUA,2336
528
528
  ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
529
529
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
530
- ccxt-4.3.17.dist-info/METADATA,sha256=HRHCQ3Fhs6cUkhBCII7DgbkQBCMlupOWdLXaER_lBXA,111193
531
- ccxt-4.3.17.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
532
- ccxt-4.3.17.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
533
- ccxt-4.3.17.dist-info/RECORD,,
530
+ ccxt-4.3.18.dist-info/METADATA,sha256=DYzNGwp5Cv2SFmKmrLcaGYYaQkHHh59K8dnW0a_jNlE,111193
531
+ ccxt-4.3.18.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
532
+ ccxt-4.3.18.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
533
+ ccxt-4.3.18.dist-info/RECORD,,
File without changes