108
108
for k, v in kw.iteritems():
109
109
setattr(self, k, v)
111
def getattributes(self):
113
Fetches the attributes used to create this object
114
@returns: a dictionary with attributes
111
118
def __repr__(self):
112
119
return '<%s %s>' % (self.__class__.__name__,
168
175
_no_deprecation = old
180
enum is an enumered type implementation in python.
182
To use it, define an enum subclass like this:
184
>>> from kiwi.python import enum
186
>>> class Status(enum):
187
>>> OPEN, CLOSE = range(2)
189
'<Status value OPEN>'
191
All the integers defined in the class are assumed to be enums and
192
values cannot be duplicated
195
__metaclass__ = ClassInittableMetaType
198
def __class_init__(cls, ns):
199
cls.names = {} # name -> enum
200
cls.values = {} # value -> enum
202
for key, value in ns.items():
203
if isinstance(value, int):
205
__class_init__ = classmethod(__class_init__)
210
Lookup an enum by value
211
@param value: the value
213
if not value in cls.values:
214
raise ValueError("There is no enum for value %d" % (value,))
215
return cls.values[value]
216
get = classmethod(get)
218
def __new__(cls, value, name):
220
@param value: value of the enum
221
@param name: name of the enum
223
if name in cls.names:
224
raise ValueError("There is already an enum called %s" % (name,))
226
if value in cls.values:
228
"Error while creating enum %s of type %s, "
229
"it has already been created as %s" % (
230
value, cls.__name__, cls.values[value]))
232
self = super(enum, cls).__new__(cls, value)
235
cls.values[value] = self
236
cls.names[name] = self
237
setattr(cls, name, self)
242
return '<%s value %s>' % (
243
self.__class__.__name__, self.name)
248
@returns: True if all items in seq are True
257
@returns: True if any item in seq is True