Skip to content

Commit f14b53b

Browse files
committed
ast_from_value: use generators to create frozen lists
1 parent d0d24b8 commit f14b53b

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

src/graphql/utilities/ast_from_value.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import re
2-
from typing import Any, Iterable, List, Mapping, Optional, cast
2+
from typing import Any, Iterable, Mapping, Optional, cast
33

44
from ..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

Comments
 (0)