Errors are less verbose than they need to be
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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?
- Lenguaje dominante
- Python
- Estrellas
- 368
- Forks
- 140
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de python-openapi/openapi-core
-
kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
python-openapi/openapi-core#1188 · 2 comentarios ·
-
kind/bug
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
python-openapi/openapi-core#1225 · 2 comentarios ·
-
kind/bug
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
python-openapi/openapi-core#1212 ·
-
[Bug]: Query parameter validation fails to match empty string when listed as a valid enum value Abiertokind/bug
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
python-openapi/openapi-core#1210 ·
-
kind/bug kind/bug/confirmed
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
python-openapi/openapi-core#1180 · 3 comentarios ·
Todos los issues de python-openapi/openapi-core
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
learningequality/ricecooker#747 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
run-llama/llama_index#23199 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
KhronosGroup/glTF-Blender-IO#2769 ·