Metadata-Version: 2.4
Name: wizdantic
Version: 0.3.0
Summary: Collect values for a pydantic model via a wizard
Keywords: pydantic,wizard,cli,interactive,prompt,terminal,form,validation
Author: Tucker Beck
Author-email: Tucker Beck <tucker.beck@gmail.com>
License-File: LICENSE.md
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Terminals
Classifier: Typing :: Typed
Requires-Dist: inflection>=0.5.1
Requires-Dist: prompt-toolkit>=3.0
Requires-Dist: py-buzz>=8.1.1
Requires-Dist: pydantic>=2.0
Requires-Dist: rich>=13.0
Requires-Dist: snick>=3.1.0
Requires-Dist: auto-name-enum>=4.1.0 ; extra == 'demo'
Requires-Dist: textual>=0.80 ; extra == 'demo'
Requires-Dist: typer>=0.15 ; extra == 'demo'
Requires-Python: >=3.12
Project-URL: homepage, https://github.com/dusktreader/wizdantic
Project-URL: repository, https://github.com/dusktreader/wizdantic
Project-URL: documentation, https://dusktreader.github.io/wizdantic
Project-URL: changelog, https://github.com/dusktreader/wizdantic/blob/main/CHANGELOG.md
Project-URL: issues, https://github.com/dusktreader/wizdantic/issues
Provides-Extra: demo
Description-Content-Type: text/markdown

[![Latest Version](https://img.shields.io/pypi/v/wizdantic?label=pypi-version&logo=python&style=plastic)](https://pypi.org/project/wizdantic/)
[![Python Versions](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fdusktreader%2Fwizdantic%2Fmain%2Fpyproject.toml&style=plastic&logo=python&label=python-versions)](https://www.python.org/)
[![Build Status](https://github.com/dusktreader/wizdantic/actions/workflows/main.yml/badge.svg)](https://github.com/dusktreader/wizdantic/actions/workflows/main.yml)
[![Documentation Status](https://github.com/dusktreader/wizdantic/actions/workflows/docs.yml/badge.svg)](https://dusktreader.github.io/wizdantic/)


# wizdantic

![wizdantic](https://raw.githubusercontent.com/dusktreader/wizdantic/main/docs/source/images/wizdantic-logo.png)

Conjure populated Pydantic models from thin air with an interactive terminal wizard.


## Super-quick start

Requires Python 3.12+.

```bash
pip install wizdantic
```


## Usage

Define a Pydantic model. Call `run_wizard`. That's it.

```python
from pydantic import BaseModel, Field
from wizdantic import run_wizard

class Spellbook(BaseModel):
    name: str = Field(description="Spellbook title")
    page_count: int = Field(description="Number of pages", default=300)
    ink_weight_kg: float = Field(description="Weight of enchanted ink in kilograms", default=0.4)
    cursed: bool = Field(description="Bound with a curse", default=False)

book = run_wizard(Spellbook, title="Register a Spellbook")
```

The wizard walks the user through each field, validates input inline, insists on required values, pre-fills defaults,
and returns a fully constructed model instance.


## Try the demo

The fastest way to see wizdantic in action is to run the interactive demo. No
install required:

```bash
uvx --from=wizdantic[demo] wizdantic-demo
```

The demo walks through every supported field type, one spell at a time. Each spell shows the model definition and a
plain-English description, then drops you into a live wizard.


## Documentation

Full documentation at [dusktreader.github.io/wizdantic](https://dusktreader.github.io/wizdantic/).
