Skip to main content

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


Download files

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

Source Distribution

fieldrouter-0.1.1.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

fieldrouter-0.1.1-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

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

Hashes for fieldrouter-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ca4227d76be1efcbca4421cd09b9819528c783f8e569b4885386ab449aa37ece
MD5 b192d2f6e73c259764755c8c69e70aed
BLAKE2b-256 1d48b5592ae544e0e3bb674b89875c4fcd2b21e338dc9a8bf39de32d598078f0

See more details on using hashes here.

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

Hashes for fieldrouter-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9e499b305b39d374c11228d0cb3c64f23608cc8eee68b4138e5a6f42e45b54a8
MD5 a53f287ced3fbb5797f30c8294b47900
BLAKE2b-256 20980b5d97b5cc7d7fddb262baaa2f93c427743c493929c4084a3e1527e7e88f

See more details on using hashes here.

Supported by

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