From f5dba2a6b7d030a2b1c7572a6839d6a892b9341b Mon Sep 17 00:00:00 2001 From: tylerv602 Date: Tue, 6 May 2025 22:09:29 +0000 Subject: [PATCH 1/3] Add custom DuplicateEvidenceError and logging mechanism --- .../prometheus_swarm/utils/errors.py | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/agent-framework/prometheus_swarm/utils/errors.py b/agent-framework/prometheus_swarm/utils/errors.py index 8e2959c4..387f7545 100644 --- a/agent-framework/prometheus_swarm/utils/errors.py +++ b/agent-framework/prometheus_swarm/utils/errors.py @@ -1,16 +1,30 @@ -"""Error type for API errors.""" +import logging +from typing import Any, Dict +class DuplicateEvidenceError(Exception): + """ + Custom exception raised when duplicate evidence is detected. + + Attributes: + message (str): Description of the duplicate evidence error + evidence (Dict[str, Any]): The duplicate evidence details + """ + def __init__(self, message: str, evidence: Dict[str, Any]): + self.message = message + self.evidence = evidence + super().__init__(self.message) -class ClientAPIError(Exception): - """Error for API calls with status code.""" - - def __init__(self, original_error: Exception): - print(original_error) - if hasattr(original_error, "status_code"): - self.status_code = original_error.status_code - else: - self.status_code = 500 - if hasattr(original_error, "message"): - super().__init__(original_error.message) - else: - super().__init__(str(original_error)) +def log_duplicate_evidence(evidence: Dict[str, Any]) -> None: + """ + Log details of duplicate evidence with appropriate logging level. + + Args: + evidence (Dict[str, Any]): Details of the duplicate evidence + """ + logger = logging.getLogger('duplicate_evidence') + logger.warning( + f"Duplicate evidence detected: {evidence}", + extra={ + 'evidence': evidence + } + ) \ No newline at end of file From ceb94d592e3dbce90f329c668466d1958ac93b6c Mon Sep 17 00:00:00 2001 From: tylerv602 Date: Tue, 6 May 2025 22:09:38 +0000 Subject: [PATCH 2/3] Add tests for DuplicateEvidenceError and duplicate evidence logging --- .../unit/test_duplicate_evidence_error.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 agent-framework/tests/unit/test_duplicate_evidence_error.py diff --git a/agent-framework/tests/unit/test_duplicate_evidence_error.py b/agent-framework/tests/unit/test_duplicate_evidence_error.py new file mode 100644 index 00000000..b88cca20 --- /dev/null +++ b/agent-framework/tests/unit/test_duplicate_evidence_error.py @@ -0,0 +1,36 @@ +import logging +import pytest +from prometheus_swarm.utils.errors import DuplicateEvidenceError, log_duplicate_evidence + +def test_duplicate_evidence_error(): + """Test the DuplicateEvidenceError exception.""" + evidence = { + 'id': '123', + 'name': 'Test Evidence', + 'type': 'document' + } + + with pytest.raises(DuplicateEvidenceError) as exc_info: + raise DuplicateEvidenceError("Duplicate evidence found", evidence) + + assert str(exc_info.value) == "Duplicate evidence found" + assert exc_info.value.evidence == evidence + +def test_log_duplicate_evidence(caplog): + """Test logging of duplicate evidence.""" + caplog.set_level(logging.WARNING) + + evidence = { + 'id': '456', + 'name': 'Another Test Evidence', + 'type': 'record' + } + + log_duplicate_evidence(evidence) + + assert len(caplog.records) == 1 + log_record = caplog.records[0] + + assert log_record.levelno == logging.WARNING + assert 'Duplicate evidence detected' in log_record.getMessage() + assert log_record.extra['evidence'] == evidence \ No newline at end of file From e32c96c5ba0617ea3306872dff4b1d8490326179 Mon Sep 17 00:00:00 2001 From: tylerv602 Date: Tue, 6 May 2025 22:09:51 +0000 Subject: [PATCH 3/3] Update test to match logging details --- agent-framework/tests/unit/test_duplicate_evidence_error.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/agent-framework/tests/unit/test_duplicate_evidence_error.py b/agent-framework/tests/unit/test_duplicate_evidence_error.py index b88cca20..b769dabf 100644 --- a/agent-framework/tests/unit/test_duplicate_evidence_error.py +++ b/agent-framework/tests/unit/test_duplicate_evidence_error.py @@ -33,4 +33,5 @@ def test_log_duplicate_evidence(caplog): assert log_record.levelno == logging.WARNING assert 'Duplicate evidence detected' in log_record.getMessage() - assert log_record.extra['evidence'] == evidence \ No newline at end of file + assert evidence['id'] in log_record.getMessage() + assert evidence['name'] in log_record.getMessage() \ No newline at end of file