code: def get_features_config(
      fields: List[FieldInfo],
      row_count: int,
      target_name: Union[str, List[str]] = None,
  ) -> dict:
      """Constructs FieldInfo objects for each feature in dataset. These objects are used for downstream type
      inference.
  
      # Inputs
      :param fields: (List[FieldInfo]) FieldInfo objects for all fields in dataset
      :param row_count: (int) total number of entries in original dataset
      :param target_name (str, List[str]) name of target feature
  
      # Return
      :return: (dict) section of auto_train config for input_features and output_features
      """
      targets = convert_targets(target_name)
      metadata = get_field_metadata(fields, row_count, targets)
      return get_config_from_metadata(metadata, targets)
  
imports: import logging
  import os
  from dataclasses import dataclass
  from typing import Any, Dict, List, Set, Union
  import dask.dataframe
  import numpy
  import pandas
  import yaml
  from dataclasses_json import dataclass_json, LetterCase
  from tqdm import tqdm
  from ludwig.api_annotations import DeveloperAPI
  from ludwig.backend import Backend
  from ludwig.constants import COLUMN, COMBINER, ENCODER, EXECUTOR, HYPEROPT, INPUT_FEATURES, PREPROCESSING, SCHEDULER, SEARCH_ALG, SPLIT, TEXT, TYPE
  from ludwig.types import ModelConfigDict
  from ludwig.utils.automl.data_source import DataSource, wrap_data_source
  from ludwig.utils.automl.field_info import FieldConfig, FieldInfo, FieldMetadata
  from ludwig.utils.automl.type_inference import infer_type, should_exclude
  from ludwig.utils.data_utils import load_yaml
  from ludwig.utils.misc_utils import merge_dict
  from ludwig.utils.system_utils import Resources
label_desc: Use image node_id 10 for calling a global function with example usage: get_features_config(fields, row_count, target_name) and returns: get_config_from_metadata