1
1
import six
2
2
from graphql .core .type import GraphQLEnumType , GraphQLEnumValue
3
3
4
+ from .base import ClassTypeMeta , ClassType
5
+ from ..types .base import MountedType
4
6
from ...utils .enum import Enum as PyEnum
5
- from .base import ClassType , ClassTypeMeta
6
7
7
8
8
9
class EnumMeta (ClassTypeMeta ):
@@ -17,7 +18,12 @@ def construct(cls, bases, attrs):
17
18
attrs [k ] = v .value
18
19
return super (EnumMeta , cls ).construct (bases , attrs )
19
20
20
- def __call__ (cls , name , names = None , description = None ):
21
+ def __call__ (cls , * args , ** kwargs ):
22
+ if cls is Enum :
23
+ return cls .create_enum (* args , ** kwargs )
24
+ return super (EnumMeta , cls ).__call__ (* args , ** kwargs )
25
+
26
+ def create_enum (cls , name , names = None , description = None ):
21
27
attrs = {
22
28
'__enum__' : PyEnum (name , names )
23
29
}
@@ -26,7 +32,7 @@ def __call__(cls, name, names=None, description=None):
26
32
return type (name , (Enum ,), attrs )
27
33
28
34
29
- class Enum (six .with_metaclass (EnumMeta , ClassType )):
35
+ class Enum (six .with_metaclass (EnumMeta , ClassType , MountedType )):
30
36
31
37
class Meta :
32
38
abstract = True
0 commit comments