class_docstr: Specifies parameters for function DPEngine.calculate_private_contribution_bounds()
  
  WARNING: Aggregation, where the calculated bounds will be used, should be
  one of the following: COUNT, PRIVACY_ID_COUNT.
  Other aggregations (metrics in AggregateParams) are not supported.
  
  Attributes:
      aggregation_noise_kind: noise that will be used in the aggregation.
      aggregation_eps: epsilon that will be used in the aggregation.
      aggregation_delta: delta that will be used in the aggregation.
      calculation_eps: epsilon that will be used in the computation
        of private contribution bounds.
      max_partitions_contributed_upper_bound: The biggest ever possible value
        for max_partitions_contributed.
code: def __post_init__(self):
      input_validators.validate_epsilon_delta(
          self.aggregation_eps,
          self.aggregation_delta,
          "CalculatePrivateContributionBoundsParams",
      )
      if self.aggregation_noise_kind is None:
          raise ValueError("aggregation_noise_kind must be set.")
      if (
          self.aggregation_noise_kind == NoiseKind.GAUSSIAN
          and self.aggregation_delta == 0
      ):
          raise ValueError(
              "The Gaussian noise requires that the aggregation_delta is "
              "greater than 0."
          )
      input_validators.validate_epsilon_delta(
          self.calculation_eps,
          0,
          "CalculatePrivateContributionBoundsParams",
      )
      _check_is_positive_int(
          self.max_partitions_contributed_upper_bound,
          "max_partitions_contributed_upper_bound",
      )
  
imports: import logging
  import math
  from dataclasses import dataclass
  from enum import Enum
  from typing import Any, Sequence, Callable, Optional, List
  import numpy
  from pipeline_dp import input_validators
label_desc: Use image node_id 1 for calling the CalculatePrivateContributionBoundsParams obj's underlying member method code with example usage: obj.__post_init__() without return types