Mercurial > hgrepos > Python > libs > data-schema
diff data_schema/__init__.py @ 16:2a9e7c4b717e
Problem severity now is also an enum
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Fri, 07 Jul 2023 02:33:28 +0200 |
| parents | 696b83f29363 |
| children | 65f937fb8de7 |
line wrap: on
line diff
--- a/data_schema/__init__.py Fri Jul 07 02:17:45 2023 +0200 +++ b/data_schema/__init__.py Fri Jul 07 02:33:28 2023 +0200 @@ -20,8 +20,8 @@ __date__ = "|VCSJustDate|" -__all__ = ["ERROR", "WARNING", "INFO", "ERRORS", "WARNINGS", - "level_name", "problem_message", +__all__ = ["SEVERITY", "ERRORS", "WARNINGS", + "problem_message", "ValidationProblem", "SchemaError", "validate", "log_problem_cause"] @@ -47,16 +47,11 @@ return msg -ERROR = 40 -WARNING = 30 -INFO = 20 - -_level_to_name = { - ERROR: "ERROR", - WARNING: "WARNING", - INFO: "INFO", -} -_name_to_level = {name: level for (level, name) in _level_to_name.items()} +@enum.unique +class SEVERITY(enum.IntEnum): + INFO = 20 + WARNING = 30 + ERROR = 40 @enum.unique @@ -150,13 +145,6 @@ """URI path to the current schema""" -def level_name(level): - name = _level_to_name.get(level) - if name is None: - name = "Level {}".format(level) - return name - - def problem_message(pr): if isinstance(pr, ValidationProblem): code = getattr(pr, "code", None) @@ -191,12 +179,14 @@ if severity is None: # autodetermine if code in ERRORS: - self.severity = ERROR + self.severity = SEVERITY.ERROR elif code in WARNINGS: - self.severity = WARNING + self.severity = SEVERITY.WARNING else: assert False else: + if not isinstance(severity, SEVERITY): + raise TypeError("invalid type for `severity'") self.severity = severity self.hint = hint self.context = context @@ -216,11 +206,11 @@ except LookupError: msg = "" if self.index is None: - return "ValidationProblem(code={}{}, severity={!r}, hint={}, context=[depth={}]{})".format( - self.code.name, msg, self.severity, self.hint, self.context.depth, self.context) + return "ValidationProblem(code={}{}, severity={}, hint={}, context=[depth={}]{})".format( + self.code.name, msg, self.severity.name, self.hint, self.context.depth, self.context) else: - return "ValidationProblem(code={}{}, severity={!r}, hint={}, context=[depth={}]{}, index={})".format( - self.code.name, msg, self.severity, self.hint, self.context.depth, self.context, self.index) + return "ValidationProblem(code={}{}, severity={}, hint={}, context=[depth={}]{}, index={})".format( + self.code.name, msg, self.severity.name, self.hint, self.context.depth, self.context, self.index) class SchemaError(Exception):
