code: def test_compute_public_partitions_summary(self):
      dataset = list(range(100))
      public_partitions = list(range(60, 121))
      extractors = pipeline_dp.DataExtractors(
          partition_extractor=lambda x: x,
          privacy_id_extractor=lambda _: 0,
      )
  
      summary = dataset_summary.compute_public_partitions_summary(
          dataset,
          pipeline_dp.LocalBackend(),
          extractors,
          public_partitions,
      )
  
      summary = list(summary)[0]
  
      self.assertEqual(summary.num_dataset_public_partitions, 40)
      self.assertEqual(summary.num_dataset_non_public_partitions, 60)
      self.assertEqual(summary.num_empty_public_partitions, 21)
  
imports: from absl.testing import absltest
  from absl.testing import parameterized
  from analysis import dataset_summary
  import pipeline_dp
label_desc: Use image node_id 1 for calling the PublicDatasetSummaryTest obj's underlying member method code with example usage: obj.test_compute_public_partitions_summary() without return types