Data model validation for nested data routes
Project description
fieldrouter: Data model validation for nested data routes
fieldrouter
is a Python library that provides helpers for modelling routes in highly nested structured data.
It should be considered for cases when exhaustively modelling the tree structures involved is surplus to requirements (in other cases you would simply use Pydantic in the regular way), or perhaps if you want to specify 'routes' on an existing data model.
For example to access the number 30 in
data = {"a": {"aa": {"aaa": [10, 20, 30]}}}
You would typically need to write Pydantic models for each level
class A(BaseModel):
a: AA
class AA(BaseModel):
aa: AAA
class AAA(BaseModel):
aaa: list[int]
thirty = A.model_validate(data).a.aa.aaa[2]
With fieldrouter
you would instead specify a 'route' for the subpath on a 'router' model
(which is just a regular Pydantic model with default argument validation):
from fieldrouter import RouterModel, Route
class Where(RouterModel):
thirty: Route = "a.aa.aaa.2"
Then you can model the value at that route with a corresponding field on a 'routed' model (which is a generic model which takes the router as a type argument):
from fieldrouter import Routed, R
class What(Routed[R]):
thirty: int
Then you can use the router class as a generic type argument to the instance of the routee:
model = What[Where].model_validate(data)
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
File details
Details for the file fieldrouter-0.1.1.tar.gz
.
File metadata
- Download URL: fieldrouter-0.1.1.tar.gz
- Upload date:
- Size: 3.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.17.3 CPython/3.10.14 Linux/5.15.0-117-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca4227d76be1efcbca4421cd09b9819528c783f8e569b4885386ab449aa37ece |
|
MD5 | b192d2f6e73c259764755c8c69e70aed |
|
BLAKE2b-256 | 1d48b5592ae544e0e3bb674b89875c4fcd2b21e338dc9a8bf39de32d598078f0 |
File details
Details for the file fieldrouter-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: fieldrouter-0.1.1-py3-none-any.whl
- Upload date:
- Size: 3.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: pdm/2.17.3 CPython/3.10.14 Linux/5.15.0-117-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e499b305b39d374c11228d0cb3c64f23608cc8eee68b4138e5a6f42e45b54a8 |
|
MD5 | a53f287ced3fbb5797f30c8294b47900 |
|
BLAKE2b-256 | 20980b5d97b5cc7d7fddb262baaa2f93c427743c493929c4084a3e1527e7e88f |