# HG changeset patch # User Franz Glasner # Date 1688714147 -7200 # Node ID 65f937fb8de70275457ab3f67faa1a3349e4eea5 # Parent 2a9e7c4b717e9f8660fe78f4d0f3cb1c03dcd715 Put the computation of the default problem severity into a new public function diff -r 2a9e7c4b717e -r 65f937fb8de7 data_schema/__init__.py --- a/data_schema/__init__.py Fri Jul 07 02:33:28 2023 +0200 +++ b/data_schema/__init__.py Fri Jul 07 09:15:47 2023 +0200 @@ -21,7 +21,7 @@ __date__ = "|VCSJustDate|" __all__ = ["SEVERITY", "ERRORS", "WARNINGS", - "problem_message", + "problem_message", "problem_severity", "ValidationProblem", "SchemaError", "validate", "log_problem_cause"] @@ -146,6 +146,12 @@ def problem_message(pr): + """ + + :raises KeyError: the code in `pr` does not refer to + :class:`.ERRORS` or `.WARNINGS` + + """ if isinstance(pr, ValidationProblem): code = getattr(pr, "code", None) elif isinstance(pr, (ERRORS, WARNINGS)): @@ -158,6 +164,19 @@ return code.value +def problem_severity(pr): + """Get the default severity for error or warning code `pr` + + :raises TypeError: if `pr` is not in :class:`.ERRORS` or :class:`.WARNINGS` + + """ + if pr in ERRORS: + return SEVERITY.ERROR + if pr in WARNINGS: + return SEVERITY.WARNING + raise TypeError("invalid error or warning code: %r" % (pr, )) + + class ValidationProblem(object): __slots__ = ("code", "severity", "hint", "context", "cause", "index") @@ -177,13 +196,7 @@ "unknown validation error code: {}".format(code)) self.code = code if severity is None: - # autodetermine - if code in ERRORS: - self.severity = SEVERITY.ERROR - elif code in WARNINGS: - self.severity = SEVERITY.WARNING - else: - assert False + self.severity = problem_severity(code) else: if not isinstance(severity, SEVERITY): raise TypeError("invalid type for `severity'")