Install & Compatibility
Where this runs
tested against v0.9.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 1.084s · 30.7MB
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 3.5s · import 1.004s · 31MB
29MB installed
● package 29MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
JobTemplate
✓ from openjd.model import JobTemplate
✗ from openjd.model.template import JobTemplate
JobTemplate is directly exported from openjd.model; the submodule path is incorrect.
parse
✓ from openjd.model import parse
parse function is the recommended way to load templates from YAML or dict.
Parses a minimal job template YAML and prints the job name.
from openjd.model import parse, JobTemplate
# Load from a YAML string
template_yaml = """
specificationVersion: 'jobtemplate-2023-09'
name: Example Job
steps:
- name: Step1
script:
actions:
onRun:
command: echo
args: ['{{Param.param1}}']
parameterValues:
- name: param1
type: STRING
value: hello
"""
template = parse(template_yaml, JobTemplate)
print(template.name) # Example Job
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'openjd'
Installing the wrong package or missing dependency 'openjd-model'.
fixRun: pip install openjd-model
pydantic_core._pydantic_core.PydanticCustomError: 1 validation error for JobTemplate
-> steps
-> 0
-> name
Field required
Missing required fields in the template YAML.
fixEnsure all required fields like 'name' in steps are provided. Check the schema for mandatory attributes.
Upgrade
Version history
0.9.0latest on PyPI · released Feb 3, 2026
Audit
Dependencies
pydanticrequiredCore validation framework used for model definitions.
pyyamlrequiredFor YAML parsing of templates.