Skip to main content
Current template builds stream structured log entries for both blocking and background workflows. Use on_log_entry= when you need progress output.

Blocking logs

from nullspace import Template

def log(entry):
    print(entry.level, entry.message)

Template.build(
    Template.from_python_image("3.12").run_cmd("python --version"),
    "python-dev",
    on_log_entry=log,
)

Background logs

build = Template.build_in_background(
    Template.from_python_image("3.12"),
    name="python-dev",
)
final = build.wait_until_terminal(on_log_entry=log)
print(final.build.status)
For reconnectable consumers, persist TemplateBuildStatusSnapshot.next_offset from get_status() and pass it as offset= on the next poll or wait call. When migrating older template-build examples, keep build environment values in set_build_envs() and runtime defaults in set_runtime_envs(). Concept: Create. API reference: buildTemplate, getTemplateBuildStatus.