Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Errors are less verbose than they need to be

Open
#241 2 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
python
Domain
api

Research direction

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.

Written by the indexing model from the issue text.

Description

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?

Dominant language
Python
Stars
368
Forks
140
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from python-openapi/openapi-core

All issues in python-openapi/openapi-core

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.