11import re
2- from typing import Any , Iterable , List , Mapping , Optional , cast
2+ from typing import Any , Iterable , Mapping , Optional , cast
33
44from ..language import (
55 BooleanValueNode ,
@@ -76,8 +76,8 @@ def ast_from_value(value: Any, type_: GraphQLInputType) -> Optional[ValueNode]:
7676 type_ = cast (GraphQLList , type_ )
7777 item_type = type_ .of_type
7878 if isinstance (value , Iterable ) and not isinstance (value , str ):
79- value_nodes = [ ast_from_value (item , item_type ) for item in value ]
80- value_nodes = [ item_node for item_node in value_nodes if item_node ]
79+ maybe_value_nodes = ( ast_from_value (item , item_type ) for item in value )
80+ value_nodes = filter ( None , maybe_value_nodes )
8181 return ListValueNode (values = FrozenList (value_nodes ))
8282 return ast_from_value (value , item_type )
8383
@@ -87,17 +87,16 @@ def ast_from_value(value: Any, type_: GraphQLInputType) -> Optional[ValueNode]:
8787 if value is None or not isinstance (value , Mapping ):
8888 return None
8989 type_ = cast (GraphQLInputObjectType , type_ )
90- field_nodes : List [ObjectFieldNode ] = []
91- append_node = field_nodes .append
92- for field_name , field in type_ .fields .items ():
93- if field_name in value :
94- field_value = ast_from_value (value [field_name ], field .type )
95- if field_value :
96- append_node (
97- ObjectFieldNode (
98- name = NameNode (value = field_name ), value = field_value
99- )
100- )
90+ field_items = (
91+ (field_name , ast_from_value (value [field_name ], field .type ))
92+ for field_name , field in type_ .fields .items ()
93+ if field_name in value
94+ )
95+ field_nodes = (
96+ ObjectFieldNode (name = NameNode (value = field_name ), value = field_value )
97+ for field_name , field_value in field_items
98+ if field_value
99+ )
101100 return ObjectValueNode (fields = FrozenList (field_nodes ))
102101
103102 if is_leaf_type (type_ ):
0 commit comments