from prefect import flow, task

@task(retries=3, retry_delay_seconds=5, log_prints=True)
def fetch_data(source: str) -> str:
    print(f"Fetching from {source}")
    return f"data_from_{source}"

@task(log_prints=True)
def process_data(data: str) -> str:
    result = data.upper()
    print(f"Processed: {result}")
    return result

@flow(name="Sample Pipeline")
def my_pipeline(source: str = "api"):
    raw = fetch_data(source)
    processed = process_data(raw)
    return processed

if __name__ == "__main__":
    result = my_pipeline(source="database")
    print(f"Final result: {result}")