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:
anyNoneboolintfloatstrenum(requiresvalues)
Composite types:
list[T]tuple[T1, T2, ...]union[A, B]orA | Bobject[package.module.ClassName](orobjectwith_type_in data)
Common field options:
descriptionrequireddefaultmin_value/max_value/value_rangemin_length/max_length/length_range
Notes
- Field names cannot use reserved constructor keywords.
- Optional fields usually require a valid
default. - HTTP
$refresolution importsrequestsat runtime.
Documentation
See docs/index.md for a full type reference and behavior notes.
Running tests
pytest
Status
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bf415c2f201eafe28afd5ac2039f33d5ed583625ecfc7a2a371114532a61b72
|
|
| MD5 |
63cdb6c4e8d147b7b67fa104b46d2c63
|
|
| BLAKE2b-256 |
8e85e56d303dea647894e4bbad3317701b779e65adeeddaf63812a7e7496d093
|
Provenance
The following attestation bundles were made for readtheyaml-2.3.0.tar.gz:
Publisher:
python-publish.yml on TheRealMarVin/ReadTheYaml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
readtheyaml-2.3.0.tar.gz -
Subject digest:
4bf415c2f201eafe28afd5ac2039f33d5ed583625ecfc7a2a371114532a61b72 - Sigstore transparency entry: 1341991096
- Sigstore integration time:
-
Permalink:
TheRealMarVin/ReadTheYaml@c1f3d3da29ce6395b4090540afbcdb90dd3e31a6 -
Branch / Tag:
refs/tags/2.3.0 - Owner: https://github.com/TheRealMarVin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@c1f3d3da29ce6395b4090540afbcdb90dd3e31a6 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ac2480ddfaa0c403fba1561528b53aaf8526b4a243ae67a3a6d9f4b83272d87
|
|
| MD5 |
16c3392eeed641705e3784577cd78b73
|
|
| BLAKE2b-256 |
b0bbbdfe27e33ddae23372fbda6a40147676d40dbb39d46fe5765968ac356cac
|
Provenance
The following attestation bundles were made for readtheyaml-2.3.0-py3-none-any.whl:
Publisher:
python-publish.yml on TheRealMarVin/ReadTheYaml
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
readtheyaml-2.3.0-py3-none-any.whl -
Subject digest:
8ac2480ddfaa0c403fba1561528b53aaf8526b4a243ae67a3a6d9f4b83272d87 - Sigstore transparency entry: 1341991112
- Sigstore integration time:
-
Permalink:
TheRealMarVin/ReadTheYaml@c1f3d3da29ce6395b4090540afbcdb90dd3e31a6 -
Branch / Tag:
refs/tags/2.3.0 - Owner: https://github.com/TheRealMarVin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@c1f3d3da29ce6395b4090540afbcdb90dd3e31a6 -
Trigger Event:
release
-
Statement type: