1- from typing import List , Union , Literal , Optional , Any , cast
1+ from typing import List , Dict , Union , Literal , Optional , Any , cast
22
33from decimal import Decimal
44
5- from .. types import \
5+ from ..middleware import Middleware
6+
7+ from ..enums import Config , Sort
8+
9+ from ...types import \
610 PlatformStatus , TradingPairTicker , FundingCurrencyTicker , \
711 TickersHistory , TradingPairTrade , FundingCurrencyTrade , \
812 TradingPairBook , FundingCurrencyBook , TradingPairRawBook , \
1115 FundingStatistic , PulseProfile , PulseMessage , \
1216 TradingMarketAveragePrice , FundingMarketAveragePrice , FxRate
1317
14- from .. import serializers
15- from .. enums import Config , Sort
16- from .. middleware import Middleware
18+ from ...types import serializers
1719
1820class RestPublicEndpoints (Middleware ):
1921 def conf (self , config : Config ) -> Any :
@@ -22,37 +24,46 @@ def conf(self, config: Config) -> Any:
2224 def get_platform_status (self ) -> PlatformStatus :
2325 return serializers .PlatformStatus .parse (* self ._get ("platform/status" ))
2426
25- def get_tickers (self , symbols : List [str ]) -> List [ Union [TradingPairTicker , FundingCurrencyTicker ]]:
27+ def get_tickers (self , symbols : List [str ]) -> Dict [ str , Union [TradingPairTicker , FundingCurrencyTicker ]]:
2628 data = self ._get ("tickers" , params = { "symbols" : "," .join (symbols ) })
2729
2830 parsers = { "t" : serializers .TradingPairTicker .parse , "f" : serializers .FundingCurrencyTicker .parse }
2931
30- return [ cast (Union [TradingPairTicker , FundingCurrencyTicker ], \
31- parsers [sub_data [0 ][0 ]](* sub_data )) for sub_data in data ]
32+ return {
33+ symbol : cast (Union [TradingPairTicker , FundingCurrencyTicker ],
34+ parsers [symbol [0 ]](* sub_data )) for sub_data in data
35+ if (symbol := sub_data .pop (0 ))
36+ }
3237
33- def get_t_tickers (self , pairs : Union [List [str ], Literal ["ALL" ]]) -> List [TradingPairTicker ]:
34- if isinstance (pairs , str ) and pairs == "ALL" :
35- return [ cast (TradingPairTicker , sub_data ) for sub_data in self .get_tickers ([ "ALL" ]) \
36- if cast (str , sub_data .symbol ).startswith ("t" ) ]
38+ def get_t_tickers (self , symbols : Union [List [str ], Literal ["ALL" ]]) -> Dict [str , TradingPairTicker ]:
39+ if isinstance (symbols , str ) and symbols == "ALL" :
40+ return {
41+ symbol : cast (TradingPairTicker , sub_data )
42+ for symbol , sub_data in self .get_tickers ([ "ALL" ]).items ()
43+ if symbol .startswith ("t" )
44+ }
3745
38- data = self .get_tickers (list (pairs ))
46+ data = self .get_tickers (list (symbols ))
3947
40- return cast (List [ TradingPairTicker ], data )
48+ return cast (Dict [ str , TradingPairTicker ], data )
4149
42- def get_f_tickers (self , currencies : Union [List [str ], Literal ["ALL" ]]) -> List [FundingCurrencyTicker ]:
43- if isinstance (currencies , str ) and currencies == "ALL" :
44- return [ cast (FundingCurrencyTicker , sub_data ) for sub_data in self .get_tickers ([ "ALL" ]) \
45- if cast (str , sub_data .symbol ).startswith ("f" ) ]
50+ def get_f_tickers (self , symbols : Union [List [str ], Literal ["ALL" ]]) -> Dict [str , FundingCurrencyTicker ]:
51+ if isinstance (symbols , str ) and symbols == "ALL" :
52+ return {
53+ symbol : cast (FundingCurrencyTicker , sub_data )
54+ for symbol , sub_data in self .get_tickers ([ "ALL" ]).items ()
55+ if symbol .startswith ("f" )
56+ }
4657
47- data = self .get_tickers (list (currencies ))
58+ data = self .get_tickers (list (symbols ))
4859
49- return cast (List [ FundingCurrencyTicker ], data )
60+ return cast (Dict [ str , FundingCurrencyTicker ], data )
5061
51- def get_t_ticker (self , pair : str ) -> TradingPairTicker :
52- return serializers .TradingPairTicker .parse (* ([ pair ] + self ._get (f"ticker/{ pair } " ) ))
62+ def get_t_ticker (self , symbol : str ) -> TradingPairTicker :
63+ return serializers .TradingPairTicker .parse (* self ._get (f"ticker/{ symbol } " ))
5364
54- def get_f_ticker (self , currency : str ) -> FundingCurrencyTicker :
55- return serializers .FundingCurrencyTicker .parse (* ([ currency ] + self ._get (f"ticker/{ currency } " ) ))
65+ def get_f_ticker (self , symbol : str ) -> FundingCurrencyTicker :
66+ return serializers .FundingCurrencyTicker .parse (* self ._get (f"ticker/{ symbol } " ))
5667
5768 def get_tickers_history (self ,
5869 symbols : List [str ],
@@ -164,26 +175,29 @@ def get_candles_last(self,
164175 data = self ._get (f"candles/trade:{ tf } :{ symbol } /last" , params = params )
165176 return serializers .Candle .parse (* data )
166177
167- def get_derivatives_status (self , keys : Union [List [str ], Literal ["ALL" ]]) -> List [ DerivativesStatus ]:
178+ def get_derivatives_status (self , keys : Union [List [str ], Literal ["ALL" ]]) -> Dict [ str , DerivativesStatus ]:
168179 if keys == "ALL" :
169180 params = { "keys" : "ALL" }
170181 else : params = { "keys" : "," .join (keys ) }
171182
172183 data = self ._get ("status/deriv" , params = params )
173184
174- return [ serializers .DerivativesStatus .parse (* sub_data ) for sub_data in data ]
185+ return {
186+ key : serializers .DerivativesStatus .parse (* sub_data )
187+ for sub_data in data
188+ if (key := sub_data .pop (0 ))
189+ }
175190
176191 def get_derivatives_status_history (self ,
177- type : str ,
178- symbol : str ,
192+ key : str ,
179193 * ,
180194 sort : Optional [Sort ] = None ,
181195 start : Optional [str ] = None ,
182196 end : Optional [str ] = None ,
183197 limit : Optional [int ] = None ) -> List [DerivativesStatus ]:
184198 params = { "sort" : sort , "start" : start , "end" : end , "limit" : limit }
185- data = self ._get (f"status/{ type } / { symbol } /hist" , params = params )
186- return [ serializers .DerivativesStatus .parse (* ([ symbol ] + sub_data ) ) for sub_data in data ]
199+ data = self ._get (f"status/deriv/ { key } /hist" , params = params )
200+ return [ serializers .DerivativesStatus .parse (* sub_data ) for sub_data in data ]
187201
188202 def get_liquidations (self ,
189203 * ,
0 commit comments