(self, symbol: str)
| 2861 | } |
| 2862 | |
| 2863 | def market(self, symbol: str) -> MarketInterface: |
| 2864 | if self.markets is None: |
| 2865 | raise ExchangeError(self.id + ' markets not loaded') |
| 2866 | # defaultType has legacy support on binance |
| 2867 | defaultType = self.safe_string(self.options, 'defaultType') |
| 2868 | defaultSubType = self.safe_string(self.options, 'defaultSubType') |
| 2869 | isLegacyLinear = defaultType == 'future' |
| 2870 | isLegacyInverse = defaultType == 'delivery' |
| 2871 | isLegacy = isLegacyLinear or isLegacyInverse |
| 2872 | if isinstance(symbol, str): |
| 2873 | if symbol in self.markets: |
| 2874 | market = self.markets[symbol] |
| 2875 | # begin diff |
| 2876 | if isLegacy and market['spot']: |
| 2877 | settle = market['quote'] if isLegacyLinear else market['base'] |
| 2878 | futuresSymbol = symbol + ':' + settle |
| 2879 | if futuresSymbol in self.markets: |
| 2880 | return self.markets[futuresSymbol] |
| 2881 | else: |
| 2882 | return market |
| 2883 | # end diff |
| 2884 | elif symbol in self.markets_by_id: |
| 2885 | markets = self.markets_by_id[symbol] |
| 2886 | # begin diff |
| 2887 | if isLegacyLinear: |
| 2888 | defaultType = 'linear' |
| 2889 | elif isLegacyInverse: |
| 2890 | defaultType = 'inverse' |
| 2891 | elif defaultType is None: |
| 2892 | defaultType = defaultSubType |
| 2893 | # end diff |
| 2894 | for i in range(0, len(markets)): |
| 2895 | market = markets[i] |
| 2896 | if market[defaultType]: |
| 2897 | return market |
| 2898 | return markets[0] |
| 2899 | elif (symbol.find('/') > -1) and (symbol.find(':') < 0): |
| 2900 | if (defaultType is not None) and (defaultType != 'spot'): |
| 2901 | # support legacy symbols |
| 2902 | base, quote = symbol.split('/') |
| 2903 | settle = base if (quote == 'USD') else quote |
| 2904 | futuresSymbol = symbol + ':' + settle |
| 2905 | if futuresSymbol in self.markets: |
| 2906 | return self.markets[futuresSymbol] |
| 2907 | elif (symbol.find('-C') > -1) or (symbol.find('-P') > -1): # both exchange-id and unified symbols are supported self way regardless of the defaultType |
| 2908 | return self.create_expired_option_market(symbol) |
| 2909 | raise BadSymbol(self.id + ' does not have market symbol ' + symbol) |
| 2910 | |
| 2911 | def safe_market(self, marketId: Str = None, market: Market = None, delimiter: Str = None, marketType: Str = None) -> MarketInterface: |
| 2912 | isOption = (marketId is not None) and ((marketId.find('-C') > -1) or (marketId.find('-P') > -1)) |
no test coverage detected