Skip to content

Commit 2488c2e

Browse files
committed
Return None from ValidationContext.get_fragment() instead of throwing
1 parent 718f84d commit 2488c2e

File tree

2 files changed

+6
-11
lines changed

2 files changed

+6
-11
lines changed

graphql/core/validation/__init__.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,9 @@ def enter(self, node, key, parent, path, ancestors):
6868
result = False
6969

7070
if result is None and getattr(self.instance, 'visit_spread_fragments', False) and isinstance(node, FragmentSpread):
71-
try:
72-
fragment = self.instance.context.get_fragment(node.name.value)
73-
except KeyError:
74-
pass
75-
else:
76-
if fragment:
77-
visit(fragment, self)
71+
fragment = self.instance.context.get_fragment(node.name.value)
72+
if fragment:
73+
visit(fragment, self)
7874

7975
if result is False:
8076
self.type_info.leave(node)
@@ -125,7 +121,7 @@ def get_fragment(self, name):
125121
for statement in self.get_ast().definitions:
126122
if isinstance(statement, FragmentDefinition):
127123
fragments[statement.name.value] = statement
128-
return fragments[name]
124+
return fragments.get(name)
129125

130126
def get_type(self):
131127
return self._type_info.get_type()

graphql/core/validation/rules.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,8 @@ def duplicate_fragment_name_message(field):
169169
class KnownFragmentNames(ValidationRule):
170170
def enter_FragmentSpread(self, node, *args):
171171
fragment_name = node.name.value
172-
try:
173-
self.context.get_fragment(fragment_name)
174-
except KeyError:
172+
fragment = self.context.get_fragment(fragment_name)
173+
if not fragment:
175174
return GraphQLError(
176175
self.unknown_fragment_message(fragment_name),
177176
[node.name]

0 commit comments

Comments
 (0)