ccxt 4.2.79__py2.py3-none-any.whl → 4.2.80__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/abstract/upbit.py +1 -0
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +10 -1
- ccxt/async_support/binance.py +3 -3
- ccxt/async_support/deribit.py +152 -1
- ccxt/async_support/gate.py +10 -5
- ccxt/async_support/hyperliquid.py +42 -9
- ccxt/async_support/mexc.py +2 -2
- ccxt/async_support/upbit.py +2 -0
- ccxt/base/exchange.py +34 -5
- ccxt/base/types.py +23 -0
- ccxt/binance.py +3 -3
- ccxt/deribit.py +152 -1
- ccxt/gate.py +10 -5
- ccxt/hyperliquid.py +42 -9
- ccxt/mexc.py +2 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/binance.py +5 -5
- ccxt/pro/bitopro.py +2 -1
- ccxt/pro/gemini.py +4 -3
- ccxt/pro/phemex.py +6 -1
- ccxt/test/base/test_ohlcv.py +3 -2
- ccxt/test/base/test_shared_methods.py +8 -0
- ccxt/test/base/test_ticker.py +7 -1
- ccxt/test/test_async.py +26 -25
- ccxt/test/test_sync.py +26 -25
- ccxt/upbit.py +2 -0
- {ccxt-4.2.79.dist-info → ccxt-4.2.80.dist-info}/METADATA +4 -4
- {ccxt-4.2.79.dist-info → ccxt-4.2.80.dist-info}/RECORD +32 -32
- {ccxt-4.2.79.dist-info → ccxt-4.2.80.dist-info}/WHEEL +0 -0
- {ccxt-4.2.79.dist-info → ccxt-4.2.80.dist-info}/top_level.txt +0 -0
ccxt/test/test_async.py
CHANGED
@@ -129,6 +129,7 @@ class baseMainTestClass():
|
|
129
129
|
response_tests = False
|
130
130
|
ws_tests = False
|
131
131
|
load_keys = False
|
132
|
+
skipped_settings_for_exchange = {}
|
132
133
|
skipped_methods = {}
|
133
134
|
check_public_tests = {}
|
134
135
|
test_files = {}
|
@@ -378,7 +379,8 @@ class testMainClass(baseMainTestClass):
|
|
378
379
|
# skipped tests
|
379
380
|
skipped_file = self.root_dir_for_skips + 'skip-tests.json'
|
380
381
|
skipped_settings = io_file_read(skipped_file)
|
381
|
-
skipped_settings_for_exchange = exchange.safe_value(skipped_settings, exchange_id, {})
|
382
|
+
self.skipped_settings_for_exchange = exchange.safe_value(skipped_settings, exchange_id, {})
|
383
|
+
skipped_settings_for_exchange = self.skipped_settings_for_exchange
|
382
384
|
# others
|
383
385
|
timeout = exchange.safe_value(skipped_settings_for_exchange, 'timeout')
|
384
386
|
if timeout is not None:
|
@@ -569,6 +571,7 @@ class testMainClass(baseMainTestClass):
|
|
569
571
|
'watchOHLCV': [symbol],
|
570
572
|
'watchTicker': [symbol],
|
571
573
|
'watchTickers': [symbol],
|
574
|
+
'watchBidsAsks': [symbol],
|
572
575
|
'watchOrderBook': [symbol],
|
573
576
|
'watchTrades': [symbol],
|
574
577
|
}
|
@@ -615,26 +618,18 @@ class testMainClass(baseMainTestClass):
|
|
615
618
|
result = await self.test_safe('loadMarkets', exchange, [], True)
|
616
619
|
if not result:
|
617
620
|
return False
|
618
|
-
symbols = ['BTC/USDT', 'BTC/USDC', 'BTC/CNY', 'BTC/USD', 'BTC/EUR', 'BTC/ETH', 'ETH/BTC', 'BTC/JPY', 'ETH/EUR', 'ETH/JPY', 'ETH/CNY', 'ETH/USD', 'LTC/CNY', 'DASH/BTC', 'DOGE/BTC', 'BTC/AUD', 'BTC/PLN', 'USD/SLL', 'BTC/RUB', 'BTC/UAH', 'LTC/BTC', 'EUR/USD']
|
619
|
-
result_symbols = []
|
620
|
-
exchange_specific_symbols = exchange.symbols
|
621
|
-
for i in range(0, len(exchange_specific_symbols)):
|
622
|
-
symbol = exchange_specific_symbols[i]
|
623
|
-
if exchange.in_array(symbol, symbols):
|
624
|
-
result_symbols.append(symbol)
|
625
|
-
result_msg = ''
|
626
|
-
result_length = len(result_symbols)
|
627
621
|
exchange_symbols_length = len(exchange.symbols)
|
628
|
-
|
629
|
-
if exchange_symbols_length > result_length:
|
630
|
-
result_msg = ', '.join(result_symbols) + ' + more...'
|
631
|
-
else:
|
632
|
-
result_msg = ', '.join(result_symbols)
|
633
|
-
dump('[INFO:MAIN] Exchange loaded', exchange_symbols_length, 'symbols', result_msg)
|
622
|
+
dump('[INFO:MAIN] Exchange loaded', exchange_symbols_length, 'symbols')
|
634
623
|
return True
|
635
624
|
|
636
625
|
def get_test_symbol(self, exchange, is_spot, symbols):
|
637
626
|
symbol = None
|
627
|
+
preferred_spot_symbol = exchange.safe_string(self.skipped_settings_for_exchange, 'preferredSpotSymbol')
|
628
|
+
preferred_swap_symbol = exchange.safe_string(self.skipped_settings_for_exchange, 'preferredSwapSymbol')
|
629
|
+
if is_spot and preferred_spot_symbol:
|
630
|
+
return preferred_spot_symbol
|
631
|
+
elif not is_spot and preferred_swap_symbol:
|
632
|
+
return preferred_swap_symbol
|
638
633
|
for i in range(0, len(symbols)):
|
639
634
|
s = symbols[i]
|
640
635
|
market = exchange.safe_value(exchange.markets, s)
|
@@ -669,9 +664,9 @@ class testMainClass(baseMainTestClass):
|
|
669
664
|
|
670
665
|
def get_valid_symbol(self, exchange, spot=True):
|
671
666
|
current_type_markets = self.get_markets_from_exchange(exchange, spot)
|
672
|
-
codes = ['BTC', 'ETH', 'XRP', 'LTC', '
|
673
|
-
spot_symbols = ['BTC/USDT', 'BTC/USDC', 'BTC/USD', 'BTC/CNY', 'BTC/EUR', 'BTC/ETH', 'ETH/
|
674
|
-
swap_symbols = ['BTC/USDT:USDT', 'BTC/USDC:USDC', 'BTC/USD:USD', 'ETH/USDT:USDT', 'ETH/
|
667
|
+
codes = ['BTC', 'ETH', 'XRP', 'LTC', 'BNB', 'DASH', 'DOGE', 'ETC', 'TRX', 'USDT', 'USDC', 'USD', 'EUR', 'TUSD', 'CNY', 'JPY', 'BRL']
|
668
|
+
spot_symbols = ['BTC/USDT', 'BTC/USDC', 'BTC/USD', 'BTC/CNY', 'BTC/EUR', 'BTC/AUD', 'BTC/BRL', 'BTC/JPY', 'ETH/USDT', 'ETH/USDC', 'ETH/USD', 'ETH/CNY', 'ETH/EUR', 'ETH/AUD', 'ETH/BRL', 'ETH/JPY', 'EUR/USDT', 'EUR/USD', 'EUR/USDC', 'USDT/EUR', 'USD/EUR', 'USDC/EUR', 'BTC/ETH', 'ETH/BTC']
|
669
|
+
swap_symbols = ['BTC/USDT:USDT', 'BTC/USDC:USDC', 'BTC/USD:USD', 'ETH/USDT:USDT', 'ETH/USDC:USDC', 'ETH/USD:USD', 'BTC/USD:BTC', 'ETH/USD:ETH']
|
675
670
|
target_symbols = spot_symbols if spot else swap_symbols
|
676
671
|
symbol = self.get_test_symbol(exchange, spot, target_symbols)
|
677
672
|
# if symbols wasn't found from above hardcoded list, then try to locate any symbol which has our target hardcoded 'base' code
|
@@ -1121,7 +1116,8 @@ class testMainClass(baseMainTestClass):
|
|
1121
1116
|
# instantiate the exchange and make sure that we sink the requests to avoid an actual request
|
1122
1117
|
exchange = self.init_offline_exchange(exchange_name)
|
1123
1118
|
global_options = exchange.safe_dict(exchange_data, 'options', {})
|
1124
|
-
exchange.options = exchange.
|
1119
|
+
# exchange.options = exchange.deepExtend (exchange.options, globalOptions); # custom options to be used in the tests
|
1120
|
+
exchange.extend_exchange_options(global_options)
|
1125
1121
|
methods = exchange.safe_value(exchange_data, 'methods', {})
|
1126
1122
|
methods_names = list(methods.keys())
|
1127
1123
|
for i in range(0, len(methods_names)):
|
@@ -1131,7 +1127,8 @@ class testMainClass(baseMainTestClass):
|
|
1131
1127
|
result = results[j]
|
1132
1128
|
old_exchange_options = exchange.options # snapshot options;
|
1133
1129
|
test_exchange_options = exchange.safe_value(result, 'options', {})
|
1134
|
-
exchange.options = exchange.
|
1130
|
+
# exchange.options = exchange.deepExtend (oldExchangeOptions, testExchangeOptions); # custom options to be used in the tests
|
1131
|
+
exchange.extend_exchange_options(exchange.deep_extend(old_exchange_options, test_exchange_options))
|
1135
1132
|
description = exchange.safe_value(result, 'description')
|
1136
1133
|
if (test_name is not None) and (test_name != description):
|
1137
1134
|
continue
|
@@ -1142,7 +1139,8 @@ class testMainClass(baseMainTestClass):
|
|
1142
1139
|
skip_keys = exchange.safe_value(exchange_data, 'skipKeys', [])
|
1143
1140
|
await self.test_method_statically(exchange, method, result, type, skip_keys)
|
1144
1141
|
# reset options
|
1145
|
-
exchange.options = exchange.
|
1142
|
+
# exchange.options = exchange.deepExtend (oldExchangeOptions, {});
|
1143
|
+
exchange.extend_exchange_options(exchange.deep_extend(old_exchange_options, {}))
|
1146
1144
|
await close(exchange)
|
1147
1145
|
return True # in c# methods that will be used with promiseAll need to return something
|
1148
1146
|
|
@@ -1150,7 +1148,8 @@ class testMainClass(baseMainTestClass):
|
|
1150
1148
|
exchange = self.init_offline_exchange(exchange_name)
|
1151
1149
|
methods = exchange.safe_value(exchange_data, 'methods', {})
|
1152
1150
|
options = exchange.safe_value(exchange_data, 'options', {})
|
1153
|
-
exchange.options = exchange.
|
1151
|
+
# exchange.options = exchange.deepExtend (exchange.options, options); # custom options to be used in the tests
|
1152
|
+
exchange.extend_exchange_options(options)
|
1154
1153
|
methods_names = list(methods.keys())
|
1155
1154
|
for i in range(0, len(methods_names)):
|
1156
1155
|
method = methods_names[i]
|
@@ -1160,7 +1159,8 @@ class testMainClass(baseMainTestClass):
|
|
1160
1159
|
description = exchange.safe_value(result, 'description')
|
1161
1160
|
old_exchange_options = exchange.options # snapshot options;
|
1162
1161
|
test_exchange_options = exchange.safe_value(result, 'options', {})
|
1163
|
-
exchange.options = exchange.
|
1162
|
+
# exchange.options = exchange.deepExtend (oldExchangeOptions, testExchangeOptions); # custom options to be used in the tests
|
1163
|
+
exchange.extend_exchange_options(exchange.deep_extend(old_exchange_options, test_exchange_options))
|
1164
1164
|
is_disabled = exchange.safe_bool(result, 'disabled', False)
|
1165
1165
|
if is_disabled:
|
1166
1166
|
continue
|
@@ -1175,7 +1175,8 @@ class testMainClass(baseMainTestClass):
|
|
1175
1175
|
skip_keys = exchange.safe_value(exchange_data, 'skipKeys', [])
|
1176
1176
|
await self.test_response_statically(exchange, method, skip_keys, result)
|
1177
1177
|
# reset options
|
1178
|
-
exchange.options = exchange.
|
1178
|
+
# exchange.options = exchange.deepExtend (oldExchangeOptions, {});
|
1179
|
+
exchange.extend_exchange_options(exchange.deep_extend(old_exchange_options, {}))
|
1179
1180
|
await close(exchange)
|
1180
1181
|
return True # in c# methods that will be used with promiseAll need to return something
|
1181
1182
|
|
ccxt/test/test_sync.py
CHANGED
@@ -128,6 +128,7 @@ class baseMainTestClass():
|
|
128
128
|
response_tests = False
|
129
129
|
ws_tests = False
|
130
130
|
load_keys = False
|
131
|
+
skipped_settings_for_exchange = {}
|
131
132
|
skipped_methods = {}
|
132
133
|
check_public_tests = {}
|
133
134
|
test_files = {}
|
@@ -377,7 +378,8 @@ class testMainClass(baseMainTestClass):
|
|
377
378
|
# skipped tests
|
378
379
|
skipped_file = self.root_dir_for_skips + 'skip-tests.json'
|
379
380
|
skipped_settings = io_file_read(skipped_file)
|
380
|
-
skipped_settings_for_exchange = exchange.safe_value(skipped_settings, exchange_id, {})
|
381
|
+
self.skipped_settings_for_exchange = exchange.safe_value(skipped_settings, exchange_id, {})
|
382
|
+
skipped_settings_for_exchange = self.skipped_settings_for_exchange
|
381
383
|
# others
|
382
384
|
timeout = exchange.safe_value(skipped_settings_for_exchange, 'timeout')
|
383
385
|
if timeout is not None:
|
@@ -568,6 +570,7 @@ class testMainClass(baseMainTestClass):
|
|
568
570
|
'watchOHLCV': [symbol],
|
569
571
|
'watchTicker': [symbol],
|
570
572
|
'watchTickers': [symbol],
|
573
|
+
'watchBidsAsks': [symbol],
|
571
574
|
'watchOrderBook': [symbol],
|
572
575
|
'watchTrades': [symbol],
|
573
576
|
}
|
@@ -614,26 +617,18 @@ class testMainClass(baseMainTestClass):
|
|
614
617
|
result = self.test_safe('loadMarkets', exchange, [], True)
|
615
618
|
if not result:
|
616
619
|
return False
|
617
|
-
symbols = ['BTC/USDT', 'BTC/USDC', 'BTC/CNY', 'BTC/USD', 'BTC/EUR', 'BTC/ETH', 'ETH/BTC', 'BTC/JPY', 'ETH/EUR', 'ETH/JPY', 'ETH/CNY', 'ETH/USD', 'LTC/CNY', 'DASH/BTC', 'DOGE/BTC', 'BTC/AUD', 'BTC/PLN', 'USD/SLL', 'BTC/RUB', 'BTC/UAH', 'LTC/BTC', 'EUR/USD']
|
618
|
-
result_symbols = []
|
619
|
-
exchange_specific_symbols = exchange.symbols
|
620
|
-
for i in range(0, len(exchange_specific_symbols)):
|
621
|
-
symbol = exchange_specific_symbols[i]
|
622
|
-
if exchange.in_array(symbol, symbols):
|
623
|
-
result_symbols.append(symbol)
|
624
|
-
result_msg = ''
|
625
|
-
result_length = len(result_symbols)
|
626
620
|
exchange_symbols_length = len(exchange.symbols)
|
627
|
-
|
628
|
-
if exchange_symbols_length > result_length:
|
629
|
-
result_msg = ', '.join(result_symbols) + ' + more...'
|
630
|
-
else:
|
631
|
-
result_msg = ', '.join(result_symbols)
|
632
|
-
dump('[INFO:MAIN] Exchange loaded', exchange_symbols_length, 'symbols', result_msg)
|
621
|
+
dump('[INFO:MAIN] Exchange loaded', exchange_symbols_length, 'symbols')
|
633
622
|
return True
|
634
623
|
|
635
624
|
def get_test_symbol(self, exchange, is_spot, symbols):
|
636
625
|
symbol = None
|
626
|
+
preferred_spot_symbol = exchange.safe_string(self.skipped_settings_for_exchange, 'preferredSpotSymbol')
|
627
|
+
preferred_swap_symbol = exchange.safe_string(self.skipped_settings_for_exchange, 'preferredSwapSymbol')
|
628
|
+
if is_spot and preferred_spot_symbol:
|
629
|
+
return preferred_spot_symbol
|
630
|
+
elif not is_spot and preferred_swap_symbol:
|
631
|
+
return preferred_swap_symbol
|
637
632
|
for i in range(0, len(symbols)):
|
638
633
|
s = symbols[i]
|
639
634
|
market = exchange.safe_value(exchange.markets, s)
|
@@ -668,9 +663,9 @@ class testMainClass(baseMainTestClass):
|
|
668
663
|
|
669
664
|
def get_valid_symbol(self, exchange, spot=True):
|
670
665
|
current_type_markets = self.get_markets_from_exchange(exchange, spot)
|
671
|
-
codes = ['BTC', 'ETH', 'XRP', 'LTC', '
|
672
|
-
spot_symbols = ['BTC/USDT', 'BTC/USDC', 'BTC/USD', 'BTC/CNY', 'BTC/EUR', 'BTC/ETH', 'ETH/
|
673
|
-
swap_symbols = ['BTC/USDT:USDT', 'BTC/USDC:USDC', 'BTC/USD:USD', 'ETH/USDT:USDT', 'ETH/
|
666
|
+
codes = ['BTC', 'ETH', 'XRP', 'LTC', 'BNB', 'DASH', 'DOGE', 'ETC', 'TRX', 'USDT', 'USDC', 'USD', 'EUR', 'TUSD', 'CNY', 'JPY', 'BRL']
|
667
|
+
spot_symbols = ['BTC/USDT', 'BTC/USDC', 'BTC/USD', 'BTC/CNY', 'BTC/EUR', 'BTC/AUD', 'BTC/BRL', 'BTC/JPY', 'ETH/USDT', 'ETH/USDC', 'ETH/USD', 'ETH/CNY', 'ETH/EUR', 'ETH/AUD', 'ETH/BRL', 'ETH/JPY', 'EUR/USDT', 'EUR/USD', 'EUR/USDC', 'USDT/EUR', 'USD/EUR', 'USDC/EUR', 'BTC/ETH', 'ETH/BTC']
|
668
|
+
swap_symbols = ['BTC/USDT:USDT', 'BTC/USDC:USDC', 'BTC/USD:USD', 'ETH/USDT:USDT', 'ETH/USDC:USDC', 'ETH/USD:USD', 'BTC/USD:BTC', 'ETH/USD:ETH']
|
674
669
|
target_symbols = spot_symbols if spot else swap_symbols
|
675
670
|
symbol = self.get_test_symbol(exchange, spot, target_symbols)
|
676
671
|
# if symbols wasn't found from above hardcoded list, then try to locate any symbol which has our target hardcoded 'base' code
|
@@ -1120,7 +1115,8 @@ class testMainClass(baseMainTestClass):
|
|
1120
1115
|
# instantiate the exchange and make sure that we sink the requests to avoid an actual request
|
1121
1116
|
exchange = self.init_offline_exchange(exchange_name)
|
1122
1117
|
global_options = exchange.safe_dict(exchange_data, 'options', {})
|
1123
|
-
exchange.options = exchange.
|
1118
|
+
# exchange.options = exchange.deepExtend (exchange.options, globalOptions); # custom options to be used in the tests
|
1119
|
+
exchange.extend_exchange_options(global_options)
|
1124
1120
|
methods = exchange.safe_value(exchange_data, 'methods', {})
|
1125
1121
|
methods_names = list(methods.keys())
|
1126
1122
|
for i in range(0, len(methods_names)):
|
@@ -1130,7 +1126,8 @@ class testMainClass(baseMainTestClass):
|
|
1130
1126
|
result = results[j]
|
1131
1127
|
old_exchange_options = exchange.options # snapshot options;
|
1132
1128
|
test_exchange_options = exchange.safe_value(result, 'options', {})
|
1133
|
-
exchange.options = exchange.
|
1129
|
+
# exchange.options = exchange.deepExtend (oldExchangeOptions, testExchangeOptions); # custom options to be used in the tests
|
1130
|
+
exchange.extend_exchange_options(exchange.deep_extend(old_exchange_options, test_exchange_options))
|
1134
1131
|
description = exchange.safe_value(result, 'description')
|
1135
1132
|
if (test_name is not None) and (test_name != description):
|
1136
1133
|
continue
|
@@ -1141,7 +1138,8 @@ class testMainClass(baseMainTestClass):
|
|
1141
1138
|
skip_keys = exchange.safe_value(exchange_data, 'skipKeys', [])
|
1142
1139
|
self.test_method_statically(exchange, method, result, type, skip_keys)
|
1143
1140
|
# reset options
|
1144
|
-
exchange.options = exchange.
|
1141
|
+
# exchange.options = exchange.deepExtend (oldExchangeOptions, {});
|
1142
|
+
exchange.extend_exchange_options(exchange.deep_extend(old_exchange_options, {}))
|
1145
1143
|
close(exchange)
|
1146
1144
|
return True # in c# methods that will be used with promiseAll need to return something
|
1147
1145
|
|
@@ -1149,7 +1147,8 @@ class testMainClass(baseMainTestClass):
|
|
1149
1147
|
exchange = self.init_offline_exchange(exchange_name)
|
1150
1148
|
methods = exchange.safe_value(exchange_data, 'methods', {})
|
1151
1149
|
options = exchange.safe_value(exchange_data, 'options', {})
|
1152
|
-
exchange.options = exchange.
|
1150
|
+
# exchange.options = exchange.deepExtend (exchange.options, options); # custom options to be used in the tests
|
1151
|
+
exchange.extend_exchange_options(options)
|
1153
1152
|
methods_names = list(methods.keys())
|
1154
1153
|
for i in range(0, len(methods_names)):
|
1155
1154
|
method = methods_names[i]
|
@@ -1159,7 +1158,8 @@ class testMainClass(baseMainTestClass):
|
|
1159
1158
|
description = exchange.safe_value(result, 'description')
|
1160
1159
|
old_exchange_options = exchange.options # snapshot options;
|
1161
1160
|
test_exchange_options = exchange.safe_value(result, 'options', {})
|
1162
|
-
exchange.options = exchange.
|
1161
|
+
# exchange.options = exchange.deepExtend (oldExchangeOptions, testExchangeOptions); # custom options to be used in the tests
|
1162
|
+
exchange.extend_exchange_options(exchange.deep_extend(old_exchange_options, test_exchange_options))
|
1163
1163
|
is_disabled = exchange.safe_bool(result, 'disabled', False)
|
1164
1164
|
if is_disabled:
|
1165
1165
|
continue
|
@@ -1174,7 +1174,8 @@ class testMainClass(baseMainTestClass):
|
|
1174
1174
|
skip_keys = exchange.safe_value(exchange_data, 'skipKeys', [])
|
1175
1175
|
self.test_response_statically(exchange, method, skip_keys, result)
|
1176
1176
|
# reset options
|
1177
|
-
exchange.options = exchange.
|
1177
|
+
# exchange.options = exchange.deepExtend (oldExchangeOptions, {});
|
1178
|
+
exchange.extend_exchange_options(exchange.deep_extend(old_exchange_options, {}))
|
1178
1179
|
close(exchange)
|
1179
1180
|
return True # in c# methods that will be used with promiseAll need to return something
|
1180
1181
|
|
ccxt/upbit.py
CHANGED
@@ -85,6 +85,7 @@ class upbit(Exchange, ImplicitAPI):
|
|
85
85
|
'1m': 'minutes',
|
86
86
|
'3m': 'minutes',
|
87
87
|
'5m': 'minutes',
|
88
|
+
'10m': 'minutes',
|
88
89
|
'15m': 'minutes',
|
89
90
|
'30m': 'minutes',
|
90
91
|
'1h': 'minutes',
|
@@ -114,6 +115,7 @@ class upbit(Exchange, ImplicitAPI):
|
|
114
115
|
'candles/minutes/1',
|
115
116
|
'candles/minutes/3',
|
116
117
|
'candles/minutes/5',
|
118
|
+
'candles/minutes/10',
|
117
119
|
'candles/minutes/15',
|
118
120
|
'candles/minutes/30',
|
119
121
|
'candles/minutes/60',
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.2.
|
3
|
+
Version: 4.2.80
|
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.2.
|
266
|
-
* unpkg: https://unpkg.com/ccxt@4.2.
|
265
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.80/dist/ccxt.browser.js
|
266
|
+
* unpkg: https://unpkg.com/ccxt@4.2.80/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.2.
|
271
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.80/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=
|
1
|
+
ccxt/__init__.py,sha256=qY9CkBOJ9TSDzdOkVVVCSJVgMSs4-inlwLJ4bQaRamg,15656
|
2
2
|
ccxt/ace.py,sha256=nK9SbduDWoKzecwoSK9VYwReNMscvJ_JWo5IZvFbcQo,41409
|
3
3
|
ccxt/alpaca.py,sha256=dCp9cDDKAqaaOroIPfv3sMBsMcUM7TsSKNSYZ3LLTQg,46892
|
4
4
|
ccxt/ascendex.py,sha256=Ma2iM3L3kyXf6d_iqushKWfN1BtunXcrDe-_BENaw5U,150809
|
5
5
|
ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
|
6
6
|
ccxt/bigone.py,sha256=I1ttsW3Iu0hGrb8e0_WMjyzb6utPdv8bV6qK6GtixIY,92155
|
7
|
-
ccxt/binance.py,sha256=
|
7
|
+
ccxt/binance.py,sha256=tjaercNB01OU_JsIz92Ds4Y1E-Td2sJIyLxC7rYMlig,587293
|
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
|
@@ -51,12 +51,12 @@ ccxt/coinspot.py,sha256=8aCFFIp8jB5NDVQLwbZdS5BxW4ML3TqTFaLqQKikkl0,23465
|
|
51
51
|
ccxt/cryptocom.py,sha256=cEqvh5Z19n1f-bAhfIdcB8-aFf2cepPpgcB5sgLMHnc,128088
|
52
52
|
ccxt/currencycom.py,sha256=sk1-z8ZYEpastKUoi-iGuK_Z8HNhrafU-2QmKFZyQGk,86679
|
53
53
|
ccxt/delta.py,sha256=E_wCRMh_rYURHG20xCHp88LrZQJlSgTYjSs13n0nzdU,144318
|
54
|
-
ccxt/deribit.py,sha256=
|
54
|
+
ccxt/deribit.py,sha256=5LjRVie7LjnbLIsSyYMK3qJ39aM11gkZchmdKbrImtI,160080
|
55
55
|
ccxt/digifinex.py,sha256=v5Kk702BABJj-ilooFZBSWYPW_IYLXnF1dy-ODzbQGs,169358
|
56
56
|
ccxt/exmo.py,sha256=ln3Sd9brSMAIxtAqMOyD-Rq5h4TPeYAMAlNpXTAijvE,114222
|
57
57
|
ccxt/flowbtc.py,sha256=YPvm6tbsHJJUQBspFcHuVPQfVmiWzwnVvfzRqBdQX6U,1169
|
58
58
|
ccxt/fmfwio.py,sha256=RbVLvzPwnqfDsE7Ea-N13ISCC82eJVPsXYjrleASmew,1236
|
59
|
-
ccxt/gate.py,sha256=
|
59
|
+
ccxt/gate.py,sha256=4xy-p8cb8VZ8amaZWGGt_3N9tGgynz1zRqyydsY7Rek,306534
|
60
60
|
ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
|
61
61
|
ccxt/gemini.py,sha256=SWw8Rm19sB48DoQbrSnK6gLQDLS4ZD2gviR60kpuA8k,79373
|
62
62
|
ccxt/hitbtc.py,sha256=sjDwsBjyuVRp-0bbPgdhQWmMX3p1-BIH22Rh7rrqWmE,151471
|
@@ -65,7 +65,7 @@ ccxt/hollaex.py,sha256=biaF8aAMAqQQU2MHySgfipZHYvyq5Qhjd7JlSyETtPI,75830
|
|
65
65
|
ccxt/htx.py,sha256=K6qHgIxPBqfEKTzE-U6_ZLKu6Rmi8NHU5xjbjTyvPHQ,418804
|
66
66
|
ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
|
67
67
|
ccxt/huobijp.py,sha256=0AcNDNAnWf-t9yFIE2FTVHm0xaBoBzX4gGO5dSJaElk,87907
|
68
|
-
ccxt/hyperliquid.py,sha256=
|
68
|
+
ccxt/hyperliquid.py,sha256=JS7RXpyhal00BR5cQG0kzkyZ0ZTWhoHCRyRspUTyKU4,83029
|
69
69
|
ccxt/idex.py,sha256=gpkfFnVxZUnYGaT--peh4IF1iB-HkoxknA6rJMq_3kk,72706
|
70
70
|
ccxt/independentreserve.py,sha256=m8UP6mnYrl48623Y_tC6F0lZRx2rwTFmb-JZplnfzvA,31982
|
71
71
|
ccxt/indodax.py,sha256=Su32yUkKr3OZlRYK3NcITfMipvErSjvSBgzO2Ljobdw,51765
|
@@ -79,7 +79,7 @@ ccxt/lbank.py,sha256=xP4TmRFZcYWcM51NSq45PPU68mACYlObJMXihJ4ZRYI,114925
|
|
79
79
|
ccxt/luno.py,sha256=zGTeEBTqOVVPBmKYobOr9hLqvSNwcS8nhlF6K8UNzIc,45524
|
80
80
|
ccxt/lykke.py,sha256=entIK-0anwAsK7pz5BMxrV5NoL3K7zPQRrJSjF7_TFo,50787
|
81
81
|
ccxt/mercado.py,sha256=-R_dYN7-XgOyTXHk_W-6ZLtFTY9-f9VudkO9FvCXbvY,35172
|
82
|
-
ccxt/mexc.py,sha256=
|
82
|
+
ccxt/mexc.py,sha256=YqFBSNKIj6zy17tTkwpm_1o4zpnj_BJrczuKrhTKjKE,234225
|
83
83
|
ccxt/ndax.py,sha256=iHuUDxE3FBgfhwaDhCQ1X7QMQjXDl91YF2MFDxUz9dk,108327
|
84
84
|
ccxt/novadax.py,sha256=bxCFcrWsntHJKmuODno4FzGVP_85joYW5Y9QEKsfFvM,64098
|
85
85
|
ccxt/oceanex.py,sha256=G_7y2JVDAIKa8fMebx55Qq4EIYkmhWY3SoGy_pmgSd4,37811
|
@@ -95,7 +95,7 @@ ccxt/probit.py,sha256=Zm4jf39nn1WI1Lj4RZRwlwUWaR2Vzyfb8rkFifWmMVI,76187
|
|
95
95
|
ccxt/timex.py,sha256=C0LhnFy0kZ4fHf0nl1qdd1eP_jD7zxjR83NuEWHvQvY,70971
|
96
96
|
ccxt/tokocrypto.py,sha256=ItoDqo02WEz8bVPue29SvzXqfI3_kJ6vx9f-LWOPhjI,122995
|
97
97
|
ccxt/tradeogre.py,sha256=pydYI9R-ZuWQFUNrU8ayK5rgONKaWXrMJRGCgnOjAdc,23721
|
98
|
-
ccxt/upbit.py,sha256
|
98
|
+
ccxt/upbit.py,sha256=KGqEgonaOJV4iMPW5no6P-WXvGP1vFTD4qJZgeXdQmU,81540
|
99
99
|
ccxt/wavesexchange.py,sha256=xzzj9Nzhx7vXmzQj0sBmTQHu1B3p1OsiRb0VwzgHVmg,113387
|
100
100
|
ccxt/wazirx.py,sha256=yNckhS5vlWVo0BeJUpmId2G3dSeaZ91x66K2IagwDcs,51138
|
101
101
|
ccxt/whitebit.py,sha256=p6etPh1ekrh3XTFe18hNtuVyYow3nui4lo9jbtbW7yw,100869
|
@@ -199,7 +199,7 @@ ccxt/abstract/probit.py,sha256=PxQkrvv3EQ2TvOxJmc_mAF_aH8xFFw6pZaVVjjUo5_4,1969
|
|
199
199
|
ccxt/abstract/timex.py,sha256=9b0CDsyjm8XrYZmhUMB1dTHUmyE9YrsZTCZrz1UTt6E,5875
|
200
200
|
ccxt/abstract/tokocrypto.py,sha256=OF5UW4ch_Lf3-avOPgd4AD4CVrOUDUfUpSMCmxhNHlk,4094
|
201
201
|
ccxt/abstract/tradeogre.py,sha256=sIdA_22RHztwsIeznysBPtvta5V_mQwUXeYK6OyUJqQ,1372
|
202
|
-
ccxt/abstract/upbit.py,sha256=
|
202
|
+
ccxt/abstract/upbit.py,sha256=fPIEwrzoNk01aQbxhuRveTFHHKGBfAweOn4Uv8Ru0UM,3576
|
203
203
|
ccxt/abstract/wavesexchange.py,sha256=8LIgZiPixoaUFPKGSWJpjI1BYXVqeQh9NLcjfXciZMc,19631
|
204
204
|
ccxt/abstract/wazirx.py,sha256=UfQvsyKwf4kImpkPlxdnoWDq0iUT5t1kSa2iDr_XkDw,2782
|
205
205
|
ccxt/abstract/whitebit.py,sha256=IaK-PxBd3rBoE2m9EExB4rGaqovubRHPHOATUUMbJ9o,8029
|
@@ -207,13 +207,13 @@ ccxt/abstract/woo.py,sha256=E-QXVJKVI4EOW72NX6wv99px9EyitWtd9KWvXUc9Tyo,10216
|
|
207
207
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
208
208
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
209
209
|
ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
|
210
|
-
ccxt/async_support/__init__.py,sha256=
|
210
|
+
ccxt/async_support/__init__.py,sha256=EydwL_nKCgcIHDOeQbf9If6cLVzyhLyRFrN9LJcq84A,15409
|
211
211
|
ccxt/async_support/ace.py,sha256=MGP2VoA2plRgcW8ZBBXAAUg0NSOXlWtwbzYr00DFMaI,41633
|
212
212
|
ccxt/async_support/alpaca.py,sha256=-vgtpCEqQWs-k7tA0PObflNKa7pM1HqQYYOMnCS9r24,47104
|
213
213
|
ccxt/async_support/ascendex.py,sha256=K_mqPMdT9Q1oS8CRtoVYjlN4rbp86glU4sPQGFi4W6U,151597
|
214
214
|
ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
|
215
215
|
ccxt/async_support/bigone.py,sha256=9_Xs69EbjqmchKlewEZh7mMpz1RYGNzAxiEMKANtgU8,92609
|
216
|
-
ccxt/async_support/binance.py,sha256
|
216
|
+
ccxt/async_support/binance.py,sha256=-UkYVjh3oU9oPpPeaenf-vRiM_ci-1bJD90_laB8NgE,589811
|
217
217
|
ccxt/async_support/binancecoinm.py,sha256=IY3RLZptQA2nmZaUYRGfTa5ZY4VMWBpFYfwHc8zTHw0,1683
|
218
218
|
ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
|
219
219
|
ccxt/async_support/binanceusdm.py,sha256=-1r4A4tmV2pCiLGO80hzq7MIIj4MTzOD7buZGv6JauA,2518
|
@@ -260,12 +260,12 @@ ccxt/async_support/coinspot.py,sha256=E0cj4OPK9nV43UzMIs88Y_bXtEzW49oeFP50Mj7wyr
|
|
260
260
|
ccxt/async_support/cryptocom.py,sha256=kgC23ELiN77g0f1n3nuMEqhFYeOpz9K8RgHUZkXG8LI,128642
|
261
261
|
ccxt/async_support/currencycom.py,sha256=DtKDSNV96umQDTf0Mixlls6Gq0LIifZFpCpu9EHPBUg,87101
|
262
262
|
ccxt/async_support/delta.py,sha256=MVqiamG138Bk3D7C_7OLlOl4BzeBF8IeKH3HbyT7IyY,144908
|
263
|
-
ccxt/async_support/deribit.py,sha256=
|
263
|
+
ccxt/async_support/deribit.py,sha256=heKhRntrSJypWb3XJ-ieeVe-oVwmzcXB5kgogROgGNQ,160844
|
264
264
|
ccxt/async_support/digifinex.py,sha256=1NWewU2Uzm3ILr2kSlPvpfo0xIcQYE-sOx7YTlqhxL0,170328
|
265
265
|
ccxt/async_support/exmo.py,sha256=fOIqQBiFW6U9hoct1K-vTZZ2vVi37SPcQ3Z5_WJxk6Q,114854
|
266
266
|
ccxt/async_support/flowbtc.py,sha256=bCnvtcNnPxxaxqVjI1GGXKhIpz_1r4GIFWqqPokvCR0,1183
|
267
267
|
ccxt/async_support/fmfwio.py,sha256=lzfSnPrB2ARcC3EIqAuBM4vyg6LJ6n8RE71Zvt3ez1s,1250
|
268
|
-
ccxt/async_support/gate.py,sha256=
|
268
|
+
ccxt/async_support/gate.py,sha256=bCQOU2NTOjAFMxuW1piQDhBMS3QTzQVwjjXeA2ILbH0,308152
|
269
269
|
ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
|
270
270
|
ccxt/async_support/gemini.py,sha256=PPnLwDTyKdQS7LborOZlVymqPNzYqKnj9yC988zDqxU,79886
|
271
271
|
ccxt/async_support/hitbtc.py,sha256=W5zLBFQlglCZVrQ0WBbbATD12aOODoowxcT2hMa2k1o,152517
|
@@ -274,7 +274,7 @@ ccxt/async_support/hollaex.py,sha256=LZ41Smk-7_s9XCOhTc0n4oG03ZeInCw-N_vEwLcETfA
|
|
274
274
|
ccxt/async_support/htx.py,sha256=r5QKMwj6jJj9c1qs4fME3Jk22Uu7ZSd0UbxRLfaV6Vw,421142
|
275
275
|
ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
|
276
276
|
ccxt/async_support/huobijp.py,sha256=HkXnX91fcHVQAfSknYmfgasEhVkwS0tcbMHCjXFD0e4,88407
|
277
|
-
ccxt/async_support/hyperliquid.py,sha256=
|
277
|
+
ccxt/async_support/hyperliquid.py,sha256=gouETtgBBxxZ3iKU6DmoZjREAoVzD7KwsmN9R8nxefM,83451
|
278
278
|
ccxt/async_support/idex.py,sha256=4CNRYJX12rpfoqlHE2Nvm2ZL56P7F2cWdZ6KHiA1zlQ,73182
|
279
279
|
ccxt/async_support/independentreserve.py,sha256=fEkWmaw4LZx3n0MtqHLJpgmWosfL3FiKd3dN5_ZzxTI,32242
|
280
280
|
ccxt/async_support/indodax.py,sha256=_eQVgwmPSfIvpPOW-1P_inVvOWK1g4rTXVPuqHr_YUE,52073
|
@@ -288,7 +288,7 @@ ccxt/async_support/lbank.py,sha256=cDCpWGT0PSG8NeX7hX85iF47BAN_fn5gaD_1VRgbLF0,1
|
|
288
288
|
ccxt/async_support/luno.py,sha256=5CvASg2bhD2kryipy-5jL6bVq4ytVjBm0bT_q2PQbp8,45862
|
289
289
|
ccxt/async_support/lykke.py,sha256=Ih2EJM-DmsG1lJFpYtKq6rOWvkzpXMtvfYpqAMniSzA,51101
|
290
290
|
ccxt/async_support/mercado.py,sha256=qEG7L6n2bpVx-Idy4Qke8NAEXoaoD2XJd_Rkl31iNwk,35414
|
291
|
-
ccxt/async_support/mexc.py,sha256=
|
291
|
+
ccxt/async_support/mexc.py,sha256=Ri8NkBNQFjwXdvgFhyVnOoN1YkVcYTGcux6pVAtTwpo,235385
|
292
292
|
ccxt/async_support/ndax.py,sha256=9hzPCmwrYVJqtUe6oFrGz9dYe8oRyp1F_7O4QunmYZQ,108851
|
293
293
|
ccxt/async_support/novadax.py,sha256=bYUoEjRpvRCzFH25NNircGl36qB8eN2cwxc5qMtxJMs,64466
|
294
294
|
ccxt/async_support/oceanex.py,sha256=LsNS6IIUDJd_KnxmUT5Ub8RLwDQhFqkfyuDr8uV65A8,38131
|
@@ -304,7 +304,7 @@ ccxt/async_support/probit.py,sha256=qz6ap6X466l5GbPHnFXbWr9fagC7guVLiEwpi4clRDo,
|
|
304
304
|
ccxt/async_support/timex.py,sha256=KUxkXT5Xm6aa3g7XtIBvU3Gbu_Gf8eA6RL-zQgnYhKM,71333
|
305
305
|
ccxt/async_support/tokocrypto.py,sha256=u3nWe2QcU1Csh0FEBgP6XKdlDkou7LyeQmcTS_end80,123357
|
306
306
|
ccxt/async_support/tradeogre.py,sha256=bMIF3kC-LTmZ1h5HrCzYQA9xZJW-yhDSIFlBkPoUGA8,23915
|
307
|
-
ccxt/async_support/upbit.py,sha256=
|
307
|
+
ccxt/async_support/upbit.py,sha256=yDjNR_nqg-SZtLOlfWRAdPfx_u_BOf9YRN9yyWyh8BQ,82022
|
308
308
|
ccxt/async_support/wavesexchange.py,sha256=6NqGSNhjz3JGovH_84nQ_cSGOO7DftFaVuS0PRr99Oo,113937
|
309
309
|
ccxt/async_support/wazirx.py,sha256=jzK6x7b4-vumABdUurz5UEN1zXtg97j1ctt9oHSeRQM,51440
|
310
310
|
ccxt/async_support/whitebit.py,sha256=vh0Be5Hb5SNK5Vq2Eu49HqJruhjsr1_PXZJ6dG0mYMQ,101417
|
@@ -313,7 +313,7 @@ ccxt/async_support/yobit.py,sha256=ZyQx9X9CE7cn5d3XB0sdieQyrgNLlFDe6LoVP8ckmzg,5
|
|
313
313
|
ccxt/async_support/zaif.py,sha256=bbY7Sjnc8LsOcqwhipxx2AVOWBz-N7jjiftmksTOtTM,28119
|
314
314
|
ccxt/async_support/zonda.py,sha256=5msJR5KAMz4MiUBJ_4QvQ8uRQWAYj5uf9AdsDyyRgtE,80766
|
315
315
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
316
|
-
ccxt/async_support/base/exchange.py,sha256=
|
316
|
+
ccxt/async_support/base/exchange.py,sha256=Q7t2NltkheyNGkHIU35kfmXm6W0QSlWG2lqg9S2JGVM,91714
|
317
317
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
318
318
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
319
319
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=Ed1765emEde2Hj8Ys6f5EjS54ZI1wQ0qIhd04eB7yhU,5751
|
@@ -327,14 +327,14 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=Pxrq22nCODckJ6G1OXkYEmUunIu
|
|
327
327
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
328
328
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
329
329
|
ccxt/base/errors.py,sha256=JBn3zTrtru7tLgyEi6MzKAUwiZe0fltQLYoJcsdP-AA,4099
|
330
|
-
ccxt/base/exchange.py,sha256=
|
330
|
+
ccxt/base/exchange.py,sha256=6vjuI_BI6lTTTjnKo37uNGPFeN5YhXRAW_2GA4Lan4w,249730
|
331
331
|
ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
|
332
|
-
ccxt/base/types.py,sha256=
|
333
|
-
ccxt/pro/__init__.py,sha256=
|
332
|
+
ccxt/base/types.py,sha256=6J3Dzo0NBbn-5tCRQpfeRkLDzH1loScrDjP7xRDz6gI,6842
|
333
|
+
ccxt/pro/__init__.py,sha256=sa2R6ghk0N8yx1WpZUpWFsWMRXnw5yfYrv_TtiZzuXg,6897
|
334
334
|
ccxt/pro/alpaca.py,sha256=7ePyWli0949ti5UheIn553xmnFpedrNc2W5CKauSZio,27167
|
335
335
|
ccxt/pro/ascendex.py,sha256=0RlrxSqh4-lW99T-Y8AxrU612Cpy03u2loVMeRUPXlg,35432
|
336
336
|
ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
|
337
|
-
ccxt/pro/binance.py,sha256=
|
337
|
+
ccxt/pro/binance.py,sha256=fDM9iBZHHaGk7u4061tFy0o4Q9sWVJagO4jC2DqzglA,134162
|
338
338
|
ccxt/pro/binancecoinm.py,sha256=s_evAyeT23VqscMRuSjrCK2CSaNsP-oc8A8noSuaLwQ,976
|
339
339
|
ccxt/pro/binanceus.py,sha256=mpvmzc7kK3cGShM5EOvadOvwlj1xWsWzX9fIapuq2eQ,2321
|
340
340
|
ccxt/pro/binanceusdm.py,sha256=S0eT662O2ReplsihWk42nhJWqw1XsODpeDQa9eFVVt8,1357
|
@@ -345,7 +345,7 @@ ccxt/pro/bitfinex2.py,sha256=zIFXJNjzHSUxbKm8DUAstcoDTg9IZ3LoF5uJYL0H7lg,42744
|
|
345
345
|
ccxt/pro/bitget.py,sha256=LMWTlRkNiwFxyT3f05ikaX3oSvR5JOJSAveETtZntko,71724
|
346
346
|
ccxt/pro/bitmart.py,sha256=KF45-NuljFoQKbDRYfWDQEZ9FTkfahVxOQKbuCSvhfw,62382
|
347
347
|
ccxt/pro/bitmex.py,sha256=DAk_cbsDGWw8aTijphqtyqXNVNXRVpXCoyb_1zZPk-8,67893
|
348
|
-
ccxt/pro/bitopro.py,sha256=
|
348
|
+
ccxt/pro/bitopro.py,sha256=eRtfFh8Xv9VO0ebaEDCOCZ7LsvxYcfAKdIAvMh1ihLU,18724
|
349
349
|
ccxt/pro/bitpanda.py,sha256=ELrhfFKN9YJJdmm9wBf-vpk6WsXGWGf-SyJdqm-E_Lg,415
|
350
350
|
ccxt/pro/bitrue.py,sha256=gPN1lVaDZ4IBYGhaS-1WCkcNQ5__RMbtn2dC2sKZUI4,16448
|
351
351
|
ccxt/pro/bitstamp.py,sha256=LLxCbMr3VIpqqH5iHvJHPuLdWB3RwAkO6khgsE608Sk,20886
|
@@ -365,7 +365,7 @@ ccxt/pro/deribit.py,sha256=IutkVY1AzcTszpbbhNV1dLF3DUr3zGXxyHhWQVJ96m0,41035
|
|
365
365
|
ccxt/pro/exmo.py,sha256=gLCAObkmAyL_4BTRnftfDTejsW3-isi18ppKIipidyo,24527
|
366
366
|
ccxt/pro/gate.py,sha256=ZxG65LlbK4zk9PO6g_Tt1lZ1KN_gEmL0K8wOLU5M7wU,52489
|
367
367
|
ccxt/pro/gateio.py,sha256=_uBWXYQbmsHRivKnZOJDmxJ9tWLO_0HAxmOjAEUy9nE,391
|
368
|
-
ccxt/pro/gemini.py,sha256=
|
368
|
+
ccxt/pro/gemini.py,sha256=a8yZNyLnv1VI6FPhSK-d8MzG7wEX60wL8uUJrqeWmOI,36641
|
369
369
|
ccxt/pro/hitbtc.py,sha256=ASHxLlG2qSdRJP0ilP3YfQ4Axh6xzglnuQc01sF_tss,56285
|
370
370
|
ccxt/pro/hollaex.py,sha256=xkvPQ2h6t-Jvt1WsQC_ahKAaA6wYMvx03fnc0zqqOIg,21957
|
371
371
|
ccxt/pro/htx.py,sha256=_nIGpiNlgFXnzo2v4pnuLVI4_gZON41eeB1W0p3d_OY,95779
|
@@ -386,7 +386,7 @@ ccxt/pro/okcoin.py,sha256=Mb8Zq47uO7pmXxv51swuGogo-D503GI_caRxQQt0R0I,30385
|
|
386
386
|
ccxt/pro/okx.py,sha256=g56ZFnH8ApuL1Kgh427G_3kqhwD4SthWmkrhqMIe7ZA,68286
|
387
387
|
ccxt/pro/onetrading.py,sha256=9-WTi6ZNjsG7TJ6CA6pGpnm_6Jg2gg21ny4GZypjr6s,54634
|
388
388
|
ccxt/pro/p2b.py,sha256=afEcnqnXmAbKJGPlHHqDSw6Lpu13ON1FG7E1SSnfvRA,17320
|
389
|
-
ccxt/pro/phemex.py,sha256=
|
389
|
+
ccxt/pro/phemex.py,sha256=lD4r2KQdpkgeXGors3jtEMxoaxpEF0tl6MYXZ99GSYg,61032
|
390
390
|
ccxt/pro/poloniex.py,sha256=5-v7AgCp7sVlpkbGhG_Dfo5uWPrCti7jzCtdRwZTGVk,51236
|
391
391
|
ccxt/pro/poloniexfutures.py,sha256=msal1FRxt5S4qM8b8PTiZHAVBwVl-aFzbIwH21PT3UE,41480
|
392
392
|
ccxt/pro/probit.py,sha256=RLTnROQUmX31XQ3ymIZkiDkop3eiSVK70Yw81yDcde4,22822
|
@@ -492,8 +492,8 @@ ccxt/static_dependencies/toolz/curried/__init__.py,sha256=iOuFY4c1kixe_h8lxuWIW5
|
|
492
492
|
ccxt/static_dependencies/toolz/curried/exceptions.py,sha256=gKFOHDIayAWnX2uC8Z2KrUwpP-UpoqI5Tx1a859QdVY,344
|
493
493
|
ccxt/static_dependencies/toolz/curried/operator.py,sha256=ML92mknkAwzBl2NCm-4werSUmJEtSHNY9NSzhseNM9s,525
|
494
494
|
ccxt/test/__init__.py,sha256=GKPbEcj0Rrz5HG-GUm-iY1IHhDYmlvcBXZAGk6-m2CI,141
|
495
|
-
ccxt/test/test_async.py,sha256=
|
496
|
-
ccxt/test/test_sync.py,sha256=
|
495
|
+
ccxt/test/test_async.py,sha256=pKhpyg_fd6eiRfkVxOi0efFtsMN1lc4iqPrPuVPN_uA,76388
|
496
|
+
ccxt/test/test_sync.py,sha256=j3YJlisrVIoriLc-s8fucddMkqeZX4os9bjQMGxS7Jg,75387
|
497
497
|
ccxt/test/base/__init__.py,sha256=LvE9DEw5mNiyFrE-XnfzFFuSOvZOyi7ec__PF7lpnYs,1889
|
498
498
|
ccxt/test/base/test_account.py,sha256=lxwZXsY8qZgomBoEiomUmWcseSp--orJx-xmm3E1vYs,978
|
499
499
|
ccxt/test/base/test_balance.py,sha256=W-IcVRiJNLtdKEWEEhmhWjtFRuHFtoywNiGQNtYSuc0,2931
|
@@ -516,19 +516,19 @@ ccxt/test/base/test_margin_mode.py,sha256=Hv6pohqI-uJAvrlBjxSRUB55E9hdHB7jBJqjHc
|
|
516
516
|
ccxt/test/base/test_margin_modification.py,sha256=W1dj01TiAZd5ZLm9RV_GBWhUDOfOav9XNOXwMg02BKI,1730
|
517
517
|
ccxt/test/base/test_market.py,sha256=ZyR-nCKWbtC0xF76rng4mZ5UE_k71p7DKf5aOIYiQMc,11414
|
518
518
|
ccxt/test/base/test_number.py,sha256=vBis6fh9mJ5KnzGsUkcoh_cJxU1LR0x7CG0NMp6SejY,22083
|
519
|
-
ccxt/test/base/test_ohlcv.py,sha256=
|
519
|
+
ccxt/test/base/test_ohlcv.py,sha256=4LbTPW6sPP_p2d9cdvS-swHNaNVr6CYdNnyjwKqgnLI,2036
|
520
520
|
ccxt/test/base/test_open_interest.py,sha256=u689028CAIbR-MmgN8SfGShHmculqWgDouI4qsB-waQ,1547
|
521
521
|
ccxt/test/base/test_order.py,sha256=WvW1DtUvdX7Msv7tjdLlpVt2KoqoMDJXtpY2JnHEzy8,3964
|
522
522
|
ccxt/test/base/test_order_book.py,sha256=hwJKB8yFHndY2HcQWm3BdGH3qmX7mUc0fiISSwSKC6U,3586
|
523
523
|
ccxt/test/base/test_position.py,sha256=MUH0Pr_-uCE5JFQTZYqdSXJe-tKd1sbkK312MON7g-A,3884
|
524
|
-
ccxt/test/base/test_shared_methods.py,sha256=
|
524
|
+
ccxt/test/base/test_shared_methods.py,sha256=hnuD1c6rMcafEc-8zU0AE_xdV4dBoK3ax5SWNVUyu_k,20058
|
525
525
|
ccxt/test/base/test_status.py,sha256=1g4lXBVOazV96hucSKJ0R6hH2PVA593QyDW9qk8pEvs,781
|
526
526
|
ccxt/test/base/test_throttle.py,sha256=GvLQWtA4fAk_yJrxeisek-wAz7eJdHj0DDKR4_V1beg,3123
|
527
|
-
ccxt/test/base/test_ticker.py,sha256=
|
527
|
+
ccxt/test/base/test_ticker.py,sha256=cMTIMb1oySNORUCmqI5ZzMswlEyCF6gJMah3vfvo8wQ,5810
|
528
528
|
ccxt/test/base/test_trade.py,sha256=PMtmB8V38dpaP-eb8h488xYMlR6D69yCOhsA1RuWrUA,2336
|
529
529
|
ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
|
530
530
|
ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
|
531
|
-
ccxt-4.2.
|
532
|
-
ccxt-4.2.
|
533
|
-
ccxt-4.2.
|
534
|
-
ccxt-4.2.
|
531
|
+
ccxt-4.2.80.dist-info/METADATA,sha256=4SzAs7ZDfdx7JqFA5VXnFJAvrxtCCMj3bdt0H4wZ5wE,110489
|
532
|
+
ccxt-4.2.80.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
|
533
|
+
ccxt-4.2.80.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
534
|
+
ccxt-4.2.80.dist-info/RECORD,,
|
File without changes
|
File without changes
|