ccxt 3.1.13__py2.py3-none-any.whl → 3.1.15__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.
Files changed (64) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/async_support/__init__.py +1 -1
  3. ccxt/async_support/base/exchange.py +30 -13
  4. ccxt/async_support/huobi.py +4 -1
  5. ccxt/async_support/okx.py +1 -0
  6. ccxt/async_support/poloniex.py +1 -1
  7. ccxt/base/exchange.py +30 -13
  8. ccxt/huobi.py +4 -1
  9. ccxt/okx.py +1 -0
  10. ccxt/poloniex.py +1 -1
  11. ccxt/pro/__init__.py +3 -1
  12. ccxt/pro/alpaca.py +3 -3
  13. ccxt/pro/ascendex.py +2 -2
  14. ccxt/pro/binance.py +7 -5
  15. ccxt/pro/bitfinex.py +1 -1
  16. ccxt/pro/bitfinex2.py +3 -3
  17. ccxt/pro/bitget.py +3 -3
  18. ccxt/pro/bitmart.py +2 -2
  19. ccxt/pro/bitmex.py +3 -3
  20. ccxt/pro/bitopro.py +1 -1
  21. ccxt/pro/bitpanda.py +1 -1
  22. ccxt/pro/bitstamp.py +2 -2
  23. ccxt/pro/bittrex.py +3 -3
  24. ccxt/pro/bitvavo.py +3 -3
  25. ccxt/pro/blockchaincom.py +2 -2
  26. ccxt/pro/btcex.py +3 -3
  27. ccxt/pro/bybit.py +3 -3
  28. ccxt/pro/cex.py +2 -2
  29. ccxt/pro/coinbasepro.py +3 -3
  30. ccxt/pro/coinex.py +18 -12
  31. ccxt/pro/cryptocom.py +3 -3
  32. ccxt/pro/currencycom.py +2 -2
  33. ccxt/pro/deribit.py +3 -3
  34. ccxt/pro/exmo.py +2 -2
  35. ccxt/pro/gate.py +4 -4
  36. ccxt/pro/gemini.py +2 -2
  37. ccxt/pro/hitbtc.py +2 -2
  38. ccxt/pro/hollaex.py +2 -2
  39. ccxt/pro/huobi.py +4 -4
  40. ccxt/pro/huobijp.py +2 -2
  41. ccxt/pro/idex.py +3 -3
  42. ccxt/pro/independentreserve.py +1 -1
  43. ccxt/pro/kraken.py +2 -2
  44. ccxt/pro/krakenfutures.py +4 -4
  45. ccxt/pro/kucoin.py +3 -3
  46. ccxt/pro/kucoinfutures.py +1 -1
  47. ccxt/pro/luno.py +1 -1
  48. ccxt/pro/mexc.py +3 -3
  49. ccxt/pro/ndax.py +2 -2
  50. ccxt/pro/okcoin.py +3 -3
  51. ccxt/pro/okx.py +2 -2
  52. ccxt/pro/phemex.py +3 -3
  53. ccxt/pro/poloniex.py +973 -0
  54. ccxt/pro/poloniexfutures.py +1 -1
  55. ccxt/pro/probit.py +2 -2
  56. ccxt/pro/upbit.py +1 -1
  57. ccxt/pro/wazirx.py +3 -3
  58. ccxt/pro/whitebit.py +4 -4
  59. ccxt/pro/woo.py +2 -2
  60. ccxt/test/base/test_shared_methods.py +13 -13
  61. {ccxt-3.1.13.dist-info → ccxt-3.1.15.dist-info}/METADATA +5 -5
  62. {ccxt-3.1.13.dist-info → ccxt-3.1.15.dist-info}/RECORD +64 -63
  63. {ccxt-3.1.13.dist-info → ccxt-3.1.15.dist-info}/WHEEL +0 -0
  64. {ccxt-3.1.13.dist-info → ccxt-3.1.15.dist-info}/top_level.txt +0 -0
@@ -242,7 +242,7 @@ class poloniexfutures(ccxt.async_support.poloniexfutures):
242
242
  trades = await self.subscribe(name, False, symbol, None, params)
243
243
  if self.newUpdates:
244
244
  limit = trades.getLimit(symbol, limit)
245
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
245
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
246
246
 
247
247
  async def watch_order_book(self, symbol: str, limit: Optional[int] = None, params={}):
248
248
  """
ccxt/pro/probit.py CHANGED
@@ -174,7 +174,7 @@ class probit(ccxt.async_support.probit):
174
174
  trades = await self.subscribe_order_book(symbol, 'trades', filter, params)
175
175
  if self.newUpdates:
176
176
  limit = trades.getLimit(symbol, limit)
177
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
177
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
178
178
 
179
179
  def handle_trades(self, client: Client, message):
180
180
  #
@@ -241,7 +241,7 @@ class probit(ccxt.async_support.probit):
241
241
  trades = await self.watch(url, messageHash, request, channel)
242
242
  if self.newUpdates:
243
243
  limit = trades.getLimit(symbol, limit)
244
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
244
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
245
245
 
246
246
  def handle_my_trades(self, client: Client, message):
247
247
  #
ccxt/pro/upbit.py CHANGED
@@ -76,7 +76,7 @@ class upbit(ccxt.async_support.upbit):
76
76
  trades = await self.watch_public(symbol, 'trade')
77
77
  if self.newUpdates:
78
78
  limit = trades.getLimit(symbol, limit)
79
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
79
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
80
80
 
81
81
  async def watch_order_book(self, symbol: str, limit: Optional[int] = None, params={}):
82
82
  """
ccxt/pro/wazirx.py CHANGED
@@ -302,7 +302,7 @@ class wazirx(ccxt.async_support.wazirx):
302
302
  trades = await self.watch(url, messageHash, request, messageHash)
303
303
  if self.newUpdates:
304
304
  limit = trades.getLimit(symbol, limit)
305
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
305
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
306
306
 
307
307
  def handle_trades(self, client: Client, message):
308
308
  #
@@ -366,7 +366,7 @@ class wazirx(ccxt.async_support.wazirx):
366
366
  trades = await self.watch(url, messageHash, request, messageHash)
367
367
  if self.newUpdates:
368
368
  limit = trades.getLimit(symbol, limit)
369
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
369
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
370
370
 
371
371
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Optional[int] = None, limit: Optional[int] = None, params={}):
372
372
  """
@@ -392,7 +392,7 @@ class wazirx(ccxt.async_support.wazirx):
392
392
  ohlcv = await self.watch(url, messageHash, request, messageHash)
393
393
  if self.newUpdates:
394
394
  limit = ohlcv.getLimit(symbol, limit)
395
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
395
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
396
396
 
397
397
  def handle_ohlcv(self, client: Client, message):
398
398
  #
ccxt/pro/whitebit.py CHANGED
@@ -89,7 +89,7 @@ class whitebit(ccxt.async_support.whitebit):
89
89
  ohlcv = await self.watch_public(messageHash, method, reqParams, params)
90
90
  if self.newUpdates:
91
91
  limit = ohlcv.getLimit(symbol, limit)
92
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
92
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
93
93
 
94
94
  def handle_ohlcv(self, client: Client, message):
95
95
  #
@@ -304,7 +304,7 @@ class whitebit(ccxt.async_support.whitebit):
304
304
  trades = await self.watch_multiple_subscription(messageHash, method, symbol, False, params)
305
305
  if self.newUpdates:
306
306
  limit = trades.getLimit(symbol, limit)
307
- return self.filter_by_since_limit(trades, since, limit, 'timestamp')
307
+ return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
308
308
 
309
309
  def handle_trades(self, client: Client, message):
310
310
  #
@@ -367,7 +367,7 @@ class whitebit(ccxt.async_support.whitebit):
367
367
  trades = await self.watch_multiple_subscription(messageHash, method, symbol, True, params)
368
368
  if self.newUpdates:
369
369
  limit = trades.getLimit(symbol, limit)
370
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
370
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
371
371
 
372
372
  def handle_my_trades(self, client: Client, message, subscription=None):
373
373
  #
@@ -460,7 +460,7 @@ class whitebit(ccxt.async_support.whitebit):
460
460
  trades = await self.watch_multiple_subscription(messageHash, method, symbol, False, params)
461
461
  if self.newUpdates:
462
462
  limit = trades.getLimit(symbol, limit)
463
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
463
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
464
464
 
465
465
  def handle_order(self, client: Client, message, subscription=None):
466
466
  #
ccxt/pro/woo.py CHANGED
@@ -272,7 +272,7 @@ class woo(ccxt.async_support.woo):
272
272
  ohlcv = await self.watch_public(topic, message)
273
273
  if self.newUpdates:
274
274
  limit = ohlcv.getLimit(market['symbol'], limit)
275
- return self.filter_by_since_limit(ohlcv, since, limit, 0)
275
+ return self.filter_by_since_limit(ohlcv, since, limit, 0, True)
276
276
 
277
277
  def handle_ohlcv(self, client: Client, message):
278
278
  #
@@ -329,7 +329,7 @@ class woo(ccxt.async_support.woo):
329
329
  trades = await self.watch_public(topic, message)
330
330
  if self.newUpdates:
331
331
  limit = trades.getLimit(market['symbol'], limit)
332
- return self.filter_by_symbol_since_limit(trades, symbol, since, limit)
332
+ return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
333
333
 
334
334
  def handle_trade(self, client: Client, message):
335
335
  #
@@ -83,7 +83,7 @@ def assert_structure(exchange, skipped_properties, method, entry, format, empty_
83
83
  key = keys[i]
84
84
  if key in skipped_properties:
85
85
  continue
86
- assert key in entry, 'key \"' + string_value(key) + '\" is missing from structure' + log_text
86
+ assert key in entry, '\"' + string_value(key) + '\" key is missing from structure' + log_text
87
87
  empty_allowed_for_this_key = exchange.in_array(key, empty_allowed_for)
88
88
  value = entry[key]
89
89
  # check when:
@@ -92,10 +92,10 @@ def assert_structure(exchange, skipped_properties, method, entry, format, empty_
92
92
  if empty_allowed_for_this_key and (value is None):
93
93
  continue
94
94
  # if it was in needed keys, then it should have value.
95
- assert value is not None, 'key \"' + string_value(key) + '\" is expected to have a value' + log_text
95
+ assert value is not None, '\"' + string_value(key) + '\" key is expected to have a value' + log_text
96
96
  # add exclusion for info key, as it can be any type
97
97
  if key != 'info':
98
- assert assert_type(exchange, skipped_properties, entry, key, format), 'key \"' + string_value(key) + '\" is neither undefined, neither of expected type' + log_text
98
+ assert assert_type(exchange, skipped_properties, entry, key, format), '\"' + string_value(key) + '\" key is neither undefined, neither of expected type' + log_text
99
99
 
100
100
 
101
101
  def assert_timestamp(exchange, skipped_properties, method, entry, now_to_check=None, key_name_or_index='timestamp'):
@@ -105,7 +105,7 @@ def assert_timestamp(exchange, skipped_properties, method, entry, now_to_check=N
105
105
  return # skipped
106
106
  is_date_time_object = isinstance(key_name_or_index, str)
107
107
  if is_date_time_object:
108
- assert (key_name_or_index in entry), 'timestamp key ' + key_name_or_index + ' is missing from structure' + log_text
108
+ assert (key_name_or_index in entry), 'timestamp key \"' + key_name_or_index + '\" is missing from structure' + log_text
109
109
  else:
110
110
  # if index was provided (mostly from fetchOHLCV) then we check if it exists, as mandatory
111
111
  assert not (entry[key_name_or_index] is None), 'timestamp index ' + string_value(key_name_or_index) + ' is undefined' + log_text
@@ -123,10 +123,10 @@ def assert_timestamp(exchange, skipped_properties, method, entry, now_to_check=N
123
123
  # only in case if the entry is a dictionary, thus it must have 'timestamp' & 'datetime' string keys
124
124
  if is_date_time_object:
125
125
  # we also test 'datetime' here because it's certain sibling of 'timestamp'
126
- assert ('datetime' in entry), 'datetime is missing from structure' + log_text
126
+ assert ('datetime' in entry), '\"datetime\" key is missing from structure' + log_text
127
127
  dt = entry['datetime']
128
128
  if dt is not None:
129
- assert isinstance(dt, str), 'datetime is not a string' + log_text
129
+ assert isinstance(dt, str), '\"datetime\" key does not have a string value' + log_text
130
130
  assert dt == exchange.iso8601(entry['timestamp']), 'datetime is not iso8601 of timestamp' + log_text
131
131
 
132
132
 
@@ -136,7 +136,7 @@ def assert_currency_code(exchange, skipped_properties, method, entry, actual_cod
136
136
  assert isinstance(actual_code, str), 'currency code should be either undefined or a string' + log_text
137
137
  assert (actual_code in exchange.currencies), 'currency code should be present in exchange.currencies' + log_text
138
138
  if expected_code is not None:
139
- assert actual_code == expected_code, 'currency code in response (' + string_value(actual_code) + ') should be equal to expected code (' + string_value(expected_code) + ')' + log_text
139
+ assert actual_code == expected_code, 'currency code in response (\"' + string_value(actual_code) + '\") should be equal to expected code (\"' + string_value(expected_code) + '\")' + log_text
140
140
 
141
141
 
142
142
  def assert_valid_currency_id_and_code(exchange, skipped_properties, method, entry, currency_id, currency_code):
@@ -150,7 +150,7 @@ def assert_valid_currency_id_and_code(exchange, skipped_properties, method, entr
150
150
  if defined_values:
151
151
  # check by code
152
152
  currency_by_code = exchange.currency(currency_code)
153
- assert currency_by_code['id'] == currency_id, 'currencyId ' + string_value(currency_id) + ' does not match currency of code: ' + string_value(currency_code) + log_text
153
+ assert currency_by_code['id'] == currency_id, 'currencyId \"' + string_value(currency_id) + '\" does not match currency of code: \"' + string_value(currency_code) + '\"' + log_text
154
154
  # check by id
155
155
  currency_by_id = exchange.safe_currency(currency_id)
156
156
  assert currency_by_id['code'] == currency_code, 'currencyCode ' + string_value(currency_code) + ' does not match currency of id: ' + string_value(currency_id) + log_text
@@ -165,7 +165,7 @@ def assert_symbol(exchange, skipped_properties, method, entry, key, expected_sym
165
165
  assert isinstance(actual_symbol, str), 'symbol should be either undefined or a string' + log_text
166
166
  assert (actual_symbol in exchange.markets), 'symbol should be present in exchange.symbols' + log_text
167
167
  if expected_symbol is not None:
168
- assert actual_symbol == expected_symbol, 'symbol in response (' + string_value(actual_symbol) + ') should be equal to expected symbol (' + string_value(expected_symbol) + ')' + log_text
168
+ assert actual_symbol == expected_symbol, 'symbol in response (\"' + string_value(actual_symbol) + '\") should be equal to expected symbol (\"' + string_value(expected_symbol) + '\")' + log_text
169
169
 
170
170
 
171
171
  def assert_greater(exchange, skipped_properties, method, entry, key, compare_to):
@@ -230,7 +230,7 @@ def assert_in_array(exchange, skipped_properties, method, entry, key, expected_a
230
230
  # todo: remove undefined check
231
231
  if value is not None:
232
232
  stingified_array_value = exchange.json(expected_array) # don't use expectedArray.join (','), as it bugs in other languages, if values are bool, undefined or etc..
233
- assert exchange.in_array(value, expected_array), string_value(key) + ' key (with a value of ' + string_value(value) + ') is not from the expected list : [' + stingified_array_value + ']' + log_text
233
+ assert exchange.in_array(value, expected_array), '\"' + string_value(key) + '\" key (value \"' + string_value(value) + '\") is not from the expected list : [' + stingified_array_value + ']' + log_text
234
234
 
235
235
 
236
236
  def assert_fee_structure(exchange, skipped_properties, method, entry, key):
@@ -241,13 +241,13 @@ def assert_fee_structure(exchange, skipped_properties, method, entry, key):
241
241
  assert key < len(entry), 'fee key ' + key_string + ' was expected to be present in entry' + log_text
242
242
  else:
243
243
  assert isinstance(entry, dict), 'fee container is expected to be an object' + log_text
244
- assert key in entry, 'fee key ' + key + ' was expected to be present in entry' + log_text
244
+ assert key in entry, 'fee key \"' + key + '\" was expected to be present in entry' + log_text
245
245
  fee_object = exchange.safe_value(entry, key)
246
246
  # todo: remove undefined check to make stricter
247
247
  if fee_object is not None:
248
248
  assert 'cost' in fee_object, key_string + ' fee object should contain \"cost\" key' + log_text
249
249
  assert_greater_or_equal(exchange, skipped_properties, method, fee_object, 'cost', '0')
250
- assert 'currency' in fee_object, key_string + ' fee object should contain \"currency\" key' + log_text
250
+ assert 'currency' in fee_object, '\"' + key_string + '\" fee object should contain \"currency\" key' + log_text
251
251
  assert_currency_code(exchange, skipped_properties, method, entry, fee_object['currency'])
252
252
 
253
253
 
@@ -267,7 +267,7 @@ def assert_integer(exchange, skipped_properties, method, entry, key):
267
267
  if entry is not None:
268
268
  value = exchange.safe_number(entry, key)
269
269
  if value is not None:
270
- assert is_integer(value), string_value(key) + ' key (with value ' + string_value(value) + ') is not an integer' + log_text
270
+ assert is_integer(value), '\"' + string_value(key) + '\" key (value \"' + string_value(value) + '\") is not an integer' + log_text
271
271
 
272
272
 
273
273
  def check_precision_accuracy(exchange, skipped_properties, method, entry, key):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 3.1.13
3
+ Version: 3.1.15
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -192,7 +192,7 @@ The CCXT library currently supports the following 101 cryptocurrency exchange ma
192
192
  | [![okx](https://user-images.githubusercontent.com/1294454/152485636-38b19e4a-bece-4dec-979a-5982859ffc04.jpg)](https://www.okx.com/join/1888677) | okx | [OKX](https://www.okx.com/join/1888677) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://www.okx.com/docs-v5/en/) | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
193
193
  | [![paymium](https://user-images.githubusercontent.com/51840849/87153930-f0f02200-c2c0-11ea-9c0a-40337375ae89.jpg)](https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj) | paymium | [Paymium](https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://github.com/Paymium/api-documentation) | | |
194
194
  | [![phemex](https://user-images.githubusercontent.com/1294454/85225056-221eb600-b3d7-11ea-930d-564d2690e3f6.jpg)](https://phemex.com/register?referralCode=EDNVJ) | phemex | [Phemex](https://phemex.com/register?referralCode=EDNVJ) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://github.com/phemex/phemex-api-docs) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
195
- | [![poloniex](https://user-images.githubusercontent.com/1294454/27766817-e9456312-5ee6-11e7-9b3c-b628ca5626a5.jpg)](https://poloniex.com/signup?c=UBFZJRPJ) | poloniex | [Poloniex](https://poloniex.com/signup?c=UBFZJRPJ) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://docs.poloniex.com) | | |
195
+ | [![poloniex](https://user-images.githubusercontent.com/1294454/27766817-e9456312-5ee6-11e7-9b3c-b628ca5626a5.jpg)](https://poloniex.com/signup?c=UBFZJRPJ) | poloniex | [Poloniex](https://poloniex.com/signup?c=UBFZJRPJ) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://docs.poloniex.com) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
196
196
  | [![poloniexfutures](https://user-images.githubusercontent.com/1294454/27766817-e9456312-5ee6-11e7-9b3c-b628ca5626a5.jpg)](https://poloniex.com/signup?c=UBFZJRPJ) | poloniexfutures | [Poloniex Futures](https://poloniex.com/signup?c=UBFZJRPJ) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://futures-docs.poloniex.com) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
197
197
  | [![probit](https://user-images.githubusercontent.com/51840849/79268032-c4379480-7ea2-11ea-80b3-dd96bb29fd0d.jpg)](https://www.probit.com/r/34608773) | probit | [ProBit](https://www.probit.com/r/34608773) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs-en.probit.com) | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
198
198
  | [![stex](https://user-images.githubusercontent.com/1294454/69680782-03fd0b80-10bd-11ea-909e-7f603500e9cc.jpg)](https://app.stex.com?ref=36416021) | stex | [STEX](https://app.stex.com?ref=36416021) | [![API Version 3](https://img.shields.io/badge/3-lightgray)](https://apidocs.stex.com/) | | |
@@ -265,13 +265,13 @@ console.log(version, Object.keys(exchanges));
265
265
 
266
266
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
267
267
 
268
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@3.1.13/dist/ccxt.browser.js
269
- * unpkg: https://unpkg.com/ccxt@3.1.13/dist/ccxt.browser.js
268
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@3.1.15/dist/ccxt.browser.js
269
+ * unpkg: https://unpkg.com/ccxt@3.1.15/dist/ccxt.browser.js
270
270
 
271
271
  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.
272
272
 
273
273
  ```HTML
274
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@3.1.13/dist/ccxt.browser.js"></script>
274
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@3.1.15/dist/ccxt.browser.js"></script>
275
275
  ```
276
276
 
277
277
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=qLX1_Vfds9s0svtKg4j6oQMs_UvHBDmMTy4v20QnaR0,15626
1
+ ccxt/__init__.py,sha256=xchWtfgVcR_7T9XGC5aYYnugU-BGCqwwKoBRFHD_WYo,15626
2
2
  ccxt/ace.py,sha256=EF63BJQ3hYZO9atvTrzpLrBeA80bH5mdfdzhBUSSULE,41329
3
3
  ccxt/alpaca.py,sha256=cn5ABCJszrfE2qWMCDIW_1F-dGHtBbG-7zeo8tpNaeE,33161
4
4
  ccxt/ascendex.py,sha256=NVSEWJYQAj-5W3Zu8WE6nGO0qWUpbVWauXXyaNj0JM8,129270
@@ -65,7 +65,7 @@ ccxt/gemini.py,sha256=Hfx5cQs1qlTSnfWMsIGnbUz6tcGxpbyVvkj-4ub07_k,69001
65
65
  ccxt/hitbtc.py,sha256=h6hwKdrhveBYsl4_B-dy7HQdnzhF4tLvrY8K9e8xNi4,62239
66
66
  ccxt/hitbtc3.py,sha256=TJG3C-9YqsRQNiZMCokkhTdlMQ2VDReMnLiXXgo12fA,116511
67
67
  ccxt/hollaex.py,sha256=SqWtRE6OCxxT8XSMfMRvB8O6Rks5GAq69Bbs-GBwq-g,69194
68
- ccxt/huobi.py,sha256=y3p_2k2LJUvMLgwI9qc0fARGQ6DoDy0RGWp8V-t9gHk,363214
68
+ ccxt/huobi.py,sha256=GMi2P7OIkImNNOP3xOxYUX-odEDvb2922sON9ppMHx4,363330
69
69
  ccxt/huobijp.py,sha256=0bRTYo9KS924MD9hFF9ybkqdSqhwfKTauBUmEWMHsLc,86605
70
70
  ccxt/huobipro.py,sha256=zdi6Dk59pKqYoaHZDD-mJ57ZvomXBoIUiS5oT3B3BAE,572
71
71
  ccxt/idex.py,sha256=3GEGwM-Fdc20kyLa36H2yRJBJ-8_CniZ8LyYvsuvp38,67332
@@ -91,10 +91,10 @@ ccxt/oceanex.py,sha256=TJRHXfZjk7BssPjXdB96yesYgJt10Iw8iJ5Q-EmP8uQ,37055
91
91
  ccxt/okcoin.py,sha256=bU32zkU4cNGcdtiyXtzX9h2v65ejOv_mQv5n4XvnGD4,177794
92
92
  ccxt/okex.py,sha256=nVDSzVztmboH593DVByjzFoOpFTzumcQFH_T9kdVKlE,434
93
93
  ccxt/okex5.py,sha256=LKTogVF1svNkqW_-Cx0AuAopu6esgFf7ucbv7CaodUg,441
94
- ccxt/okx.py,sha256=XEU0wNqEwjuBMBQU5rNOC0EaeY05DGEjT4B6oYQkKw8,275304
94
+ ccxt/okx.py,sha256=F-VDDcCU4UNGQKoAOaliVYTRhKdSJnUMMNAhazRtsqs,275356
95
95
  ccxt/paymium.py,sha256=fUXMr3WvkKWS30XvVeGqqr4dLxsWsXhoE3G68SR76X0,23887
96
96
  ccxt/phemex.py,sha256=aZXknEY1tRKDfby1M4sJXw3tAJdnZ2DE_EByXSMHDIg,192823
97
- ccxt/poloniex.py,sha256=Khh63NSkOlf6SXOGJP7KCjZxRlVbTD6uzcmsdxFdENI,90296
97
+ ccxt/poloniex.py,sha256=KC2trrqzObdIAJd0c9DH10UuMANrMZzhGldu408l1sc,90295
98
98
  ccxt/poloniexfutures.py,sha256=Ke821VIhCjDuNW3I5yZ3xqoj0y99bNI7glk5vX3XTWk,76598
99
99
  ccxt/probit.py,sha256=YQJ8dZTKHXKR6BPrOT6juMi-3GdLq9ZT3J4yHks3w2I,69774
100
100
  ccxt/ripio.py,sha256=B9wGD-eDe2fAmHlw-kCYOOqFqP0PHkaR1kt0EA_po3g,47325
@@ -221,7 +221,7 @@ ccxt/abstract/xt.py,sha256=xHHv2viFGK0_iPZ4gu6Wb0aOrpcKhr9zoY-BIPWh5bs,27028
221
221
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
222
222
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
223
223
  ccxt/abstract/zonda.py,sha256=VoxuPkSq8vAvKnDvOqnByhwsIf09m7yIrs8HejFrDk4,5482
224
- ccxt/async_support/__init__.py,sha256=r-IACvuRzefc6ZDlu9bRoYVTSkIAPXLGKor0m54lvI8,15429
224
+ ccxt/async_support/__init__.py,sha256=msiPRPdeUIffxI22RyGN12f05j-NL3AaSb0hsj7r9CM,15429
225
225
  ccxt/async_support/ace.py,sha256=4RAmTYdlzO2yA9jnTopavGHBWZ9jDC7ceXMXxgiCrHY,41553
226
226
  ccxt/async_support/alpaca.py,sha256=0WxBRJDp4Rem6VKCzoVPZsgrPNFr4g5Iv7_P0RFxMkE,33307
227
227
  ccxt/async_support/ascendex.py,sha256=RptK6xnD1YOnQBkmn8uz07oWM4JGYpf7jwOeNR_Td8Y,129884
@@ -288,7 +288,7 @@ ccxt/async_support/gemini.py,sha256=swYmah05q-ETaxgMAZAD8VplnqLnPW5gXHwx2aN5d4A,
288
288
  ccxt/async_support/hitbtc.py,sha256=lUqG_i_fIl4XPId6wFKN1Ghstlq36E7sRUXcaeUSOsQ,62673
289
289
  ccxt/async_support/hitbtc3.py,sha256=QMJYs2s621V3WP7FLFIy9EZ8mefyPzBgIAX8tWO-p7U,117197
290
290
  ccxt/async_support/hollaex.py,sha256=CzQJC6HWlknBgJ0HQwaLKpAGooFYHzeeOAB80fhgKRc,69616
291
- ccxt/async_support/huobi.py,sha256=ERO6GMNClTyR_yJZV2GkoQj6YD350OMr9qFQ73wmma4,364742
291
+ ccxt/async_support/huobi.py,sha256=CTML65teiR-tDv8zEUUJiwO83RyiVUADdKPfg6gftX4,364858
292
292
  ccxt/async_support/huobijp.py,sha256=HN5eIVSNATXbCMYatgMW8gugiDzzcyoK430x3lQNDhI,87087
293
293
  ccxt/async_support/huobipro.py,sha256=Xb148Da6Mlf8nYhB_c8frd8ZMt6C59VjWgk4o9tIZWA,586
294
294
  ccxt/async_support/idex.py,sha256=lokrHXP-Jxzu4xttfCGHsU5j1iw9df65WYeIaiAQ8H0,67772
@@ -314,10 +314,10 @@ ccxt/async_support/oceanex.py,sha256=aR-w-TbMCNS8wSG5aK228MKdUFyofQznO83gb1_BPgo
314
314
  ccxt/async_support/okcoin.py,sha256=UqG-ySGTFxdQ20Dc9Lb2an4FSaXsgaLeQmuKYJFXQIQ,178258
315
315
  ccxt/async_support/okex.py,sha256=6dbtH4bC1C2x4cQUK6W62y7PuDgO3YazuFa7DYhM4Jw,448
316
316
  ccxt/async_support/okex5.py,sha256=tq41tKx06j3DDO9pu9iKInpjayVprbobVNTK8qb7hoM,455
317
- ccxt/async_support/okx.py,sha256=EqbR1WXV38JrU1xE_KJ_h-rhxuRe0ZhUdsegSJF-EyY,276352
317
+ ccxt/async_support/okx.py,sha256=bFmhZv3WJj1TTS1_fFrtXVUvlbBVZ3KilUjjCfcpBY8,276404
318
318
  ccxt/async_support/paymium.py,sha256=5SeLSMGgLVWu3TDEbxrc2VT2tAdXfIm90EuZ3Rtsn_Q,24075
319
319
  ccxt/async_support/phemex.py,sha256=eMnk8yVrCG2A1ENmPJn5El-sLggZ_ojwPtvODCOhMbA,193419
320
- ccxt/async_support/poloniex.py,sha256=HpnSb168QwTIC-RBhAIiXHac3NEl6m31YamolGbu9B0,90796
320
+ ccxt/async_support/poloniex.py,sha256=0SQ8_B4lYyauxemO_svPiZtMSGBJgsXrxxRSBf8o4nE,90795
321
321
  ccxt/async_support/poloniexfutures.py,sha256=f_bS3FlG4J3E4xWAih4PmnR3NkA2EwZUtAZ6emVQhcE,76966
322
322
  ccxt/async_support/probit.py,sha256=kwcV6dWPUXtOOQpMbtwYbIRKw8lTgOnG5zCqQRV-1Rg,70124
323
323
  ccxt/async_support/ripio.py,sha256=ZXAx-Uj7_Nx0e9V_zSoPpoYSbBh2PHmbI5T2eS3Ao8s,47585
@@ -336,7 +336,7 @@ ccxt/async_support/zaif.py,sha256=Tye_zrffs7Ua22_o7fp68C3Ti1qdJ3H26dbz6j1bVRc,28
336
336
  ccxt/async_support/zb.py,sha256=W8HHyssjCLTugSRs80TnAwGJl85vp7nyNPOn9RLpXFk,184533
337
337
  ccxt/async_support/zonda.py,sha256=0ABz8ApeophACxwTL4hxonco2Yc6uTF5torKmDLQSN0,74326
338
338
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
339
- ccxt/async_support/base/exchange.py,sha256=0PRgLs85-uC3e8d5WwZHA_jcjjC44nU5jZvjakH--co,128835
339
+ ccxt/async_support/base/exchange.py,sha256=ombgE-WCLrqXGDto1-oEIi1US-73ZLWycVrYo-ey4uM,129616
340
340
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
341
341
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
342
342
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=xmlZV30Vb9Kq7JCm3D5FuEmuj1zp5H4F4hrz8-Y-Ir4,4999
@@ -350,69 +350,70 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GH-475Ni0mLOx7mUDnz4jjzaGkh
350
350
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
351
351
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
352
352
  ccxt/base/errors.py,sha256=-LVeTNyXvu3QEgb-p-KzMpcBgzHlvFTwDzmZK7Gfc14,3401
353
- ccxt/base/exchange.py,sha256=4izcsxG049ypXKTrxm4ndU48d2yV4XxPdynGhMQ1XoE,169923
353
+ ccxt/base/exchange.py,sha256=mf3xEjg96dCcg_AQ-xU4ln4HP0j2J_MmR5C6a2TZXBU,170704
354
354
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
355
355
  ccxt/base/types.py,sha256=7GG9G_EXiOzmAD_ZjmhV5a5VfIU4EqF5IxFE0KAPXa4,1071
356
- ccxt/pro/__init__.py,sha256=iDRv95UOMX-JS-WNgf7wLoZOR-ZesAS-wo4SUkyf9q8,6360
357
- ccxt/pro/alpaca.py,sha256=dlnmYTvTxrKB84YuH-RCmDopFJRTI1efIhdLlCCKefQ,26668
358
- ccxt/pro/ascendex.py,sha256=0MGpQ5fbYbAb0cB-iJsZ1fXvM3Llo06uis6BbwbjEkg,34553
356
+ ccxt/pro/__init__.py,sha256=mD27TPVcX58IB-GEZq-2VkQ8u08l6hx6H8gWyFsgR1U,6463
357
+ ccxt/pro/alpaca.py,sha256=CmaU0MJq0HiNaYvBHeDJfTa-letDiEQonRON7Q_3W_k,26686
358
+ ccxt/pro/ascendex.py,sha256=k6rpuiPhj3ipeWRG5vwR22SS4iAzQPe1q1WxJaaucLk,34565
359
359
  ccxt/pro/bequant.py,sha256=qz8JjnpkAQY_CFiFSKGqrjjgZ2167_TBKjSJOb9NeDw,1081
360
- ccxt/pro/binance.py,sha256=kpsgXYHjFhDWo8dX3GPv9mSr0TXmrLpzaadgO0iVclE,77294
360
+ ccxt/pro/binance.py,sha256=fbU858oqsC9k1-ug1kAeSBfrolO9s20Y39RgbmNLDus,77425
361
361
  ccxt/pro/binancecoinm.py,sha256=vu5SUgP70T1Dax-Am3rch7ZldGrmUwxr_rI51Y38xjw,724
362
362
  ccxt/pro/binanceus.py,sha256=xKL-1cOHyqlLTwLGg-DPf6g3JMM1oU2Kv708FiGJwrY,2016
363
363
  ccxt/pro/binanceusdm.py,sha256=S0eT662O2ReplsihWk42nhJWqw1XsODpeDQa9eFVVt8,1357
364
364
  ccxt/pro/bitcoincom.py,sha256=ipRe4xMqvwh81FAJhzQI8P_sGCmmHFw42owF-FwcoD4,914
365
- ccxt/pro/bitfinex.py,sha256=1INbXru2OeKVWsJDSw16VxClZAhr5KqI0_oKDpn9v5o,24762
366
- ccxt/pro/bitfinex2.py,sha256=fydzAwLdb5WIWB4By86gcPg7niv7iukiDdddM7iulog,42074
367
- ccxt/pro/bitget.py,sha256=lV4Mgl1gKx8_5aATNR7KpGszHzeCFaZdjQiz8Xo1OfY,46223
368
- ccxt/pro/bitmart.py,sha256=ZkM-YHvMNuQPp18i7a5V5Bm-Tvirq-xZhsKGQKZnxWQ,24486
369
- ccxt/pro/bitmex.py,sha256=2zcf-7S5YP3PfNtEfIZYF3Wh6HJIyrOmU7EYKfFdqNY,55606
370
- ccxt/pro/bitopro.py,sha256=irxjNhmiIdaIoLxH3wqmKbnp_1OLmhOLY_Rh-QPUx0M,12557
371
- ccxt/pro/bitpanda.py,sha256=Kfv8z2Nq5QY5VcGbqBIfoaHmwTdNZ7WsJsNVEbEMzyE,54349
365
+ ccxt/pro/bitfinex.py,sha256=IfWEXCtvk8m4gDbfS8RbCGaodVaDdrGySLckk1GM3w0,24768
366
+ ccxt/pro/bitfinex2.py,sha256=HvhDGCHi0vmeICQFBHLjJk3Ngi6bHzu1OFnw_sxqQmQ,42092
367
+ ccxt/pro/bitget.py,sha256=2iO5ReeZa6beJE2jeCjFk6voOdpRqPMtJfh5vVcIBCY,46241
368
+ ccxt/pro/bitmart.py,sha256=eQcMqCa_Y2wY7dSTiCYj0kDv3NbdD5EKfIbMJx22SUw,24498
369
+ ccxt/pro/bitmex.py,sha256=EfI-Ymz1RcLvElmDiC--7fXbCue68B6HEMJUGVV6cMM,55624
370
+ ccxt/pro/bitopro.py,sha256=-ARLhegTPc_3yXW1V_RXek_bF_TJrLqow2lrecS4blY,12563
371
+ ccxt/pro/bitpanda.py,sha256=IGnoQJTidk64xyLsQMfOTtiHQVJLfyyzx_HqMziafPc,54355
372
372
  ccxt/pro/bitrue.py,sha256=6boheJLaWyF8avcH6IAiK7yhNfP50_TSvIc8XKiw5c0,16235
373
- ccxt/pro/bitstamp.py,sha256=BIIGC_TZ52VQJ_AVskyu94HIrYSIuojQUuYmFVspE8A,20784
374
- ccxt/pro/bittrex.py,sha256=G7wsMRACPBhkZzuRDHjI4xu8tyUpXhZlpKpQNGkwj5s,36705
375
- ccxt/pro/bitvavo.py,sha256=zrSsqkbBic9O5du6ZXYHHMiPiW8DyFqoGhUc5efsm58,26009
376
- ccxt/pro/blockchaincom.py,sha256=C2pj9cRdYEFBkGi9-_Xfr0XiO5KRNfKL0W5bpuSp4n0,31535
377
- ccxt/pro/btcex.py,sha256=WTDhR_NHUEZldIqMehccZxSCWl41LkEtugdxmBniFSs,31132
378
- ccxt/pro/bybit.py,sha256=pFZx7KTGz0OrPmhT9C1klVyBRH3GiK9XACXOTagYgi0,60508
379
- ccxt/pro/cex.py,sha256=dWsFfI9H-QRKrIJTd9y5vF4dw5fjKgM3tqo0trKtwfM,44892
373
+ ccxt/pro/bitstamp.py,sha256=HglqOpjMJQRR_bSb3i7tmZ0MGmlGoBjQ_o0hth4Wsz8,20796
374
+ ccxt/pro/bittrex.py,sha256=Zth8OGhwlt8P2DVjXFpHtrOeIvHi5B_4h7HYcfRA9Pc,36723
375
+ ccxt/pro/bitvavo.py,sha256=vRGZGTh59kL79kYdsboSc-VPsLi4T1LR8scm5yW439g,26027
376
+ ccxt/pro/blockchaincom.py,sha256=3sawcL9EXt8-eipMpJWVxCx1fsgkHOo-48CRyOC3iXY,31547
377
+ ccxt/pro/btcex.py,sha256=Rlr242PDi-zJDAAydgNwaotNGwRR3sy7TPrzUTLkkgc,31150
378
+ ccxt/pro/bybit.py,sha256=poQDKAkS415OMbrA1qL4mE0BjfqOXUKITWaP6Vfya94,60526
379
+ ccxt/pro/cex.py,sha256=bLOghdEXhZV6NfWCbKTUOuKlsywro5S4WlbyMdJir9k,44904
380
380
  ccxt/pro/coinbaseprime.py,sha256=d5lgKZ8TKAOnYCGAD9e7AYjGQhtkWoNX7Q3eUGx0zEw,1121
381
- ccxt/pro/coinbasepro.py,sha256=BVriQ-Am74GGTYPCkXSTqz5i9wiSgH03TikOFA2PqUM,30072
382
- ccxt/pro/coinex.py,sha256=us2o8t8VMUthSyRNUG7tiaVUHeaEErYtybV5PGncv14,40632
383
- ccxt/pro/cryptocom.py,sha256=vlaaHbd1GPRCXDPLMcnyTcKH7BQJlbHqechccvRyCOQ,22975
384
- ccxt/pro/currencycom.py,sha256=v9yLtwVZlUxHuBWRLtiND5tl8WPxgxj3Bscmxwoc1FM,22087
385
- ccxt/pro/deribit.py,sha256=mPWOpOCedwazR55kLDLAG3qlxs4x5O7VtVeNV-OBPRU,34004
386
- ccxt/pro/exmo.py,sha256=oIt_tyFuo98Oun_pG0FcJveMD6EVzBmIiuIllVbVfUI,24397
387
- ccxt/pro/gate.py,sha256=m7bW_4D6Hzn_NSYjvJRPAcspVKzvVRCyBcn_T36pl1w,41825
381
+ ccxt/pro/coinbasepro.py,sha256=g93vLWeIRxxbzYcpDDxnZYJAQ-2sO1MPJM3hjirEikY,30090
382
+ ccxt/pro/coinex.py,sha256=NxqSwKEUGRLSxmjcmfG20XpzGJrmOP_jhKePcmuTH_4,40945
383
+ ccxt/pro/cryptocom.py,sha256=CRKYAUZq_Kz5BY3uB0886ob384kNXFlbNIRmtI6Qntw,22993
384
+ ccxt/pro/currencycom.py,sha256=fuP5lnGZTM8jDdeRTMN1TgN7fGwJL9S2ZEsiFTeXYkk,22099
385
+ ccxt/pro/deribit.py,sha256=hR6DumIO1s1yYM-_X1nbNZl1rhLoYp_cAL8gKvKg9rg,34022
386
+ ccxt/pro/exmo.py,sha256=lCluhhAOxz0qHtKFl2iQqrXdAW3nZEiK3Jsjt8v037Y,24409
387
+ ccxt/pro/gate.py,sha256=mEfZaD4GDjBNVM35flWYmxwIWG3JXQ64KhRK7ZOKjyw,41849
388
388
  ccxt/pro/gateio.py,sha256=_uBWXYQbmsHRivKnZOJDmxJ9tWLO_0HAxmOjAEUy9nE,391
389
- ccxt/pro/gemini.py,sha256=tTXczyORcuMdc32ZG78KVoAZbhH4uA0Luoub0Ou3VtY,25142
390
- ccxt/pro/hitbtc.py,sha256=4eA2BI9ug0M7lZi34qzKtAasbrUHXEvqNNjaGbFiLI8,15160
391
- ccxt/pro/hollaex.py,sha256=523OqPvsOblM2eOBoFrIxZvYGj97zGkBZDMWUacoWuk,21786
392
- ccxt/pro/huobi.py,sha256=TKl9Op_5TtU__ZH_vGjDKBHo-4uFVG6hbKiSNKyo4VQ,85574
393
- ccxt/pro/huobijp.py,sha256=m4WasF92qh0MH5ULu9v8VRyAlz1dGUbreoS0dkQBoos,23052
389
+ ccxt/pro/gemini.py,sha256=JxFxQ791grpvXnWANQLgKA-dKc1gmp_F1v12j8sMKr0,25154
390
+ ccxt/pro/hitbtc.py,sha256=ga_eHF7A5kkZkvyGwF5_heet6O5vT4XDKxyBILIV1WQ,15172
391
+ ccxt/pro/hollaex.py,sha256=gQEqbvmxciu_SXoORyRnEKFQACc7r6ifUHvCmhDHMXs,21798
392
+ ccxt/pro/huobi.py,sha256=Bvo4LqQyUDSJqW_3trsdI2_HF62FpZmkFAeNWcMIkuU,85598
393
+ ccxt/pro/huobijp.py,sha256=pCpEBdQd64SyZofVtK33R1MbD_bZrcR3oTT7zmIi65o,23064
394
394
  ccxt/pro/huobipro.py,sha256=JqLbm74WLluxAjWDAGGwY4bx8_ShCwOOqQ0476LfnHs,400
395
- ccxt/pro/idex.py,sha256=IUx7In1hOTYxf7wbvSppgvotX67ov1xJXp-k8_KlYEM,28068
396
- ccxt/pro/independentreserve.py,sha256=URuH2ClvpnkptDGr0-ZIMWMXc30DsIE5wGwA7f5pb0o,11059
397
- ccxt/pro/kraken.py,sha256=jTjZ9dmWbRi27146K4X7vOvzy4wtNkUF59FoTD-caGg,44317
398
- ccxt/pro/krakenfutures.py,sha256=gFsbkoYpLRQpAINZ6K-C7vagWewYuPuDxgbigDNB2dg,52058
399
- ccxt/pro/kucoin.py,sha256=Y-zEzyRMdIU9Cw_glm3GjNh151y_wD4i9NnqMMmwWqc,34128
400
- ccxt/pro/kucoinfutures.py,sha256=f_K-gp44XSg_hkFK77Co8LgGIvnzZLorqAfiyNuE-xU,27781
401
- ccxt/pro/luno.py,sha256=EOjmCbStPaZnUSrmF24MlN1pStbKtnPjl1B-8xDpliU,12175
402
- ccxt/pro/mexc.py,sha256=zNcOXbo2oA7XEIo56dc2tNXKGhPiJqZPMLAuQEqc_vU,41881
395
+ ccxt/pro/idex.py,sha256=IsuZPPioBY_Fwr45bHR-deAbcKJgNVi03eEnbnlkyoI,28086
396
+ ccxt/pro/independentreserve.py,sha256=Pk8iWKgb8tMPo4x4On0ydaLaOMzH-ttkdr79SDIv6So,11065
397
+ ccxt/pro/kraken.py,sha256=UnXz62sfLuF62Q2B3kXSB_VBMV3ikNuV3L-amhl39sc,44329
398
+ ccxt/pro/krakenfutures.py,sha256=eoZF1yHlQuRgdVp8sPvgK3JdzYKhUiuu8BYIK_hbXVY,52084
399
+ ccxt/pro/kucoin.py,sha256=iKfPHkdUy9aXmiHasU0ne55Kyu7kPGrbatjQPmHFwKg,34146
400
+ ccxt/pro/kucoinfutures.py,sha256=3Vcj0oNkvo6VxmZhX8G6YotbfLow4M8jv8SPrNFqfq0,27787
401
+ ccxt/pro/luno.py,sha256=ZFP7qOpNtzhrUS2kfq1Do81jW9kynw0XtkXixdmTXZc,12181
402
+ ccxt/pro/mexc.py,sha256=dD3qQj-l5YFeEjGW5T5miY4CTm4sw8BRvdxwJFOokAY,41899
403
403
  ccxt/pro/mexc3.py,sha256=SFCoEPWnmrD-DKTYEhEicld2aTX6s8SZHxTWeCdozwI,388
404
- ccxt/pro/ndax.py,sha256=d3VnNQi3uHXR6cdhcjnn120I_W2BRjKShok8knmr5DY,22655
405
- ccxt/pro/okcoin.py,sha256=0eZBdaOobjDSBzFCu-N6MBqlsIj5fI532AAkK-Z1CLk,30234
404
+ ccxt/pro/ndax.py,sha256=x1HdAhpHVpwdUCmYFlq-UJ3CcN-onH2Owg6Q_xojAfk,22667
405
+ ccxt/pro/okcoin.py,sha256=wpM3ZLFSNmIM6ppKqv-i6IMkxNozMcbY3Vg7uQfhs3A,30252
406
406
  ccxt/pro/okex.py,sha256=mKJJEfmOzmt31KyDIPVRuAqV_mL280pc2mbRz5h2oOg,382
407
- ccxt/pro/okx.py,sha256=_Cxwo6AKHh7vDx5o8igPW6iatkWDDM5w05Gd5ZJFjmU,35657
408
- ccxt/pro/phemex.py,sha256=xYDNpu8DNcXTaUyumaXHARtymY-dbH1BC5WRMeGd_uc,59872
409
- ccxt/pro/poloniexfutures.py,sha256=qBnUHDaOuJMbdRveF6Gj9GuVgM4pNUOHNYpRMZNYD-Q,40520
410
- ccxt/pro/probit.py,sha256=7bMK-nIeV678armEcJuR0Is0tputVsICXUwfcuhWY2s,22635
407
+ ccxt/pro/okx.py,sha256=Jolm7Hju90UCcyNJYOofnVbAva74vIBzXb5AAalVld4,35669
408
+ ccxt/pro/phemex.py,sha256=U_O_OxhBs9qSRKhT9o5D4F8aVvtbleg81ihi8GnA7BQ,59890
409
+ ccxt/pro/poloniex.py,sha256=7rU_ulvQGqI2LBrBYwkJawPDyfd0u_rVDxKhT2wxLgA,41487
410
+ ccxt/pro/poloniexfutures.py,sha256=-nA4DH4841MS0FmrwDkdyD1LzdoQJuYE2UY8RN6a-dY,40526
411
+ ccxt/pro/probit.py,sha256=nTNlZz3WBaV4Gve4sWrEO-nlqpiHH_dZDDyuckFFNXA,22647
411
412
  ccxt/pro/ripio.py,sha256=YfkBjaAe-Es4ohqr4iilgi-MHP2cLrz-FuRF_7kl3CQ,12104
412
- ccxt/pro/upbit.py,sha256=u_-iHNFxCOTNj8aSxfrk2zSY7Do2NOSm0rMtmSYqJfM,9473
413
- ccxt/pro/wazirx.py,sha256=KRJV3u8KY86XXJUDtr9uUhwmFze4JUIBh8Nf1QnQnQo,29862
414
- ccxt/pro/whitebit.py,sha256=9Iz7z2w4EKnA0HQT45_GMZkFWi99RJ263zIMy4l5br4,34279
415
- ccxt/pro/woo.py,sha256=QaoSfGWFQn9VkO1DiGrPaXC8vysrUkfAMtdoToZQsBo,25010
413
+ ccxt/pro/upbit.py,sha256=yJMxsOxs5Pnr20rJ8y-5i0LxbNSEOr_5kl7xsQYKRrk,9479
414
+ ccxt/pro/wazirx.py,sha256=3NPvAUZz5pGkbbLDGl7Vik-vxU7UZAU7n-vOLbKPz6I,29880
415
+ ccxt/pro/whitebit.py,sha256=o_7JghOfacou3M7ZVgijd9kt8FTD6-QapT9zpoMjL-M,34303
416
+ ccxt/pro/woo.py,sha256=4KBeHfaqyzUkri3IJWpQ4MuFimRB87UfdIZvsCxZOyw,25022
416
417
  ccxt/pro/zb.py,sha256=Jq0sgbb8-wzI96xFd7hDS4aNpNeE8sCRe4-9-71kXPQ,21557
417
418
  ccxt/static_dependencies/__init__.py,sha256=rFJ_bcTL4-KqFz1Sb1OsVUrJxlpdJiKwc_FLu7HENFg,30
418
419
  ccxt/static_dependencies/ecdsa/__init__.py,sha256=Xaj0G79BLtBt2YZcOOMV8qOlQZ7fIJznNiHhiEEZfQA,594
@@ -455,14 +456,14 @@ ccxt/test/base/test_open_interest.py,sha256=FPQ6Uw8Ge1GXOuJSilgd2lo1jOBG9XSEyb5g
455
456
  ccxt/test/base/test_order.py,sha256=8cWYalF3baENArsYECCQBZSgn-daCTQUbW9uKF8cSeM,3889
456
457
  ccxt/test/base/test_order_book.py,sha256=_OPG7rXzRux_L9U1GmOQ-V6JUW9nMVehzhVjC-Y0yds,3225
457
458
  ccxt/test/base/test_position.py,sha256=4gwnCxb-RORWYQ2q_jQRbd0T71w-6sbyeQgb5Ma8kqE,3985
458
- ccxt/test/base/test_shared_methods.py,sha256=ec3RkVFGg6lT71BBA6DMQFGn3R5o_eqPHEzJb7aMsTc,16118
459
+ ccxt/test/base/test_shared_methods.py,sha256=UyKjI1nFRkAtH5SWvrX0x9Y4sDnQcf5MVcwmcJUw7Bg,16204
459
460
  ccxt/test/base/test_status.py,sha256=J9NZRnxxFVA7C3DgjDC9fBR7tyAFDeesb-0g33KnoGo,783
460
461
  ccxt/test/base/test_throttle.py,sha256=GvLQWtA4fAk_yJrxeisek-wAz7eJdHj0DDKR4_V1beg,3123
461
462
  ccxt/test/base/test_ticker.py,sha256=h9AV_O6s-Ax3vB3sFoN0Mz22rMOi65i9BDv0SNejH98,5658
462
463
  ccxt/test/base/test_trade.py,sha256=bL9o3S_TGW8Nnlxu-BYkRG8NyRzKAWrU66uO5jJCM3A,2259
463
464
  ccxt/test/base/test_trading_fee.py,sha256=yRCpLHLg_ca9JQXdZB3_pIMHgHLGEfeQF95E6d1e2Bc,1125
464
465
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
465
- ccxt-3.1.13.dist-info/METADATA,sha256=IwtE47Nn3YK1D1J3g4ZGqhIH-kHpCDalOCVkwa_7RH4,111224
466
- ccxt-3.1.13.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
467
- ccxt-3.1.13.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
468
- ccxt-3.1.13.dist-info/RECORD,,
466
+ ccxt-3.1.15.dist-info/METADATA,sha256=pseYXdBWXqJvbD3Kk0ZCXss8T7SAZF996sIzLAtUwhI,111224
467
+ ccxt-3.1.15.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
468
+ ccxt-3.1.15.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
469
+ ccxt-3.1.15.dist-info/RECORD,,
File without changes