snakemake-interface-scheduler-plugins
Scheduler plugin interface for snakemake
What it is and what it does
This package defines the contract between Snakemake and its scheduler plugins. It exports base classes (SchedulerBase, SchedulerSettingsBase) and interface types (SchedulerDAGInterface, SchedulerJobInterface) that plugin authors must implement to create custom job schedulers. The package itself contains no scheduling logic—it is purely a specification layer that ensures plugins can be discovered and loaded by Snakemake at runtime.
Plugin developers use this interface to implement the select_jobs() method, which receives selectable jobs, remaining jobs, available resources, and input file sizes, then returns a sequence of jobs to execute next. The interface also supports optional configuration via SchedulerSettings and lifecycle hooks like dag_updated(). Plugins must follow the naming convention snakemake-scheduler-plugin-* and be published on PyPI to be recognized by Snakemake.
Use it for:
- Build a custom scheduler that prioritizes jobs by input file size or estimated runtime for optimized resource utilization.
- Implement a constraint-based scheduler (e.g., ILP-based) that respects complex resource or dependency constraints beyond Snakemake's defaults.
- Create a distributed scheduler plugin that coordinates job execution across multiple machines or cloud providers.
- Develop a scheduler that integrates with external job queuing systems (SLURM, Kubernetes) via a Snakemake plugin.
- Write a research scheduler that tests novel scheduling heuristics on real bioinformatics or scientific workflows.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides a stable interface specification for building Snakemake scheduler plugins, allowing developers to implement custom job scheduling logic that integrates with Snakemake's workflow execution engine.
Yes, if you are developing a Snakemake scheduler plugin. This is a required dependency for that use case and has low install friction. No, if you are a Snakemake end-user—you do not need this directly. Be aware that the license is unclear in the metadata, so verify the actual license before using in proprietary work. The aging maintenance status (298 days since last release) is typical for a stable interface package but means slower response to compatibility issues.
Install
snakemake-interface-scheduler-plugins on PyPI
pip
pip install snakemake-interface-scheduler-pluginsuv
uv add snakemake-interface-scheduler-pluginspoetry
poetry add snakemake-interface-scheduler-pluginsInstalling snakemake-interface-scheduler-plugins
Before you install
Low install friction with a single runtime dependency (snakemake-interface-common). Maintenance status is aging—last release was 298 days ago—so expect slower response to issues, though the package appears stable for its narrow interface role.
License in practice
License treatment is unclear; no SPDX identifier or raw license text is available in the package metadata. Verify the actual license before depending on this in proprietary or GPL-sensitive projects.
Quickstart
pip install snakemake-interface-scheduler-plugins
from snakemake_interface_scheduler_plugins.base import SchedulerBase
from snakemake_interface_scheduler_plugins.settings import SchedulerSettingsBase
class Scheduler(SchedulerBase):
def select_jobs(self, selectable_jobs, remaining_jobs, available_resources, input_sizes):
# Implement custom scheduling logic
return selectable_jobs
Requires Python 3.11 or later (supports_current). Plugin implementations must follow naming convention snakemake-scheduler-plugin-* and be published on PyPI to be discoverable by Snakemake.
Verify before relying
- Whether the package includes automated testing scaffolding or if Snakedeploy is a separate required tool for plugin development.
- Whether the interface is forward-compatible across Snakemake major versions or if plugins need rebuilding.
- Actual license text or SPDX identifier (currently marked unclear in metadata).
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (<4.0,>=3.11) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — snakemake-interface-common |
| Maintenance | aging — 298 days since the last release |
| First released | |
| Downloads | 95,971/month — #13,240 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: snakemake_interface_scheduler_plugins-2.0.2-py3-none-any.whl
Tags
More Application Frameworks packages
FastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
textualTextual is a Python framework for building…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
mcpBuild and connect to Model Context Protocol…
permissive · top 1,000 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
snakemake-interface-executor-pluginsProvides a stable interface specification for…
permissive · top 15,000 on PyPI
snakemake-interface-report-pluginsDefines the interface contract that Snakemake…
unclear · top 15,000 on PyPI
snakemake-interface-logger-pluginsProvides a stable interface specification for…
unclear · top 15,000 on PyPI
snakemakeSnakemake is a workflow management system that…
permissive · top 15,000 on PyPI
snakemake-interface-storage-pluginsProvides a stable interface specification and…
unclear · top 5,000 on PyPI
snakemake-interface-commonProvides shared interfaces, utilities, and data…
unclear · top 5,000 on PyPI
rq-schedulerAdds job scheduling capabilities to RQ (Redis…
permissive · top 15,000 on PyPI
scheduleSchedule provides a human-friendly API for…
permissive · top 5,000 on PyPI
schedulerAn in-process job scheduler for Python that…
copyleft · top 15,000 on PyPI
luigiLuigi is a Python workflow orchestration…
permissive · top 5,000 on PyPI