From f7b89d54027a3539e5f175fd851af38957ef0d48 Mon Sep 17 00:00:00 2001 From: Rajesh Digambar Bagul <102693488+Rajesh270712@users.noreply.github.com> Date: Tue, 9 Jun 2026 09:30:26 +0530 Subject: [PATCH] Make DecisionCertificate stringify to summary --- src/causalrl/identification/decision.py | 3 +++ tests/test_certify_decision.py | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/causalrl/identification/decision.py b/src/causalrl/identification/decision.py index 399d781..f56fb34 100644 --- a/src/causalrl/identification/decision.py +++ b/src/causalrl/identification/decision.py @@ -43,6 +43,9 @@ class DecisionCertificate(NamedTuple): msm_certified: bool | None # MSM layer robust to gamma_max? None if the MSM layer did not run summary: str + def __str__(self) -> str: + return self.summary + def certify_decision( outcomes: Sequence[float], diff --git a/tests/test_certify_decision.py b/tests/test_certify_decision.py index 361a123..b0e6080 100644 --- a/tests/test_certify_decision.py +++ b/tests/test_certify_decision.py @@ -103,9 +103,11 @@ def test_decision_string_follows_sign(self): def test_summary_is_human_readable(self): y, f, z = _confounded_rows(8000, 0.0, seed=8) - summary = certify_decision(y, f, confounder_bins=z).summary + cert = certify_decision(y, f, confounder_bins=z) + summary = cert.summary assert isinstance(summary, str) and summary assert "prefer treated" in summary + assert str(cert) == summary def test_requires_some_evidence(self): y, f, _ = _confounded_rows(200, 0.0)