Skip to main content

PythonLab Scheduler

Generic Scheduler for Lab Automation Processes. 'Scheduling' in this sense means taking a workflow description and a descriptions of a lab(also called job shop) and assigning timestamps and machines to the steps of the workflow in an intelligent way.

flowchart TD
A[Scheduler]--computes-->B[Schedule];
B --contains-->C[Start Times];
B --contains-->D[Machine Assignments];
E[Job Shop]--YAML-->A;
F[Workflow]--python-->A;
G[Precedences]--make up-->F;
H[Process Steps]--make up-->F;
I[Machines]--make up-->E;

In other words: It solves a generalization of the Job Shop Scheduling Problem(JSSP). The main generalizations are

  • Jobs can have several operations on the same machine
  • There might be several machines of a kind
  • Time-constraints between Operations (soft and hard)
  • Machines can have capacities to do several operations in parallel
  • Jobs can intersect(i.e. operations can have precedence constraints to other jobs operations)

More precise information on this can be found here

Installation

pip install labscheduler --index-url https://gitlab.com/api/v4/projects/25166382/packages/pypi/simple

Scheduling Framework Overview

The framework is designed to be very generic: The core scheduling algorithm can be exchanged by any scheduling concept that shall be developed, tested or used in a real world application. The scheduler itself can be used via python import or as a micro service via SiLA. More information in the framework can be found here.

graph TD;
  A[User] <-- python --> B[Scheduler];
  A <-- sila_python --> C[SiLA-Client];
  C <-- SiLA --> D[SiLA-Server];
  B <--> D;
  B --> E[AlgorithmInterface];
  E -- implemented by --> F[Algorithm];
  E -- implemented by --> G[Algorithm];
  E -- implemented by --> H[Algorithm];

Usage

For help in the console type

labscheduler --help

The scheduler can be accessed via standard python import or run on a SiLA-server and accessed via a SiLA-client. Examples can be found here:

Development

git clone gitlab.com/opensourcelab/labscheduler

# create a virtual environment and activate it then run

pip install -e .[dev]

# run unittests

invoke test   # use the invoke environment to manage development

# commit changes: please install pre-commit hooks
pre-commit install

Documentation

The Documentation can be found here: https://opensourcelab.gitlab.io/labscheduler

Credits

This package was created with Cookiecutter and the gitlab.com/opensourcelab/software-dev/cookiecutter-pypackage project template.

Metadata

Release files for labscheduler 0.2.43

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for labscheduler 0.2.43
File Size Uploaded Provenance Actions
labscheduler-0.2.43.tar.gz 59.0 kB Without provenance Details for labscheduler-0.2.43.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for labscheduler 0.2.43
File Interpreter ABI Platform Actions
labscheduler-0.2.43-py3-none-any.whl Python 3 none any Details for labscheduler-0.2.43-py3-none-any.whl

Total release size: 142.9 kB

Release files / labscheduler-0.2.43.tar.gz

Download URL labscheduler-0.2.43.tar.gz
Size 59.0 kB
Tags Source
SHA-256 checksum
How to use checksums
e213f69cc44db178d8b9db8007665229b04597faaea608da5336a1e9d677a50e
BLAKE2b-256 checksum
How to use checksums
589b48ff9a9d5df6e47e4847f3d9a5ce105058bdca2c86c2c08faa2398b3165d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.10

Release files / labscheduler-0.2.43-py3-none-any.whl

Download URL labscheduler-0.2.43-py3-none-any.whl
Size 83.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8476654b3f77a083b6e4c358ba3ec407623c35e6e4fb293e5f335b0a8536a009
BLAKE2b-256 checksum
How to use checksums
3e1981f5c0a1052796b5e4f56ff1809317437fa3bf4a7f3a581bdef6cb88d79d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.10

Security for labscheduler 0.2.43

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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