code: def compute(self, today, assets, out, input_, expected_windows):
      for asset, expected_by_day in expected_windows:
          expected_by_day = expected_by_day.ob
  
          col_ix = np.searchsorted(assets, asset)
          if assets[col_ix] != asset:
              raise AssertionError(
                  "asset %s is not in the window" % asset
              )
  
          try:
              expected = expected_by_day[today]
          except KeyError:
              pass
          else:
              expected = np.asanyarray(expected)
              actual = input_[:, col_ix]
              assert_equal(
                  actual,
                  expected,
                  array_decimal=(
                      6 if expected.dtype.kind == "f" else None
                  ),
              )
  
      # output is just latest
      out[:] = input_[-1]
  
file_path: zipline/zipline/testing/pipeline_terms.py
imports: import numpy
  from zipline.pipeline.factors.factor import CustomFactor
  from zipline.pipeline.classifiers.classifier import CustomClassifier
  from zipline.utils.idbox import IDBox
  from .predicates import assert_equal
label_desc: Use image node_id 1 for calling the CheckWindowsMixin obj's underlying member method code with example usage: obj.compute(today, assets, out, input_, expected_windows) without return types