Source code for otter.tasks.hello_world

"""Simple hello world example."""

import asyncio
from typing import Self

from loguru import logger

from otter.manifest.model import Artifact
from otter.task.model import Spec, Task, TaskContext
from otter.task.task_reporter import report


[docs] class HelloWorldSpec(Spec): """Configuration fields for the hello_world task.""" who: str | None = 'world' """The person to greet."""
[docs] class HelloWorld(Task): """Simple hello world example.""" def __init__(self, spec: HelloWorldSpec, context: TaskContext) -> None: super().__init__(spec, context) self.spec: HelloWorldSpec
[docs] @report async def run(self) -> Self: """Say hello, then create an artifact about it.""" logger.info('saying hello...') await asyncio.sleep(0.1) logger.success(f'hello {self.spec.who}') self.artifact = Artifact(source='me', destination=self.spec.who or 'world') return self
[docs] @report async def validate(self) -> Self: """Dummy validation step.""" logger.info('did we say hello properly?') await asyncio.sleep(0.1) logger.success('yes we did!') return self