@@ -21,6 +21,7 @@ def eq_enum(self, other):
21
21
22
22
class EnumOptions (BaseOptions ):
23
23
enum = None # type: Enum
24
+ deprecation_reason = None
24
25
25
26
26
27
class EnumMeta (SubclassWithMeta_Meta ):
@@ -45,8 +46,14 @@ def __call__(cls, *args, **kwargs): # noqa: N805
45
46
return super (EnumMeta , cls ).__call__ (* args , ** kwargs )
46
47
# return cls._meta.enum(*args, **kwargs)
47
48
48
- def from_enum (cls , enum , description = None ): # noqa: N805
49
- meta_class = type ('Meta' , (object ,), {'enum' : enum , 'description' : description })
49
+ def from_enum (cls , enum , description = None , deprecation_reason = None ): # noqa: N805
50
+ description = description or enum .__doc__
51
+ meta_dict = {
52
+ 'enum' : enum ,
53
+ 'description' : description ,
54
+ 'deprecation_reason' : deprecation_reason
55
+ }
56
+ meta_class = type ('Meta' , (object ,), meta_dict )
50
57
return type (meta_class .enum .__name__ , (Enum ,), {'Meta' : meta_class })
51
58
52
59
@@ -56,8 +63,10 @@ class Enum(six.with_metaclass(EnumMeta, UnmountedType, BaseType)):
56
63
def __init_subclass_with_meta__ (cls , enum = None , ** options ):
57
64
_meta = EnumOptions (cls )
58
65
_meta .enum = enum or cls .__enum__
66
+ _meta .deprecation_reason = options .pop ('deprecation_reason' , None )
59
67
for key , value in _meta .enum .__members__ .items ():
60
68
setattr (cls , key , value )
69
+
61
70
super (Enum , cls ).__init_subclass_with_meta__ (_meta = _meta , ** options )
62
71
63
72
@classmethod
0 commit comments