parse yaml files with pydantic
Project description
pydantic-yaml-parser
Install
pip install pydantic_yaml_parser
Background & Usage
To load YAML into a Pydantic model, you have to first convert the YAML to a dict. For example, given the below yaml file:
yaml_string="""
setting_1: Hello
setting_2:
- kind: name
sublist:
- first
- second
"""
You might define a Pydantic model to represent it like this:
from pydantic import BaseModel
from typing import List
class Setting2(BaseModel):
kind: str
sublist: List
class Test(BaseModel):
setting_1: str
setting_2: List[Setting2]
You can load the yaml file into a dict, and into the Pydantic model like so:
import yaml
yml_dict = yaml.safe_load(yaml_string)
yml_dict
{'setting_1': 'Hello',
'setting_2': [{'kind': 'name', 'sublist': ['first', 'second']}]}
To load this dict into the pydantic model Test
, you can use
parse_obj
:
Test.parse_obj(yml_dict)
Test(setting_1='Hello', setting_2=[Setting2(kind='name', sublist=['first', 'second'])])
However, let’s say there is an error in your yaml file such that you
accidentally set sublist
to false
, instead of setting sublist
to
list
type, you will get an error message that looks like this:
yaml_string="""
setting_1: ok
setting_2:
- kind: name
sublist: false
"""
yaml_dict_error = yaml.safe_load(yaml_string)
Test.parse_obj(yaml_dict_error)
ValidationError: 1 validation error for Test
setting_2 -> 0 -> sublist
value is not a valid list (type=type_error.list)
This error message is a bit confusing, especially for those with no
prior experience with pydantic! However when you use
pydantic_yaml_parser
you get something a bit clearer:
from pydantic_yaml_parser.yaml import YamlModel
class Test(YamlModel):
setting_1: str
setting_2: List[Setting2]
Test.from_dict(yaml_dict_error)
ValueError: Configuration error(s) for YAML:
- value is not a valid list: `sublist` for element 0 in the list for `setting_2`
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
Built Distribution
Hashes for pydantic-yaml-parser-0.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e48f10792e7c6c84a2704888b9a30641eb5bc37c10723048539a67e001722deb |
|
MD5 | e636051164b43397e2eb9b4cf97fdb6c |
|
BLAKE2b-256 | 557c492ab183c26800d970c00eef2e0f784c5fb2ca9067b408dd0616e3fb0875 |
Hashes for pydantic_yaml_parser-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d96553fd7b690ba71a71adb3b7879c3fde05c4ed4b3081dbe3560a8843cdbbc |
|
MD5 | f6c5ae003f193dc2d8c118065ce70943 |
|
BLAKE2b-256 | 00f3188726ef3f7274c5f4abc3b880a24ce5d9785d62b927a8750b793607294f |