code: def register_decoder_config(
      name: str,
      features: Union[str, List[str]],
      model_types: Optional[List[str]] = None,
  ):
      if model_types is None:
          model_types = [MODEL_ECD]
  
      if isinstance(features, str):
          features = [features]
  
      def wrap(cls):
          for model_type in model_types:
              for feature in features:
                  key = (model_type, feature)
                  feature_registry = decoder_config_registry.get(
                      key, {}
                  )
                  feature_registry[name] = cls
                  decoder_config_registry[key] = feature_registry
          return cls
  
      return wrap
  
file_path: ludwig/ludwig/schema/decoders/utils.py
imports: from dataclasses import Field
  from typing import Any, Dict, List, Optional, Type, TYPE_CHECKING, Union
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.constants import MODEL_ECD, TYPE
  from ludwig.schema import utils
  from ludwig.schema.metadata import DECODER_METADATA
  from ludwig.schema.metadata.parameter_metadata import convert_metadata_to_json
  from ludwig.utils.registry import Registry
label_desc: Use image node_id 1 for calling a global function with example usage: register_decoder_config(name, features, model_types) and returns: wrap, cls