Metadata-Version: 2.1
Name: metantic
Version: 0.1.0
Summary: Metaprogramming with pydantic Models (creating types from types) 
Author-email: Marcel Claramunt <marcel@moveread.com>
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: pydantic

# Metantic

> Metaprogramming with pydantic Models (creating types from types)

## Partial

> Create a partial model (all fields optional)

```python
from metantic import Partial

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

Partial(User).model_validate(dict(id="id", name="name"))
# PartialUser(id='id', name='name', age=None)
```

## Fields

> Obtain a `Literal` type for the model's fields (which can be validated)

```python
from metantic import Fields

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

Fields(User) # typing.Literal['id', 'name', 'age']

class Query(BaseModel):
    fields: Fields(User)

Query(fields=["id", "name"]) # OK
Query(fields=["email"]) # ValidationError: fields Input should be 'id', 'name' or 'age' [...]
```
