code: def test_hyperopt_executor_with_metric(
      use_split, csv_filename, tmpdir, ray_cluster_4cpu
  ):
      run_hyperopt_executor(
          {"type": "variant_generator"},  # search_alg
          {"type": "ray", "num_samples": 2},  # executor
          2,
          csv_filename,
          tmpdir,
          validate_output_feature=True,
          validation_metric=ACCURACY,
          use_split=use_split,
      )
  
imports: import json
  import logging
  import os.path
  from typing import Dict, List
  import mlflow
  import pandas
  import pytest
  from mlflow.tracking import MlflowClient
  from ludwig.backend import initialize_backend
  from ludwig.callbacks import Callback
  from ludwig.constants import ACCURACY, AUTO, BATCH_SIZE, EXECUTOR, MAX_CONCURRENT_TRIALS, TRAINER
  from ludwig.contribs.mlflow import MlflowCallback
  from ludwig.globals import HYPEROPT_STATISTICS_FILE_NAME, MODEL_HYPERPARAMETERS_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 ludwig.utils.automl.utils import get_model_type
  from tests.integration_tests.utils import category_feature, generate_data, text_feature
label_desc: Use image node_id 4 for calling a global function with example usage: test_hyperopt_executor_with_metric(use_split, csv_filename, tmpdir, ray_cluster_4cpu) without return types