class_docstr: Manages the privacy budget for privacy loss distributions.
  
  It manages the privacy budget for the pipeline using the
  Privacy Loss Distribution (PLD) implementation from Google's
  dp_accounting library.
  
  This class is experimental. It is not yet compatible with DPEngine.
class_docstr_tok: ["Manages","the","privacy","budget","for","privacy","loss","distributions",".","It","manages","the","privacy","budget","for","the","pipeline","using","the","Privacy","Loss","Distribution","(","PLD",")","implementation","from","Google's","dp_accounting","library",".","This","class","is","experimental",".","It","is","not","yet","compatible","with","DPEngine","."]
docstr: Constructs a PLDBudgetAccountant.
  
  Args:
      total_epsilon: epsilon for the entire pipeline.
      total_delta: delta for the entire pipeline.
      pld_discretization: `value_discretization_interval` in PLD library.
          Smaller interval results in better accuracy, but increases running time.
        num_aggregations: number of DP aggregations in the pipeline for
       which  'self' manages the budget. All aggregations should have
       'budget_weight' = 1. When specified all aggregations will have
       equal budget. It is useful to ensure that the pipeline has fixed
       number of DP aggregations.
      aggregation_weights: 'budget_weight' of aggregations for which
       'self' manages the budget. It is useful to ensure that the pipeline
        has a fixed number of DP aggregations with fixed weights.
  
  If num_aggregations and aggregation_weights are not set, there are no
  restrictions on the number of aggregations nor their budget weights.
  
  
  Raises:
      ValueError: Arguments are missing or out of range.
docstr_tok: ["Constructs","a","PLDBudgetAccountant",".","Args",":","total_epsilon",":","epsilon","for","the","entire","pipeline",".","total_delta",":","delta","for","the","entire","pipeline",".","pld_discretization",":","`","value_discretization_interval","`","in","PLD","library",".","Smaller","interval","results","in","better","accuracy",",","but","increases","running","time",".","num_aggregations",":","number","of","DP","aggregations","in","the","pipeline","for","which","'self","'","manages","the","budget",".","All","aggregations","should","have","'budget_weight","'","=","1",".","When","specified","all","aggregations","will","have","equal","budget",".","It","is","useful","to","ensure","that","the","pipeline","has","fixed","number","of","DP","aggregations",".","aggregation_weights",":","'budget_weight","'","of","aggregations","for","which","'self","'","manages","the","budget",".","It","is","useful","to","ensure","that","the","pipeline","has","a","fixed","number","of","DP","aggregations","with","fixed","weights",".","If","num_aggregations","and","aggregation_weights","are","not","set",",","there","are","no","restrictions","on","the","number","of","aggregations","nor","their","budget","weights",".","Raises",":","ValueError",":","Arguments","are","missing","or","out","of","range","."]
code: def __init__(
      self,
      total_epsilon: float,
      total_delta: float,
      pld_discretization: float = 1e-4,
      num_aggregations: Optional[int] = None,
      aggregation_weights: Optional[list] = None,
  ):
      """Constructs a PLDBudgetAccountant.
  
      Args:
          total_epsilon: epsilon for the entire pipeline.
          total_delta: delta for the entire pipeline.
          pld_discretization: `value_discretization_interval` in PLD library.
              Smaller interval results in better accuracy, but increases running time.
            num_aggregations: number of DP aggregations in the pipeline for
           which  'self' manages the budget. All aggregations should have
           'budget_weight' = 1. When specified all aggregations will have
           equal budget. It is useful to ensure that the pipeline has fixed
           number of DP aggregations.
          aggregation_weights: 'budget_weight' of aggregations for which
           'self' manages the budget. It is useful to ensure that the pipeline
            has a fixed number of DP aggregations with fixed weights.
  
      If num_aggregations and aggregation_weights are not set, there are no
      restrictions on the number of aggregations nor their budget weights.
  
  
      Raises:
          ValueError: Arguments are missing or out of range.
      """
  
      super().__init__(
          total_epsilon,
          total_delta,
          num_aggregations,
          aggregation_weights,
      )
  
      if not _check_pldlib_imported():
          raise ImportError(
              "dp_accounting library is not imported. It is"
              "required for using PLD budget accounting. "
              "Please install dp_accounting library or use"
              "NaiveBudgetAccountant instead of "
              "PLDBudgetAccountant"
          )
  
      self.minimum_noise_std = None
      self._pld_discretization = pld_discretization
  
imports: import abc
  import collections
  import logging
  import math
  from typing import Optional
  from dataclasses import dataclass
  import pipeline_dp.aggregate_params
  from pipeline_dp import input_validators
label_desc: Use image node_id 1 to create a new PLDBudgetAccountant object from inherited base classes: BudgetAccountant with example: obj = PLDBudgetAccountant(total_epsilon, total_delta, pld_discretization, num_aggregations, aggregation_weights)