diff options
Diffstat (limited to 'lib/Params/__init__.py')
| -rw-r--r-- | lib/Params/__init__.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/Params/__init__.py b/lib/Params/__init__.py new file mode 100644 index 0000000..e3ba10b --- /dev/null +++ b/lib/Params/__init__.py @@ -0,0 +1,65 @@ +import re +import os +import sys +from Param import * + +class BadParamError(Exception): + pass + +class Params(object): + def __init__(self, **kwargs): + for key, value in kwargs.items(): + setattr(self, key, value) + + def __iter__(self): + for key, value in vars(self).iteritems(): + yield key, value + + 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))) + + 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 definitions_import(self, def_dict, classkwargs, classname=""): + value = None + for key in def_dict.keys(): + try: + value = None + if key in classkwargs: + value = classkwargs[key] + elif 'default' in def_dict[key]: + value = def_dict[key]['default'] + if def_dict[key]['type'] == "bool": + instance = ParamBool(value, classname=classname) + elif def_dict[key]['type'] == "color": + instance = ParamColor(value, classname=classname) + elif def_dict[key]['type'] == "enum": + instance = ParamEnum(value, enum_values=def_dict[key]['enum_values'], classname=classname) + elif def_dict[key]['type'] == "float": + instance = ParamFloat(value, classname=classname) + elif def_dict[key]['type'] == "img_url": + instance = ParamImg_url(value, key=key, classname=classname) + elif def_dict[key]['type'] == "int": + instance = ParamInt(value, classname=classname) + elif def_dict[key]['type'] == "json": + instance = ParamJson(value, classname=classname) + elif def_dict[key]['type'] == "raw": + instance = ParamRaw(value, classname=classname) + elif def_dict[key]['type'] == "string": + instance = ParamString(value, classname=classname) + self.__setattr__(key, instance) + except Exception as e: + self.err_warn("key: %s value: %s" % (key, str(def_dict[key])), error=str(e)) + |
