Skip to content

Commit a3f630f

Browse files
committed
GraphQLError: keep extensions always present
Replicates graphql/graphql-js@b1ce2c3
1 parent f26e794 commit a3f630f

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

src/graphql/error/graphql_error.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,10 @@ def __init__(
161161
self.__cause__ = original_error.__cause__
162162
elif original_error.__context__:
163163
self.__context__ = original_error.__context__
164-
if not extensions:
165-
try:
166-
# noinspection PyUnresolvedReferences
167-
extensions = original_error.extensions # type: ignore
168-
except AttributeError:
169-
pass
164+
if extensions is None:
165+
original_extensions = getattr(original_error, "extensions", None)
166+
if isinstance(original_extensions, dict):
167+
extensions = original_extensions
170168
self.extensions = extensions or {}
171169
if not self.__traceback__:
172170
self.__traceback__ = exc_info()[2]

tests/error/test_graphql_error.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,13 @@ def is_a_class_and_is_a_subclass_of_exception():
3939
assert isinstance(GraphQLError("str"), Exception)
4040
assert isinstance(GraphQLError("str"), GraphQLError)
4141

42-
def has_a_name_message_and_stack_trace():
42+
def has_a_name_message_extensions_and_stack_trace():
4343
e = GraphQLError("msg")
4444
assert e.__class__.__name__ == "GraphQLError"
4545
assert e.message == "msg"
46+
assert e.extensions == {}
47+
assert e.__traceback__ is None
48+
assert str(e) == "msg"
4649

4750
def uses_the_stack_of_an_original_error():
4851
try:

0 commit comments

Comments
 (0)