NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)