Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Errors are less verbose than they need to be

Aberta
#241 2 comentários 5 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
35/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
python
Domínio
api

Direção de pesquisa

Start in openapi_core/unmarshalling/schemas/unmarshallers.py, especially PrimitiveTypeUnmarshaller.validate, and inspect how the validator and collected errors are currently used. Determine how an opt-in detailed error path could coexist with aggregated validation, then verify that invalid schema values expose the underlying validation detail without breaking the existing behavior.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

area/unmarshalling kind/enhancement

Thanks for the excellent library. I have a request. I'm currently getting error messages like the following for an invalid schema:

Traceback (most recent call last):
  ...
  File ".../openapi_core/unmarshalling/schemas/unmarshallers.py", line 61, in validate
    value, self.schema.type, schema_errors=errors)
openapi_core.unmarshalling.schemas.exceptions.InvalidSchemaValue: Value [{'id': 1, ...}] not valid for schema of type SchemaType.ARRAY: (<ValidationError: 'None for not nullable'>,)

This isn't very helpful, and it took me a while to figure out what was happening (I was running into https://github.com/OAI/OpenAPI-Specification/issues/1368). I managed it by hacking on openapi-core in my venv and adding the following:

diff --git openapi_core/unmarshalling/schemas/unmarshallers.py openapi_core/unmarshalling/schemas/unmarshallers.py
index b60f9c3..9b4ddea 100644
--- openapi_core/unmarshalling/schemas/unmarshallers.py
+++ openapi_core/unmarshalling/schemas/unmarshallers.py
@@ -54,6 +54,7 @@ class PrimitiveTypeUnmarshaller(object):
             raise InvalidSchemaValue(value, self.schema.type)
 
     def validate(self, value):
+        self.validator.validate(value)
         errors_iter = self.validator.iter_errors(value)
         errors = tuple(errors_iter)
         if errors:

which gave me a far more helpful:

Traceback (most recent call last):
  ...
  File ".../openapi_core/unmarshalling/schemas/unmarshallers.py", line 57, in validate
    self.validator.validate(value)
  File ".../jsonschema/validators.py", line 353, in validate
    raise error
jsonschema.exceptions.ValidationError: None for not nullable

Failed validating 'nullable' in schema['items']['properties']['delegate']['allOf'][0]:
    {'nullable': False,
     'properties': {'email': {'format': 'email',
                              'minLength': 1,
                              'readOnly': True,
                              'title': 'Email address',
                              'type': 'string'},
                    'first_name': {'maxLength': 30,
                                   'readOnly': True,
                                   'title': 'First name',
                                   'type': 'string'},
                    'id': {'readOnly': True,
                           'title': 'ID',
                           'type': 'integer'},
                    'last_name': {'maxLength': 150,
                                  'readOnly': True,
                                  'title': 'Last name',
                                  'type': 'string'},
                    'url': {'format': 'uri',
                            'readOnly': True,
                            'title': 'URL',
                            'type': 'string'},
                    'username': {'maxLength': 150,
                                 'minLength': 1,
                                 'readOnly': True,
                                 'title': 'Username',
                                 'type': 'string'}},
     'type': 'object'}

On instance[0]['delegate']:
    None

I understand that you probably don't want to raise an exception immediately since you'd only see the first error, but would it be possible to opt-in to this behavior, or at least surface up the more verbose error message, assuming jsonschema provides a way to access this?

Linguagem predominante
Python
Estrelas
368
Forks
140
Métricas de merge de PRs
Nenhum PR com merge em 30d

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de python-openapi/openapi-core

Todas as issues de python-openapi/openapi-core

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.