code: def test_autoconfig_preprocessing_text_image(tmpdir):
      image_dest_folder = os.path.join(tmpdir, "generated_images")
  
      input_features = [
          text_feature(preprocessing={"tokenizer": "space"}),
          image_feature(folder=image_dest_folder),
      ]
      output_features = [category_feature(output_feature=True)]
  
      # Generate Dataset
      rel_path = generate_data(
          input_features,
          output_features,
          os.path.join(tmpdir, "dataset.csv"),
      )
      df = pd.read_csv(rel_path)
      target = df.columns[-1]
  
      config = create_auto_config(
          dataset=df, target=target, time_limit_s=1
      )
  
      # Ensure our configs are using the latest Ludwig schema
      ModelConfig.from_dict(config)
  
      # Check no features shuffled around
      assert len(input_features) == 2
      assert len(output_features) == 1
  
      # Check encoders are properly nested
      assert isinstance(config[INPUT_FEATURES][0][ENCODER], dict)
      assert isinstance(config[INPUT_FEATURES][1][ENCODER], dict)
  
      # Check automl default encoders are properly set
      assert config[INPUT_FEATURES][0][ENCODER][TYPE] == "bert"
      assert config[INPUT_FEATURES][1][ENCODER][TYPE] == "stacked_cnn"
  
imports: import os
  import tempfile
  from typing import List, Set
  from unittest import mock
  import numpy
  import pandas
  import pytest
  from ludwig.api import LudwigModel
  from ludwig.constants import COLUMN, ENCODER, INPUT_FEATURES, NAME, OUTPUT_FEATURES, PREPROCESSING, SPLIT, TYPE
  from ludwig.schema.model_types.base import ModelConfig
  from ludwig.types import FeatureConfigDict, ModelConfigDict
  from ludwig.utils.misc_utils import merge_dict
  from tests.integration_tests.utils import binary_feature, category_feature, generate_data, image_feature, minio_test_creds, number_feature, private_param, remote_tmpdir, text_feature
  import dask.dataframe
  from ray.tune.experiment.trial import Trial
  from ludwig.automl import auto_train, create_auto_config, train_with_config
  from ludwig.automl.automl import OUTPUT_DIR
  from ludwig.hyperopt.execution import RayTuneExecutor
label_desc: Use image node_id 14 for calling a global function with example usage: test_autoconfig_preprocessing_text_image(tmpdir) without return types