class_docstr: Chooses DPStrategy based on DP budget, computation sensitivites, etc
  
  It chooses noise_kind to minimize the noise std deviation.
  For non-public partitions it chooses partition selection strategy to
  minimize threshold. For more details see docstring to
  select_partition_selection_strategy().
code: def _get_dp_strategy_private_partition(
      self, sensitivities: dp_computations.Sensitivities
  ) -> DPStrategy:
      half_epsilon, half_delta = self._epsilon / 2, self._delta / 2
      noise_kind = self.select_noise_kind(
          half_epsilon, half_delta, sensitivities
      )
      partition_selection_strategy = (
          self.select_partition_selection_strategy(
              half_epsilon, half_delta, sensitivities.l0
          )
      )
      return DPStrategy(
          noise_kind=noise_kind,
          partition_selection_strategy=partition_selection_strategy,
          post_aggregation_thresholding=False,
      )
  
imports: from dataclasses import dataclass
  from typing import Optional
  import pipeline_dp
  from pipeline_dp import aggregate_params
  from pipeline_dp import dp_computations
  from pipeline_dp import input_validators
label_desc: Use image node_id 8 for calling the DPStrategySelector obj's underlying member method code with example usage: obj._get_dp_strategy_private_partition(sensitivities) and returns: DPStrategy