This package provides a stable interface for interactions between Snakemake and its executor plugins.
Project description
Stable interfaces and functionality for Snakemake executor plugins
This package provides a stable interface for interactions between Snakemake and its executor plugins (WIP).
Plugins should implement the following skeleton to comply with this interface:
from snakemake_interface_executor_plugins.executors.remote import RemoteExecutor
from snakemake_interface_executor_plugins import ExecutorSettingsBase, CommonSettings
# Optional:
# define additional settings for your executor
# They will occur in the Snakemake CLI as --<executor-name>-<param-name>
# Omit this class if you don't need any.
@dataclass
class ExecutorSettings:
myparam: int=field(default=None, metadata={"help": "Some help text"})
# Required:
# Specify common settings shared by various executors.
common_settings = CommonSettings(
# define whether your executor plugin executes locally
# or remotely. In virtually all cases, it will be remote execution
# (cluster, cloud, etc.). Only Snakemake's standard execution
# plugins (snakemake-executor-plugin-dryrun, snakemake-executor-plugin-local)
# are expected to specify False here.
non_local_exec=True
)
# Required:
# Implementation of your executor
class Executor(RemoteExecutor)
def __init__(
self,
workflow: WorkflowExecutorInterface,
dag: DAGExecutorInterface,
logger: LoggerExecutorInterface,
):
super().__init__(
workflow,
dag,
logger,
executor_settings,
# configure behavior of RemoteExecutor below
pass_default_remote_provider_args=True, # whether arguments for setting the remote provider shall be passed to jobs
pass_default_resources_args=True, # whether arguments for setting default resources shall be passed to jobs
pass_envvar_declarations_to_cmd=True, # whether environment variables shall be passed to jobs
)
# access executor specific settings
self.executor_settings
# access workflow
self.workflow
# IMPORTANT: in your plugin, only access methods and properties of Snakemake objects (like Workflow, Persistence, etc.)
# that are defined in the interfaces found in THIS package. Other parts of those objects
# are NOT guaranteed to remain the same across new releases.
# To ensure that the used interfaces are not changing, you should depend on this package as
# >=a.b.c,<d with d=a+1 (i.e. pin the dependency on this package to be at least the version at time of development
# and less than the next major version which would introduce breaking changes).
async def _wait_for_jobs(self):
# implement here a loop that checks which jobs are already finished
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for snakemake_interface_executor_plugins-1.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e97c3c1085cc693aa2078d94b020348cfeeab7df763729204363ab36fcbfe999 |
|
MD5 | 1910f1339ea3fcef71962508f425f847 |
|
BLAKE2b-256 | 7aef7b296f0446a79ef92eb70f4a449fb2480484e21c399bbdcdfc3405e98191 |
Close
Hashes for snakemake_interface_executor_plugins-1.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb30c14ef9a773003948bbf2187b008a5ba435808a5e243355a00e1e8a35464c |
|
MD5 | 85f316351d5495b73a60f66fa3d1ebee |
|
BLAKE2b-256 | 308eeeb06aa8a0f7417e942ffd5d0f8263307de0340950eb5dc730773ec090c4 |