diff --git a/pyproject.toml b/pyproject.toml index e590771..02e9025 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,6 @@ flake8 = "^4.0.1" flake8-bugbear = "^22.1.11" pytest = "^7.0" snakemake = {git="https://github.com/snakemake/snakemake.git"} -snakemake-executor-plugin-cluster-generic = {git = "https://github.com/snakemake/snakemake-executor-plugin-cluster-generic.git"} [tool.coverage.run] omit = [".*", "*/site-packages/*"] diff --git a/snakemake_interface_software_deployment_plugins/__init__.py b/snakemake_interface_software_deployment_plugins/__init__.py index 4c7ff7e..39f7ca8 100644 --- a/snakemake_interface_software_deployment_plugins/__init__.py +++ b/snakemake_interface_software_deployment_plugins/__init__.py @@ -6,6 +6,7 @@ from abc import ABC, abstractmethod import hashlib from pathlib import Path +import sys from typing import List, Optional, Self from snakemake_interface_software_deployment_plugins.settings import SoftwareDeploymentProviderSettingsBase @@ -100,19 +101,24 @@ def __init__( name: str, prefix: Path, settings: Optional[SoftwareDeploymentProviderSettingsBase] = None, + parent_env: Optional[EnvBase] = None ): self.settings = settings self.deployment_path = prefix / name self.archive_path = prefix / f"{name}-archive" + self.parent_env = parent_env self.__post_init__() def __post_init__(self): # noqa B027 + """Do stuff after object initialization, e.g. checking for availability of + commands. + """ pass @classmethod - @abstractmethod - def get_env_cls(cls) -> EnvBase: - ... + def get_env_cls(cls): + provider = sys.modules[cls.__module__] # get module of derived class + return provider.Env def env(self, spec: EnvSpecBase) -> EnvBase: - return self.get_env_cls()(self, spec) \ No newline at end of file + return self.get_env_cls()(provider=self, spec=spec, parent_env=self.parent_env) \ No newline at end of file