yamale
A schema and validator for YAML.
Decision gist · record as of 2026-08-14
Yes. Yamale is actively maintained, has no known vulnerabilities, installs with minimal friction, and solves a concrete problem—catching YAML structure errors before they cause runtime failures. It's well-suited for any workflow where YAML files are a critical input and validation overhead is worth the safety gain.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.8 or later.
- Schema and data files must be valid YAML.
- Low friction: pure Python wheel with a single runtime dependency (pyyaml).
License · maintenance · safety
MIT (permissive) — MIT license is permissive; you can use, modify, and distribute yamale freely in commercial and open-source projects with minimal restrictions.
last release 2025-11-20 (267 days) · last repo commit 2026-08-13 · 771 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 4,245,504 downloads/mo, #2,353 on PyPI
Alternatives
Verify before relying
pip install yamale
import yamale
schema = yamale.make_schema('./schema.yaml')
data = yamale.make_data('./data.yaml')
yamale.validate(schema, data)- Performance characteristics when validating large YAML files or many files in parallel.
- Whether the optional ruamel.yaml dependency provides meaningful advantages over the default pyyaml parser in typical workflows.
What it is and what it does
Yamale is a YAML schema validator that lets you define the structure, types, and constraints your YAML files must satisfy, then validates one or many files against that schema. It works both as a command-line tool and as a Python library, making it useful for configuration validation, data pipeline checks, and automated testing of YAML-based inputs.
The package depends only on pyyaml (with an optional ruamel.yaml for YAML 1.2 support) and supports Python 3.8 through 3.14. You write schemas in plain YAML using validators like str(), int(), bool(), enum(), and include() for reusable structures. When validation fails, yamale reports all errors at once rather than stopping at the first one, helping you fix multiple issues in a single pass.
Use it for
- Validate application configuration files before deployment to catch typos and type mismatches early.
- Enforce schema on YAML data files in CI/CD pipelines to prevent invalid data from entering downstream processes.
- Define and validate structured test fixtures or mock data in test suites.
- Check Kubernetes manifests or other infrastructure-as-code YAML files for correctness.
- Validate user-supplied YAML input in web services or CLI tools before processing.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Yamale is actively maintained, has no known vulnerabilities, installs with minimal friction, and solves a concrete problem—catching YAML structure errors before they cause runtime failures. It's well-suited for any workflow where YAML files are a critical input and validation overhead is worth the safety gain.
Install
yamale on PyPI
Before you install
Low friction: pure Python wheel with a single runtime dependency (pyyaml). The package is actively maintained with a recent release and no known vulnerabilities.
Requires Python 3.8 or later. Schema and data files must be valid YAML.
License in practice
MIT license is permissive; you can use, modify, and distribute yamale freely in commercial and open-source projects with minimal restrictions.
Quickstart
pip install yamale
import yamale
schema = yamale.make_schema('./schema.yaml')
data = yamale.make_data('./data.yaml')
yamale.validate(schema, data)
Verify before relying
- Performance characteristics when validating large YAML files or many files in parallel.
- Whether the optional ruamel.yaml dependency provides meaningful advantages over the default pyyaml parser in typical workflows.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.8 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagepyyaml |
| Maintenance | Actively maintained 267 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 4,245,504 / month, #2,353 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9 |
Evidence: yamale-6.1.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “yaml schema validation”
- yamaleYamale validates YAML files against a schema you define, catching…
- annotatedyamlParses and validates YAML files with support for embedded secrets and…
- pykwalifyValidates YAML and JSON data against schemas using a Kwalify-based…
Give your agent the search over MCP, or paste the wish link into any chat.
More Quality Assurance packages
Coverage.py measures which lines of Python code are executed during test runs, reporting coverage percentages and identifying untested code paths.
Install it if you want to measure test completeness or enforce coverage thresholds in your project.
Ruff is a Python linter and code formatter written in Rust that combines linting, formatting, and code fixing into a single tool, replacing Flake8, Black, isort, and related utilities.
Pexpect spawns and controls interactive console applications by sending input and matching output patterns, automating tasks that would otherwise require manual interaction.
Black reformats Python source code to a consistent style by parsing entire files and rewriting them according to an opinionated, deterministic set of rules, eliminating manual formatting decisions.
pytest-xdist distributes pytest tests across multiple CPU cores or machines to speed up test execution, with the simplest usage being `pytest -n auto` to spawn workers equal to available CPUs.
Install it if your test suite takes long enough that parallelization would save meaningful time.
Validates AWS CloudFormation templates in YAML or JSON format against resource provider schemas and best practices, checking property values and configuration correctness.
Install it if you work with CloudFormation templates.
See also annotatedyaml · cfgv · pykwalify · strictyaml · kubernetes-validate · avro-validator · yamlpath · zcbor · colander · check-jsonschema