@@ -61,21 +61,30 @@ def coerce_odd(value):
61
61
return value
62
62
return None
63
63
64
- OddType = GraphQLScalarType(name='Odd', coerce =coerce_odd)
64
+ OddType = GraphQLScalarType(name='Odd', serialize =coerce_odd)
65
65
"""
66
- def __init__ (self , name , description = None , coerce = None , coerce_literal = None ):
66
+ def __init__ (self , name , description = None , serialize = None , parse_value = None , parse_literal = None ):
67
67
assert name , 'Type must be named.'
68
68
self .name = name
69
69
self .description = description
70
- self ._coerce = coerce
71
- self ._coerce_literal = coerce_literal
72
-
73
- def coerce (self , value ):
74
- return self ._coerce (value )
70
+ assert callable (serialize )
71
+ if parse_value or parse_literal :
72
+ assert callable (parse_value ) and callable (parse_literal )
73
+ self ._serialize = serialize
74
+ self ._parse_value = parse_value
75
+ self ._parse_literal = parse_literal
76
+
77
+ def serialize (self , value ):
78
+ return self ._serialize (value )
79
+
80
+ def parse_value (self , value ):
81
+ if self ._parse_value :
82
+ return self ._parse_value (value )
83
+ return None
75
84
76
- def coerce_literal (self , value ):
77
- if self ._coerce_literal :
78
- return self ._coerce_literal ( value )
85
+ def parse_literal (self , value_ast ):
86
+ if self ._parse_literal :
87
+ return self ._parse_literal ( value_ast )
79
88
return None
80
89
81
90
def __str__ (self ):
@@ -310,16 +319,23 @@ def get_values(self):
310
319
self ._value_map = self ._define_value_map ()
311
320
return self ._value_map
312
321
313
- def coerce (self , value ):
322
+ def serialize (self , value ):
323
+ if isinstance (value , collections .Hashable ):
324
+ enum_value = self ._get_value_lookup ().get (value )
325
+ if enum_value :
326
+ return enum_value .name
327
+ return None
328
+
329
+ def parse_value (self , value ):
314
330
if isinstance (value , collections .Hashable ):
315
331
enum_value = self ._get_value_lookup ().get (value )
316
332
if enum_value :
317
333
return enum_value .name
318
334
return None
319
335
320
- def coerce_literal (self , value ):
321
- if isinstance (value , ast .EnumValue ):
322
- enum_value = self ._get_name_lookup ().get (value .value )
336
+ def parse_literal (self , value_ast ):
337
+ if isinstance (value_ast , ast .EnumValue ):
338
+ enum_value = self ._get_name_lookup ().get (value_ast .value )
323
339
if enum_value :
324
340
return enum_value .value
325
341
0 commit comments