asdf-pydantic 1.1.0

Creator: bradpython12

Last updated:

Add to Cart

Description:

asdfpydantic 1.1.0

asdf-pydantic



Create ASDF tags with pydantic models.

from asdf_pydantic import AsdfPydanticModel

class Rectangle(AsdfPydanticModel):
_tag = "asdf://asdf-pydantic/examples/tags/rectangle-1.0.0"

width: float
height: float

# After creating extension and install ...

af = asdf.AsdfFile()
af["rect"] = Rectangle(width=1, height=1)

#ASDF 1.0.0
#ASDF_STANDARD 1.5.0
%YAML 1.1
%TAG ! tag:stsci.edu:asdf/
--- !core/asdf-1.1.0
asdf_library: !core/software-1.0.0 {
author: The ASDF Developers,
homepage: 'http://github.com/asdf-format/asdf',
name: asdf,
version: 2.14.3}
history:
extensions:
- !core/extension_metadata-1.0.0
extension_class: asdf.extension.BuiltinExtension
software: !core/software-1.0.0 {
name: asdf,
version: 2.14.3}
- !core/extension_metadata-1.0.0 {
extension_class: mypackage.shapes.ShapesExtension,
extension_uri: 'asdf://asdf-pydantic/shapes/extensions/shapes-1.0.0'}
rect: !<asdf://asdf-pydantic/shapes/tags/rectangle-1.0.0> {
height: 1.0,
width: 1.0}
...


Features

Create ASDF tag from your pydantic models with batteries (converters) included.
Validates data models as you create them and not only when reading and writing ASDF files.
Preserve Python types when deserializing ASDF files.
All the cool things that comes with pydantic (e.g., JSON encoder, JSON schema, Pydantic types).
Comes with ASDF schemas (TBD).

Installation
pip install asdf-pydantic

Usage
Define your data model with AsdfPydanticModel. For pydantic fans, this has
all the features of pydantic's BaseModel.
# mypackage/shapes.py
from asdf_pydantic import AsdfPydanticModel

class Rectangle(AsdfPydanticModel):
_tag = "asdf://asdf-pydantic/examples/tags/rectangle-1.0.0"

width: float
height: float

Then create an extension with the converter included with asdf-pydantic:
# mypackage/extensions.py
from asdf.extension import Extension
from asdf_pydantic.converter import AsdfPydanticConverter
from mypackage.shapes import Rectangle

AsdfPydanticConverter.add_models(Rectangle)

class ShapesExtension(Extension):
extension_uri = "asdf://asdf-pydantic/examples/extensions/shapes-1.0.0"
converters = [AsdfPydanticConverter()]
tags = [*AsdfPydanticConverter().tags]

Install the extension either by entry point specification or add it to
asdf.get_config():
import asdf
from mypackage.extensions import ShapeExtension

asdf.get_config().add_extension(ShapesExtension())

af = asdf.AsdfFile()
af["rect"] = Rectangle(width=1, height=1)

with open("shapes.asdf", "wb") as fp:
af.write_to(fp)


:maxdepth: 1
model
autoapi

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.