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().
docstr: Chooses DPStrategy for given sensitivities.
docstr_tok: ["Chooses","DPStrategy","for","given","sensitivities","."]
code: def get_dp_strategy(
      self, sensitivities: dp_computations.Sensitivities
  ) -> DPStrategy:
      """Chooses DPStrategy for given sensitivities."""
      if self._metric is None:
          # This is Select partitions case.
          return self._get_strategy_for_select_partition(
              sensitivities.l0
          )
      if self._is_public_partitions:
          return self._get_dp_strategy_for_public_partitions(
              sensitivities
          )
      if self.use_post_aggregation_thresholding(self._metric):
          return self._get_dp_strategy_with_post_aggregation_threshold(
              sensitivities.l0
          )
      return self._get_dp_strategy_private_partition(sensitivities)
  
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 4 for calling the DPStrategySelector obj's underlying member method code with example usage: obj.get_dp_strategy(sensitivities) and returns: self, self, self, self