def data_source(self) -> OrderBookTrackerDataSource:
     if not self._data_source:
         if self._data_source_type is OrderBookTrackerDataSourceType.REMOTE_API:
             self._data_source = RemoteAPIOrderBookDataSource()
         else:
             raise ValueError(f"data_source_type {self._data_source_type} is not supported.")
     return self._data_source
 def data_source(self) -> OrderBookTrackerDataSource:
     if not self._data_source:
         if self._data_source_type is OrderBookTrackerDataSourceType.REMOTE_API:
             self._data_source = RemoteAPIOrderBookDataSource()
         elif self._data_source_type is OrderBookTrackerDataSourceType.EXCHANGE_API:
             self._data_source = KucoinAPIOrderBookDataSource(trading_pairs=self._trading_pairs)
         else:
             raise ValueError(f"data_source_type {self._data_source_type} is not supported.")
     return self._data_source
 def data_source(self) -> OrderBookTrackerDataSource:
     if not self._data_source:
         if self._data_source_type is OrderBookTrackerDataSourceType.REMOTE_API:
             self._data_source = RemoteAPIOrderBookDataSource()
         elif self._data_source_type is OrderBookTrackerDataSourceType.EXCHANGE_API:
             self._data_source = DolomiteAPIOrderBookDataSource(
                 trading_pairs=self._trading_pairs, rest_api_url=self.rest_api_url, websocket_url=self.websocket_url
             )
         else:
             raise ValueError(f"data_source_type {self._data_source_type} is not supported.")
     return self._data_source