Metadata-Version: 2.4
Name: arcanada-output-guard
Version: 0.1.0
Summary: Validate, repair, retry LLM structured output (JSON/YAML/TOML/python-literal)
Project-URL: Homepage, https://github.com/Arcanada-one/output-guard
Project-URL: Issues, https://github.com/Arcanada-one/output-guard/issues
Project-URL: Repository, https://github.com/Arcanada-one/output-guard
Author-email: Arcanada <pavel@arcanada.one>
License: MIT
Keywords: arcanada,json,llm,pydantic,repair,structured-output,toml,yaml
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.11
Requires-Dist: json-repair>=0.30
Requires-Dist: jsonschema>=4.23
Requires-Dist: pydantic>=2.9
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: tomli-w>=1.0.0
Provides-Extra: dev
Requires-Dist: hypothesis>=6.115; extra == 'dev'
Requires-Dist: mypy>=1.13; extra == 'dev'
Requires-Dist: pip-audit>=2.7; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.3; extra == 'dev'
Requires-Dist: ruff>=0.7; extra == 'dev'
Requires-Dist: types-jsonschema>=4.23; extra == 'dev'
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
Description-Content-Type: text/markdown

# arcanada-output-guard

Python sibling of [`@arcanada/output-guard`](https://www.npmjs.com/package/@arcanada/output-guard). Mirror surface, shared golden fixtures, byte-equal parity gate.

See repository root [README](../../README.md) for full design.

## Install

```bash
pip install arcanada-output-guard
# or
uv add arcanada-output-guard
```

## Status

v0.1.0 — 15 strategies, two-pass orchestrator, pydantic + JSON-Schema adapters,
guarded_generate async wrapper, batch + class API, 253 tests (including
parity gate against fixtures-shared and hypothesis property tests).

## Quick start

```python
from output_guard import OutputGuard, pydantic_adapter, repair
from pydantic import BaseModel

class User(BaseModel):
    name: str
    age: int

# Functional API
result = repair('{"name": "Alice", "age": 30,}', "json", pydantic_adapter(User))
print(result.data)                # User(name='Alice', age=30)
print(result.pass_)               # "A"
print(result.strategies_applied)  # ["fix-commas"]

# Stateful API
guard = OutputGuard(schema=User)
result = guard.repair('```json\n{"name": "Bob", "age": 25}\n```')
```

## License

MIT.
