code: def __init__(
      self, data_source, tech_indicator=None, vix=None, **kwargs
  ):
      if data_source == "alpaca":
          try:
              API_KEY = kwargs.get("API_KEY")
              API_SECRET = kwargs.get("API_SECRET")
              API_BASE_URL = kwargs.get("API_BASE_URL")
              self.processor = Alpaca(API_KEY, API_SECRET, API_BASE_URL)
              print("Alpaca successfully connected")
          except BaseException:
              raise ValueError(
                  "Please input correct account info for alpaca!"
              )
  
      elif data_source == "wrds":
          self.processor = Wrds()
  
      elif data_source == "yahoofinance":
          self.processor = YahooFinance()
  
      else:
          raise ValueError("Data source input is NOT supported yet.")
  
      # Initialize variable in case it is using cache and does not use download_data() method
      self.tech_indicator_list = tech_indicator
      self.vix = vix
  
file_path: FinRL/finrl/meta/data_processor.py
imports: from __future__ import annotations
  import numpy
  import pandas
  from finrl.meta.data_processors.processor_alpaca import AlpacaProcessor
  from finrl.meta.data_processors.processor_wrds import WrdsProcessor
  from finrl.meta.data_processors.processor_yahoofinance import YahooFinanceProcessor
label_desc: Use image node_id 1 to create a new DataProcessor object  with example: obj = DataProcessor(data_source, tech_indicator, vix)