code: def make_future_minute_bar_data(cls):
      trading_calendar = cls.trading_calendars[Future]
      trading_sessions = cls.trading_sessions["us_futures"]
      # No data on first day, future asset intentionally not on the same
      # dates as equities, so that cross-wiring of results do not create a
      # false positive.
      dts = trading_calendar.minutes_for_session(trading_sessions[1])
      dfs = []
      dfs.append(
          pd.DataFrame(
              {
                  "open": full(len(dts), nan),
                  "high": full(len(dts), nan),
                  "low": full(len(dts), nan),
                  "close": full(len(dts), nan),
                  "volume": full(len(dts), 0),
              },
              index=dts,
          )
      )
      dts = trading_calendar.minutes_for_session(trading_sessions[2])
      dfs.append(
          pd.DataFrame(
              {
                  "open": append(200.5, full(len(dts) - 1, nan)),
                  "high": append(200.9, full(len(dts) - 1, nan)),
                  "low": append(200.1, full(len(dts) - 1, nan)),
                  "close": append(200.3, full(len(dts) - 1, nan)),
                  "volume": append(2000, full(len(dts) - 1, nan)),
              },
              index=dts,
          )
      )
      dts = trading_calendar.minutes_for_session(trading_sessions[3])
      dfs.append(
          pd.DataFrame(
              {
                  "open": [nan, 203.50, 202.50, 204.50, 201.50, nan],
                  "high": [nan, 203.90, 202.90, 204.90, 201.90, nan],
                  "low": [nan, 203.10, 202.10, 204.10, 201.10, nan],
                  "close": [nan, 203.30, 202.30, 204.30, 201.30, nan],
                  "volume": [0, 2003, 2002, 2004, 2001, 0],
              },
              index=dts[:6],
          )
      )
      dts = trading_calendar.minutes_for_session(trading_sessions[4])
      dfs.append(
          pd.DataFrame(
              {
                  "open": full(len(dts), nan),
                  "high": full(len(dts), nan),
                  "low": full(len(dts), nan),
                  "close": full(len(dts), nan),
                  "volume": full(len(dts), 0),
              },
              index=dts,
          )
      )
      asset10000_df = pd.concat(dfs)
      yield 10000, asset10000_df
  
      missing_dts = trading_calendar.minutes_for_session(
          trading_sessions[0]
      )
      asset10001_df = pd.DataFrame(
          {
              "open": 1.00549,
              "high": 1.00591,
              "low": 1.00507,
              "close": 1.0055,
              "volume": 100,
          },
          index=missing_dts.append(asset10000_df.index),
      )
      yield 10001, asset10001_df
  
imports: from collections import OrderedDict
  from numpy import array, append, nan, full
  from numpy.testing import assert_almost_equal
  import pandas
  from pandas import Timedelta
  from six import iteritems
  from zipline.assets import Equity, Future
  from zipline.data.data_portal import HISTORY_FREQUENCIES, OHLCV_FIELDS
  from zipline.data.minute_bars import FUTURES_MINUTES_PER_DAY, US_EQUITIES_MINUTES_PER_DAY
  from zipline.testing import parameter_space
  from zipline.testing.fixtures import ZiplineTestCase, WithTradingSessions, WithDataPortal, alias
  from zipline.testing.predicates import assert_equal
  from zipline.utils.numpy_utils import float64_dtype
label_desc: Use image node_id 4 for calling the DataPortalTestBase obj's underlying member method code with example usage: obj.make_future_minute_bar_data(cls) without return types