ccxt 4.4.45__py2.py3-none-any.whl → 4.4.46__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/bitget.py CHANGED
@@ -1444,16 +1444,102 @@ class bitget(Exchange, ImplicitAPI):
1444
1444
  },
1445
1445
  'sandboxMode': False,
1446
1446
  'networks': {
1447
+ # 'TRX': 'TRX', # different code for mainnet
1447
1448
  'TRC20': 'TRC20',
1449
+ # 'ETH': 'ETH', # different code for mainnet
1448
1450
  'ERC20': 'ERC20',
1449
1451
  'BEP20': 'BSC',
1450
- 'ARB': 'ArbitrumOne',
1451
- 'ZKSYNC': 'zkSyncEra',
1452
- 'STARKNET': 'Starknet',
1452
+ # 'BEP20': 'BEP20', # different for BEP20
1453
+ 'BSC': 'BEP20',
1454
+ 'ATOM': 'ATOM',
1455
+ 'ACA': 'AcalaToken',
1453
1456
  'APT': 'Aptos',
1457
+ 'ARBONE': 'ArbitrumOne',
1458
+ 'ARBNOVA': 'ArbitrumNova',
1459
+ 'AVAXC': 'C-Chain',
1460
+ 'AVAXX': 'X-Chain',
1461
+ 'AR': 'Arweave',
1462
+ 'BCH': 'BCH',
1463
+ 'BCHA': 'BCHA',
1464
+ 'BITCI': 'BITCI',
1465
+ 'BTC': 'BTC',
1466
+ 'CELO': 'CELO',
1467
+ 'CSPR': 'CSPR',
1468
+ 'ADA': 'Cardano',
1469
+ 'CHZ': 'ChilizChain',
1470
+ 'CRC20': 'CronosChain',
1471
+ 'DOGE': 'DOGE',
1472
+ 'DOT': 'DOT',
1473
+ 'EOS': 'EOS',
1474
+ 'ETHF': 'ETHFAIR',
1475
+ 'ETHW': 'ETHW',
1476
+ 'ETC': 'ETC',
1477
+ 'EGLD': 'Elrond',
1478
+ 'FIL': 'FIL',
1479
+ 'FIO': 'FIO',
1480
+ 'FTM': 'Fantom',
1481
+ 'HRC20': 'HECO',
1482
+ 'ONE': 'Harmony',
1483
+ 'HNT': 'Helium',
1484
+ 'ICP': 'ICP',
1485
+ 'IOTX': 'IoTeX',
1486
+ 'KARDIA': 'KAI',
1487
+ 'KAVA': 'KAVA',
1488
+ 'KDA': 'KDA',
1489
+ 'KLAY': 'Klaytn',
1490
+ 'KSM': 'Kusama',
1491
+ 'LAT': 'LAT',
1492
+ 'LTC': 'LTC',
1493
+ 'MINA': 'MINA',
1494
+ 'MOVR': 'MOVR',
1495
+ 'METIS': 'MetisToken',
1496
+ 'GLMR': 'Moonbeam',
1497
+ 'NEAR': 'NEARProtocol',
1498
+ 'NULS': 'NULS',
1499
+ 'OASYS': 'OASYS',
1500
+ 'OASIS': 'ROSE',
1501
+ 'OMNI': 'OMNI',
1502
+ 'ONT': 'Ontology',
1503
+ 'OPTIMISM': 'Optimism',
1504
+ 'OSMO': 'Osmosis',
1505
+ 'POKT': 'PocketNetwork',
1454
1506
  'MATIC': 'Polygon',
1507
+ 'QTUM': 'QTUM',
1508
+ 'REEF': 'REEF',
1509
+ 'SOL': 'SOL',
1510
+ 'SYS': 'SYS', # SyscoinNEVM is different
1511
+ 'SXP': 'Solar',
1512
+ 'XYM': 'Symbol',
1513
+ 'TON': 'TON',
1514
+ 'TT': 'TT',
1515
+ 'TLOS': 'Telos',
1516
+ 'THETA': 'ThetaToken',
1517
+ 'VITE': 'VITE',
1518
+ 'WAVES': 'WAVES',
1519
+ 'WAX': 'WAXP',
1520
+ 'WEMIX': 'WEMIXMainnet',
1521
+ 'XDC': 'XDCNetworkXDC',
1522
+ 'XRP': 'XRP',
1523
+ 'FET': 'FETCH',
1524
+ 'NEM': 'NEM',
1525
+ 'REI': 'REINetwork',
1526
+ 'ZIL': 'ZIL',
1527
+ 'ABBC': 'ABBCCoin',
1528
+ 'RSK': 'RSK',
1529
+ 'AZERO': 'AZERO',
1530
+ 'TRC10': 'TRC10',
1531
+ 'JUNO': 'JUNO',
1532
+ # undetected: USDSP, more info at https://www.bitget.com/v1/spot/public/coinChainList
1533
+ # todo: uncomment below after unification
1534
+ # 'TERRACLASSIC': 'Terra', # tbd, that network id is also assigned to TERRANEW network
1535
+ # 'CUBENETWORK': 'CUBE',
1536
+ # 'CADUCEUS': 'CMP',
1537
+ # 'CONFLUX': 'CFX', # CFXeSpace is different
1538
+ # 'CERE': 'CERE',
1539
+ # 'CANTO': 'CANTO',
1540
+ 'ZKSYNC': 'zkSyncEra',
1541
+ 'STARKNET': 'Starknet',
1455
1542
  'VIC': 'VICTION',
1456
- 'AVAXC': 'C-Chain',
1457
1543
  },
1458
1544
  'networksById': {
1459
1545
  },
@@ -2303,13 +2389,13 @@ class bitget(Exchange, ImplicitAPI):
2303
2389
  :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
2304
2390
  """
2305
2391
  self.check_address(address)
2306
- chain = self.safe_string_2(params, 'chain', 'network')
2307
- params = self.omit(params, 'network')
2308
- if chain is None:
2309
- raise ArgumentsRequired(self.id + ' withdraw() requires a chain parameter or a network parameter')
2392
+ networkCode = None
2393
+ networkCode, params = self.handle_network_code_and_params(params)
2394
+ if networkCode is None:
2395
+ raise ArgumentsRequired(self.id + ' withdraw() requires a "network" parameter')
2310
2396
  self.load_markets()
2311
2397
  currency = self.currency(code)
2312
- networkId = self.network_code_to_id(chain)
2398
+ networkId = self.network_code_to_id(networkCode)
2313
2399
  request: dict = {
2314
2400
  'coin': currency['id'],
2315
2401
  'address': address,
@@ -2332,27 +2418,8 @@ class bitget(Exchange, ImplicitAPI):
2332
2418
  # }
2333
2419
  #
2334
2420
  data = self.safe_value(response, 'data', {})
2335
- result: dict = {
2336
- 'id': self.safe_string(data, 'orderId'),
2337
- 'info': response,
2338
- 'txid': None,
2339
- 'timestamp': None,
2340
- 'datetime': None,
2341
- 'network': None,
2342
- 'addressFrom': None,
2343
- 'address': None,
2344
- 'addressTo': None,
2345
- 'amount': None,
2346
- 'type': 'withdrawal',
2347
- 'currency': None,
2348
- 'status': None,
2349
- 'updated': None,
2350
- 'tagFrom': None,
2351
- 'tag': None,
2352
- 'tagTo': None,
2353
- 'comment': None,
2354
- 'fee': None,
2355
- }
2421
+ result = self.parse_transaction(data, currency)
2422
+ result['type'] = 'withdrawal'
2356
2423
  withdrawOptions = self.safe_value(self.options, 'withdraw', {})
2357
2424
  fillResponseFromRequest = self.safe_bool(withdrawOptions, 'fillResponseFromRequest', True)
2358
2425
  if fillResponseFromRequest:
@@ -2363,7 +2430,7 @@ class bitget(Exchange, ImplicitAPI):
2363
2430
  result['tag'] = tag
2364
2431
  result['address'] = address
2365
2432
  result['addressTo'] = address
2366
- result['network'] = chain
2433
+ result['network'] = networkCode
2367
2434
  return result
2368
2435
 
2369
2436
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
@@ -2525,17 +2592,14 @@ class bitget(Exchange, ImplicitAPI):
2525
2592
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
2526
2593
  """
2527
2594
  self.load_markets()
2528
- networkCode = self.safe_string_2(params, 'chain', 'network')
2529
- params = self.omit(params, 'network')
2530
- networkId = None
2531
- if networkCode is not None:
2532
- networkId = self.network_code_to_id(networkCode, code)
2595
+ networkCode = None
2596
+ networkCode, params = self.handle_network_code_and_params(params)
2533
2597
  currency = self.currency(code)
2534
2598
  request: dict = {
2535
2599
  'coin': currency['id'],
2536
2600
  }
2537
- if networkId is not None:
2538
- request['chain'] = networkId
2601
+ if networkCode is not None:
2602
+ request['chain'] = self.network_code_to_id(networkCode, code)
2539
2603
  response = self.privateSpotGetV2SpotWalletDepositAddress(self.extend(request, params))
2540
2604
  #
2541
2605
  # {
ccxt/bybit.py CHANGED
@@ -1072,8 +1072,78 @@ class bybit(Exchange, ImplicitAPI):
1072
1072
  'ERC20': 'ETH',
1073
1073
  'TRC20': 'TRX',
1074
1074
  'BEP20': 'BSC',
1075
+ 'SOL': 'SOL',
1076
+ 'ACA': 'ACA',
1077
+ 'ADA': 'ADA',
1078
+ 'ALGO': 'ALGO',
1079
+ 'APT': 'APTOS',
1080
+ 'AR': 'AR',
1081
+ 'ARBONE': 'ARBI',
1082
+ 'AVAXC': 'CAVAX',
1083
+ 'AVAXX': 'XAVAX',
1084
+ 'ATOM': 'ATOM',
1085
+ 'BCH': 'BCH',
1086
+ 'BEP2': 'BNB',
1087
+ 'CHZ': 'CHZ',
1088
+ 'DCR': 'DCR',
1089
+ 'DGB': 'DGB',
1090
+ 'DOGE': 'DOGE',
1091
+ 'DOT': 'DOT',
1092
+ 'EGLD': 'EGLD',
1093
+ 'EOS': 'EOS',
1094
+ 'ETC': 'ETC',
1095
+ 'ETHF': 'ETHF',
1096
+ 'ETHW': 'ETHW',
1097
+ 'FIL': 'FIL',
1098
+ 'STEP': 'FITFI',
1099
+ 'FLOW': 'FLOW',
1100
+ 'FTM': 'FTM',
1101
+ 'GLMR': 'GLMR',
1102
+ 'HBAR': 'HBAR',
1103
+ 'HNT': 'HNT',
1104
+ 'ICP': 'ICP',
1105
+ 'ICX': 'ICX',
1106
+ 'KDA': 'KDA',
1107
+ 'KLAY': 'KLAY',
1108
+ 'KMA': 'KMA',
1109
+ 'KSM': 'KSM',
1110
+ 'LTC': 'LTC',
1111
+ # 'TERRA': 'LUNANEW',
1112
+ # 'TERRACLASSIC': 'LUNA',
1113
+ 'MATIC': 'MATIC',
1114
+ 'MINA': 'MINA',
1115
+ 'MOVR': 'MOVR',
1116
+ 'NEAR': 'NEAR',
1117
+ 'NEM': 'NEM',
1118
+ 'OASYS': 'OAS',
1119
+ 'OASIS': 'ROSE',
1075
1120
  'OMNI': 'OMNI',
1076
- 'SPL': 'SOL',
1121
+ 'ONE': 'ONE',
1122
+ 'OPTIMISM': 'OP',
1123
+ 'POKT': 'POKT',
1124
+ 'QTUM': 'QTUM',
1125
+ 'RVN': 'RVN',
1126
+ 'SC': 'SC',
1127
+ 'SCRT': 'SCRT',
1128
+ 'STX': 'STX',
1129
+ 'THETA': 'THETA',
1130
+ 'TON': 'TON',
1131
+ 'WAVES': 'WAVES',
1132
+ 'WAX': 'WAXP',
1133
+ 'XDC': 'XDC',
1134
+ 'XEC': 'XEC',
1135
+ 'XLM': 'XLM',
1136
+ 'XRP': 'XRP',
1137
+ 'XTZ': 'XTZ',
1138
+ 'XYM': 'XYM',
1139
+ 'ZEN': 'ZEN',
1140
+ 'ZIL': 'ZIL',
1141
+ 'ZKSYNC': 'ZKSYNC',
1142
+ # todo: uncomment after consensus
1143
+ # 'CADUCEUS': 'CMP',
1144
+ # 'KON': 'KON', # konpay, "konchain"
1145
+ # 'AURORA': 'AURORA',
1146
+ # 'BITCOINGOLD': 'BTG',
1077
1147
  },
1078
1148
  'networksById': {
1079
1149
  'ETH': 'ERC20',
@@ -5058,12 +5128,11 @@ classic accounts only/ spot not supported* fetches information on an order made
5058
5128
  address = self.safe_string(depositAddress, 'addressDeposit')
5059
5129
  tag = self.safe_string(depositAddress, 'tagDeposit')
5060
5130
  code = self.safe_string(currency, 'code')
5061
- chain = self.safe_string(depositAddress, 'chain')
5062
5131
  self.check_address(address)
5063
5132
  return {
5064
5133
  'info': depositAddress,
5065
5134
  'currency': code,
5066
- 'network': chain,
5135
+ 'network': self.network_id_to_code(self.safe_string(depositAddress, 'chain'), code),
5067
5136
  'address': address,
5068
5137
  'tag': tag,
5069
5138
  }
@@ -5083,6 +5152,10 @@ classic accounts only/ spot not supported* fetches information on an order made
5083
5152
  request: dict = {
5084
5153
  'coin': currency['id'],
5085
5154
  }
5155
+ networkCode = None
5156
+ networkCode, params = self.handle_network_code_and_params(params)
5157
+ if networkCode is not None:
5158
+ request['chainType'] = self.network_code_to_id(networkCode, code)
5086
5159
  response = self.privateGetV5AssetDepositQueryAddress(self.extend(request, params))
5087
5160
  #
5088
5161
  # {
@@ -5123,40 +5196,11 @@ classic accounts only/ spot not supported* fetches information on an order made
5123
5196
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
5124
5197
  """
5125
5198
  self.load_markets()
5126
- networkCode, query = self.handle_network_code_and_params(params)
5127
- networkId = self.network_code_to_id(networkCode)
5128
5199
  currency = self.currency(code)
5129
- request: dict = {
5130
- 'coin': currency['id'],
5131
- }
5132
- if networkId is not None:
5133
- request['chainType'] = networkId
5134
- response = self.privateGetV5AssetDepositQueryAddress(self.extend(request, query))
5135
- #
5136
- # {
5137
- # "retCode": 0,
5138
- # "retMsg": "success",
5139
- # "result": {
5140
- # "coin": "USDT",
5141
- # "chains": [
5142
- # {
5143
- # "chainType": "ERC20",
5144
- # "addressDeposit": "0xd9e1cd77afa0e50b452a62fbb68a3340602286c3",
5145
- # "tagDeposit": "",
5146
- # "chain": "ETH"
5147
- # }
5148
- # ]
5149
- # },
5150
- # "retExtInfo": {},
5151
- # "time": 1672192792860
5152
- # }
5153
- #
5154
- result = self.safe_dict(response, 'result', {})
5155
- chains = self.safe_list(result, 'chains', [])
5156
- chainsIndexedById = self.index_by(chains, 'chain')
5157
- selectedNetworkId = self.select_network_id_from_raw_networks(code, networkCode, chainsIndexedById)
5158
- addressObject = self.safe_dict(chainsIndexedById, selectedNetworkId, {})
5159
- return self.parse_deposit_address(addressObject, currency)
5200
+ networkCode, paramsOmited = self.handle_network_code_and_params(params)
5201
+ indexedAddresses = self.fetch_deposit_addresses_by_network(code, paramsOmited)
5202
+ selectedNetworkCode = self.select_network_code_from_unified_networks(currency['code'], networkCode, indexedAddresses)
5203
+ return indexedAddresses[selectedNetworkCode]
5160
5204
 
5161
5205
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
5162
5206
  """
ccxt/delta.py CHANGED
@@ -1446,13 +1446,14 @@ class delta(Exchange, ImplicitAPI):
1446
1446
  """
1447
1447
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1448
1448
 
1449
- https://docs.delta.exchange/#get-ohlc-candles
1449
+ https://docs.delta.exchange/#delta-exchange-api-v2-historical-ohlc-candles-sparklines
1450
1450
 
1451
1451
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1452
1452
  :param str timeframe: the length of time each candle represents
1453
1453
  :param int [since]: timestamp in ms of the earliest candle to fetch
1454
1454
  :param int [limit]: the maximum amount of candles to fetch
1455
1455
  :param dict [params]: extra parameters specific to the exchange API endpoint
1456
+ :param str [params.until]: timestamp in ms of the latest candle to fetch
1456
1457
  :returns int[][]: A list of candles ordered, open, high, low, close, volume
1457
1458
  """
1458
1459
  self.load_markets()
@@ -1462,14 +1463,18 @@ class delta(Exchange, ImplicitAPI):
1462
1463
  }
1463
1464
  duration = self.parse_timeframe(timeframe)
1464
1465
  limit = limit if limit else 2000 # max 2000
1466
+ until = self.safe_integer_product(params, 'until', 0.001)
1467
+ untilIsDefined = (until is not None)
1468
+ if untilIsDefined:
1469
+ until = self.parse_to_int(until)
1465
1470
  if since is None:
1466
- end = self.seconds()
1471
+ end = until if untilIsDefined else self.seconds()
1467
1472
  request['end'] = end
1468
1473
  request['start'] = end - limit * duration
1469
1474
  else:
1470
1475
  start = self.parse_to_int(since / 1000)
1471
1476
  request['start'] = start
1472
- request['end'] = self.sum(start, limit * duration)
1477
+ request['end'] = until if untilIsDefined else self.sum(start, limit * duration)
1473
1478
  price = self.safe_string(params, 'price')
1474
1479
  if price == 'mark':
1475
1480
  request['symbol'] = 'MARK:' + market['id']
@@ -1477,7 +1482,7 @@ class delta(Exchange, ImplicitAPI):
1477
1482
  request['symbol'] = market['info']['spot_index']['symbol']
1478
1483
  else:
1479
1484
  request['symbol'] = market['id']
1480
- params = self.omit(params, 'price')
1485
+ params = self.omit(params, ['price', 'until'])
1481
1486
  response = self.publicGetHistoryCandles(self.extend(request, params))
1482
1487
  #
1483
1488
  # {
ccxt/gate.py CHANGED
@@ -734,7 +734,6 @@ class gate(Exchange, ImplicitAPI):
734
734
  'takeProfitPrice': True,
735
735
  'attachedStopLossTakeProfit': None,
736
736
  'timeInForce': {
737
- 'GTC': True,
738
737
  'IOC': True,
739
738
  'FOK': True,
740
739
  'PO': True,
ccxt/hyperliquid.py CHANGED
@@ -238,7 +238,6 @@ class hyperliquid(Exchange, ImplicitAPI):
238
238
  'takeProfitPrice': False,
239
239
  'attachedStopLossTakeProfit': None,
240
240
  'timeInForce': {
241
- 'GTC': True,
242
241
  'IOC': True,
243
242
  'FOK': False,
244
243
  'PO': True,
@@ -2181,7 +2180,7 @@ class hyperliquid(Exchange, ImplicitAPI):
2181
2180
  else:
2182
2181
  market = self.safe_market(marketId, market)
2183
2182
  symbol = market['symbol']
2184
- timestamp = self.safe_integer_2(order, 'timestamp', 'statusTimestamp')
2183
+ timestamp = self.safe_integer(entry, 'timestamp')
2185
2184
  status = self.safe_string_2(order, 'status', 'ccxtStatus')
2186
2185
  order = self.omit(order, ['ccxtStatus'])
2187
2186
  side = self.safe_string(entry, 'side')
@@ -2196,7 +2195,7 @@ class hyperliquid(Exchange, ImplicitAPI):
2196
2195
  'timestamp': timestamp,
2197
2196
  'datetime': self.iso8601(timestamp),
2198
2197
  'lastTradeTimestamp': None,
2199
- 'lastUpdateTimestamp': None,
2198
+ 'lastUpdateTimestamp': self.safe_integer(order, 'statusTimestamp'),
2200
2199
  'symbol': symbol,
2201
2200
  'type': self.parse_order_type(self.safe_string_lower(entry, 'orderType')),
2202
2201
  'timeInForce': self.safe_string_upper(entry, 'tif'),
ccxt/mexc.py CHANGED
@@ -457,6 +457,7 @@ class mexc(Exchange, ImplicitAPI):
457
457
  '1h': '60m',
458
458
  '4h': '4h',
459
459
  '1d': '1d',
460
+ '1w': '1W',
460
461
  '1M': '1M',
461
462
  },
462
463
  'swap': {
ccxt/onetrading.py CHANGED
@@ -289,6 +289,7 @@ class onetrading(Exchange, ImplicitAPI):
289
289
  'INTERNAL_SERVER_ERROR': ExchangeError,
290
290
  },
291
291
  'broad': {
292
+ 'Order not found.': OrderNotFound,
292
293
  },
293
294
  },
294
295
  'commonCurrencies': {
@@ -1000,6 +1001,7 @@ class onetrading(Exchange, ImplicitAPI):
1000
1001
  'CLOSED': 'canceled',
1001
1002
  'FAILED': 'failed',
1002
1003
  'STOP_TRIGGERED': 'triggered',
1004
+ 'DONE': 'closed',
1003
1005
  }
1004
1006
  return self.safe_string(statuses, status, status)
1005
1007
 
@@ -1094,7 +1096,7 @@ class onetrading(Exchange, ImplicitAPI):
1094
1096
  'datetime': self.iso8601(timestamp),
1095
1097
  'lastTradeTimestamp': None,
1096
1098
  'symbol': symbol,
1097
- 'type': type,
1099
+ 'type': self.parse_order_type(type),
1098
1100
  'timeInForce': timeInForce,
1099
1101
  'postOnly': postOnly,
1100
1102
  'side': side,
@@ -1110,6 +1112,12 @@ class onetrading(Exchange, ImplicitAPI):
1110
1112
  'trades': rawTrades,
1111
1113
  }, market)
1112
1114
 
1115
+ def parse_order_type(self, type: Str):
1116
+ types: dict = {
1117
+ 'booked': 'limit',
1118
+ }
1119
+ return self.safe_string(types, type, type)
1120
+
1113
1121
  def parse_time_in_force(self, timeInForce: Str):
1114
1122
  timeInForces: dict = {
1115
1123
  'GOOD_TILL_CANCELLED': 'GTC',
@@ -1167,6 +1175,9 @@ class onetrading(Exchange, ImplicitAPI):
1167
1175
  if clientOrderId is not None:
1168
1176
  request['client_id'] = clientOrderId
1169
1177
  params = self.omit(params, ['clientOrderId', 'client_id'])
1178
+ timeInForce = self.safe_string_2(params, 'timeInForce', 'time_in_force', 'GOOD_TILL_CANCELLED')
1179
+ params = self.omit(params, 'timeInForce')
1180
+ request['time_in_force'] = timeInForce
1170
1181
  response = self.privatePostAccountOrders(self.extend(request, params))
1171
1182
  #
1172
1183
  # {
@@ -1206,11 +1217,15 @@ class onetrading(Exchange, ImplicitAPI):
1206
1217
  request['client_id'] = clientOrderId
1207
1218
  else:
1208
1219
  request['order_id'] = id
1209
- response = getattr(self, method)(self.extend(request, params))
1220
+ response = None
1221
+ if method == 'privateDeleteAccountOrdersOrderId':
1222
+ response = self.privateDeleteAccountOrdersOrderId(self.extend(request, params))
1223
+ else:
1224
+ response = self.privateDeleteAccountOrdersClientClientId(self.extend(request, params))
1210
1225
  #
1211
1226
  # responds with an empty body
1212
1227
  #
1213
- return response
1228
+ return self.parse_order(response)
1214
1229
 
1215
1230
  def cancel_all_orders(self, symbol: Str = None, params={}):
1216
1231
  """
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.45'
7
+ __version__ = '4.4.46'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/coinex.py CHANGED
@@ -1238,7 +1238,7 @@ class coinex(ccxt.async_support.coinex):
1238
1238
  defaultType = self.safe_string(self.options, 'defaultType')
1239
1239
  marketId = self.safe_string(ticker, 'market')
1240
1240
  market = self.safe_market(marketId, market, None, defaultType)
1241
- timestamp = self.safe_timestamp(ticker, 'updated_at')
1241
+ timestamp = self.safe_integer(ticker, 'updated_at')
1242
1242
  return self.safe_ticker({
1243
1243
  'symbol': self.safe_symbol(marketId, market, None, defaultType),
1244
1244
  'timestamp': timestamp,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.45
3
+ Version: 4.4.46
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
@@ -277,13 +277,13 @@ console.log(version, Object.keys(exchanges));
277
277
 
278
278
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
279
279
 
280
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.45/dist/ccxt.browser.min.js
281
- * unpkg: https://unpkg.com/ccxt@4.4.45/dist/ccxt.browser.min.js
280
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.46/dist/ccxt.browser.min.js
281
+ * unpkg: https://unpkg.com/ccxt@4.4.46/dist/ccxt.browser.min.js
282
282
 
283
283
  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.
284
284
 
285
285
  ```HTML
286
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.45/dist/ccxt.browser.min.js"></script>
286
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.46/dist/ccxt.browser.min.js"></script>
287
287
  ```
288
288
 
289
289
  Creates a global `ccxt` object: