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"