Skip to main content

ofplang schedule

CI PyPI

A scheduler for Object-flow Programming Language v0 — a YAML-based dataflow workflow IR with linear Object tracking. The language is defined in the ofplang/spec repository.

The scheduler takes a portable v0 workflow plus an execution environment definition and plans when its work runs; it also replans from an execution status. The design is documented in docs/SPECIFICATIONS.md.

Status: the schema validators (environment definition and execution document, spec §9) and the scheduler are implemented: it produces a makespan-optimal plan for a single workflow with mode selection, spot/device occupancy, and transport, pins a workflow's boundary material to spots via an interface (spec §6.8), and replans from an execution document (--document) by fixing completed/running activities and re-optimising the rest at or after now (device-local resources not yet). A visualize command renders a plan as a self-contained SVG/HTML Gantt chart. The model is documented in docs/FORMULATION.md.

This is a fresh implementation that targets the spec directly. The prototype ofp-scheduler (OR-Tools CP-SAT) is a reference for ideas but not a dependency.

Install

pip install ofplang-schedule

Requires Python 3.10+. Runtime dependencies are PyYAML, OR-Tools (the CP-SAT solver used by the scheduler), and the sibling ofplang-validate (pulled in automatically), which the CLI's front-door check uses. The scheduler library never imports validate, so embedders that only call ofplang.schedule take no validation overhead.

For development, install editable with the test extra from a clone:

pip install -e ".[test]"

Command line

ofp-schedule validate <file>...                 # validate an environment or a plan/status
ofp-schedule schedule <workflow> --env <env> [--document doc.yaml] [--running-margin N] [--seed N] [--no-validate] [-o plan.yaml] [--format yaml|json]
ofp-schedule visualize <plan> [--view device|workflow|lane] [--theme light|dark|auto] [-o out.svg]

validate auto-detects whether the file is an environment definition or an execution document (pass --kind to force it); diagnostics are reported as file:line:col: <severity> <code>. schedule produces an execution plan (§6) that minimises makespan. A --document (execution document, §6) supplies the interface boundary constraint (§6.8, where a workflow's entry inputs / final outputs sit) and, when it sets now, the prior status to replan from (§7) — emitting the full timeline (fixed history + re-optimised future) that round-trips as the next status input. By default the solve is non-deterministic (a multi-worker search that may return a different equally-optimal schedule each run); --seed N makes it reproducible by fixing the CP-SAT seed and using a single worker. --no-validate skips the one-shot ofplang-validate front-door check of the workflow — use it when the workflow was already validated upstream (e.g. by the ofp umbrella CLI); $import is still resolved, since that is structural rather than a validation check. visualize renders a plan as a self-contained Gantt chart — SVG by default (fixed colours, transparent background, PowerPoint-safe) or HTML. Exit codes: 0 success, 1 validation errors or no feasible schedule, 2 usage/input error.

This tool is also intended to be exposed as the schedule subcommand of the umbrella ofp CLI (a separate repository in the ofplang organization).

Library

from ofplang.schedule import schedule

report = schedule(workflow, environment, document_path=status)  # -> ScheduleReport

Each input is either a path or an already-loaded document (a mapping), so an embedder that holds them in memory — a rolling-horizon runner rendering a fresh status every replan — passes them straight in, with no temporary files and nothing re-parsed. An in-memory document is read, never written to, and the plan it produces shares no structure with it. Because such a document has no file to point at, its diagnostics carry no file:line:col and locate by their path instead, and the plan's meta provenance reads <in-memory> unless the caller names the original file (workflow_source / environment_source / document_source).

The package lives under the ofplang PEP 420 namespace (ofplang.schedule), shared across the organization's tools.

Tests

pytest

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ofplang_schedule-0.1.6.tar.gz (179.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ofplang_schedule-0.1.6-py3-none-any.whl (80.2 kB view details)

Uploaded Python 3

File details

Details for the file ofplang_schedule-0.1.6.tar.gz.

File metadata

  • Download URL: ofplang_schedule-0.1.6.tar.gz
  • Upload date:
  • Size: 179.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ofplang_schedule-0.1.6.tar.gz
Algorithm Hash digest
SHA256 7c482fa6b8c631df2c84f0319110b046fba343b24c75a17315855cb278fb5be9
MD5 f7f5ea77712264c6c17d65702a058a22
BLAKE2b-256 67a298756a02a7e7d9cb3a56ea27074d3cd62e3e8f2a00d63a27f54fa08eb496

See more details on using hashes here.

Provenance

The following attestation bundles were made for ofplang_schedule-0.1.6.tar.gz:

Publisher: publish.yml on ofplang/schedule

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ofplang_schedule-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for ofplang_schedule-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 34d73a7ab5df30d28d85390d791157f38cb4eef631fb3c2dcc3c9af6d3d828d7
MD5 e7c55655c4c9db96772b6d878b7dcf2f
BLAKE2b-256 01fe1e5b36042019f26ef5d3885d65031d573108cfc9db82227d8bb41f75e66a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ofplang_schedule-0.1.6-py3-none-any.whl:

Publisher: publish.yml on ofplang/schedule

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.10.0

2 files

0.9.0

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

0.3.0

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

This release

0.1.6 This release

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page