"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
File details
Details for the file pydantic_yaml-0.4.3.tar.gz
.
File metadata
- Download URL: pydantic_yaml-0.4.3.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
97772436c334416d85bbaeba4fc6936a46febd2523ef1e53c3957ddf27cf1b30
|
|
MD5 |
759d7e51dcbd8fb95fb2d19c3c596ae3
|
|
BLAKE2b-256 |
47ff187bcb7afe2cb53c34be7ee71dca8a53bf9e83c0b2b0ad2b3781b18f5bd4
|
File details
Details for the file pydantic_yaml-0.4.3-py3-none-any.whl
.
File metadata
- Download URL: pydantic_yaml-0.4.3-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
37a6c96bba0c033fe22eb69fc66ae275518f0732fbbb2520de65e1ff3036298d
|
|
MD5 |
255e8e4fa1118185bd90270f2f217423
|
|
BLAKE2b-256 |
91932af0ad47205ccdaff72825245e7b32b7ac4f48d920caee607f6b8882f4d4
|