idea131-fleetopt-verifiable.../core/privacy.py

22 lines
541 B
Python

from __future__ import annotations
from dataclasses import dataclass, field
from typing import Dict
@dataclass
class PrivacyBudget:
epsilon: float
remaining: Dict[str, float] = field(default_factory=dict)
def __post_init__(self):
if not self.remaining:
self.remaining = {}
def allocate(self, signal: str, amount: float) -> bool:
rem = self.remaining.get(signal, self.epsilon)
if amount > rem:
return False
self.remaining[signal] = rem - amount
return True