diff --git a/oslo_versionedobjects/fields.py b/oslo_versionedobjects/fields.py index 670f911d..edda623d 100644 --- a/oslo_versionedobjects/fields.py +++ b/oslo_versionedobjects/fields.py @@ -293,7 +293,7 @@ class Enum(String): @property def valid_values(self): - return tuple(self._valid_values) + return copy.copy(self._valid_values) def coerce(self, obj, attr, value): if value not in self._valid_values: diff --git a/oslo_versionedobjects/tests/test_fields.py b/oslo_versionedobjects/tests/test_fields.py index 4479bf01..7eb17a97 100644 --- a/oslo_versionedobjects/tests/test_fields.py +++ b/oslo_versionedobjects/tests/test_fields.py @@ -55,7 +55,7 @@ class FakeEnumAlt(fields.Enum): PLATYPUS = "platypus" AARDVARK = "aardvark" - ALL = (FROG, PLATYPUS, AARDVARK) + ALL = set([FROG, PLATYPUS, AARDVARK]) def __init__(self, **kwargs): super(FakeEnumAlt, self).__init__(valid_values=FakeEnumAlt.ALL, @@ -256,6 +256,10 @@ class TestBaseEnum(TestField): self.assertEqual(self.field.valid_values, FakeEnum.ALL) + def test_valid_values_keeps_type(self): + self.assertIsInstance(self.field.valid_values, tuple) + self.assertIsInstance(FakeEnumAltField().valid_values, set) + class TestEnum(TestField): def setUp(self):