code: def test_tune_params_validation(
      self,
      error_msg,
      metrics: List[pipeline_dp.Metric],
      is_public_partitions: bool,
  ):
      tune_options = _get_tune_options(metrics)
      contribution_histograms = histograms.DatasetHistograms(
          None, None, None, None, None, None, None
      )
      data_extractors = pipeline_dp.DataExtractors(
          privacy_id_extractor=lambda _: 0,
          partition_extractor=lambda _: 0,
      )
      public_partitions = [1] if is_public_partitions else None
      with self.assertRaisesRegex(ValueError, error_msg):
          parameter_tuning.tune(
              input,
              pipeline_dp.LocalBackend(),
              contribution_histograms,
              tune_options,
              data_extractors,
              public_partitions,
          )
  
imports: from absl.testing import absltest
  from absl.testing import parameterized
  from unittest import mock
  from unittest.mock import patch
  from typing import List, Optional
  import pipeline_dp
  import analysis
  from analysis import metrics
  from analysis import parameter_tuning
  from pipeline_dp.dataset_histograms import histograms
  from pipeline_dp.dataset_histograms import computing_histograms
label_desc: Use image node_id 12 for calling the ParameterTuning obj's underlying member method code with example usage: obj.test_tune_params_validation(error_msg, metrics, is_public_partitions) without return types