diff --git a/human_machine/trust_model.py b/human_machine/trust_model.py index ad35e5a..d11d489 100644 --- a/human_machine/trust_model.py +++ b/human_machine/trust_model.py @@ -1 +1,61 @@ -print("Hello World") +from __future__ import annotations + +from dataclasses import dataclass +from typing import Dict + +@dataclass +class TrustModel: + """ + Represents a trust score for a user. + + Attributes + ---------- + user_id : str + Identifier for the user. + score : float + The accumulated trust score. + """ + user_id: str + score: float = 0.0 + +class TrustEvaluator: + """ + Maintains and updates trust scores for users based on interactions. + """ + def __init__(self) -> None: + self._models: Dict[str, TrustModel] = {} + + def update(self, user_id: str, delta: float) -> TrustModel: + """ + Update the trust score for a user. + + Parameters + ---------- + user_id : str + Identifier for the user. + delta : float + Amount to adjust the trust score (positive or negative). + + Returns + ------- + TrustModel + The updated trust model for the user. + """ + model = self._models.get(user_id) + if model is None: + model = TrustModel(user_id=user_id) + self._models[user_id] = model + model.score += delta + return model + + def get_score(self, user_id: str) -> float: + """Return the current trust score for the given user.""" + return self._models.get(user_id, TrustModel(user_id)).score + +if __name__ == "__main__": + evaluator = TrustEvaluator() + evaluator.update("alice", 0.5) + evaluator.update("bob", -0.3) + evaluator.update("alice", 0.2) + print(evaluator.get_score("alice")) + print(evaluator.get_score("bob"))