Just annotate your fields and you're good to go.
from easydatamodel import Model
class Person(Model):
name: str
age: int
Now you have a completely type-safe model that will validate your data for you, every time.
Person(name="John Doe", age=1) # ✅ OK
Person(name="John Doe", age="timeless") # ❌ InvalidModelError
# easydatamodel also validates new value assignments
person = Person(name="John Doe", age=1)
person.age = "is but a number" # ❌ raises a TypeError
pip install easydatamodel
- Python 3.11+
Feature | easydatamodel |
pydantic |
dataclasses |
---|---|---|---|
Validates data on instantiation | ✅ | ✅ | ❌ |
Validates data on assignment | ✅ | Off by default | ❌ |
ClassVar validation |
✅ | ❌ | ❌ |
Automagic type coercion by default | ❌ | ✅ | ❌ |
easydatamodel
is perfect for simple, type-safe dataclasses with minimal effort and low overhead.
However, you should consider using pydantic
if you need more advanced features.
Given the size of the easydatamodel
codebase, easydatamodel
is a fantastic resource for intermediate and advanced Python developers looking to learn how Python metaprogramming works.
This codebase demonstrates how only a few files of Python code can create a powerful library with an ergonomic syntax.