Source code for p2p.commands.generate
"""User-facing endowment-generation command composition."""
from __future__ import annotations
import os
from p2p.config import Config
from p2p.stages import generate as generate_stage
from p2p.usage import write_usage_artifacts
[docs]
def run(
config: Config,
*,
run_dir: str | os.PathLike[str],
verbose: bool = False,
) -> generate_stage.GenerationResult:
"""Validate and execute one configured generation strategy."""
if not isinstance(config, Config):
raise TypeError("config must be Config")
config.validate_for("generate")
result = generate_stage.run(
config,
run_dir=run_dir,
verbose=verbose,
)
config.write_snapshot(run_dir)
if result.usage_tracker is not None:
write_usage_artifacts(
result.usage_tracker,
run_dir,
)
return result
__all__ = [
"run",
]