validate-pyproject
Validation library and CLI tool for checking on 'pyproject.toml' files using JSON Schema
Decision gist · record as of 2026-08-14
Yes. Low install friction, active maintenance, no known vulnerabilities, and clear utility for anyone managing Python packages. The copyleft license (MPL-2.0 primary) is standard for development tools. Install with [all] extras for full CLI and PEP 621 validation; use the base package if you only need the Python API.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.8+.
- The packaging dependency is mandatory; trove-classifiers is optional but recommended to avoid network calls.
- Low friction: pure Python wheel with a single runtime dependency (fastjsonschema).
License · maintenance · safety
MPL-2.0 and MIT and BSD-3-Clause (copyleft) — Triple-licensed under MPL-2.0, MIT, and BSD-3-Clause (copyleft treatment). Users must comply with at least one of these licenses; MPL-2.0 is the most restrictive of the three.
last release 2026-02-02 (193 days) · last repo commit 2026-08-03 · 209 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 334,508 downloads/mo, #7,489 on PyPI
Alternatives
Verify before relying
from validate_pyproject import api, errors
pyproject_dict = {"project": {"name": "example"}}
validator = api.Validator()
try:
validator(pyproject_dict)
except errors.ValidationError as ex:
print(f"Invalid: {ex.message}")- Whether the package's JSON Schema definitions stay current with evolving PEP standards without manual updates
- Performance characteristics when validating large or complex pyproject.toml files
- Whether network fallback for classifier validation (when trove-classifiers not installed) is reliable in CI/CD environments
What it is and what it does
validate-pyproject is a validation library and CLI tool that checks pyproject.toml files for compliance with Python packaging standards (PEP 517, PEP 518, PEP 621) using JSON Schema definitions. It can be used as a standalone command-line tool via pipx, embedded in Python scripts through its API, or integrated as a pre-commit hook.
The package relies on fastjsonschema for schema validation and optionally uses packaging and trove-classifiers to validate metadata and classifier fields. It is marked as experimental and under active development. Users can extend validation with plugins, and a companion schema-store plugin provides vendored SchemaStore entries for tool-specific pyproject.toml schemas.
Use it for
- Validate pyproject.toml files in CI/CD pipelines to catch configuration errors before packaging
- Enforce PEP 621 compliance in monorepos or multi-project organizations
- Integrate validation into pre-commit hooks to catch invalid metadata at commit time
- Programmatically validate pyproject.toml in build tools or package management scripts
- Verify that custom tool-specific sections in pyproject.toml match their expected schemas
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Low install friction, active maintenance, no known vulnerabilities, and clear utility for anyone managing Python packages. The copyleft license (MPL-2.0 primary) is standard for development tools. Install with [all] extras for full CLI and PEP 621 validation; use the base package if you only need the Python API.
Install
validate-pyproject on PyPI
Before you install
Low friction: pure Python wheel with a single runtime dependency (fastjsonschema). Actively maintained with recent commits and steady releases since 2021.
Requires Python 3.8+. The packaging dependency is mandatory; trove-classifiers is optional but recommended to avoid network calls.
License in practice
Triple-licensed under MPL-2.0, MIT, and BSD-3-Clause (copyleft treatment). Users must comply with at least one of these licenses; MPL-2.0 is the most restrictive of the three.
Quickstart
from validate_pyproject import api, errors
pyproject_dict = {"project": {"name": "example"}}
validator = api.Validator()
try:
validator(pyproject_dict)
except errors.ValidationError as ex:
print(f"Invalid: {ex.message}")
Verify before relying
- Whether the package's JSON Schema definitions stay current with evolving PEP standards without manual updates
- Performance characteristics when validating large or complex pyproject.toml files
- Whether network fallback for classifier validation (when trove-classifiers not installed) is reliable in CI/CD environments
Package facts
| License | MPL-2.0 and MIT and BSD-3-Clause copyleft |
| Python support | Supports the current Python release >=3.8 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagefastjsonschema |
| Maintenance | Actively maintained 193 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 334,508 / month, #7,489 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaIntended Audience :: DevelopersOperating System :: OS IndependentProgramming Language :: PythonTopic :: Software Development :: Quality AssuranceTyping :: Typed |
Evidence: validate_pyproject-0.25-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 › “pyproject.toml validation”
- validate-pyprojectValidates pyproject.toml files against JSON Schema definitions to…
- maisonMaison reads configuration settings from files like pyproject.toml…
- pyproject-metadataValidates and transforms pyproject.toml [project] metadata into PEP…
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 pyproject-toml · validate-pyproject-schema-store · pyproject-metadata · pyproject-parser · check-manifest · trove-classifiers · pyroma · dependency-groups · sampleproject · pdm-pep517