(self, market: dict)
| 935 | return self.parse_markets(markets) |
| 936 | |
| 937 | def parse_market(self, market: dict) -> Market: |
| 938 | id = self.safe_string(market, 'symbol', '') |
| 939 | lowercaseId = self.safe_string_lower(market, 'symbol') |
| 940 | side = self.safe_integer(market, 'side') # 1 linear, 0 inverse, None spot |
| 941 | type = 'spot' |
| 942 | isLinear = None |
| 943 | isInverse = None |
| 944 | if side is None: |
| 945 | type = 'spot' |
| 946 | else: |
| 947 | type = 'swap' |
| 948 | isLinear = (side == 1) |
| 949 | isInverse = (side == 0) |
| 950 | isContract = (type != 'spot') |
| 951 | baseId = self.safe_string(market, 'baseAsset') |
| 952 | quoteId = self.safe_string(market, 'quoteAsset') |
| 953 | settleId = None |
| 954 | settle = None |
| 955 | if isContract: |
| 956 | symbolSplit = id.split('-') |
| 957 | baseId = self.safe_string(symbolSplit, 1) |
| 958 | quoteId = self.safe_string(symbolSplit, 2) |
| 959 | if isLinear: |
| 960 | settleId = quoteId |
| 961 | else: |
| 962 | settleId = baseId |
| 963 | settle = self.safe_currency_code(settleId) |
| 964 | base = self.safe_currency_code(baseId) |
| 965 | quote = self.safe_currency_code(quoteId) |
| 966 | symbol = base + '/' + quote |
| 967 | if settle is not None: |
| 968 | symbol += ':' + settle |
| 969 | filters = self.safe_list(market, 'filters', []) |
| 970 | filtersByType = self.index_by(filters, 'filterType') |
| 971 | status = self.safe_string(market, 'status') |
| 972 | priceFilter = self.safe_dict(filtersByType, 'PRICE_FILTER', {}) |
| 973 | amountFilter = self.safe_dict(filtersByType, 'LOT_SIZE', {}) |
| 974 | defaultPricePrecision = self.safe_string(market, 'pricePrecision') |
| 975 | defaultAmountPrecision = self.safe_string(market, 'quantityPrecision') |
| 976 | pricePrecision = self.safe_string(priceFilter, 'priceScale', defaultPricePrecision) |
| 977 | amountPrecision = self.safe_string(amountFilter, 'volumeScale', defaultAmountPrecision) |
| 978 | multiplier = self.safe_string(market, 'multiplier') |
| 979 | maxQuantity = self.safe_number(amountFilter, 'maxQty') |
| 980 | if maxQuantity is None: |
| 981 | maxQuantity = self.safe_number(market, 'maxValidOrder') |
| 982 | minCost = self.safe_number(amountFilter, 'minVal') |
| 983 | if minCost is None: |
| 984 | minCost = self.safe_number(market, 'minOrderMoney') |
| 985 | isSpot = (type == 'spot') |
| 986 | return { |
| 987 | 'id': id, |
| 988 | 'lowercaseId': lowercaseId, |
| 989 | 'symbol': symbol, |
| 990 | 'base': base, |
| 991 | 'quote': quote, |
| 992 | 'settle': settle, |
| 993 | 'baseId': baseId, |
| 994 | 'quoteId': quoteId, |
nothing calls this directly
no test coverage detected