code: def check_tagger_decoder_requirements(
      config: "ModelConfig",
  ) -> None:  # noqa: F821
      """Checks that the tagger decoder has at least one sequence, text or timeseries input feature where the
      encoder's reduce_output will produce a 3D shaped output from the combiner.
      """
      # Check if there is a text or sequence output feature using a tagger decoder
      output_feature_with_tagger_decoder = False
      for output_feature in config.output_features:
          if (
              output_feature.type in {TEXT, SEQUENCE}
              and output_feature.decoder.type == "tagger"
          ):
              output_feature_with_tagger_decoder = True
  
      if not output_feature_with_tagger_decoder:
          return
  
      # Check that there is at least one sequence, text or timeseries input feature that doesn't reduce the
      # output of the encoder.
      has_sequence_feature = False
      for input_feature in config.input_features:
          if input_feature.type in {SEQUENCE, TEXT, TIMESERIES}:
              has_sequence_feature = True
              if input_feature.encoder.reduce_output is None:
                  return
  
      if not has_sequence_feature:
          raise ConfigValidationError(
              "Tagger decoder requires at least one text, sequence or timeseries input feature."
          )
      else:
          raise ConfigValidationError(
              "Tagger decoder requires at least one of the text, sequence or timeseries input feature encoders to have "
              "`reduce_output` set to `None`."
          )
  
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 20 for calling a global function with example usage: check_tagger_decoder_requirements(config) without return types