1. Pydantic
Resolve a Pydantic dependency when a class action is called. HeroPower is supplied by Depends() without becoming part of the HeroIn payload.
Source
"""Resolve a Pydantic dependency when a class action is called.
HeroPower is supplied by Depends() without becoming part of the HeroIn payload."""
import asyncio
from typing import assert_type
from fastsprout.actions import Action
from fastsprout.core import BaseSchema, Depends, Field
class HeroIn(BaseSchema):
name: Field[str]
class HeroPower(BaseSchema):
value: Field[str] = Field(default="Money")
class HeroOut(BaseSchema):
name: Field[str]
power: HeroPower
class CreateHero(Action[HeroIn, HeroOut]):
async def __call__(
self,
payload: HeroIn,
hero_power: HeroPower = Depends(),
) -> HeroOut:
return HeroOut(name=payload.name, power=hero_power)
async def main() -> None:
hero = await CreateHero()(HeroIn(name="Batman"))
assert_type(hero, HeroOut)
print("HeroOut:", hero)
if __name__ == "__main__":
asyncio.run(main())