ccxt 4.2.67__py2.py3-none-any.whl → 4.2.68__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 CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.2.67'
25
+ __version__ = '4.2.68'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.67'
7
+ __version__ = '4.2.68'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.2.67'
5
+ __version__ = '4.2.68'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -849,13 +849,15 @@ class hyperliquid(Exchange, ImplicitAPI):
849
849
  if clientOrderId is not None:
850
850
  orderObj['c'] = clientOrderId
851
851
  orderReq.append(orderObj)
852
+ vaultAddress = self.safe_string(params, 'vaultAddress')
852
853
  orderAction = {
853
854
  'type': 'order',
854
855
  'orders': orderReq,
855
856
  'grouping': 'na',
856
- 'brokerCode': 1,
857
+ # 'brokerCode': 1, # cant
857
858
  }
858
- vaultAddress = self.safe_string(params, 'vaultAddress')
859
+ if vaultAddress is None:
860
+ orderAction['brokerCode'] = 1
859
861
  signature = self.sign_l1_action(orderAction, nonce, vaultAddress)
860
862
  request = {
861
863
  'action': orderAction,
@@ -263,6 +263,9 @@ class krakenfutures(Exchange, ImplicitAPI):
263
263
  },
264
264
  },
265
265
  },
266
+ 'fetchTrades': {
267
+ 'method': 'historyGetMarketSymbolExecutions', # historyGetMarketSymbolExecutions, publicGetHistory
268
+ },
266
269
  },
267
270
  'timeframes': {
268
271
  '1m': '1m',
@@ -685,6 +688,7 @@ class krakenfutures(Exchange, ImplicitAPI):
685
688
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
686
689
  """
687
690
  :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-trade-history
691
+ :see: https://docs.futures.kraken.com/#http-api-history-market-history-get-public-execution-events
688
692
  Fetch a history of filled trades that self account has made
689
693
  :param str symbol: Unified CCXT market symbol
690
694
  :param int [since]: Timestamp in ms of earliest trade. Not used by krakenfutures except in combination with params.until
@@ -692,6 +696,7 @@ class krakenfutures(Exchange, ImplicitAPI):
692
696
  :param dict [params]: Exchange specific params
693
697
  :param int [params.until]: Timestamp in ms of latest trade
694
698
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
699
+ :param str [params.method]: The method to use to fetch trades. Can be 'historyGetMarketSymbolExecutions' or 'publicGetHistory' default is 'historyGetMarketSymbolExecutions'
695
700
  :returns: An array of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
696
701
  """
697
702
  await self.load_markets()
@@ -703,34 +708,105 @@ class krakenfutures(Exchange, ImplicitAPI):
703
708
  request = {
704
709
  'symbol': market['id'],
705
710
  }
706
- until = self.safe_integer(params, 'until')
707
- if until is not None:
708
- request['lastTime'] = self.iso8601(until)
709
- #
710
- # {
711
- # "result": "success",
712
- # "history": [
713
- # {
714
- # "time": "2022-03-18T04:55:37.692Z",
715
- # "trade_id": 100,
716
- # "price": 0.7921,
717
- # "size": 1068,
718
- # "side": "sell",
719
- # "type": "fill",
720
- # "uid": "6c5da0b0-f1a8-483f-921f-466eb0388265"
721
- # },
722
- # ...
723
- # ],
724
- # "serverTime": "2022-03-18T06:39:18.056Z"
725
- # }
726
- #
727
- response = await self.publicGetHistory(self.extend(request, params))
728
- history = self.safe_value(response, 'history')
729
- return self.parse_trades(history, market, since, limit)
711
+ method = None
712
+ method, params = self.handle_option_and_params(params, 'fetchTrades', 'method', 'historyGetMarketSymbolExecutions')
713
+ rawTrades = None
714
+ isFullHistoryEndpoint = (method == 'historyGetMarketSymbolExecutions')
715
+ if isFullHistoryEndpoint:
716
+ request, params = self.handle_until_option('before', request, params)
717
+ if since is not None:
718
+ request['since'] = since
719
+ request['sort'] = 'asc'
720
+ if limit is not None:
721
+ request['count'] = limit
722
+ response = await self.historyGetMarketSymbolExecutions(self.extend(request, params))
723
+ #
724
+ # {
725
+ # "elements": [
726
+ # {
727
+ # "uid": "a5105030-f054-44cc-98ab-30d5cae96bef",
728
+ # "timestamp": "1710150778607",
729
+ # "event": {
730
+ # "Execution": {
731
+ # "execution": {
732
+ # "uid": "2d485b71-cd28-4a1e-9364-371a127550d2",
733
+ # "makerOrder": {
734
+ # "uid": "0a25f66b-1109-49ec-93a3-d17bf9e9137e",
735
+ # "tradeable": "PF_XBTUSD",
736
+ # "direction": "Buy",
737
+ # "quantity": "0.26500",
738
+ # "timestamp": "1710150778570",
739
+ # "limitPrice": "71907",
740
+ # "orderType": "Post",
741
+ # "reduceOnly": False,
742
+ # "lastUpdateTimestamp": "1710150778570"
743
+ # },
744
+ # "takerOrder": {
745
+ # "uid": "04de3ee0-9125-4960-bf8f-f63b577b6790",
746
+ # "tradeable": "PF_XBTUSD",
747
+ # "direction": "Sell",
748
+ # "quantity": "0.0002",
749
+ # "timestamp": "1710150778607",
750
+ # "limitPrice": "71187.00",
751
+ # "orderType": "Market",
752
+ # "reduceOnly": False,
753
+ # "lastUpdateTimestamp": "1710150778607"
754
+ # },
755
+ # "timestamp": "1710150778607",
756
+ # "quantity": "0.0002",
757
+ # "price": "71907",
758
+ # "markPrice": "71903.32715463147",
759
+ # "limitFilled": False,
760
+ # "usdValue": "14.38"
761
+ # },
762
+ # "takerReducedQuantity": ""
763
+ # }
764
+ # }
765
+ # },
766
+ # ... followed by older items
767
+ # ],
768
+ # "len": "1000",
769
+ # "continuationToken": "QTexMDE0OTe33NTcyXy8xNDIzAjc1NjY5MwI="
770
+ # }
771
+ #
772
+ elements = self.safe_list(response, 'elements', [])
773
+ # we need to reverse the list to fix chronology
774
+ rawTrades = []
775
+ length = len(elements)
776
+ for i in range(0, length):
777
+ index = length - 1 - i
778
+ element = elements[index]
779
+ event = self.safe_dict(element, 'event', {})
780
+ executionContainer = self.safe_dict(event, 'Execution', {})
781
+ rawTrade = self.safe_dict(executionContainer, 'execution', {})
782
+ rawTrades.append(rawTrade)
783
+ else:
784
+ request, params = self.handle_until_option('lastTime', request, params)
785
+ response = await self.publicGetHistory(self.extend(request, params))
786
+ #
787
+ # {
788
+ # "result": "success",
789
+ # "history": [
790
+ # {
791
+ # "time": "2022-03-18T04:55:37.692Z",
792
+ # "trade_id": 100,
793
+ # "price": 0.7921,
794
+ # "size": 1068,
795
+ # "side": "sell",
796
+ # "type": "fill",
797
+ # "uid": "6c5da0b0-f1a8-483f-921f-466eb0388265"
798
+ # },
799
+ # ...
800
+ # ],
801
+ # "serverTime": "2022-03-18T06:39:18.056Z"
802
+ # }
803
+ #
804
+ rawTrades = self.safe_list(response, 'history', [])
805
+ return self.parse_trades(rawTrades, market, since, limit)
730
806
 
731
807
  def parse_trade(self, trade, market: Market = None) -> Trade:
732
808
  #
733
- # fetchTrades(public)
809
+ # fetchTrades(recent trades)
734
810
  #
735
811
  # {
736
812
  # "time": "2019-02-14T09:25:33.920Z",
@@ -738,10 +814,24 @@ class krakenfutures(Exchange, ImplicitAPI):
738
814
  # "price": 3574,
739
815
  # "size": 100,
740
816
  # "side": "buy",
741
- # "type": "fill" # fill, liquidation, assignment, termination
817
+ # "type": "fill" # fill, liquidation, assignment, termination
742
818
  # "uid": "11c3d82c-9e70-4fe9-8115-f643f1b162d4"
743
819
  # }
744
820
  #
821
+ # fetchTrades(executions history)
822
+ #
823
+ # {
824
+ # "timestamp": "1710152516830",
825
+ # "price": "71927.0",
826
+ # "quantity": "0.0695",
827
+ # "markPrice": "71936.38701675525",
828
+ # "limitFilled": True,
829
+ # "usdValue": "4998.93",
830
+ # "uid": "116ae634-253f-470b-bd20-fa9d429fb8b1",
831
+ # "makerOrder": {"uid": "17bfe4de-c01e-4938-926c-617d2a2d0597", "tradeable": "PF_XBTUSD", "direction": "Buy", "quantity": "0.0695", "timestamp": "1710152515836", "limitPrice": "71927.0", "orderType": "Post", "reduceOnly": False, "lastUpdateTimestamp": "1710152515836"},
832
+ # "takerOrder": {"uid": "d3e437b4-aa70-4108-b5cf-b1eecb9845b5", "tradeable": "PF_XBTUSD", "direction": "Sell", "quantity": "0.940100", "timestamp": "1710152516830", "limitPrice": "71915", "orderType": "IoC", "reduceOnly": False, "lastUpdateTimestamp": "1710152516830"}
833
+ # }
834
+ #
745
835
  # fetchMyTrades(private)
746
836
  #
747
837
  # {
@@ -782,7 +872,7 @@ class krakenfutures(Exchange, ImplicitAPI):
782
872
  #
783
873
  timestamp = self.parse8601(self.safe_string_2(trade, 'time', 'fillTime'))
784
874
  price = self.safe_string(trade, 'price')
785
- amount = self.safe_string_2(trade, 'size', 'amount', '0.0')
875
+ amount = self.safe_string_n(trade, ['size', 'amount', 'quantity'], '0.0')
786
876
  id = self.safe_string_2(trade, 'uid', 'fill_id')
787
877
  if id is None:
788
878
  id = self.safe_string(trade, 'executionId')
@@ -821,6 +911,13 @@ class krakenfutures(Exchange, ImplicitAPI):
821
911
  takerOrMaker = 'taker'
822
912
  elif fillType.find('maker') >= 0:
823
913
  takerOrMaker = 'maker'
914
+ isHistoricalExecution = ('takerOrder' in trade)
915
+ if isHistoricalExecution:
916
+ timestamp = self.safe_integer(trade, 'timestamp')
917
+ taker = self.safe_dict(trade, 'takerOrder', {})
918
+ if taker is not None:
919
+ side = self.safe_string_lower(taker, 'direction')
920
+ takerOrMaker = 'taker'
824
921
  return self.safe_trade({
825
922
  'info': trade,
826
923
  'id': id,
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.67'
7
+ __version__ = '4.2.68'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -3514,12 +3514,18 @@ class Exchange(object):
3514
3514
  market = self.market(symbol)
3515
3515
  return self.safe_string(market, 'symbol', symbol)
3516
3516
 
3517
- def handle_param_string(self, params: object, paramName: str, defaultValue=None):
3517
+ def handle_param_string(self, params: object, paramName: str, defaultValue: Str = None):
3518
3518
  value = self.safe_string(params, paramName, defaultValue)
3519
3519
  if value is not None:
3520
3520
  params = self.omit(params, paramName)
3521
3521
  return [value, params]
3522
3522
 
3523
+ def handle_param_integer(self, params: object, paramName: str, defaultValue: Int = None):
3524
+ value = self.safe_integer(params, paramName, defaultValue)
3525
+ if value is not None:
3526
+ params = self.omit(params, paramName)
3527
+ return [value, params]
3528
+
3523
3529
  def resolve_path(self, path, params):
3524
3530
  return [
3525
3531
  self.implode_params(path, params),
ccxt/hyperliquid.py CHANGED
@@ -849,13 +849,15 @@ class hyperliquid(Exchange, ImplicitAPI):
849
849
  if clientOrderId is not None:
850
850
  orderObj['c'] = clientOrderId
851
851
  orderReq.append(orderObj)
852
+ vaultAddress = self.safe_string(params, 'vaultAddress')
852
853
  orderAction = {
853
854
  'type': 'order',
854
855
  'orders': orderReq,
855
856
  'grouping': 'na',
856
- 'brokerCode': 1,
857
+ # 'brokerCode': 1, # cant
857
858
  }
858
- vaultAddress = self.safe_string(params, 'vaultAddress')
859
+ if vaultAddress is None:
860
+ orderAction['brokerCode'] = 1
859
861
  signature = self.sign_l1_action(orderAction, nonce, vaultAddress)
860
862
  request = {
861
863
  'action': orderAction,
ccxt/krakenfutures.py CHANGED
@@ -263,6 +263,9 @@ class krakenfutures(Exchange, ImplicitAPI):
263
263
  },
264
264
  },
265
265
  },
266
+ 'fetchTrades': {
267
+ 'method': 'historyGetMarketSymbolExecutions', # historyGetMarketSymbolExecutions, publicGetHistory
268
+ },
266
269
  },
267
270
  'timeframes': {
268
271
  '1m': '1m',
@@ -685,6 +688,7 @@ class krakenfutures(Exchange, ImplicitAPI):
685
688
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
686
689
  """
687
690
  :see: https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-trade-history
691
+ :see: https://docs.futures.kraken.com/#http-api-history-market-history-get-public-execution-events
688
692
  Fetch a history of filled trades that self account has made
689
693
  :param str symbol: Unified CCXT market symbol
690
694
  :param int [since]: Timestamp in ms of earliest trade. Not used by krakenfutures except in combination with params.until
@@ -692,6 +696,7 @@ class krakenfutures(Exchange, ImplicitAPI):
692
696
  :param dict [params]: Exchange specific params
693
697
  :param int [params.until]: Timestamp in ms of latest trade
694
698
  :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
699
+ :param str [params.method]: The method to use to fetch trades. Can be 'historyGetMarketSymbolExecutions' or 'publicGetHistory' default is 'historyGetMarketSymbolExecutions'
695
700
  :returns: An array of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
696
701
  """
697
702
  self.load_markets()
@@ -703,34 +708,105 @@ class krakenfutures(Exchange, ImplicitAPI):
703
708
  request = {
704
709
  'symbol': market['id'],
705
710
  }
706
- until = self.safe_integer(params, 'until')
707
- if until is not None:
708
- request['lastTime'] = self.iso8601(until)
709
- #
710
- # {
711
- # "result": "success",
712
- # "history": [
713
- # {
714
- # "time": "2022-03-18T04:55:37.692Z",
715
- # "trade_id": 100,
716
- # "price": 0.7921,
717
- # "size": 1068,
718
- # "side": "sell",
719
- # "type": "fill",
720
- # "uid": "6c5da0b0-f1a8-483f-921f-466eb0388265"
721
- # },
722
- # ...
723
- # ],
724
- # "serverTime": "2022-03-18T06:39:18.056Z"
725
- # }
726
- #
727
- response = self.publicGetHistory(self.extend(request, params))
728
- history = self.safe_value(response, 'history')
729
- return self.parse_trades(history, market, since, limit)
711
+ method = None
712
+ method, params = self.handle_option_and_params(params, 'fetchTrades', 'method', 'historyGetMarketSymbolExecutions')
713
+ rawTrades = None
714
+ isFullHistoryEndpoint = (method == 'historyGetMarketSymbolExecutions')
715
+ if isFullHistoryEndpoint:
716
+ request, params = self.handle_until_option('before', request, params)
717
+ if since is not None:
718
+ request['since'] = since
719
+ request['sort'] = 'asc'
720
+ if limit is not None:
721
+ request['count'] = limit
722
+ response = self.historyGetMarketSymbolExecutions(self.extend(request, params))
723
+ #
724
+ # {
725
+ # "elements": [
726
+ # {
727
+ # "uid": "a5105030-f054-44cc-98ab-30d5cae96bef",
728
+ # "timestamp": "1710150778607",
729
+ # "event": {
730
+ # "Execution": {
731
+ # "execution": {
732
+ # "uid": "2d485b71-cd28-4a1e-9364-371a127550d2",
733
+ # "makerOrder": {
734
+ # "uid": "0a25f66b-1109-49ec-93a3-d17bf9e9137e",
735
+ # "tradeable": "PF_XBTUSD",
736
+ # "direction": "Buy",
737
+ # "quantity": "0.26500",
738
+ # "timestamp": "1710150778570",
739
+ # "limitPrice": "71907",
740
+ # "orderType": "Post",
741
+ # "reduceOnly": False,
742
+ # "lastUpdateTimestamp": "1710150778570"
743
+ # },
744
+ # "takerOrder": {
745
+ # "uid": "04de3ee0-9125-4960-bf8f-f63b577b6790",
746
+ # "tradeable": "PF_XBTUSD",
747
+ # "direction": "Sell",
748
+ # "quantity": "0.0002",
749
+ # "timestamp": "1710150778607",
750
+ # "limitPrice": "71187.00",
751
+ # "orderType": "Market",
752
+ # "reduceOnly": False,
753
+ # "lastUpdateTimestamp": "1710150778607"
754
+ # },
755
+ # "timestamp": "1710150778607",
756
+ # "quantity": "0.0002",
757
+ # "price": "71907",
758
+ # "markPrice": "71903.32715463147",
759
+ # "limitFilled": False,
760
+ # "usdValue": "14.38"
761
+ # },
762
+ # "takerReducedQuantity": ""
763
+ # }
764
+ # }
765
+ # },
766
+ # ... followed by older items
767
+ # ],
768
+ # "len": "1000",
769
+ # "continuationToken": "QTexMDE0OTe33NTcyXy8xNDIzAjc1NjY5MwI="
770
+ # }
771
+ #
772
+ elements = self.safe_list(response, 'elements', [])
773
+ # we need to reverse the list to fix chronology
774
+ rawTrades = []
775
+ length = len(elements)
776
+ for i in range(0, length):
777
+ index = length - 1 - i
778
+ element = elements[index]
779
+ event = self.safe_dict(element, 'event', {})
780
+ executionContainer = self.safe_dict(event, 'Execution', {})
781
+ rawTrade = self.safe_dict(executionContainer, 'execution', {})
782
+ rawTrades.append(rawTrade)
783
+ else:
784
+ request, params = self.handle_until_option('lastTime', request, params)
785
+ response = self.publicGetHistory(self.extend(request, params))
786
+ #
787
+ # {
788
+ # "result": "success",
789
+ # "history": [
790
+ # {
791
+ # "time": "2022-03-18T04:55:37.692Z",
792
+ # "trade_id": 100,
793
+ # "price": 0.7921,
794
+ # "size": 1068,
795
+ # "side": "sell",
796
+ # "type": "fill",
797
+ # "uid": "6c5da0b0-f1a8-483f-921f-466eb0388265"
798
+ # },
799
+ # ...
800
+ # ],
801
+ # "serverTime": "2022-03-18T06:39:18.056Z"
802
+ # }
803
+ #
804
+ rawTrades = self.safe_list(response, 'history', [])
805
+ return self.parse_trades(rawTrades, market, since, limit)
730
806
 
731
807
  def parse_trade(self, trade, market: Market = None) -> Trade:
732
808
  #
733
- # fetchTrades(public)
809
+ # fetchTrades(recent trades)
734
810
  #
735
811
  # {
736
812
  # "time": "2019-02-14T09:25:33.920Z",
@@ -738,10 +814,24 @@ class krakenfutures(Exchange, ImplicitAPI):
738
814
  # "price": 3574,
739
815
  # "size": 100,
740
816
  # "side": "buy",
741
- # "type": "fill" # fill, liquidation, assignment, termination
817
+ # "type": "fill" # fill, liquidation, assignment, termination
742
818
  # "uid": "11c3d82c-9e70-4fe9-8115-f643f1b162d4"
743
819
  # }
744
820
  #
821
+ # fetchTrades(executions history)
822
+ #
823
+ # {
824
+ # "timestamp": "1710152516830",
825
+ # "price": "71927.0",
826
+ # "quantity": "0.0695",
827
+ # "markPrice": "71936.38701675525",
828
+ # "limitFilled": True,
829
+ # "usdValue": "4998.93",
830
+ # "uid": "116ae634-253f-470b-bd20-fa9d429fb8b1",
831
+ # "makerOrder": {"uid": "17bfe4de-c01e-4938-926c-617d2a2d0597", "tradeable": "PF_XBTUSD", "direction": "Buy", "quantity": "0.0695", "timestamp": "1710152515836", "limitPrice": "71927.0", "orderType": "Post", "reduceOnly": False, "lastUpdateTimestamp": "1710152515836"},
832
+ # "takerOrder": {"uid": "d3e437b4-aa70-4108-b5cf-b1eecb9845b5", "tradeable": "PF_XBTUSD", "direction": "Sell", "quantity": "0.940100", "timestamp": "1710152516830", "limitPrice": "71915", "orderType": "IoC", "reduceOnly": False, "lastUpdateTimestamp": "1710152516830"}
833
+ # }
834
+ #
745
835
  # fetchMyTrades(private)
746
836
  #
747
837
  # {
@@ -782,7 +872,7 @@ class krakenfutures(Exchange, ImplicitAPI):
782
872
  #
783
873
  timestamp = self.parse8601(self.safe_string_2(trade, 'time', 'fillTime'))
784
874
  price = self.safe_string(trade, 'price')
785
- amount = self.safe_string_2(trade, 'size', 'amount', '0.0')
875
+ amount = self.safe_string_n(trade, ['size', 'amount', 'quantity'], '0.0')
786
876
  id = self.safe_string_2(trade, 'uid', 'fill_id')
787
877
  if id is None:
788
878
  id = self.safe_string(trade, 'executionId')
@@ -821,6 +911,13 @@ class krakenfutures(Exchange, ImplicitAPI):
821
911
  takerOrMaker = 'taker'
822
912
  elif fillType.find('maker') >= 0:
823
913
  takerOrMaker = 'maker'
914
+ isHistoricalExecution = ('takerOrder' in trade)
915
+ if isHistoricalExecution:
916
+ timestamp = self.safe_integer(trade, 'timestamp')
917
+ taker = self.safe_dict(trade, 'takerOrder', {})
918
+ if taker is not None:
919
+ side = self.safe_string_lower(taker, 'direction')
920
+ takerOrMaker = 'taker'
824
921
  return self.safe_trade({
825
922
  'info': trade,
826
923
  'id': id,
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.67'
7
+ __version__ = '4.2.68'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.67
3
+ Version: 4.2.68
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
@@ -259,13 +259,13 @@ console.log(version, Object.keys(exchanges));
259
259
 
260
260
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
261
261
 
262
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.67/dist/ccxt.browser.js
263
- * unpkg: https://unpkg.com/ccxt@4.2.67/dist/ccxt.browser.js
262
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.68/dist/ccxt.browser.js
263
+ * unpkg: https://unpkg.com/ccxt@4.2.68/dist/ccxt.browser.js
264
264
 
265
265
  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.
266
266
 
267
267
  ```HTML
268
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.67/dist/ccxt.browser.js"></script>
268
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.68/dist/ccxt.browser.js"></script>
269
269
  ```
270
270
 
271
271
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=-CJZTpSFuDe2m4M8ZIpmNhuresk8Zak3fDYzO2NPavg,15444
1
+ ccxt/__init__.py,sha256=CawUjzL4-ousENhUpIvPjP5EGA2Cx_yAGVG2v4qqgGg,15444
2
2
  ccxt/ace.py,sha256=pIA1Ipres_-IcaIF1hiSewvx3gLNH_19ZPykd4OO5zc,41406
3
3
  ccxt/alpaca.py,sha256=EN4OdS7Z3hU5FUgrtd-PP3E1b3jplP-cGViamkAWUaM,46889
4
4
  ccxt/ascendex.py,sha256=uJvx7lkPbZmHDOcFw11vKqKWUkn9pbRz2OkfpvUMHKs,144175
@@ -64,12 +64,12 @@ ccxt/hollaex.py,sha256=7QViVaPjHuxAVqUkwKPZHJDrMQFHNHILrU4CK_fy5KE,75827
64
64
  ccxt/htx.py,sha256=rlayFd5u3yi7AWLPNomsTAfnfRn0nTupQhNJVWH3JCI,417465
65
65
  ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
66
66
  ccxt/huobijp.py,sha256=siZ9iHjR-TNFLiiVqBGN2dZ3jQvAZzQPr48WbaqdqiM,87878
67
- ccxt/hyperliquid.py,sha256=nFPLL6xRss1XMxYt904uBhc4eQrNXfXoUelcaWGCvPs,80227
67
+ ccxt/hyperliquid.py,sha256=GIBKEj8L2JftXCZbE44baztdT6lTXnZV7bgvZ-bULoo,80312
68
68
  ccxt/idex.py,sha256=iLgcPQW4BZrun0ccINYSq6xUacsJ24Kt6sX9BiCkAZ4,72703
69
69
  ccxt/independentreserve.py,sha256=awlESBQdUPDpgnKWpHAo2pxC-wcNiBLI8f3Wn9V7OdI,31979
70
70
  ccxt/indodax.py,sha256=2X0AboPTwvdxFWT9BwhkY90K1U1aaPA8L6UiHnO-AIY,51762
71
71
  ccxt/kraken.py,sha256=JSoRerunwUGX7wdr-mHQigNkxNlZK0au-brEb3NmX5c,121866
72
- ccxt/krakenfutures.py,sha256=WUadlpVv4Ddbsu5XN8rhPQmHnS0P_Nk3jAdnZU5G8z0,109967
72
+ ccxt/krakenfutures.py,sha256=QabY6HWZ6W7qXvS-o21h4vbvfu2q-32tOX3CB82e-rg,115791
73
73
  ccxt/kucoin.py,sha256=_oUrmBWaRkqbSxz94lFlsEJD_CjXwNCLnfUBJajMYvM,200934
74
74
  ccxt/kucoinfutures.py,sha256=zZGAb5fLZeBeOGGx5dDxGvXWROgV1P8JLZvqKdT7m48,110519
75
75
  ccxt/kuna.py,sha256=VKSqCZfv4gtz2vBGI3hElarbzACaGwywkpwnOhA5jLI,95951
@@ -203,7 +203,7 @@ ccxt/abstract/woo.py,sha256=E-QXVJKVI4EOW72NX6wv99px9EyitWtd9KWvXUc9Tyo,10216
203
203
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
204
204
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
205
205
  ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
206
- ccxt/async_support/__init__.py,sha256=-CcNCtm3CSno38kKmCUgi9O3llK-7Nix05i1UJdg1yA,15177
206
+ ccxt/async_support/__init__.py,sha256=jATVXN85hoqBSdAZ7hzY_LerkMSnlpgPx006WUCOX78,15177
207
207
  ccxt/async_support/ace.py,sha256=LjNrCLc5OA9CTZ-SCNkBBeSUa144U1ayh6lSw_6GVgI,41630
208
208
  ccxt/async_support/alpaca.py,sha256=tGinjTamFx1lvVoHyB3crGlKF97gUPOtG9Dy8kPMqhQ,47101
209
209
  ccxt/async_support/ascendex.py,sha256=KKPnXkJPf3fC8JvOEwtsW1On8jNHAJ59_n072dvxAO8,144915
@@ -269,12 +269,12 @@ ccxt/async_support/hollaex.py,sha256=g4lC-7l8jfWfQmx6Z7POc7iewBSLCh_Atj5DW2pyAm0
269
269
  ccxt/async_support/htx.py,sha256=vAQacwFaBJOms5PeImOq9O75_DdhyhFARCsC9YfPArI,419803
270
270
  ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
271
271
  ccxt/async_support/huobijp.py,sha256=y7CVKCg3tr7Gw-6ubDz0-OJpm2EogjPWxbJ2ziV5QTk,88378
272
- ccxt/async_support/hyperliquid.py,sha256=MgIsumQ6GImw8EXAvMR78dpr9zfRRWJPoX4moZ54MDA,80649
272
+ ccxt/async_support/hyperliquid.py,sha256=kOBvb3aMWO0ccPqYPBjIGJgagGo6DxudhbejM10HVKg,80734
273
273
  ccxt/async_support/idex.py,sha256=5QR6eiE5NiJNyBPxFL46OnoA4y15-bxHUYVMtPwOr5k,73179
274
274
  ccxt/async_support/independentreserve.py,sha256=QPlcKtYXK9SBakjN1A3OHJRAUauijfUM9f535IP7bc4,32239
275
275
  ccxt/async_support/indodax.py,sha256=CKPRtmG8p69Do6TdxWCpccUWIlTr_edUe2DKakVj2Hs,52070
276
276
  ccxt/async_support/kraken.py,sha256=5tAmqHvfixjGKD7hLkVTCF-P4RWHK3lWa4g6zpsIPnY,122450
277
- ccxt/async_support/krakenfutures.py,sha256=I9_gLxyDLRvmcdM3N_UOahxZAqvU8nwWbp-COjTZEh4,110431
277
+ ccxt/async_support/krakenfutures.py,sha256=TDKy2QyNUN64y8cblOPiC8ohLFAwKyohPvdt9trEHCA,116261
278
278
  ccxt/async_support/kucoin.py,sha256=T-fG7EriBHqRHfmOoImPEA2TGAfRH_PyHXfNi871RzU,201952
279
279
  ccxt/async_support/kucoinfutures.py,sha256=93boneXD3FcCsGZG_xpiefQrLiGoXOOc3i0ikjHnJyU,111079
280
280
  ccxt/async_support/kuna.py,sha256=Mlwx_DBFlu7LWuy7m875052ih7z4loCgIZfK5k81hnQ,96367
@@ -307,7 +307,7 @@ ccxt/async_support/yobit.py,sha256=JKwcd4_sPc7sFWTI5eICzbHcVMOxUrghlFTPmfWYgUQ,5
307
307
  ccxt/async_support/zaif.py,sha256=A4lhLoQNHt8EWeCH067sQrSiziNZ9nJU_-ZyVE59Xgo,28116
308
308
  ccxt/async_support/zonda.py,sha256=GqTR3gmRA9dcC2dCpSUVK-k19b_DiNGpIRfmmvfchiM,80763
309
309
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
310
- ccxt/async_support/base/exchange.py,sha256=LUAynXwX_rlYUjXwWNJQKFrxFZpthRRV8tgfLEMjG8M,90820
310
+ ccxt/async_support/base/exchange.py,sha256=7ebrsRehEmBevgaD0skYyHjTQns2TEuEvzTTnKQ1G4o,90820
311
311
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
312
312
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
313
313
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=Ed1765emEde2Hj8Ys6f5EjS54ZI1wQ0qIhd04eB7yhU,5751
@@ -321,10 +321,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=Pxrq22nCODckJ6G1OXkYEmUunIu
321
321
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
322
322
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
323
323
  ccxt/base/errors.py,sha256=JBn3zTrtru7tLgyEi6MzKAUwiZe0fltQLYoJcsdP-AA,4099
324
- ccxt/base/exchange.py,sha256=TZrm1JB_TsQomzP7U4UgDlIHqMOGfMT9hOW_3LqHi3k,246593
324
+ ccxt/base/exchange.py,sha256=QjsPXTLTLC42wWRAj6CwHw4ekQ8gkc7G5QzVUP5soH0,246873
325
325
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
326
326
  ccxt/base/types.py,sha256=Bc5lH1L29xvaQDl4uSx7_3w_gZTyhcUrBh-SSyKXzRI,6126
327
- ccxt/pro/__init__.py,sha256=8x06foTWZ9pdpOvB3HmfCUxnClLmlm6zQUodxDnzfqM,6675
327
+ ccxt/pro/__init__.py,sha256=lguDe-qhw2wcjN-g-URNYhlplGwyGcjzUx36-P00l-U,6675
328
328
  ccxt/pro/alpaca.py,sha256=ABL5GvXMmcSC7LaYRtUqS3tgsLpCBf1IChgC5f2aA2E,27161
329
329
  ccxt/pro/ascendex.py,sha256=Tjpk9KPF4YPKsdgq-Cabs3nx1Zkrnd7srdjqHYeghLs,35413
330
330
  ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
@@ -520,7 +520,7 @@ ccxt/test/base/test_ticker.py,sha256=cmYHv5ZtbAq27y4LGDcGzaro-qkSNJWme5rLHOEdA4U
520
520
  ccxt/test/base/test_trade.py,sha256=lhT9nxiSr0AEvKbdGXL9qJOkz1EiKEmA0TDfdCbubg8,2295
521
521
  ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
522
522
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
523
- ccxt-4.2.67.dist-info/METADATA,sha256=XOFq7t0V0xnP9m-SWFJAZnhuYP-TEcqkWqjQVcf-eio,107754
524
- ccxt-4.2.67.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
525
- ccxt-4.2.67.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
526
- ccxt-4.2.67.dist-info/RECORD,,
523
+ ccxt-4.2.68.dist-info/METADATA,sha256=Fz6qDl2hcKi8rjvmG4I_rzWUF5PPKyKOQNz8U4KStLg,107754
524
+ ccxt-4.2.68.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
525
+ ccxt-4.2.68.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
526
+ ccxt-4.2.68.dist-info/RECORD,,
File without changes