Skip to main content

Object-flow programming language v0 scheduler

Project description

ofplang schedule

CI

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 -e ".[test]"

Requires Python 3.10+. Runtime dependencies are PyYAML and OR-Tools (the CP-SAT solver used by the scheduler). The CLI's front-door check also uses the sibling ofplang-validate (not on PyPI); install it editable alongside this repo:

pip install -e ../ofplang-validate

The scheduler library never imports it, so embedders that only call ofplang.schedule take no validation dependency or overhead.

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] [-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. 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).

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

Tests

pytest

Project details


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.0rc1.tar.gz (162.3 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.0rc1-py3-none-any.whl (72.8 kB view details)

Uploaded Python 3

File details

Details for the file ofplang_schedule-0.1.0rc1.tar.gz.

File metadata

  • Download URL: ofplang_schedule-0.1.0rc1.tar.gz
  • Upload date:
  • Size: 162.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for ofplang_schedule-0.1.0rc1.tar.gz
Algorithm Hash digest
SHA256 1b016b42237db517719d03ea3ccb6d834812c2fd2d8ce9e0dc372c6206b3793d
MD5 fae4649f9f28d21943f88bfce6b42957
BLAKE2b-256 9d1b845d7ec329ce734cc698c70126b3536898550fb4dbafcea2f5ef3312e09b

See more details on using hashes here.

Provenance

The following attestation bundles were made for ofplang_schedule-0.1.0rc1.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.0rc1-py3-none-any.whl.

File metadata

File hashes

Hashes for ofplang_schedule-0.1.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 2921388d2492d025bdd7efde3d8f21576115d8e0257523db44452dbc7720578c
MD5 afc570a4fdc4d179d76005b93f213463
BLAKE2b-256 449fd35a5155efc7bd2de42d6c329d9ea984e7b5e9df1940135781ba7ad5e3ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for ofplang_schedule-0.1.0rc1-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.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page