code: def _fetch_time_series(self, name, timescale, proxy=None):
      # Fetching time series preferred over scraping 'QuoteSummaryStore',
      # because it matches what Yahoo shows. But for some tickers returns nothing,
      # despite 'QuoteSummaryStore' containing valid data.
  
      allowed_names = ["income", "balance-sheet", "cash-flow"]
      allowed_timescales = ["yearly", "quarterly"]
  
      if name not in allowed_names:
          raise ValueError(
              f"Illegal argument: name must be one of: {allowed_names}"
          )
      if timescale not in allowed_timescales:
          raise ValueError(
              f"Illegal argument: timescale must be one of: {allowed_timescales}"
          )
  
      try:
          statement = self._create_financials_table(
              name, timescale, proxy
          )
  
          if statement is not None:
              return statement
      except YFinanceException as e:
          utils.get_yf_logger().error(
              f"{self._symbol}: Failed to create {name} financials table for reason: {e}"
          )
      return pd.DataFrame()
  
file_path: yfinance/yfinance/scrapers/fundamentals.py
imports: import datetime
  import json
  import pandas
  from yfinance import utils, const
  from yfinance.data import YfData
  from yfinance.exceptions import YFinanceException, YFNotImplementedError
label_desc: Use image node_id 5 for calling the Financials obj's underlying member method code with example usage: obj._fetch_time_series(name, timescale, proxy) and returns: pd, statement