import time import sys from Config import WORKING_DIR from Param.Int import ParamInt from Param.Raw import ParamRaw from Param.Bool import ParamBool from Param.Enum import ParamEnum from Param.Json import ParamJson from Param.Color import ParamColor from Param.Float import ParamFloat from Param.Img_url import ParamImg_url from Param.String import ParamString class Params(object): def __init__(self, classname="", **kwargs): self._working_dir = WORKING_DIR self._now = kwargs.get("now", str(int(time.time()))); self._classname = classname for key, value in kwargs.items(): setattr(self, key, value) def __iter__(self): for key, value in vars(self).iteritems(): yield key, value def err_warn(self, s, error=None): self._error_log(s, error=error); raise BadParamError("%s - %s" % (self._classname, s)) def __getattr__(self, key): try: return self.__getattribute__(key); except AttributeError: return None def err_fatal(self, s, error=None): self._log(s, error, fatal=True); sys.exit(1); def set_val(self, key, value, value_type=None, enum_values=None): try: self.__setattr__(key, value) except Exception as e: self.err_warn("key: %s value: %s" % (key, value), error=str(e)) def _error_log(self, s, error=None, fatal=False): message = "ERROR - BAD PARAM" if fatal: message += "- [FATAL] -" sys.stderr.write("{}:{} - {}\n".format(message, self._classname, s)) if error: sys.stderr.write("PARAM ERROR: {}\n".format(str(error)))