@@ -61,21 +61,30 @@ def coerce_odd(value):
6161 return value
6262 return None
6363
64- OddType = GraphQLScalarType(name='Odd', coerce =coerce_odd)
64+ OddType = GraphQLScalarType(name='Odd', serialize =coerce_odd)
6565 """
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 ):
6767 assert name , 'Type must be named.'
6868 self .name = name
6969 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
7584
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 )
7988 return None
8089
8190 def __str__ (self ):
@@ -310,16 +319,23 @@ def get_values(self):
310319 self ._value_map = self ._define_value_map ()
311320 return self ._value_map
312321
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 ):
314330 if isinstance (value , collections .Hashable ):
315331 enum_value = self ._get_value_lookup ().get (value )
316332 if enum_value :
317333 return enum_value .name
318334 return None
319335
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 )
323339 if enum_value :
324340 return enum_value .value
325341
0 commit comments