Skip to main content

Human-readable verbose error messages for Pydantic validation errors

Project description

Pydantic Nicer Error Classes

This package returns nicer pydantic errors on over 40+ ValidationError types that are more human readable.

For example, with a json error you might get the following with pydantic:

ValidationError: 1 validation error for User
  Invalid JSON: expected value at line 1 column 25 [type=json_invalid, input_value='{"name": "John", "age": ....com", "addresses": []}', input_type=str]
    For further information visit https://errors.pydantic.dev/2.12/v/json_invalid

This can be hard to read, and unclear to non-technical users. Producing the same error with the package the pydantic-error-handling package becomes much clearer, with clear highlighting of the specific issue.

Invalid JSON at line 1, column 25:
  {"name": "John", "age": invalid, "email": "test@example.com", "addresses": []}
                          ^ expected value

Quick Start

from pydantic import BaseModel
from pydantic_error_handling import verbose_errors

@verbose_errors
class User(BaseModel):
    name: str
    age: int
    email: str

# JSON parsing errors now show visual arrows
bad_json = '{"name": "John", "age": invalid, "email": "test@example.com"}'
try:
    User.model_validate_json(bad_json)
except Exception as e:
    print(e)
    # Invalid JSON at line 1, column 25:
    #   {"name": "John", "age": invalid, "email": "test@example.com"}
    #                           ^ expected value

How to use this package

Option 1: Use @verbose_errors wrapper

  1. install the package to your project using pip install pydantic-error-handling

  2. Add the decorator verbose_errors to return nicely typed errors:

from pydantic_error_handling import verbose_errors


@verbose_errors
class MyPydanticClass(pydantic.BaseModel):
   ...

note: to produce nice loc functions, this package automatically removes typing and validators from the pattern (e.g function-before, enum etc.). To add additional omissions, you can use the omit_patterns param:

from pydantic_error_handling import verbose_errors


@verbose_errors(omit_patterns=["Problem"])
class MyPydanticClass(pydantic.BaseModel):
   ...

Option 2: Use helper functions to translate errors

  1. install the package to your project using pip install pydantic-error-handling

  2. generate the relevant pydantic error

  3. pass the error as a NicePydanticError class or string

from pydantic import BaseModel, ValidationError
from pydantic_error_handling import error_to_nice, error_to_string

class MyModel(BaseModel):
    name: str
    age: int

try:
    MyModel(name=123, age="invalid")
except ValidationError as e:
    # Get human-readable string
    print(error_to_string(e))
    # Output: 'name': Input should be a valid string. Received type: int, value: 123
    #         'age': Input should be a valid integer. Received type: str, value: 'invalid'
    
    # Or get structured errors for API/UI
    nice_errors = error_to_nice(e)
    for err in nice_errors:
        print(f"Field: {err.field_path}, Message: {err.message}")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydantic_error_handling-0.1.1.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydantic_error_handling-0.1.1-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_error_handling-0.1.1.tar.gz.

File metadata

  • Download URL: pydantic_error_handling-0.1.1.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for pydantic_error_handling-0.1.1.tar.gz
Algorithm Hash digest
SHA256 14ed662020005553ae95c5fd7c136ef9d67fbdbf699181643c3a448160961e37
MD5 297676eafca8a49e1a80bc0f61d5ffca
BLAKE2b-256 8773e7314e347209f767d58d25d1687783e46894021faccf79a25a0c67e7f0a6

See more details on using hashes here.

File details

Details for the file pydantic_error_handling-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_error_handling-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5e594681ad42fd8fc03caa6b8abf9c65ecf09a23c4811bb5f1c93b3f13be2be0
MD5 0d39b394a68d71afdad4b679bd5a65f8
BLAKE2b-256 9d726fa20bae0ede04decfd740c44d68f0ad00beafbf6e5172fcc8003a2a6b72

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page