code: def download_data(
      self,
      start_date,
      end_date,
      ticker_list,
      time_interval,
      if_save_tempfile=False,
      filter_shares=0,
  ):
      self.start = start_date
      self.end = end_date
      self.time_interval = time_interval
  
      def get_trading_days(start, end):
          nyse = tc.get_calendar("NYSE")
          df = nyse.sessions_in_range(
              pd.Timestamp(start, tz=pytz.UTC),
              pd.Timestamp(end, tz=pytz.UTC),
          )
          trading_days = []
          for day in df:
              trading_days.append(str(day)[:10])
  
          return trading_days
  
      def data_fetch_wrds(
          date="2021-05-01", stock_set=("AAPL"), time_interval=60
      ):
          # start_date, end_date should be in the same year
          current_date = datetime.datetime.strptime(date, "%Y-%m-%d")
          lib = "taqm_" + str(current_date.year)  # taqm_2021
          table = "ctm_" + current_date.strftime(
              "%Y%m%d"
          )  # ctm_20210501
  
          parm = {"syms": stock_set, "num_shares": filter_shares}
          try:
              data = self.db.raw_sql(
                  "select * from "
                  + lib
                  + "."
                  + table
                  + " where sym_root in %(syms)s "
                  + "and time_m between '9:30:00' and '16:00:00' and size > %(num_shares)s and sym_suffix is null",
                  params=parm,
              )
              if_empty = False
              return data, if_empty
          except BaseException:
              print("Data for date: " + date + " error")
              if_empty = True
              return None, if_empty
  
      dates = get_trading_days(start_date, end_date)
      print("Trading days: ")
      print(dates)
      first_time = True
      empty = True
      stock_set = tuple(ticker_list)
      for i in dates:
          x = data_fetch_wrds(i, stock_set, time_interval)
  
          if not x[1]:
              empty = False
              dataset = x[0]
              dataset = self.preprocess_to_ohlcv(
                  dataset, time_interval=(str(time_interval) + "S")
              )
              if first_time:
                  print("Data for date: " + i + " finished")
                  temp = dataset
                  first_time = False
                  if if_save_tempfile:
                      temp.to_csv("./temp.csv")
              else:
                  print("Data for date: " + i + " finished")
                  temp = pd.concat([temp, dataset])
                  if if_save_tempfile:
                      temp.to_csv("./temp.csv")
      if empty:
          raise ValueError("Empty Data under input parameters!")
      else:
          result = temp
          result = result.sort_values(by=["time", "tic"])
          result = result.reset_index(drop=True)
          return result
  
file_path: FinRL/finrl/meta/data_processors/processor_wrds.py
imports: from __future__ import annotations
  import datetime
  import exchange_calendars
  import numpy
  import pandas
  import pytz
  import wrds
  from stockstats import StockDataFrame
label_desc: Use image node_id 2 for calling the WrdsProcessor obj's underlying member method code with example usage: obj.download_data(start_date, end_date, ticker_list, time_interval, if_save_tempfile, filter_shares) and returns: trading_days, result, data,  if_empty, None,  if_empty