hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

eligibility.mojo (1285B)


      1 from std.collections import List
      2 
      3 
      4 @fieldwise_init
      5 struct ConstraintAssessment(Copyable, Movable):
      6     var kind: String
      7     var result: String
      8     var mandatory: Bool
      9     var reason: String
     10 
     11 
     12 def constraint_assessment(
     13     kind: String, result: String, mandatory: Bool, reason: String
     14 ) raises -> ConstraintAssessment:
     15     if kind.strip() == "":
     16         raise Error("constraint kind must not be empty")
     17     if result != "pass" and result != "fail" and result != "unknown":
     18         raise Error("constraint result must be 'pass', 'fail' or 'unknown'")
     19     if reason.strip() == "":
     20         raise Error("constraint reason must not be empty")
     21     return ConstraintAssessment(
     22         kind=String(kind),
     23         result=String(result),
     24         mandatory=mandatory,
     25         reason=String(reason),
     26     )
     27 
     28 
     29 def compose_eligibility(checks: List[ConstraintAssessment]) -> String:
     30     var mandatory_fail = False
     31     var mandatory_unknown = False
     32     for check in checks:
     33         if not check.mandatory:
     34             continue
     35         if check.result == "fail":
     36             mandatory_fail = True
     37         elif check.result == "unknown":
     38             mandatory_unknown = True
     39     if mandatory_fail:
     40         return "ineligible"
     41     if mandatory_unknown:
     42         return "conditional"
     43     return "eligible"