ccxt 4.2.91__py2.py3-none-any.whl → 4.2.92__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.91'
25
+ __version__ = '4.2.92'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/bybit.py CHANGED
@@ -173,6 +173,7 @@ class ImplicitAPI:
173
173
  private_get_v5_broker_earning_record = privateGetV5BrokerEarningRecord = Entry('v5/broker/earning-record', 'private', 'GET', {'cost': 5})
174
174
  private_get_v5_broker_earnings_info = privateGetV5BrokerEarningsInfo = Entry('v5/broker/earnings-info', 'private', 'GET', {'cost': 5})
175
175
  private_get_v5_broker_account_info = privateGetV5BrokerAccountInfo = Entry('v5/broker/account-info', 'private', 'GET', {'cost': 5})
176
+ private_get_v5_broker_asset_query_sub_member_deposit_record = privateGetV5BrokerAssetQuerySubMemberDepositRecord = Entry('v5/broker/asset/query-sub-member-deposit-record', 'private', 'GET', {'cost': 10})
176
177
  private_post_option_usdc_openapi_private_v1_place_order = privatePostOptionUsdcOpenapiPrivateV1PlaceOrder = Entry('option/usdc/openapi/private/v1/place-order', 'private', 'POST', {'cost': 2.5})
177
178
  private_post_option_usdc_openapi_private_v1_replace_order = privatePostOptionUsdcOpenapiPrivateV1ReplaceOrder = Entry('option/usdc/openapi/private/v1/replace-order', 'private', 'POST', {'cost': 2.5})
178
179
  private_post_option_usdc_openapi_private_v1_cancel_order = privatePostOptionUsdcOpenapiPrivateV1CancelOrder = Entry('option/usdc/openapi/private/v1/cancel-order', 'private', 'POST', {'cost': 2.5})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.91'
7
+ __version__ = '4.2.92'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.2.91'
5
+ __version__ = '4.2.92'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -385,6 +385,7 @@ class bybit(Exchange, ImplicitAPI):
385
385
  'v5/broker/earning-record': 5,
386
386
  'v5/broker/earnings-info': 5,
387
387
  'v5/broker/account-info': 5,
388
+ 'v5/broker/asset/query-sub-member-deposit-record': 10,
388
389
  },
389
390
  'post': {
390
391
  # Legacy option USDC
@@ -692,117 +692,127 @@ class deribit(Exchange, ImplicitAPI):
692
692
  """
693
693
  retrieves data on all markets for deribit
694
694
  :see: https://docs.deribit.com/#public-get_currencies
695
+ :see: https://docs.deribit.com/#public-get_instruments
695
696
  :param dict [params]: extra parameters specific to the exchange API endpoint
696
697
  :returns dict[]: an array of objects representing market data
697
698
  """
698
- currenciesResponse = await self.publicGetGetCurrencies(params)
699
- #
700
- # {
701
- # "jsonrpc": "2.0",
702
- # "result": [
703
- # {
704
- # "withdrawal_priorities": [
705
- # {value: 0.15, name: "very_low"},
706
- # {value: 1.5, name: "very_high"},
707
- # ],
708
- # "withdrawal_fee": 0.0005,
709
- # "min_withdrawal_fee": 0.0005,
710
- # "min_confirmations": 1,
711
- # "fee_precision": 4,
712
- # "currency_long": "Bitcoin",
713
- # "currency": "BTC",
714
- # "coin_type": "BITCOIN"
715
- # }
716
- # ],
717
- # "usIn": 1583761588590479,
718
- # "usOut": 1583761588590544,
719
- # "usDiff": 65,
720
- # "testnet": False
721
- # }
722
- #
723
- parsedMarkets = {}
724
- currenciesResult = self.safe_value(currenciesResponse, 'result', [])
699
+ instrumentsResponses = []
725
700
  result = []
726
- for i in range(0, len(currenciesResult)):
727
- currencyId = self.safe_string(currenciesResult[i], 'currency')
728
- request = {
729
- 'currency': currencyId,
730
- }
731
- instrumentsResponse = await self.publicGetGetInstruments(self.extend(request, params))
701
+ parsedMarkets = {}
702
+ fetchAllMarkets = None
703
+ fetchAllMarkets, params = self.handle_option_and_params(params, 'fetchMarkets', 'fetchAllMarkets', True)
704
+ if fetchAllMarkets:
705
+ instrumentsResponse = await self.publicGetGetInstruments(params)
706
+ instrumentsResponses.append(instrumentsResponse)
707
+ else:
708
+ currenciesResponse = await self.publicGetGetCurrencies(params)
732
709
  #
733
710
  # {
734
- # "jsonrpc":"2.0",
735
- # "result":[
736
- # {
737
- # "tick_size":0.0005,
738
- # "taker_commission":0.0003,
739
- # "strike":52000.0,
740
- # "settlement_period":"month",
741
- # "settlement_currency":"BTC",
742
- # "quote_currency":"BTC",
743
- # "option_type":"put", # put, call
744
- # "min_trade_amount":0.1,
745
- # "maker_commission":0.0003,
746
- # "kind":"option",
747
- # "is_active":true,
748
- # "instrument_name":"BTC-24JUN22-52000-P",
749
- # "expiration_timestamp":1656057600000,
750
- # "creation_timestamp":1648199543000,
751
- # "counter_currency":"USD",
752
- # "contract_size":1.0,
753
- # "block_trade_commission":0.0003,
754
- # "base_currency":"BTC"
755
- # },
711
+ # "jsonrpc": "2.0",
712
+ # "result": [
756
713
  # {
757
- # "tick_size":0.5,
758
- # "taker_commission":0.0005,
759
- # "settlement_period":"month", # month, week
760
- # "settlement_currency":"BTC",
761
- # "quote_currency":"USD",
762
- # "min_trade_amount":10.0,
763
- # "max_liquidation_commission":0.0075,
764
- # "max_leverage":50,
765
- # "maker_commission":0.0,
766
- # "kind":"future",
767
- # "is_active":true,
768
- # "instrument_name":"BTC-27MAY22",
769
- # "future_type":"reversed",
770
- # "expiration_timestamp":1653638400000,
771
- # "creation_timestamp":1648195209000,
772
- # "counter_currency":"USD",
773
- # "contract_size":10.0,
774
- # "block_trade_commission":0.0001,
775
- # "base_currency":"BTC"
776
- # },
777
- # {
778
- # "tick_size":0.5,
779
- # "taker_commission":0.0005,
780
- # "settlement_period":"perpetual",
781
- # "settlement_currency":"BTC",
782
- # "quote_currency":"USD",
783
- # "min_trade_amount":10.0,
784
- # "max_liquidation_commission":0.0075,
785
- # "max_leverage":50,
786
- # "maker_commission":0.0,
787
- # "kind":"future",
788
- # "is_active":true,
789
- # "instrument_name":"BTC-PERPETUAL",
790
- # "future_type":"reversed",
791
- # "expiration_timestamp":32503708800000,
792
- # "creation_timestamp":1534242287000,
793
- # "counter_currency":"USD",
794
- # "contract_size":10.0,
795
- # "block_trade_commission":0.0001,
796
- # "base_currency":"BTC"
797
- # },
714
+ # "withdrawal_priorities": [
715
+ # {value: 0.15, name: "very_low"},
716
+ # {value: 1.5, name: "very_high"},
717
+ # ],
718
+ # "withdrawal_fee": 0.0005,
719
+ # "min_withdrawal_fee": 0.0005,
720
+ # "min_confirmations": 1,
721
+ # "fee_precision": 4,
722
+ # "currency_long": "Bitcoin",
723
+ # "currency": "BTC",
724
+ # "coin_type": "BITCOIN"
725
+ # }
798
726
  # ],
799
- # "usIn":1648691472831791,
800
- # "usOut":1648691472831896,
801
- # "usDiff":105,
802
- # "testnet":false
727
+ # "usIn": 1583761588590479,
728
+ # "usOut": 1583761588590544,
729
+ # "usDiff": 65,
730
+ # "testnet": False
803
731
  # }
804
732
  #
805
- instrumentsResult = self.safe_value(instrumentsResponse, 'result', [])
733
+ currenciesResult = self.safe_value(currenciesResponse, 'result', [])
734
+ for i in range(0, len(currenciesResult)):
735
+ currencyId = self.safe_string(currenciesResult[i], 'currency')
736
+ request = {
737
+ 'currency': currencyId,
738
+ }
739
+ instrumentsResponse = await self.publicGetGetInstruments(self.extend(request, params))
740
+ #
741
+ # {
742
+ # "jsonrpc":"2.0",
743
+ # "result":[
744
+ # {
745
+ # "tick_size":0.0005,
746
+ # "taker_commission":0.0003,
747
+ # "strike":52000.0,
748
+ # "settlement_period":"month",
749
+ # "settlement_currency":"BTC",
750
+ # "quote_currency":"BTC",
751
+ # "option_type":"put", # put, call
752
+ # "min_trade_amount":0.1,
753
+ # "maker_commission":0.0003,
754
+ # "kind":"option",
755
+ # "is_active":true,
756
+ # "instrument_name":"BTC-24JUN22-52000-P",
757
+ # "expiration_timestamp":1656057600000,
758
+ # "creation_timestamp":1648199543000,
759
+ # "counter_currency":"USD",
760
+ # "contract_size":1.0,
761
+ # "block_trade_commission":0.0003,
762
+ # "base_currency":"BTC"
763
+ # },
764
+ # {
765
+ # "tick_size":0.5,
766
+ # "taker_commission":0.0005,
767
+ # "settlement_period":"month", # month, week
768
+ # "settlement_currency":"BTC",
769
+ # "quote_currency":"USD",
770
+ # "min_trade_amount":10.0,
771
+ # "max_liquidation_commission":0.0075,
772
+ # "max_leverage":50,
773
+ # "maker_commission":0.0,
774
+ # "kind":"future",
775
+ # "is_active":true,
776
+ # "instrument_name":"BTC-27MAY22",
777
+ # "future_type":"reversed",
778
+ # "expiration_timestamp":1653638400000,
779
+ # "creation_timestamp":1648195209000,
780
+ # "counter_currency":"USD",
781
+ # "contract_size":10.0,
782
+ # "block_trade_commission":0.0001,
783
+ # "base_currency":"BTC"
784
+ # },
785
+ # {
786
+ # "tick_size":0.5,
787
+ # "taker_commission":0.0005,
788
+ # "settlement_period":"perpetual",
789
+ # "settlement_currency":"BTC",
790
+ # "quote_currency":"USD",
791
+ # "min_trade_amount":10.0,
792
+ # "max_liquidation_commission":0.0075,
793
+ # "max_leverage":50,
794
+ # "maker_commission":0.0,
795
+ # "kind":"future",
796
+ # "is_active":true,
797
+ # "instrument_name":"BTC-PERPETUAL",
798
+ # "future_type":"reversed",
799
+ # "expiration_timestamp":32503708800000,
800
+ # "creation_timestamp":1534242287000,
801
+ # "counter_currency":"USD",
802
+ # "contract_size":10.0,
803
+ # "block_trade_commission":0.0001,
804
+ # "base_currency":"BTC"
805
+ # },
806
+ # ],
807
+ # "usIn":1648691472831791,
808
+ # "usOut":1648691472831896,
809
+ # "usDiff":105,
810
+ # "testnet":false
811
+ # }
812
+ #
813
+ instrumentsResponses.append(instrumentsResponse)
814
+ for i in range(0, len(instrumentsResponses)):
815
+ instrumentsResult = self.safe_value(instrumentsResponses[i], 'result', [])
806
816
  for k in range(0, len(instrumentsResult)):
807
817
  market = instrumentsResult[k]
808
818
  kind = self.safe_string(market, 'kind')
@@ -2529,15 +2529,15 @@ class kraken(Exchange, ImplicitAPI):
2529
2529
  """
2530
2530
  fetch all open positions
2531
2531
  :see: https://docs.kraken.com/rest/#tag/Account-Data/operation/getOpenPositions
2532
- :param str[]|None symbols: not used by kraken fetchPositions()
2532
+ :param str[] [symbols]: not used by kraken fetchPositions()
2533
2533
  :param dict [params]: extra parameters specific to the exchange API endpoint
2534
2534
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
2535
2535
  """
2536
2536
  await self.load_markets()
2537
2537
  request = {
2538
2538
  # 'txid': 'comma delimited list of transaction ids to restrict output to',
2539
- # 'docalcs': False, # whether or not to include profit/loss calculations
2540
- # 'consolidation': 'market', # what to consolidate the positions data around, market will consolidate positions based on market pair
2539
+ 'docalcs': 'true', # whether or not to include profit/loss calculations
2540
+ 'consolidation': 'market', # what to consolidate the positions data around, market will consolidate positions based on market pair
2541
2541
  }
2542
2542
  response = await self.privatePostOpenPositions(self.extend(request, params))
2543
2543
  #
@@ -2585,9 +2585,58 @@ class kraken(Exchange, ImplicitAPI):
2585
2585
  # ]
2586
2586
  # }
2587
2587
  #
2588
- result = self.safe_value(response, 'result')
2589
- # todo unify parsePosition/parsePositions
2590
- return result
2588
+ symbols = self.market_symbols(symbols)
2589
+ result = self.safe_list(response, 'result')
2590
+ results = self.parse_positions(result, symbols)
2591
+ return self.filter_by_array_positions(results, 'symbol', symbols, False)
2592
+
2593
+ def parse_position(self, position, market: Market = None):
2594
+ #
2595
+ # {
2596
+ # "pair": "ETHUSDT",
2597
+ # "positions": "1",
2598
+ # "type": "buy",
2599
+ # "leverage": "2.00000",
2600
+ # "cost": "28.49800",
2601
+ # "fee": "0.07979",
2602
+ # "vol": "0.02000000",
2603
+ # "vol_closed": "0.00000000",
2604
+ # "margin": "14.24900"
2605
+ # }
2606
+ #
2607
+ marketId = self.safe_string(position, 'pair')
2608
+ rawSide = self.safe_string(position, 'type')
2609
+ side = 'long' if (rawSide == 'buy') else 'short'
2610
+ return self.safe_position({
2611
+ 'info': position,
2612
+ 'id': None,
2613
+ 'symbol': self.safe_symbol(marketId, market),
2614
+ 'notional': None,
2615
+ 'marginMode': None,
2616
+ 'liquidationPrice': None,
2617
+ 'entryPrice': None,
2618
+ 'unrealizedPnl': self.safe_number(position, 'net'),
2619
+ 'realizedPnl': None,
2620
+ 'percentage': None,
2621
+ 'contracts': self.safe_number(position, 'vol'),
2622
+ 'contractSize': None,
2623
+ 'markPrice': None,
2624
+ 'lastPrice': None,
2625
+ 'side': side,
2626
+ 'hedged': None,
2627
+ 'timestamp': None,
2628
+ 'datetime': None,
2629
+ 'lastUpdateTimestamp': None,
2630
+ 'maintenanceMargin': None,
2631
+ 'maintenanceMarginPercentage': None,
2632
+ 'collateral': None,
2633
+ 'initialMargin': self.safe_number(position, 'margin'),
2634
+ 'initialMarginPercentage': None,
2635
+ 'leverage': self.safe_number(position, 'leverage'),
2636
+ 'marginRatio': None,
2637
+ 'stopLossPrice': None,
2638
+ 'takeProfitPrice': None,
2639
+ })
2591
2640
 
2592
2641
  def parse_account_type(self, account):
2593
2642
  accountByType = {
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.91'
7
+ __version__ = '4.2.92'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -5452,7 +5452,7 @@ class Exchange(object):
5452
5452
  return reconstructedDate
5453
5453
 
5454
5454
  def convert_market_id_expire_date(self, date: str):
5455
- # parse 19JAN24 to 240119
5455
+ # parse 03JAN24 to 240103
5456
5456
  monthMappping = {
5457
5457
  'JAN': '01',
5458
5458
  'FEB': '02',
@@ -5467,6 +5467,9 @@ class Exchange(object):
5467
5467
  'NOV': '11',
5468
5468
  'DEC': '12',
5469
5469
  }
5470
+ # if exchange omits first zero and provides i.e. '3JAN24' instead of '03JAN24'
5471
+ if len(date) == 6:
5472
+ date = '0' + date
5470
5473
  year = date[0:2]
5471
5474
  monthName = date[2:5]
5472
5475
  month = self.safe_string(monthMappping, monthName)
ccxt/bybit.py CHANGED
@@ -384,6 +384,7 @@ class bybit(Exchange, ImplicitAPI):
384
384
  'v5/broker/earning-record': 5,
385
385
  'v5/broker/earnings-info': 5,
386
386
  'v5/broker/account-info': 5,
387
+ 'v5/broker/asset/query-sub-member-deposit-record': 10,
387
388
  },
388
389
  'post': {
389
390
  # Legacy option USDC
ccxt/deribit.py CHANGED
@@ -692,117 +692,127 @@ class deribit(Exchange, ImplicitAPI):
692
692
  """
693
693
  retrieves data on all markets for deribit
694
694
  :see: https://docs.deribit.com/#public-get_currencies
695
+ :see: https://docs.deribit.com/#public-get_instruments
695
696
  :param dict [params]: extra parameters specific to the exchange API endpoint
696
697
  :returns dict[]: an array of objects representing market data
697
698
  """
698
- currenciesResponse = self.publicGetGetCurrencies(params)
699
- #
700
- # {
701
- # "jsonrpc": "2.0",
702
- # "result": [
703
- # {
704
- # "withdrawal_priorities": [
705
- # {value: 0.15, name: "very_low"},
706
- # {value: 1.5, name: "very_high"},
707
- # ],
708
- # "withdrawal_fee": 0.0005,
709
- # "min_withdrawal_fee": 0.0005,
710
- # "min_confirmations": 1,
711
- # "fee_precision": 4,
712
- # "currency_long": "Bitcoin",
713
- # "currency": "BTC",
714
- # "coin_type": "BITCOIN"
715
- # }
716
- # ],
717
- # "usIn": 1583761588590479,
718
- # "usOut": 1583761588590544,
719
- # "usDiff": 65,
720
- # "testnet": False
721
- # }
722
- #
723
- parsedMarkets = {}
724
- currenciesResult = self.safe_value(currenciesResponse, 'result', [])
699
+ instrumentsResponses = []
725
700
  result = []
726
- for i in range(0, len(currenciesResult)):
727
- currencyId = self.safe_string(currenciesResult[i], 'currency')
728
- request = {
729
- 'currency': currencyId,
730
- }
731
- instrumentsResponse = self.publicGetGetInstruments(self.extend(request, params))
701
+ parsedMarkets = {}
702
+ fetchAllMarkets = None
703
+ fetchAllMarkets, params = self.handle_option_and_params(params, 'fetchMarkets', 'fetchAllMarkets', True)
704
+ if fetchAllMarkets:
705
+ instrumentsResponse = self.publicGetGetInstruments(params)
706
+ instrumentsResponses.append(instrumentsResponse)
707
+ else:
708
+ currenciesResponse = self.publicGetGetCurrencies(params)
732
709
  #
733
710
  # {
734
- # "jsonrpc":"2.0",
735
- # "result":[
736
- # {
737
- # "tick_size":0.0005,
738
- # "taker_commission":0.0003,
739
- # "strike":52000.0,
740
- # "settlement_period":"month",
741
- # "settlement_currency":"BTC",
742
- # "quote_currency":"BTC",
743
- # "option_type":"put", # put, call
744
- # "min_trade_amount":0.1,
745
- # "maker_commission":0.0003,
746
- # "kind":"option",
747
- # "is_active":true,
748
- # "instrument_name":"BTC-24JUN22-52000-P",
749
- # "expiration_timestamp":1656057600000,
750
- # "creation_timestamp":1648199543000,
751
- # "counter_currency":"USD",
752
- # "contract_size":1.0,
753
- # "block_trade_commission":0.0003,
754
- # "base_currency":"BTC"
755
- # },
711
+ # "jsonrpc": "2.0",
712
+ # "result": [
756
713
  # {
757
- # "tick_size":0.5,
758
- # "taker_commission":0.0005,
759
- # "settlement_period":"month", # month, week
760
- # "settlement_currency":"BTC",
761
- # "quote_currency":"USD",
762
- # "min_trade_amount":10.0,
763
- # "max_liquidation_commission":0.0075,
764
- # "max_leverage":50,
765
- # "maker_commission":0.0,
766
- # "kind":"future",
767
- # "is_active":true,
768
- # "instrument_name":"BTC-27MAY22",
769
- # "future_type":"reversed",
770
- # "expiration_timestamp":1653638400000,
771
- # "creation_timestamp":1648195209000,
772
- # "counter_currency":"USD",
773
- # "contract_size":10.0,
774
- # "block_trade_commission":0.0001,
775
- # "base_currency":"BTC"
776
- # },
777
- # {
778
- # "tick_size":0.5,
779
- # "taker_commission":0.0005,
780
- # "settlement_period":"perpetual",
781
- # "settlement_currency":"BTC",
782
- # "quote_currency":"USD",
783
- # "min_trade_amount":10.0,
784
- # "max_liquidation_commission":0.0075,
785
- # "max_leverage":50,
786
- # "maker_commission":0.0,
787
- # "kind":"future",
788
- # "is_active":true,
789
- # "instrument_name":"BTC-PERPETUAL",
790
- # "future_type":"reversed",
791
- # "expiration_timestamp":32503708800000,
792
- # "creation_timestamp":1534242287000,
793
- # "counter_currency":"USD",
794
- # "contract_size":10.0,
795
- # "block_trade_commission":0.0001,
796
- # "base_currency":"BTC"
797
- # },
714
+ # "withdrawal_priorities": [
715
+ # {value: 0.15, name: "very_low"},
716
+ # {value: 1.5, name: "very_high"},
717
+ # ],
718
+ # "withdrawal_fee": 0.0005,
719
+ # "min_withdrawal_fee": 0.0005,
720
+ # "min_confirmations": 1,
721
+ # "fee_precision": 4,
722
+ # "currency_long": "Bitcoin",
723
+ # "currency": "BTC",
724
+ # "coin_type": "BITCOIN"
725
+ # }
798
726
  # ],
799
- # "usIn":1648691472831791,
800
- # "usOut":1648691472831896,
801
- # "usDiff":105,
802
- # "testnet":false
727
+ # "usIn": 1583761588590479,
728
+ # "usOut": 1583761588590544,
729
+ # "usDiff": 65,
730
+ # "testnet": False
803
731
  # }
804
732
  #
805
- instrumentsResult = self.safe_value(instrumentsResponse, 'result', [])
733
+ currenciesResult = self.safe_value(currenciesResponse, 'result', [])
734
+ for i in range(0, len(currenciesResult)):
735
+ currencyId = self.safe_string(currenciesResult[i], 'currency')
736
+ request = {
737
+ 'currency': currencyId,
738
+ }
739
+ instrumentsResponse = self.publicGetGetInstruments(self.extend(request, params))
740
+ #
741
+ # {
742
+ # "jsonrpc":"2.0",
743
+ # "result":[
744
+ # {
745
+ # "tick_size":0.0005,
746
+ # "taker_commission":0.0003,
747
+ # "strike":52000.0,
748
+ # "settlement_period":"month",
749
+ # "settlement_currency":"BTC",
750
+ # "quote_currency":"BTC",
751
+ # "option_type":"put", # put, call
752
+ # "min_trade_amount":0.1,
753
+ # "maker_commission":0.0003,
754
+ # "kind":"option",
755
+ # "is_active":true,
756
+ # "instrument_name":"BTC-24JUN22-52000-P",
757
+ # "expiration_timestamp":1656057600000,
758
+ # "creation_timestamp":1648199543000,
759
+ # "counter_currency":"USD",
760
+ # "contract_size":1.0,
761
+ # "block_trade_commission":0.0003,
762
+ # "base_currency":"BTC"
763
+ # },
764
+ # {
765
+ # "tick_size":0.5,
766
+ # "taker_commission":0.0005,
767
+ # "settlement_period":"month", # month, week
768
+ # "settlement_currency":"BTC",
769
+ # "quote_currency":"USD",
770
+ # "min_trade_amount":10.0,
771
+ # "max_liquidation_commission":0.0075,
772
+ # "max_leverage":50,
773
+ # "maker_commission":0.0,
774
+ # "kind":"future",
775
+ # "is_active":true,
776
+ # "instrument_name":"BTC-27MAY22",
777
+ # "future_type":"reversed",
778
+ # "expiration_timestamp":1653638400000,
779
+ # "creation_timestamp":1648195209000,
780
+ # "counter_currency":"USD",
781
+ # "contract_size":10.0,
782
+ # "block_trade_commission":0.0001,
783
+ # "base_currency":"BTC"
784
+ # },
785
+ # {
786
+ # "tick_size":0.5,
787
+ # "taker_commission":0.0005,
788
+ # "settlement_period":"perpetual",
789
+ # "settlement_currency":"BTC",
790
+ # "quote_currency":"USD",
791
+ # "min_trade_amount":10.0,
792
+ # "max_liquidation_commission":0.0075,
793
+ # "max_leverage":50,
794
+ # "maker_commission":0.0,
795
+ # "kind":"future",
796
+ # "is_active":true,
797
+ # "instrument_name":"BTC-PERPETUAL",
798
+ # "future_type":"reversed",
799
+ # "expiration_timestamp":32503708800000,
800
+ # "creation_timestamp":1534242287000,
801
+ # "counter_currency":"USD",
802
+ # "contract_size":10.0,
803
+ # "block_trade_commission":0.0001,
804
+ # "base_currency":"BTC"
805
+ # },
806
+ # ],
807
+ # "usIn":1648691472831791,
808
+ # "usOut":1648691472831896,
809
+ # "usDiff":105,
810
+ # "testnet":false
811
+ # }
812
+ #
813
+ instrumentsResponses.append(instrumentsResponse)
814
+ for i in range(0, len(instrumentsResponses)):
815
+ instrumentsResult = self.safe_value(instrumentsResponses[i], 'result', [])
806
816
  for k in range(0, len(instrumentsResult)):
807
817
  market = instrumentsResult[k]
808
818
  kind = self.safe_string(market, 'kind')
ccxt/kraken.py CHANGED
@@ -2529,15 +2529,15 @@ class kraken(Exchange, ImplicitAPI):
2529
2529
  """
2530
2530
  fetch all open positions
2531
2531
  :see: https://docs.kraken.com/rest/#tag/Account-Data/operation/getOpenPositions
2532
- :param str[]|None symbols: not used by kraken fetchPositions()
2532
+ :param str[] [symbols]: not used by kraken fetchPositions()
2533
2533
  :param dict [params]: extra parameters specific to the exchange API endpoint
2534
2534
  :returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
2535
2535
  """
2536
2536
  self.load_markets()
2537
2537
  request = {
2538
2538
  # 'txid': 'comma delimited list of transaction ids to restrict output to',
2539
- # 'docalcs': False, # whether or not to include profit/loss calculations
2540
- # 'consolidation': 'market', # what to consolidate the positions data around, market will consolidate positions based on market pair
2539
+ 'docalcs': 'true', # whether or not to include profit/loss calculations
2540
+ 'consolidation': 'market', # what to consolidate the positions data around, market will consolidate positions based on market pair
2541
2541
  }
2542
2542
  response = self.privatePostOpenPositions(self.extend(request, params))
2543
2543
  #
@@ -2585,9 +2585,58 @@ class kraken(Exchange, ImplicitAPI):
2585
2585
  # ]
2586
2586
  # }
2587
2587
  #
2588
- result = self.safe_value(response, 'result')
2589
- # todo unify parsePosition/parsePositions
2590
- return result
2588
+ symbols = self.market_symbols(symbols)
2589
+ result = self.safe_list(response, 'result')
2590
+ results = self.parse_positions(result, symbols)
2591
+ return self.filter_by_array_positions(results, 'symbol', symbols, False)
2592
+
2593
+ def parse_position(self, position, market: Market = None):
2594
+ #
2595
+ # {
2596
+ # "pair": "ETHUSDT",
2597
+ # "positions": "1",
2598
+ # "type": "buy",
2599
+ # "leverage": "2.00000",
2600
+ # "cost": "28.49800",
2601
+ # "fee": "0.07979",
2602
+ # "vol": "0.02000000",
2603
+ # "vol_closed": "0.00000000",
2604
+ # "margin": "14.24900"
2605
+ # }
2606
+ #
2607
+ marketId = self.safe_string(position, 'pair')
2608
+ rawSide = self.safe_string(position, 'type')
2609
+ side = 'long' if (rawSide == 'buy') else 'short'
2610
+ return self.safe_position({
2611
+ 'info': position,
2612
+ 'id': None,
2613
+ 'symbol': self.safe_symbol(marketId, market),
2614
+ 'notional': None,
2615
+ 'marginMode': None,
2616
+ 'liquidationPrice': None,
2617
+ 'entryPrice': None,
2618
+ 'unrealizedPnl': self.safe_number(position, 'net'),
2619
+ 'realizedPnl': None,
2620
+ 'percentage': None,
2621
+ 'contracts': self.safe_number(position, 'vol'),
2622
+ 'contractSize': None,
2623
+ 'markPrice': None,
2624
+ 'lastPrice': None,
2625
+ 'side': side,
2626
+ 'hedged': None,
2627
+ 'timestamp': None,
2628
+ 'datetime': None,
2629
+ 'lastUpdateTimestamp': None,
2630
+ 'maintenanceMargin': None,
2631
+ 'maintenanceMarginPercentage': None,
2632
+ 'collateral': None,
2633
+ 'initialMargin': self.safe_number(position, 'margin'),
2634
+ 'initialMarginPercentage': None,
2635
+ 'leverage': self.safe_number(position, 'leverage'),
2636
+ 'marginRatio': None,
2637
+ 'stopLossPrice': None,
2638
+ 'takeProfitPrice': None,
2639
+ })
2591
2640
 
2592
2641
  def parse_account_type(self, account):
2593
2642
  accountByType = {
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.91'
7
+ __version__ = '4.2.92'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.91
3
+ Version: 4.2.92
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
@@ -261,13 +261,13 @@ console.log(version, Object.keys(exchanges));
261
261
 
262
262
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
263
263
 
264
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.91/dist/ccxt.browser.js
265
- * unpkg: https://unpkg.com/ccxt@4.2.91/dist/ccxt.browser.js
264
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.92/dist/ccxt.browser.js
265
+ * unpkg: https://unpkg.com/ccxt@4.2.92/dist/ccxt.browser.js
266
266
 
267
267
  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.
268
268
 
269
269
  ```HTML
270
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.91/dist/ccxt.browser.js"></script>
270
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.92/dist/ccxt.browser.js"></script>
271
271
  ```
272
272
 
273
273
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=neT9S1nb0M_7Bf2oM-rgaoQGQ-UJ-KrxMbcWyhGxTgQ,15656
1
+ ccxt/__init__.py,sha256=k4kyShxYzC9cj5kvl4bZFlkUDtZgtUh2r6nGWZ5V7-M,15656
2
2
  ccxt/ace.py,sha256=IsKHO7u3J8rJT9wCMdtwlmwPdtjnAwC9ZTMC0uNfs9A,41420
3
3
  ccxt/alpaca.py,sha256=6P2wAEGJQOjjoKQbzv1KvSuZvEZmOX987a1NqB7z9mk,46908
4
4
  ccxt/ascendex.py,sha256=_n4XN1S8WcCVN5pj9N6YvkFRJxEB2rycg4EP4PqlSyk,151300
@@ -35,7 +35,7 @@ ccxt/btcalpha.py,sha256=0np0RXEUcYJurfA3UWBiZXKHsvIbfjl_qVcx58sPwCY,36550
35
35
  ccxt/btcbox.py,sha256=XBgl9nPQUr0eL_El9-K4AuFODEXbesU6F0euVbvUs04,23341
36
36
  ccxt/btcmarkets.py,sha256=XOoDrXKNLvqMbNTUmTNMkQzsyy7oOh_Dw1USiJ8WjEs,51328
37
37
  ccxt/btcturk.py,sha256=p-_zpUEu0aIK5kR4PXQKnAqr9P0ajFsaszyFylUOHeE,36506
38
- ccxt/bybit.py,sha256=3Rqzeswv8dZjXCUIw5ppiPy6APGB0RhBge8fE0q9F_I,401556
38
+ ccxt/bybit.py,sha256=yU-28vJtKx5NnUh0BfrPSJ3jNT_AekZs9XgW1u2lGec,401635
39
39
  ccxt/cex.py,sha256=K8QEAUcjEN-xZgjt8D5_jhlagxbJHl9TUTQbPARhnkA,69653
40
40
  ccxt/coinbase.py,sha256=-ShTkuNwMInF48rvEAft_OUKNN4iUPf9FPvywCb-sVI,178431
41
41
  ccxt/coinbaseinternational.py,sha256=l4tuPmh0w-SB5sOfCn3MTihbeTY53o7KW8NgeP9bg4w,87123
@@ -51,7 +51,7 @@ ccxt/coinspot.py,sha256=rtHhup6v6HbDCAVrZyVJJqOooJ_zoRWU0OqkEjLYL3E,23463
51
51
  ccxt/cryptocom.py,sha256=AJRC_mgzX29rnCv50ry2JzryU20qfrh_7VOWqRXFVjI,128158
52
52
  ccxt/currencycom.py,sha256=OS_TN2x2CoWvRY2e8iu16jtsu8etlN3nzwaWK6NpeLA,86759
53
53
  ccxt/delta.py,sha256=-AshKjjisVWkxxMaQJr9IucbuA3BIZcsjA4PIu6nDA0,150437
54
- ccxt/deribit.py,sha256=bwR31vFQfAkNgaLj473yHjQd-DlRyX1S4KdJ0IpoZ_I,159181
54
+ ccxt/deribit.py,sha256=cQKRHpmyRuJnGY-3pEXb-LEOxcWoxfpTxlQ5_NBqNh0,160139
55
55
  ccxt/digifinex.py,sha256=4OKFvMON5swteCyQZ0AHsx0QMzEaje6J8aaTinD9E_4,169739
56
56
  ccxt/exmo.py,sha256=_fKoBuAA3PxFUi-Z4dZjf6rJwpavkJjmMoAlnTobw0c,114203
57
57
  ccxt/flowbtc.py,sha256=YPvm6tbsHJJUQBspFcHuVPQfVmiWzwnVvfzRqBdQX6U,1169
@@ -69,7 +69,7 @@ ccxt/hyperliquid.py,sha256=DWU4nZGKPxZmwhPMBsXWqIJAG6b_M2ly44sa2OelhSc,92412
69
69
  ccxt/idex.py,sha256=4DNXaCryJzhRi1bVg11oRC5SReloCOMS6sNSKo8F9LM,72809
70
70
  ccxt/independentreserve.py,sha256=nRprUlIbJ2ipFavUim5Ad46oYSEz8cpqFL1gg1hN-Mg,32024
71
71
  ccxt/indodax.py,sha256=xC7of6o3UWGfy3U6SNFEK_SKlkrFbLjJGut2fZyC53E,51779
72
- ccxt/kraken.py,sha256=e13dgYYhlw7g3UbDebZszxuLeAioTFijdkDj9MLXbQk,121984
72
+ ccxt/kraken.py,sha256=XQiEeTTo3TINMkLZbfOjYOdbk4kZmNvETnEzGpJTfY4,123935
73
73
  ccxt/krakenfutures.py,sha256=w3YaTs65H5mlodhRAcLsroCbzkRlb7XICkuq6bVPcWs,115673
74
74
  ccxt/kucoin.py,sha256=8b_D5-sx7FQwbw8K4BEs23d48QNLfDwnTu-STurs-Hs,214705
75
75
  ccxt/kucoinfutures.py,sha256=lvRBlOYs_sAt_xhJa_zUzy9vtNoGgl_zFgirrnjtjCM,118519
@@ -140,7 +140,7 @@ ccxt/abstract/btcalpha.py,sha256=sbF4SAkTJq01QPQw4D2GMkKrPhKfFIsG-PNtMAC9WwU,138
140
140
  ccxt/abstract/btcbox.py,sha256=PtZ2DZyXaPVPCQ5VLa9AEIZ9S0Y-mPrIu6P9BnfJ7dg,849
141
141
  ccxt/abstract/btcmarkets.py,sha256=dQ2yTZ_8T2TEeAYIuKE0ATImbOLDLGSK7HbbBd8XVJQ,3690
142
142
  ccxt/abstract/btcturk.py,sha256=duM-QrB9MvGpopOtxkfbeYlY49bgvXQLiosRVmnQYFw,1777
143
- ccxt/abstract/bybit.py,sha256=ISfBJW7hb4C0HE0pD9DNfLFi70O5l4TPZeHNhqLZ5ic,48391
143
+ ccxt/abstract/bybit.py,sha256=8jxQZelzO8ew0BOF5Mu8KpvsOMOKlnWqya9J9hOL8Ic,48599
144
144
  ccxt/abstract/cex.py,sha256=Q0NJeDuJ4Kn_mtokYqBenhXWvLIiMSVTqbgbfcLGgv4,3311
145
145
  ccxt/abstract/coinbase.py,sha256=7vqrC4Xz0tAQrIulBh8ddLBAjzrOtCTiK_celZl9jDA,14395
146
146
  ccxt/abstract/coinbaseinternational.py,sha256=wf1fF31fQ1TAVSk1X4ju6LYQc7tHI1lN5nxRnhnzsbk,4770
@@ -207,7 +207,7 @@ 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=txlQ2mxycQl7_HaijbiTgp4hSjkQPtHtIP_RwBMzNIE,15409
210
+ ccxt/async_support/__init__.py,sha256=2VhzcX6I8CcLi8NkKUmb8LowRGXN8NKbJwYJs9drjdI,15409
211
211
  ccxt/async_support/ace.py,sha256=IYTj0FJAAPvSrpgIpbzO6ftADPgLnQT1uk54MSSM7UA,41644
212
212
  ccxt/async_support/alpaca.py,sha256=Nsaff9RczBhiNF19RlqI6wggvEibV_2ICgB8H5Qiuck,47120
213
213
  ccxt/async_support/ascendex.py,sha256=vugf7rxYZka-ffxVycDnlXpqj5D9cdFVjkO4prlR204,152088
@@ -244,7 +244,7 @@ ccxt/async_support/btcalpha.py,sha256=dFDJZPeo7AkEu80ULoklUcgvhxR6GAaTq-VlMtN7d6
244
244
  ccxt/async_support/btcbox.py,sha256=pT_fg3eVRk4Qi2ymTyxozHBz4FZs0KcCrU3fmZ2L_r4,23535
245
245
  ccxt/async_support/btcmarkets.py,sha256=b6izd3cD8P3swetbESyX1N0qD3K0sZI7PX4qMjWmcTc,51678
246
246
  ccxt/async_support/btcturk.py,sha256=nz0nAY_whtiOupBWqdKjrYvpe6Ynu82b_SsB8kd5DC0,36724
247
- ccxt/async_support/bybit.py,sha256=5q38JImXo8Gffe4zbgFiHTDGQHJXiAcIloeoLOtUvtE,403300
247
+ ccxt/async_support/bybit.py,sha256=XvqnJqOnx-cq49_pPvvQULZprOnQd-X0qAZHswCSRG4,403379
248
248
  ccxt/async_support/cex.py,sha256=qVNevV8yMafQTMuvbeGtSeQLtQ069sux62h960pHDWA,70003
249
249
  ccxt/async_support/coinbase.py,sha256=0dGlfvNdkeeXXtjCogfg2Ml2sDT0oVfdP0MnzWrV61I,179388
250
250
  ccxt/async_support/coinbaseinternational.py,sha256=btvxx0HVXNZ4J2SyrRUetMxq0qEB2QrUKsxRAenwyJ8,87677
@@ -260,7 +260,7 @@ ccxt/async_support/coinspot.py,sha256=DqWK2WouFRRfchKlNFOAIhDcVK3pFfI-kHyg1BgH8P
260
260
  ccxt/async_support/cryptocom.py,sha256=Qr3xl9feyoy-Aw6ZtoAyXGhFM239r6DAIXJhiecMjCM,128712
261
261
  ccxt/async_support/currencycom.py,sha256=Kakjmk6UWO5J4f7XRvuHe1VLIBnceg6p6RPN7rWkiGs,87181
262
262
  ccxt/async_support/delta.py,sha256=RYBwnFLT0JJTtWkgi2Z6iFoeCw94JudLPGPM0gddzug,151045
263
- ccxt/async_support/deribit.py,sha256=Z5iNBTbp5VYmGDIP5mSBm86CyM4qBqKbZjVqSaFEA_E,159951
263
+ ccxt/async_support/deribit.py,sha256=6mACtC8xsebDGw4Y9ikgHCmPNSazeTjqqsplj0GcAtw,160915
264
264
  ccxt/async_support/digifinex.py,sha256=BShByMLbMXHBHwd3i2chCMIeGQgYqXRRj85oJMBFBPg,170709
265
265
  ccxt/async_support/exmo.py,sha256=tUaaWQHe6nb75UCckwdsODn2wQAb-XtFVbGyqRsRiHc,114835
266
266
  ccxt/async_support/flowbtc.py,sha256=bCnvtcNnPxxaxqVjI1GGXKhIpz_1r4GIFWqqPokvCR0,1183
@@ -278,7 +278,7 @@ ccxt/async_support/hyperliquid.py,sha256=XVu7E1x3MgU6LM5WUWXCQs0i1eJD7PdBJi_7hDv
278
278
  ccxt/async_support/idex.py,sha256=hEbHV8Zh_K0p_5PcZdAMxgB0tMt5J3aud7WRlCbIqPw,73285
279
279
  ccxt/async_support/independentreserve.py,sha256=02gCggRgFSmIdJyG5vO-R2JXNbB3u6U1TH2cfdckhdU,32284
280
280
  ccxt/async_support/indodax.py,sha256=A2-LUvN4BgGOu_IOnsCLjyBTQBXnxCNPJWLcuy2oyPQ,52087
281
- ccxt/async_support/kraken.py,sha256=GtmIDH1mJnqUa1HssXo7n_W4oDeZOTDGqbOPHo2Z-Ko,122568
281
+ ccxt/async_support/kraken.py,sha256=nqAxbi-vkfXetjVV7PgMhgIeNxdome3MgIlZnimEOc0,124519
282
282
  ccxt/async_support/krakenfutures.py,sha256=LxUUDt8BH69IRbtFYCSsyKZhW_QHEvhqFnAbdYNmzsA,116143
283
283
  ccxt/async_support/kucoin.py,sha256=zPl33pupehmSYWdFFLf8bz5GWkpJvQXY7MBijC1CZtM,215759
284
284
  ccxt/async_support/kucoinfutures.py,sha256=eQQiAmU-nUgnOXZt053cGuK4kfpW3Yt23iGc_87kgK8,119121
@@ -313,7 +313,7 @@ ccxt/async_support/yobit.py,sha256=gNE-7Yc2a2ScelR8ZWFGfhRzCr9DHcAdlI62LFjXvnI,5
313
313
  ccxt/async_support/zaif.py,sha256=PaHcaNijKkhocrw6DZoSBNUjBOLNlkUYtsJvPAqkx68,28134
314
314
  ccxt/async_support/zonda.py,sha256=0o0Q1rFuTbdhm8m_rlo8D1qLsgZhhBqnefsHi0rVA_A,80866
315
315
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
316
- ccxt/async_support/base/exchange.py,sha256=8I8IL2h_JxdLCC-zH86PQvGzndQ153bq5sC7N-R5mQ8,91193
316
+ ccxt/async_support/base/exchange.py,sha256=UNnuBeR8UYP9iR2P3fRLyIFtND9YhprNbelbdS5uYuc,91193
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,10 +327,10 @@ 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=WKMwfFuC4AglP6Ma0QTtPQRbwYrxwyaFcM2ruPSz2UQ,253647
330
+ ccxt/base/exchange.py,sha256=FZNKeMz4IoRWIy4opz1HKW0ftCnDwQhejKfDy5FaGUA,253791
331
331
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
332
332
  ccxt/base/types.py,sha256=6f9YtSQp-XB_iBbXqsKCfmMzn_UpfwkHl3f0rL3xGjg,7690
333
- ccxt/pro/__init__.py,sha256=Njmd5GQ6X6ATMh7NeDAG8r97vKOU5yhuZtSR8RYBGoc,6999
333
+ ccxt/pro/__init__.py,sha256=nsCIr5SG1tdtW5iPupJD3JoAmP2cHIXO84tevC5pu6M,6999
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
@@ -529,7 +529,7 @@ ccxt/test/base/test_ticker.py,sha256=cMTIMb1oySNORUCmqI5ZzMswlEyCF6gJMah3vfvo8wQ
529
529
  ccxt/test/base/test_trade.py,sha256=PMtmB8V38dpaP-eb8h488xYMlR6D69yCOhsA1RuWrUA,2336
530
530
  ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
531
531
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
532
- ccxt-4.2.91.dist-info/METADATA,sha256=PY74MW-RskF6sWYVyvNpIHguvZm-1Af39SkpBfAVuqg,110281
533
- ccxt-4.2.91.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
534
- ccxt-4.2.91.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
535
- ccxt-4.2.91.dist-info/RECORD,,
532
+ ccxt-4.2.92.dist-info/METADATA,sha256=-NuZ6NrdrQqNQjrmYgdkRfUiq7Pp6ulQNo4VGMFwehU,110281
533
+ ccxt-4.2.92.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
534
+ ccxt-4.2.92.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
535
+ ccxt-4.2.92.dist-info/RECORD,,
File without changes