code: def validate_column_specs(
      events, next_value_columns, previous_value_columns
  ):
      """
      Verify that the columns of ``events`` can be used by an EventsLoader to
      serve the BoundColumns described by ``next_value_columns`` and
      ``previous_value_columns``.
      """
      required = required_event_fields(
          next_value_columns, previous_value_columns
      )
      received = set(events.columns)
      missing = required - received
      if missing:
          raise ValueError(
              "EventsLoader missing required columns {missing}.\n"
              "Got Columns: {received}\n"
              "Expected Columns: {required}".format(
                  missing=sorted(missing),
                  received=sorted(received),
                  required=sorted(required),
              )
          )
  
imports: import numpy
  import pandas
  from interface import implements
  from six import viewvalues
  from toolz import groupby, merge
  from .base import PipelineLoader
  from zipline.pipeline.common import EVENT_DATE_FIELD_NAME, SID_FIELD_NAME, TS_FIELD_NAME
  from zipline.pipeline.loaders.frame import DataFrameLoader
  from zipline.pipeline.loaders.utils import next_event_indexer, previous_event_indexer
label_desc: Use image node_id 2 for calling a global function with example usage: validate_column_specs(events, next_value_columns, previous_value_columns) without return types