Mercurial > hgrepos > Python > libs > data-schema
changeset 17:65f937fb8de7
Put the computation of the default problem severity into a new public function
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Fri, 07 Jul 2023 09:15:47 +0200 |
| parents | 2a9e7c4b717e |
| children | 94daf3381338 |
| files | data_schema/__init__.py |
| diffstat | 1 files changed, 21 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- 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'")
