Skip to content

Commit fcbb9b6

Browse files
committed
v0.1.3: add README, render on PyPI
1 parent fbd1e3e commit fcbb9b6

4 files changed

Lines changed: 92 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versioning: [S
66

77
## [Unreleased]
88

9+
## [0.1.3] — 2026-04-15
10+
11+
### Added
12+
- `README.md` with install instructions, CLI usage, Python API, and pipeline overview
13+
- `readme = "README.md"` in `pyproject.toml` so the README renders on PyPI
14+
915
## [0.1.2] — 2026-04-11
1016

1117
### Fixed

README.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# PyVAL — Pure Python PDDL Plan Validator
2+
3+
[![PyPI](https://img.shields.io/pypi/v/pddl-pyvalidator.svg)](https://pypi.org/project/pddl-pyvalidator/)
4+
[![Python](https://img.shields.io/pypi/pyversions/pddl-pyvalidator.svg)](https://pypi.org/project/pddl-pyvalidator/)
5+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6+
7+
A pure-Python PDDL plan validator — a drop-in alternative to the compiled [VAL](https://github.com/KCL-Planning/VAL) binary. Built on [unified-planning](https://github.com/aiplan4eu/unified-planning), zero compiled dependencies, `pip install`-able everywhere.
8+
9+
PyVAL produces rich, structured diagnostics designed for both humans and LLM consumption: per-step state changes, precondition deficit reporting, and repair-oriented messages.
10+
11+
## Install
12+
13+
```bash
14+
pip install pddl-pyvalidator
15+
```
16+
17+
## Quick Start
18+
19+
```bash
20+
# Validate a plan against a domain and problem
21+
pyval domain.pddl problem.pddl plan.txt
22+
23+
# JSON output for tool integration
24+
pyval domain.pddl problem.pddl plan.txt --json
25+
26+
# Numeric fluent trajectory (one row per step)
27+
pyval domain.pddl problem.pddl plan.txt --trajectory --track fuel --track cost
28+
29+
# Syntax check only (domain, or domain + problem)
30+
pyval domain.pddl
31+
pyval domain.pddl problem.pddl
32+
```
33+
34+
Exit code is `0` on a valid plan, `1` otherwise.
35+
36+
## Python API
37+
38+
```python
39+
from pyval import PDDLValidator
40+
41+
validator = PDDLValidator()
42+
result = validator.validate(
43+
domain_path="domain.pddl",
44+
problem_path="problem.pddl",
45+
plan_path="plan.txt",
46+
)
47+
48+
if result.is_valid:
49+
print("Plan is valid")
50+
else:
51+
for err in result.errors:
52+
print(err)
53+
```
54+
55+
## What Gets Validated
56+
57+
PyVAL runs a three-phase pipeline and halts on the first fatal error:
58+
59+
1. **Syntax & semantic** — PDDL parses, types/predicates/functions are well-formed, no duplicates or arity mismatches.
60+
2. **Plan structure** — every action name exists in the domain, parameters are declared objects with type-compatible (subtype-aware) bindings.
61+
3. **Plan execution** — each step's preconditions hold, effects apply, and goals are satisfied in the final state. Numeric fluents are tracked across steps; quality metrics (`minimize` / `maximize`) are evaluated on the final state.
62+
63+
Unsupported PDDL features (durative actions, PDDL+ processes/events) are reported as warnings rather than silent failures.
64+
65+
## Output Modes
66+
67+
- **Plain text** (default, VAL-like, optionally `-v` for per-step detail)
68+
- **JSON** (`--json`) — structured for programmatic consumption
69+
- **Trajectory** (`--trajectory`) — numeric fluent values per step, optionally filtered via `--track`
70+
71+
## Development
72+
73+
```bash
74+
python3 -m venv .venv && source .venv/bin/activate
75+
pip install -e ".[dev]"
76+
pytest
77+
```
78+
79+
See `VALIDATOR_SPEC.md` for the full specification and `CLAUDE.md` for architecture notes.
80+
81+
## License
82+
83+
MIT — see [LICENSE](LICENSE).

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "pddl-pyvalidator"
7-
version = "0.1.2"
7+
version = "0.1.3"
88
description = "Pure Python PDDL plan validator"
9+
readme = "README.md"
910
license = "MIT"
1011
requires-python = ">=3.10"
1112
dependencies = [

pyval/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""PyVAL — Pure Python PDDL plan validator."""
22

3-
__version__ = "0.1.2"
3+
__version__ = "0.1.3"
44

55
from pyval.models import (
66
GoalResult,

0 commit comments

Comments
 (0)