graphql-core next дважды переносит исключения с помощью GraphQLError

#python #python-3.x #graphql

#python #python-3.x #graphql

Вопрос:

Я обнаружил кое-что запутанное в graphql-core библиотеке python и хотел узнать, может быть, это ошибка или я чего-то не хватает, и это ожидаемое поведение.

Это мой example.py файл. У него есть только один распознаватель, который выдает ошибку.

 from graphql import (GraphQLSchema, GraphQLObjectType, GraphQLField, GraphQLString, graphql_sync, )


def resolve_fail(*args, **kwargs):
    raise ValueError("Some error")


schema = GraphQLSchema(
    query=GraphQLObjectType(
        name='RootQueryType',
        fields={
            'hello': GraphQLField(
                GraphQLString,
                resolve=resolve_fail)
        }))

query = '{ hello }'

result = graphql_sync(schema, query)
  

Я знаю, что это result.errors[0] является GraphQLError исключением. Но я ожидал, что result.errors[0].original_error так и будет ValueError .

Однако я вижу, что result.errors[0].original_error это GraphQLError и result.errors[0].original_error.original_error есть ValueError .

Это нормально?

 >>> print(type(result.errors[0]))
<class 'graphql.error.graphql_error.GraphQLError'>
>>> print(type(result.errors[0].original_error))
<class 'graphql.error.graphql_error.GraphQLError'>
>>> print(type(result.errors[0].original_error.original_error))
<class 'ValueError'>
  

Ответ №1:

Наконец, это была ошибка, о которой сообщили владельцам библиотеки, и они исправили ее здесь.