code: def check_feature_names_unique(
      config: "ModelConfig",
  ) -> None:  # noqa: F821
      """Checks that all feature names are unique."""
      input_features = config.input_features
      input_feature_names = {
          input_feature.name for input_feature in input_features
      }
  
      output_features = config.output_features
      output_feature_names = {
          output_feature.name for output_feature in output_features
      }
  
      if len(input_feature_names) + len(output_feature_names) != len(
          input_features
      ) + len(output_features):
          raise ConfigValidationError("Feature names must be unique.")
  
imports: from abc import ABC, abstractmethod
  from re import findall
  from typing import Callable, TYPE_CHECKING
  from transformers import AutoConfig
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import AUDIO, BINARY, CATEGORY, IMAGE, IN_MEMORY, MIN_QUANTIZATION_BITS_FOR_MERGE_AND_UNLOAD, MODEL_ECD, MODEL_GBM, MODEL_LLM, NUMBER, SEQUENCE, SET, TEXT, TIMESERIES, VECTOR
  from ludwig.error import ConfigValidationError
  from ludwig.utils.metric_utils import get_feature_to_metric_names_map_from_feature_collection
  from ludwig.utils.misc_utils import merge_dict
label_desc: Use image node_id 3 for calling a global function with example usage: check_feature_names_unique(config) without return types