"Adds some YAML functionality to the excellent `pydantic` library."
Project description
pydantic-yaml
This is a small helper library that adds some YAML capabilities to pydantic, namely dumping to yaml via the yaml_model.yaml()
function, and parsing from strings/files using YamlModel.parse_raw()
and YamlModel.parse_file()
. It also adds an Enum
subclass that gets dumped to YAML as a string, and fixes dumping of some typical types.
Basic Usage
Example usage is seen below.
from pydantic_yaml import YamlEnum, YamlModel
class MyEnum(str, YamlEnum):
a = "a"
b = "b"
class MyModel(YamlModel):
x: int = 1
e: MyEnum = MyEnum.a
m1 = MyModel(x=2, e="b")
yml = m1.yaml()
jsn = m1.json()
m2 = MyModel.parse_raw(yml) # This automatically assumes YAML
assert m1 == m2
m3 = MyModel.parse_raw(jsn) # This will fallback to JSON
assert m1 == m3
m4 = MyModel.parse_raw(yml, proto="yaml")
assert m1 == m4
m5 = MyModel.parse_raw(yml, content_type="application/yaml")
assert m1 == m5
Installation
pip install pydantic_yaml
Make sure to install ruamel.yaml
(recommended) or pyyaml
as well. These are optional dependencies:
pip install pydantic_yaml[ruamel]
pip install pydantic_yaml[pyyaml]
Versioned Models
Since YAML is often used for config files, there is also a VersionedYamlModel
class.
The version
attribute is parsed according to the SemVer
(Semantic Versioning) specification.
Usage example:
from pydantic import ValidationError
from pydantic_yaml import VersionedYamlModel
class A(VersionedYamlModel):
foo: str = "bar"
class B(VersionedYamlModel):
foo: str = "bar"
class Config:
min_version = "2.0.0"
yml = """
version: 1.0.0
foo: baz
"""
A.parse_raw(yml)
try:
B.parse_raw(yml)
except ValidationError as e:
print("Correctly got ValidationError:", e, sep="\n")
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
Hashes for pydantic_yaml-0.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 850fe5d9ecdb9b2ceb75f2c4dcb028eb6ef26fcd7612f157399978c356d005bb |
|
MD5 | f5858af5e9663a0252682a25ba8650ff |
|
BLAKE2b-256 | b88395f9298624d2a15cb4000268565cf3ad1de8bd6fb8d4a0493332b0de50f3 |