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.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d1f366c71ab7261d31dc60812f2c9ed154e25f7bc6a8e56330f4ca519adfdc7 |
|
MD5 | 8e06767560be80a9c46c2457b5544e87 |
|
BLAKE2b-256 | 26b37c7ecd9fdeca179af54d005e86d24655d1570405c3edbc4c5c53f241703d |
Close
Hashes for snakemake_interface_executor_plugins-1.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4bb903deb41aee6088f025af2a1c0afada3b0812445b7f9e8a076c5a1a7744e1 |
|
MD5 | 156d67e5788d90afcdc13dac81c230fb |
|
BLAKE2b-256 | b9a03283404673bf77a896135d879cde7c01a048062e50a315068ca353e20579 |