Validation/coercion of input variables violates the GraphQL spec
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Estagnada
- Stack de tecnologia
- graphql, python
- Domínio
- api, backend-api-design
Direção de pesquisa
A issue aponta para coerce_variable_values em src/graphql/execution/values.py e para o ponto de entrada execute() do graphql-core. Leia primeiro essa função e seus chamadores; considera-se concluído quando variable_values inválidos fizerem com que GraphQLError seja lançado como um erro de requisição, sem nenhuma entrada data na resposta.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
When callling graphql-core's execute() function with variable_values which do not pass validation -- for example, including an unexpected key in the variable_values dictionary -- the current behavior is that an ExecutionResult object is returned from the function, with the associated GraphQLError present inside it. Instead, this should be treated as a Request error, according to the spec, meaning that a GraphQLError should be raised from execute().
The GraphQL spec states:
Request errors
Request errors are raised before execution begins. This may occur due to a parse grammar or validation error in the requested document, an inability to determine which operation to execute, or invalid input values for variables.
This means that it is incorrect for the coerce_variable_values function to be returning a GraphQLError inside an ExecutionResult: https://github.com/graphql-python/graphql-core/blob/9dcf25e66f6ed36b77de788621cf50bab600d1d3/src/graphql/execution/values.py#L93-L99
doing so means that a response payload is returned containing both an "errors" key and a null "data" key. Again, this a violation of the spec:
If a request error is raised, execution does not begin and the data entry in the response must not be present. The errors entry must include the error.
- Linguagem predominante
- Python
- Estrelas
- 531
- Forks
- 150
- Merge médio
- 1d 16h
- PRs com merge (30d)
- 5
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Sem guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de graphql-python/graphql-core
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 35/100
graphql-python/graphql-core#278 ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
graphql-python/graphql-core#257 ·
-
documentation good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 35/100
graphql-python/graphql-core#220 · 4 comentários ·
-
help wanted investigate
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
graphql-python/graphql-core#217 · 8 comentários ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
graphql-python/graphql-core#216 · 11 comentários ·
Todas as issues de graphql-python/graphql-core
Issues semelhantes
-
enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
python-version
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
bug javascript P2-medium python release:v3.1
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
adrirubio/claude-deck#546 ·
Mantenedores costumam responder em até 1 dia
-
area: desktop area: website priority: P2 type: feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
appandflow/stim#3411 · 1 comentário ·
Mantenedores costumam responder em até 1 dia