Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cwltool/builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
from .errors import WorkflowException
from .loghandler import _logger
from .mutation import MutationManager
from .software_requirements import DependenciesConfiguration
from .stdfsaccess import StdFsAccess
from .utils import (
CONTENT_LIMIT,
Expand All @@ -42,6 +41,7 @@
ProvenanceProfile, # pylint: disable=unused-import
)
from .pathmapper import PathMapper
from .software_requirements import DependenciesConfiguration

INPUT_OBJ_VOCAB: dict[str, str] = {
"Any": "https://w3id.org/cwl/salad#Any",
Expand Down Expand Up @@ -106,7 +106,7 @@ def __init__(
formatgraph: Optional[Graph],
make_fs_access: type[StdFsAccess],
fs_access: StdFsAccess,
job_script_provider: Optional[DependenciesConfiguration],
job_script_provider: Optional["DependenciesConfiguration"],
timeout: float,
debug: bool,
js_console: bool,
Expand Down
8 changes: 4 additions & 4 deletions cwltool/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,6 @@
from .procgenerator import ProcessGenerator
from .resolver import ga4gh_tool_registries, tool_resolver
from .secrets import SecretStore
from .software_requirements import (
DependenciesConfiguration,
get_container_from_software_requirements,
)
from .stdfsaccess import StdFsAccess
from .subgraph import get_process, get_step, get_subgraph
from .update import ALLUPDATES, UPDATES
Expand Down Expand Up @@ -1301,6 +1297,8 @@ def main(
use_conda_dependencies = getattr(args, "beta_conda_dependencies", None) # str

if conf_file or use_conda_dependencies:
from .software_requirements import DependenciesConfiguration

runtimeContext.job_script_provider = DependenciesConfiguration(args)
else:
runtimeContext.find_default_container = functools.partial(
Expand Down Expand Up @@ -1438,6 +1436,8 @@ def find_default_container(
) -> Optional[str]:
"""Find a container."""
if not default_container and use_biocontainers:
from .software_requirements import get_container_from_software_requirements

default_container = get_container_from_software_requirements(
use_biocontainers, builder, container_image_cache_path
)
Expand Down
24 changes: 14 additions & 10 deletions cwltool/software_requirements.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"""

import argparse
import importlib.metadata
import os
import string
from collections.abc import MutableMapping, MutableSequence
Expand All @@ -16,18 +17,15 @@
from .utils import HasReqsHints

if TYPE_CHECKING:
from galaxy.tool_util.deps.requirements import ToolRequirements

from .builder import Builder

try:
from galaxy.tool_util import deps
from galaxy.tool_util.deps.requirements import ToolRequirement, ToolRequirements
except ImportError:
ToolRequirement = None # type: ignore
ToolRequirements = None # type: ignore
deps = None # type: ignore


SOFTWARE_REQUIREMENTS_ENABLED = deps is not None
importlib.metadata.Distribution.from_name("galaxy-tool-util")
SOFTWARE_REQUIREMENTS_ENABLED = True
except ModuleNotFoundError:
SOFTWARE_REQUIREMENTS_ENABLED = False

COMMAND_WITH_DEPENDENCIES_TEMPLATE = string.Template(
"""#!/bin/bash
Expand Down Expand Up @@ -74,6 +72,8 @@ def __init__(self, args: argparse.Namespace) -> None:

def build_job_script(self, builder: "Builder", command: list[str]) -> str:
"""Use the galaxy-tool-util library to construct a build script."""
from galaxy.tool_util import deps

ensure_galaxy_lib_available()
resolution_config_dict = {
"use": self.use_tool_dependencies,
Expand Down Expand Up @@ -102,8 +102,12 @@ def build_job_script(self, builder: "Builder", command: list[str]) -> str:
return job_script


def get_dependencies(builder: HasReqsHints) -> ToolRequirements:
def get_dependencies(
builder: HasReqsHints,
) -> "ToolRequirements":
(software_requirement, _) = builder.get_requirement("SoftwareRequirement")
from galaxy.tool_util.deps.requirements import ToolRequirement, ToolRequirements

dependencies: list[Union["ToolRequirement", dict[str, Any]]] = []
if software_requirement and software_requirement.get("packages"):
packages = cast(
Expand Down
Loading