Skip to main content

Validate and document your YAML config files — so future-you doesn't have to guess.

Project description

ReadTheYAML

ReadTheYAML validates YAML config files against a schema, injects defaults, and returns a validated config object.

Installation

pip install ReadTheYAML

Local development install:

git clone https://github.com/TheRealMarVin/ReadTheYAML.git
cd ReadTheYAML
pip install -e .

What it supports

  • Required and optional fields
  • Default values for optional fields
  • Primitive and composite types
  • Nested sections
  • Strict mode (reject unknown keys) and non-strict mode (pass through unknown keys)
  • Schema composition with $ref (local files and HTTP URLs)

Quick start

Schema (schema.yaml):

service_name:
  type: str
  description: service display name

port:
  type: int
  description: service port
  required: false
  default: 8080
  min_value: 1
  max_value: 65535

logging:
  $ref: ./shared/logging.yaml
  required: false

Config (config.yaml):

service_name: api-gateway

Python usage:

from readtheyaml.schema import Schema

schema = Schema.from_yaml("schema.yaml")
built, data_with_default = schema.validate_file("config.yaml", strict=True)

print(built)              # validated/built config
print(data_with_default)  # config with injected defaults

CLI usage

This repository currently exposes a CLI through main.py:

python main.py --schema schema.yaml --config config.yaml

Type syntax overview

Primitive types:

  • any
  • None
  • bool
  • int
  • float
  • str
  • enum (requires values)

Composite types:

  • list[T]
  • tuple[T1, T2, ...]
  • union[A, B] or A | B
  • object[package.module.ClassName] (or object with _type_ in data)

Common field options:

  • description
  • required
  • default
  • min_value / max_value / value_range
  • min_length / max_length / length_range

Notes

  • Field names cannot use reserved constructor keywords.
  • Optional fields usually require a valid default.
  • HTTP $ref resolution imports requests at runtime.

Documentation

See docs/index.md for a full type reference and behavior notes.

Running tests

pytest

Status

Run Unit Tests

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

readtheyaml-2.3.0.tar.gz (41.7 kB view details)

Uploaded Source

Built Distribution

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

readtheyaml-2.3.0-py3-none-any.whl (65.0 kB view details)

Uploaded Python 3

File details

Details for the file readtheyaml-2.3.0.tar.gz.

File metadata

  • Download URL: readtheyaml-2.3.0.tar.gz
  • Upload date:
  • Size: 41.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for readtheyaml-2.3.0.tar.gz
Algorithm Hash digest
SHA256 4bf415c2f201eafe28afd5ac2039f33d5ed583625ecfc7a2a371114532a61b72
MD5 63cdb6c4e8d147b7b67fa104b46d2c63
BLAKE2b-256 8e85e56d303dea647894e4bbad3317701b779e65adeeddaf63812a7e7496d093

See more details on using hashes here.

Provenance

The following attestation bundles were made for readtheyaml-2.3.0.tar.gz:

Publisher: python-publish.yml on TheRealMarVin/ReadTheYaml

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file readtheyaml-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: readtheyaml-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 65.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for readtheyaml-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ac2480ddfaa0c403fba1561528b53aaf8526b4a243ae67a3a6d9f4b83272d87
MD5 16c3392eeed641705e3784577cd78b73
BLAKE2b-256 b0bbbdfe27e33ddae23372fbda6a40147676d40dbb39d46fe5765968ac356cac

See more details on using hashes here.

Provenance

The following attestation bundles were made for readtheyaml-2.3.0-py3-none-any.whl:

Publisher: python-publish.yml on TheRealMarVin/ReadTheYaml

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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