Enum now takes values as args instead of a list

This commit is contained in:
Christophe de Vienne 2011-10-28 18:19:00 +02:00
parent d867bd92db
commit a1983697c7
3 changed files with 13 additions and 5 deletions

View File

@ -29,7 +29,7 @@ class CallException(RuntimeError):
self.faultcode, self.faultstring, self.debuginfo)
myenumtype = wsme.types.Enum(str, set(['v1', 'v2']))
myenumtype = wsme.types.Enum(str, 'v1', 'v2')
class NestedInner(object):
@ -220,6 +220,7 @@ class ArgTypes(object):
assert type(value) == str
return value
class WithErrors(object):
@expose()
def divide_by_zero(self):

View File

@ -135,7 +135,7 @@ class TestTypes(unittest.TestCase):
assert AType().test == 'test'
def test_enum(self):
aenum = types.Enum(str, ['v1', 'v2'])
aenum = types.Enum(str, 'v1', 'v2')
assert aenum.basetype is str
class AType(object):
@ -149,7 +149,6 @@ class TestTypes(unittest.TestCase):
obj.a = 'v1'
assert obj.a == 'v1'
try:
obj.a = 'v3'
assert False, 'ValueError was not raised'

View File

@ -4,6 +4,7 @@ import decimal
import inspect
import weakref
class UserType(object):
basetype = None
@ -45,10 +46,16 @@ class Enum(UserType):
:param values: A set of possible values
If nullable, 'None' should be added the values set.
Example::
Gender = Enum(str, 'male', 'female')
Specie = Enum(str, 'cat', 'dog')
"""
def __init__(self, basetype, values):
def __init__(self, basetype, *values):
self.basetype = basetype
self.values = values
self.values = set(values)
def validate(self, value):
if value not in self.values:
@ -91,6 +98,7 @@ def validate_value(datatype, value):
datatype, type(value)
))
class wsproperty(property):
"""
A specialised :class:`property` to define typed-property on complex types.