Skip to main content

No project description provided

Project description

type-yaml

Describes a yaml schema using Python types.

Simple Python types such as list[str] or dict[int, list[str]] that allow yaml to verify that the type fits and parse values based on it.

Requirements

  • Python 3.8+
  • PyYAML

Install

pip install type-yaml

Features:

  • int
  • float
  • str
  • bool
  • list / typing.List
  • dict / typing.Dict
  • set / typing.Set
  • tuple / typing.Tuple
  • dataclass
    • default values and default-factory
    • special notation in yaml with metadata
  • operator |/ typing.Union
  • typing.Any
  • lazy evaluation by string representation of type

Examples

from dataclasses import dataclass

from type_yaml import load


@dataclass
class Point:
    x: int
    y: int


print(load(list[Point], open("points.yaml")))
# >>> [Point(x=1, y=2), Point(x=3, y=4)]
# points.yaml
-
  x: 1
  y: 2
-
  x: 3
  y: 4

Usage

Functions such as load, loads, dump, and dumps can be imported from type_yaml. The details of each are as follows.

  • load(type, stream, **kwargs)
    • Load a yaml file and parse it into a Python object.
    • type is a type that can be parsed by type_yaml.
    • stream is a text stream. e.g. open("file.yaml")
    • options
      • loader: yaml loader of PyYAML. default: yaml.SafeLoader
      • true_strings: list of strings that are parsed as True. default: ("true", "yes", "on", "1")
      • false_strings: list of strings that are parsed as False. default: ("false", "no", "off", "0")
      • type_name_map, globalns, localns: a dictionary or namespace of variable names is given to allow interpretation of the string representation of the type
  • loads(type, string, **kwargs)
    • Load a yaml string and parse it into a Python object.
    • type is a type that can be parsed by type_yaml.
    • string is a yaml string.
    • options is same as load
  • dump(value, stream, **kwargs)
    • Dump a Python object to a yaml file.
    • value is a Python object that can be parsed by type_yaml.
    • stream is a text stream. e.g. open("file.yaml")
    • options
      • dumper: yaml dumper of PyYAML. default: `type_yaml.yaml_interpreter.RealYamlDumper
  • dumps(value, **kwargs)
    • Dump a Python object to a yaml string.
    • value is a Python object that can be parsed by type_yaml.
    • options is same as dump

Other

The license is the MIT License.

If you have any bugs, mistakes, feature suggestions, etc., issues and pull requests are welcome.

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

type_yaml-0.3.0.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

type_yaml-0.3.0-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file type_yaml-0.3.0.tar.gz.

File metadata

  • Download URL: type_yaml-0.3.0.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.0rc2 Linux/5.15.0-67-generic

File hashes

Hashes for type_yaml-0.3.0.tar.gz
Algorithm Hash digest
SHA256 67c58ddf320d654e3d078dbd77b4fcd43a93c5d8b21941790fecee68afb044cd
MD5 217a97c6b6bbf2c59e1672d9e7093ec5
BLAKE2b-256 58b105d57c4376c6ee8b82fa7a8318f23b0920df11e120a411d48057ab2998ca

See more details on using hashes here.

File details

Details for the file type_yaml-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: type_yaml-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.0rc2 Linux/5.15.0-67-generic

File hashes

Hashes for type_yaml-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d74c1c018e87f17934d4bc2d6997f472da34582fe44ea7efee4e011c13e7a6c
MD5 5cc9ec9a80acf3d911cc02daef723e92
BLAKE2b-256 44c4632fa5ad87ea94d534c2f4361ba4ef9ebd7314849b5429867503161377bf

See more details on using hashes here.

Supported by

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