ODK

Python path

Scaffold an OMS Service with Copier

The Python template is the Copier counterpart to the Rust scaffold: ServiceStatus, data requests, BIT, contract tooling, Helm, and the same pipelines-oms include. Delete the example and add domain logic. No OMS plumbing to invent.

Day one

Generate, then run

1

Install Copier and uv

Python 3.12+, uv, and uv tool install copier. --trust is required so the post-generate task can stamp revision_date.

2

Copy from a pinned tag

Service names must start with stator-. Pin --vcs-ref; floating main is not a release.

generate
copier copy \
  --trust \
  --vcs-ref v1.0.0 \
  https://gitlab.com/stator-open-labs/oms-developer-kit/service-template-python.git \
  stator-my-python-service
3

Sync, test, publish heartbeats

uv fetches platform-pylib as a git dependency. For a sibling checkout, switch uv sources to a path after generate.

after generate
cd stator-my-python-service
uv sync && uv run pytest && uv run python -m <package>.main

Pin matrix

v1.0.0 defaults

DependencyPin
platform-pylibv1.0.0
pipelines-oms1.0.0
oms_schema_version002.5.0
cucumber-uci image1.0.0

Override any pin at generate time. Generated services default to a proprietary LICENSE (unlike the Rust template). Relicense if you intend to open-source.

Local bus

just helpers

just dev-infra then just dev-run, or just dev-bus for the full stack. Local OWP expects sibling checkouts of platform-crates and PostMaster beside the generated service.

Prefer Rust? Start with cargo-generate. Runtime: Platform-Pylib. Template: Service-Template-Python.