class_docstr: Stores all actual data and typing information for an entityset
  
  Attributes:
      id
      dataframe_dict
      relationships
      time_type
  
  Properties:
      metadata
class_docstr_tok: ["Stores","all","actual","data","and","typing","information","for","an","entityset","Attributes",":","id","dataframe_dict","relationships","time_type","Properties",":","metadata"]
code: def _check_secondary_time_index(
      self, dataframe, secondary_time_index=None
  ):
      secondary_time_index = (
          secondary_time_index
          or dataframe.ww.metadata.get(
              "secondary_time_index",
              {},
          )
      )
  
      if secondary_time_index and dataframe.ww.time_index is None:
          raise ValueError(
              "Cannot set secondary time index on a DataFrame that has no primary time index.",
          )
  
      for time_index, columns in secondary_time_index.items():
          self._check_uniform_time_index(
              dataframe, column_name=time_index
          )
          if time_index not in columns:
              columns.append(time_index)
  
imports: import copy
  import logging
  import warnings
  from collections import defaultdict
  import numpy
  import pandas
  from woodwork import init_series
  from woodwork.logical_types import Datetime, LatLong
  from featuretools.entityset import deserialize, serialize
  from featuretools.entityset.relationship import Relationship, RelationshipPath
  from featuretools.feature_base.feature_base import _ES_REF
  from featuretools.utils.gen_utils import Library, import_or_none, is_instance
  from featuretools.utils.plot_utils import check_graphviz, get_graphviz_format, save_graph
  from featuretools.utils.wrangle import _check_timedelta
label_desc: Use image node_id 42 for calling the EntitySet obj's underlying member method code with example usage: obj._check_secondary_time_index(dataframe, secondary_time_index) without return types