Metadata-Version: 2.1
Name: pydantic-yaml
Version: 0.3.0
Summary: "Adds some YAML functionality to the excellent `pydantic` library."
Home-page: https://github.com/NowanIlfideme/pydantic-yaml
Author: Anatoly Makarevich
Author-email: git@nowan.dev
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: pydantic
Provides-Extra: dev
Requires-Dist: black ; extra == 'dev'
Requires-Dist: flake8 ; extra == 'dev'
Requires-Dist: bump2version ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Provides-Extra: pyyaml
Requires-Dist: pyyaml ; extra == 'pyyaml'
Provides-Extra: ruamel
Requires-Dist: ruamel.yaml (>=0.15) ; extra == 'ruamel'

# pydantic-yaml

[![PyPI version](https://badge.fury.io/py/pydantic-yaml.svg)](https://badge.fury.io/py/pydantic-yaml) [![Unit Tests](https://github.com/NowanIlfideme/pydantic-yaml/actions/workflows/python-testing.yml/badge.svg)](https://github.com/NowanIlfideme/pydantic-yaml/actions/workflows/python-testing.yml)

This is a small helper library that adds some YAML capabilities to [pydantic](https://github.com/samuelcolvin/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.

## Usage

Example usage is seen below.

```python
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()

m2 = MyModel.parse_raw(yml, proto="yaml")
assert m1 == m2

m3 = MyModel.parse_raw(yml, content_type="application/yaml")
assert m1 == m3
```

## 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]`


