code: def test_hyperopt_run_hyperopt(
      csv_filename, ray_mock_dir, ray_cluster_7cpu
  ):
      input_features = [number_feature()]
      output_features = [binary_feature()]
  
      csv_filename = os.path.join(ray_mock_dir, "dataset.csv")
      dataset_csv = generate_data(
          input_features,
          output_features,
          csv_filename,
          num_examples=100,
      )
      dataset_parquet = create_data_set_to_use("parquet", dataset_csv)
  
      config = {
          "input_features": input_features,
          "output_features": output_features,
          "combiner": {"type": "concat"},
          TRAINER: {
              "epochs": 1,
              "learning_rate": 0.001,
              BATCH_SIZE: 128,
          },
          "backend": {"type": "ray", **RAY_BACKEND_KWARGS},
      }
  
      output_feature_name = output_features[0]["name"]
  
      hyperopt_configs = {
          "parameters": {
              "trainer.learning_rate": {
                  "space": "loguniform",
                  "lower": 0.001,
                  "upper": 0.1,
              },
              output_feature_name
              + ".output_size": {
                  "space": "randint",
                  "lower": 2,
                  "upper": 8,
              },
          },
          "goal": "minimize",
          "output_feature": output_feature_name,
          "validation_metrics": "loss",
          "executor": {"type": "ray", "num_samples": 2},
          "search_alg": {"type": "variant_generator"},
      }
  
      # add hyperopt parameter space to the config
      config["hyperopt"] = hyperopt_configs
      run_hyperopt(config, dataset_parquet, ray_mock_dir)
  
imports: import os.path
  import shutil
  import uuid
  from unittest.mock import patch
  import pytest
  from ludwig.api import LudwigModel
  from ludwig.callbacks import Callback
  from ludwig.constants import ACCURACY, AUTO, BATCH_SIZE, EXECUTOR, MAX_CONCURRENT_TRIALS, TRAINER
  from ludwig.globals import HYPEROPT_STATISTICS_FILE_NAME
  from ludwig.hyperopt.results import HyperoptResults
  from ludwig.hyperopt.run import hyperopt
  from ludwig.hyperopt.utils import update_hyperopt_params_with_defaults
  from ludwig.schema.model_config import ModelConfig
  from tests.integration_tests.utils import binary_feature, create_data_set_to_use, generate_data, number_feature
label_desc: Use image node_id 8 for calling a global function with example usage: test_hyperopt_run_hyperopt(csv_filename, ray_mock_dir, ray_cluster_7cpu) without return types