@@ -318,6 +318,7 @@ def serialize_odd(value):
318318
319319 """
320320
321+ specified_by_url : Optional [str ]
321322 ast_node : Optional [ScalarTypeDefinitionNode ]
322323 extension_ast_nodes : Optional [FrozenList [ScalarTypeExtensionNode ]]
323324
@@ -328,6 +329,7 @@ def __init__(
328329 parse_value : Optional [GraphQLScalarValueParser ] = None ,
329330 parse_literal : Optional [GraphQLScalarLiteralParser ] = None ,
330331 description : Optional [str ] = None ,
332+ specified_by_url : Optional [str ] = None ,
331333 extensions : Optional [Dict [str , Any ]] = None ,
332334 ast_node : Optional [ScalarTypeDefinitionNode ] = None ,
333335 extension_ast_nodes : Optional [Collection [ScalarTypeExtensionNode ]] = None ,
@@ -339,6 +341,11 @@ def __init__(
339341 ast_node = ast_node ,
340342 extension_ast_nodes = extension_ast_nodes ,
341343 )
344+ if specified_by_url is not None and not isinstance (specified_by_url , str ):
345+ raise TypeError (
346+ f"{ name } must provide 'specified_by_url' as a string,"
347+ f" but got: { inspect (specified_by_url )} ."
348+ )
342349 if serialize is not None and not callable (serialize ):
343350 raise TypeError (
344351 f"{ name } must provide 'serialize' as a function."
@@ -369,6 +376,7 @@ def __init__(
369376 self .parse_value = parse_value # type: ignore
370377 if parse_literal is not None :
371378 self .parse_literal = parse_literal # type: ignore
379+ self .specified_by_url = specified_by_url
372380
373381 def __repr__ (self ):
374382 return f"<{ self .__class__ .__name__ } { self .name !r} >"
@@ -417,6 +425,7 @@ def to_kwargs(self) -> Dict[str, Any]:
417425 if getattr (self .parse_literal , "__func__" , None )
418426 is GraphQLScalarType .parse_literal
419427 else self .parse_literal ,
428+ specified_by_url = self .specified_by_url ,
420429 )
421430
422431
0 commit comments