summaryrefslogtreecommitdiff
path: root/Param/__init__.py
blob: eececb99150b595f37ee885dbeb9ee4cb00bafd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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)))