class_docstr: PipelineEngine class that computes each term independently.
  
  Parameters
  ----------
  get_loader : callable
      A function that is given a loadable term and returns a PipelineLoader
      to use to retrieve raw data for that term.
  calendar : DatetimeIndex
      Array of dates to consider as trading days when computing a range
      between a fixed start and end.
  asset_finder : catalyst.assets.AssetFinder
      An AssetFinder instance.  We depend on the AssetFinder to determine
      which assets are in the top-level universe at any point in time.
  populate_initial_workspace : callable, optional
      A function which will be used to populate the initial workspace when
      computing a pipeline. See
      :func:`catalyst.pipeline.engine.default_populate_initial_workspace`
      for more info.
  
  See Also
  --------
  :func:`catalyst.pipeline.engine.default_populate_initial_workspace`
docstr: Verify that the values passed to compute_chunk are well-formed.
docstr_tok: ["Verify","that","the","values","passed","to","compute_chunk","are","well-formed","."]
code: def _validate_compute_chunk_params(
      self, dates, assets, initial_workspace
  ):
      """
      Verify that the values passed to compute_chunk are well-formed.
      """
      root = self._root_mask_term
      clsname = type(self).__name__
  
      # Writing this out explicitly so this errors in testing if we change
      # the name without updating this line.
      compute_chunk_name = self.compute_chunk.__name__
      if root not in initial_workspace:
          raise AssertionError(
              "root_mask values not supplied to {cls}.{method}".format(
                  cls=clsname,
                  method=compute_chunk_name,
              )
          )
  
      shape = initial_workspace[root].shape
      implied_shape = len(dates), len(assets)
      if shape != implied_shape:
          raise AssertionError(
              "root_mask shape is {shape}, but received dates/assets "
              "imply that shape should be {implied}".format(
                  shape=shape,
                  implied=implied_shape,
              )
          )
  
imports: from abc import ABCMeta, abstractmethod
  from uuid import uuid4
  import six
  from six import iteritems, with_metaclass
  from numpy import array
  from pandas import DataFrame, MultiIndex
  from toolz import groupby, juxt
  from toolz.curried.operator import getitem
  from catalyst.lib.adjusted_array import ensure_adjusted_array, ensure_ndarray
  from catalyst.errors import NoFurtherDataError
  from catalyst.utils.numpy_utils import as_column, repeat_first_axis, repeat_last_axis
  from catalyst.utils.pandas_utils import explode
  from .term import AssetExists, InputDates, LoadableTerm
  from catalyst.utils.date_utils import compute_date_range_chunks
  from catalyst.utils.pandas_utils import categorical_df_concat
  from catalyst.utils.sharedoc import copydoc
label_desc: Use image node_id 9 for calling the SimplePipelineEngine obj's underlying member method code with example usage: obj._validate_compute_chunk_params(dates, assets, initial_workspace) without return types