code: def custom_data_class(
      # pyre-fixme[24]: Generic type `type` expects 1 type parameter, use
      #  `typing.Type` to avoid runtime subscripting errors.
      column_data_types: Optional[Dict[str, Type]] = None,
      required_columns: Optional[Set[str]] = None,
      time_columns: Optional[Set[str]] = None,
  ) -> Type[Data]:
      """Creates a custom data class with additional columns.
  
      All columns and their designations on the base data class are preserved,
      the inputs here are appended to the definitions on the base class.
  
      Args:
          column_data_types: Dict from column name to column type.
          required_columns: Set of additional columns required for this data object.
          time_columns: Set of additional columns to cast to timestamp.
  
      Returns:
          New data subclass with amended column definitions.
      """
  
      class CustomData(Data):
          @classmethod
          def required_columns(cls) -> Set[str]:
              return (required_columns or set()).union(
                  Data.REQUIRED_COLUMNS
              )
  
          @classmethod
          def column_data_types(
              cls, extra_column_types: Optional[Dict[str, Type]] = None
          ) -> Dict[str, Type]:
              return super().column_data_types(
                  {
                      **(extra_column_types or {}),
                      **(column_data_types or {}),
                  }
              )
  
      return CustomData
  
imports: from __future__ import annotations
  import json
  from abc import abstractmethod
  from functools import reduce
  from hashlib import md5
  from typing import Any, Dict, Iterable, List, Optional, Set, Type, TypeVar, Union
  import numpy
  import pandas
  from ax.core.types import TFidelityTrialEvaluation, TTrialEvaluation
  from ax.utils.common.base import Base
  from ax.utils.common.serialization import extract_init_args, SerializationMixin, serialize_init_args, TClassDecoderRegistry, TDecoderRegistry
  from ax.utils.common.typeutils import checked_cast, not_none
label_desc: Use image node_id 4 for calling a global function with example usage: custom_data_class(column_data_types, required_columns, time_columns) and returns: CustomData, unknown, super