Skip to main content

Kedro

Project description

pydantic-kedro

Advanced serialization for Pydantic models via Kedro and fsspec.

This package implements custom Kedro "datasets" for both "pure" and "arbitrary" Pydantic models. You can also use it stand-alone, using Kedro just for serializing other object types.

Please see the documentation for a tutorial and more examples.

Usage with Kedro

You can use the [PydanticAutoDataset][pydantic_kedro.PydanticAutoDataset] or any other dataset from pydantic-kedro within your Kedro catalog to save your Pydantic models:

# conf/base/catalog.yml
my_pydantic_model:
 type: pydantic_kedro.PydanticAutoDataset
 filepath: folder/my_model

Direct Dataset Usage

This example works for "pure", JSON-safe Pydantic models via PydanticJsonDataset:

from pydantic import BaseModel
# from pydantic.v1 import BaseModel  # Pydantic V2
from pydantic_kedro import PydanticJsonDataset


class MyPureModel(BaseModel):
    """Your custom Pydantic model with JSON-safe fields."""

    x: int
    y: str


obj = MyPureModel(x=1, y="why?")

# Create an in-memory (temporary) file via `fsspec` and save it
ds = PydanticJsonDataset("memory://temporary-file.json")
ds.save(obj)

# We can re-load it from the same file
read_obj = ds.load()
assert read_obj.x == 1

Standalone Usage

You can also use pydantic-kedro as a generic saving and loading engine for Pydantic models:

from tempfile import TemporaryDirectory

from pydantic.v1 import BaseModel
from pydantic_kedro import load_model, save_model

class MyModel(BaseModel):
    """My custom model."""

    name: str

# We can use any fsspec URL, so we'll make a temporary folder
with TemporaryDirectory() as tmpdir:
    save_model(MyModel(name="foo"), f"{tmpdir}/my_model")
    obj = load_model(f"{tmpdir}/my_model")
    assert obj.name == "foo"

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-kedro-0.8.0.tar.gz (31.3 kB view details)

Uploaded Source

Built Distribution

pydantic_kedro-0.8.0-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

File details

Details for the file pydantic-kedro-0.8.0.tar.gz.

File metadata

  • Download URL: pydantic-kedro-0.8.0.tar.gz
  • Upload date:
  • Size: 31.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for pydantic-kedro-0.8.0.tar.gz
Algorithm Hash digest
SHA256 ece5dae30006251edcf75dc3c1bddc1c37b874935e4d3cdbc2a10e2598e65de1
MD5 bc02db0a97fac976aba5dc9e24903679
BLAKE2b-256 aba6a2b2c2a7b367f02e601d3f32dea6961550df5b190361e0e29c636d6de093

See more details on using hashes here.

File details

Details for the file pydantic_kedro-0.8.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_kedro-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2652a7639119754c73f935f52557138a2b26d722208b0a5875093dc0b562854b
MD5 5302cf1d7cf5086ac7a0bfab079befe7
BLAKE2b-256 a62dff942492a6061a8e5a70f69df6d8c25c6f90f7049339c3a9ef59a126bd0f

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