wadebug/results.py (48 lines of code) (raw):

# Copyright (c) Facebook, Inc. and its affiliates. # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. from __future__ import absolute_import, division, print_function, unicode_literals from wadebug.config import Config class Result: def to_dict(self): ret = { "class": self.action.__name__, "user_facing_name": self.action.user_facing_name, "result": self.result, "short_description": self.action.short_description, "message": self.message, "details": self.details, "remediation": self.remediation, } if Config().development_mode and hasattr(self, "traceback"): ret["traceback"] = self.traceback return ret @property def result(self): """String value of the result.""" return self.__class__.__name__.lower() class OK(Result): def to_dict(self): return { "class": self.action.__name__, "user_facing_name": self.action.user_facing_name, "result": self.__class__.__name__, } def __init__(self, action): self.action = action class _NotOK(Result): """Intermediate class to create cases where something is wrong.""" def __init__(self, action, message, details, remediation, traceback=None): self.action = action self.message = message if isinstance(details, Exception): self.details = str(details) self.traceback = traceback else: self.details = details self.remediation = remediation class Warning(_NotOK): pass class Skipped(_NotOK): pass class Problem(_NotOK): pass class WADebugError(_NotOK): @property def result(self): return "wadebug_error"