cdsuc.py (1681B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\cdsuc.py 2 import types 3 import itertools 4 5 class EnumList(object): 6 7 def __init__(self, *data): 8 __data = {} 9 for each in iter(data): 10 if type(each) in types.StringTypes: 11 val = intern(each.lower()) 12 __data[val] = val 13 self.__dict__[val.upper()] = val 14 15 self.__data = __data 16 17 def __getattr__(self, name): 18 lname = str(name).lower() 19 val = self.__data.get(lname, None) 20 if val: 21 return val 22 raise AttributeError, name 23 24 def __iter__(self): 25 for each in self.__data: 26 yield each 27 28 def __add__(self, other): 29 l = list(itertools.chain(self, other)) 30 return EnumList(*l) 31 32 def __radd__(self, other): 33 return self + other 34 35 def __sub__(self, other): 36 return itertools.ifilter(lambda x: x not in iter(other), self) 37 38 def __str__(self): 39 sortedUpperCaseKeys = map(lambda x: x.upper(), self.__data.keys()) 40 sortedUpperCaseKeys.sort() 41 return ', '.join(sortedUpperCaseKeys) 42 43 44 class SpyMixin(object): 45 46 def SetWatchAttributes(self, *args): 47 object.__setattr__(self, 'attributesUnderWatch', []) 48 for arg in args: 49 self.attributesUnderWatch.append(arg) 50 51 def __setattr__(self, name, value): 52 if not hasattr(self, 'attributesUnderWatch'): 53 object.__setattr__(self, 'attributesUnderWatch', []) 54 if name in self.attributesUnderWatch: 55 print 'Setting %s to value %s' % (name, repr(value)) 56 object.__setattr__(self, name, value)