File tree Expand file tree Collapse file tree 2 files changed +22
-3
lines changed Expand file tree Collapse file tree 2 files changed +22
-3
lines changed Original file line number Diff line number Diff line change 1
1
# coding: utf-8
2
2
from __future__ import absolute_import , unicode_literals
3
3
4
- from enum import Enum
4
+ import six
5
+ from enum import Enum , EnumMeta
5
6
6
7
7
- class ChoicesEnum (Enum ):
8
+ class ChoicesMetaClass (EnumMeta ):
9
+
10
+ def __contains__ (cls , member ):
11
+ if not isinstance (member , cls ):
12
+ try :
13
+ member = cls (member )
14
+ except Exception :
15
+ return False
16
+
17
+ return member ._name_ in cls ._member_map_
18
+
19
+
20
+ class ChoicesEnum (six .with_metaclass (ChoicesMetaClass , Enum )):
8
21
9
22
def __new__ (cls , value , display = None ):
10
23
obj = object .__new__ (cls )
@@ -90,7 +103,7 @@ def __json__(self):
90
103
91
104
@property
92
105
def display (self ):
93
- return self ._display_ if self ._display_ is not None else \
106
+ return self ._display_ if self ._display_ is not None else \
94
107
self ._name_ .replace ('_' , ' ' ).capitalize ()
95
108
96
109
@property
Original file line number Diff line number Diff line change @@ -296,3 +296,9 @@ def test_should_return_default_value(colors):
296
296
assert colors .get ('#f00' ) == colors .RED
297
297
assert colors .get ('undefined_color' ) is None
298
298
assert colors .get ('undefined_color' , colors .RED ) == colors .RED
299
+
300
+
301
+ def test_should_support_membership_vertification (colors ):
302
+ assert colors .RED in colors
303
+ assert colors .RED .value in colors
304
+ assert 'non-existent-color' not in colors
You can’t perform that action at this time.
0 commit comments