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
-
install the package to your project using
pip install pydantic-error-handling -
Add the decorator
verbose_errorsto 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
-
install the package to your project using
pip install pydantic-error-handling -
generate the relevant pydantic error
-
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14ed662020005553ae95c5fd7c136ef9d67fbdbf699181643c3a448160961e37
|
|
| MD5 |
297676eafca8a49e1a80bc0f61d5ffca
|
|
| BLAKE2b-256 |
8773e7314e347209f767d58d25d1687783e46894021faccf79a25a0c67e7f0a6
|
File details
Details for the file pydantic_error_handling-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pydantic_error_handling-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e594681ad42fd8fc03caa6b8abf9c65ecf09a23c4811bb5f1c93b3f13be2be0
|
|
| MD5 |
0d39b394a68d71afdad4b679bd5a65f8
|
|
| BLAKE2b-256 |
9d726fa20bae0ede04decfd740c44d68f0ad00beafbf6e5172fcc8003a2a6b72
|