class_docstr: Specifies parameters for multi-parameter Utility Analysis.
  
  All MultiParameterConfiguration attributes corresponds to attributes in
  pipeline_dp.AggregateParams.
  
  UtilityAnalysisEngine can perform utility analysis for multiple sets of
  parameters simultaneously. API for this is the following:
  1. Specify blue-print AggregateParams instance.
  2. Set MultiParameterConfiguration attributes (see the example below). Note
  that each attribute is a sequence of parameter values for which the utility
  analysis will be run. All attributes that have non-None values must have
  the same length.
  3. Pass the created objects to UtilityAnalysisEngine.aggregate().
  
  Example:
      max_partitions_contributed = [1, 2]
      max_contributions_per_partition = [10, 11]
  
      Then the utility analysis will be performed for
        AggregateParams(max_partitions_contributed=1, max_contributions_per_partition=10)
        AggregateParams(max_partitions_contributed=2, max_contributions_per_partition=11)
code: def __post_init__(self):
      attributes = dataclasses.asdict(self)
      sizes = [len(value) for value in attributes.values() if value]
      if not sizes:
          raise ValueError(
              "MultiParameterConfiguration must have at least 1"
              " non-empty attribute."
          )
      if min(sizes) != max(sizes):
          raise ValueError(
              "All set attributes in MultiParameterConfiguration must have "
              "the same length."
          )
      if (self.min_sum_per_partition is None) != (
          self.max_sum_per_partition is None
      ):
          raise ValueError(
              "MultiParameterConfiguration: min_sum_per_partition and "
              "max_sum_per_partition must be both set or both None."
          )
      self._size = sizes[0]
  
file_path: pipelinedp/analysis/data_structures.py
imports: import copy
  import dataclasses
  from typing import Iterable, Optional, Sequence, Union
  import pipeline_dp
  from pipeline_dp import input_validators
label_desc: Use image node_id 1 for calling the MultiParameterConfiguration obj's underlying member method code with example usage: obj.__post_init__() without return types