code: def run_test_parquet(
      input_features,
      output_features,
      num_examples=100,
      run_fn=run_api_experiment,
      expect_error=False,
  ):
      tf.config.experimental_run_functions_eagerly(True)
      with ray_start_2_cpus():
          config = {
              "input_features": input_features,
              "output_features": output_features,
              "combiner": {"type": "concat", "fc_size": 14},
              "training": {"epochs": 2, "batch_size": 8},
          }
  
          with tempfile.TemporaryDirectory() as tmpdir:
              csv_filename = os.path.join(tmpdir, "dataset.csv")
              dataset_csv = generate_data(
                  input_features,
                  output_features,
                  csv_filename,
                  num_examples=num_examples,
              )
              dataset_parquet = create_data_set_to_use(
                  "parquet", dataset_csv
              )
  
              if expect_error:
                  with pytest.raises(ValueError):
                      run_fn(config, data_parquet=dataset_parquet)
              else:
                  run_fn(config, data_parquet=dataset_parquet)
  
file_path: ray/python/ray/tests/ludwig/test_ludwig.py
imports: import contextlib
  import os
  import tempfile
  import pytest
  import ray
label_desc: Use image node_id 3 for calling a global function with example usage: run_test_parquet(input_features, output_features, num_examples, run_fn, expect_error) without return types