Skip to main content

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

pydantic-yaml-parser-0.0.1.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

pydantic_yaml_parser-0.0.1-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file pydantic-yaml-parser-0.0.1.tar.gz.

File metadata

  • Download URL: pydantic-yaml-parser-0.0.1.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.12

File hashes

Hashes for pydantic-yaml-parser-0.0.1.tar.gz
Algorithm Hash digest
SHA256 e48f10792e7c6c84a2704888b9a30641eb5bc37c10723048539a67e001722deb
MD5 e636051164b43397e2eb9b4cf97fdb6c
BLAKE2b-256 557c492ab183c26800d970c00eef2e0f784c5fb2ca9067b408dd0616e3fb0875

See more details on using hashes here.

File details

Details for the file pydantic_yaml_parser-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_yaml_parser-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9d96553fd7b690ba71a71adb3b7879c3fde05c4ed4b3081dbe3560a8843cdbbc
MD5 f6c5ae003f193dc2d8c118065ce70943
BLAKE2b-256 00f3188726ef3f7274c5f4abc3b880a24ce5d9785d62b927a8750b793607294f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page