Metadata-Version: 2.5
Name: anyquart_pydantic
Version: 0.1.0
Summary: anyquart extension for data validation and api documentation
Author-email: NIYONSHUTI Emmanuel <emmanuelniyonshuti13@gmail.com>
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-Expression: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Flask
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Typing :: Typed
License-File: LICENSE
Requires-Dist: anyquart>=0.3.0
Requires-Dist: pydantic>=2.13.4,<3
Project-URL: Documentation, https://github.com/EmmanuelNiyonshuti/anyquart
Project-URL: Source, https://github.com/EmmanuelNiyonshuti/anyquart
Import-Name: anyquart_pydantic

# anyquart_pydantic

[anyquart](https://github.com/EmmanuelNiyonshuti/anyquart) extension for request and response validation with [pydantic](https://docs.pydantic.dev/).

Annotate your route handlers with pydantic models and the body and response are validated automatically.

## Install

```bash
pip install anyquart_pydantic
```

## Usage

```python
# app.py
from anyquart import AnyQuart
from pydantic import BaseModel
from anyquart_pydantic import AnyQuartPydantic

app = AnyQuart(__name__)
AnyQuartPydantic(app)


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


@app.route("/users", methods=["POST"])
async def create_user(user: User) -> User:
    return user
```

Run it:

```bash
$ anyquart --app app:app run
$ curl -X POST http://localhost:5000/users \
    -H "Content-Type: application/json" \
    -d '{"name": "Ada", "age": 37}'
```

## License
MIT
