Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.tool_util.deps.resolvers.resolver_mixins
import os
from . import (
Dependency,
NullDependency
)
from ..brew_exts import (
build_env_statements,
DEFAULT_HOMEBREW_ROOT,
recipe_cellar_path,
)
[docs]class UsesHomebrewMixin:
def _init_homebrew(self, **kwds):
cellar_root = kwds.get('cellar', None)
if cellar_root is None:
cellar_root = os.path.join(DEFAULT_HOMEBREW_ROOT, "Cellar")
self.cellar_root = cellar_root
def _find_dep_versioned(self, name, version):
recipe_path = recipe_cellar_path(self.cellar_root, name, version)
if not os.path.exists(recipe_path) or not os.path.isdir(recipe_path):
return NullDependency(version=version, name=name)
commands = build_env_statements(self.cellar_root, recipe_path, relaxed=True)
return HomebrewDependency(commands)
def _find_dep_default(self, name, version):
installed_versions = self._installed_versions(name)
if not installed_versions:
return NullDependency(version=version, name=name)
# Just grab newest installed version - may make sense some day to find
# the linked version instead.
default_version = sorted(installed_versions, reverse=True)[0]
return self._find_dep_versioned(name, default_version, exact=version is None)
def _installed_versions(self, recipe):
recipe_base_path = os.path.join(self.cellar_root, recipe)
if not os.path.exists(recipe_base_path):
return []
names = os.listdir(recipe_base_path)
return [n for n in names if os.path.isdir(os.path.join(recipe_base_path, n))]
[docs]class UsesToolDependencyDirMixin:
def _init_base_path(self, dependency_manager, **kwds):
self.base_path = os.path.abspath(kwds.get('base_path', dependency_manager.default_base_path))
[docs]class UsesInstalledRepositoriesMixin:
def _get_installed_dependency(self, name, type, version=None, **kwds):
installed_tool_dependencies = kwds.get("installed_tool_dependencies") or []
for installed_tool_dependency in installed_tool_dependencies:
if installed_tool_dependency.name == name and installed_tool_dependency.type == type:
if not version or installed_tool_dependency.version == version:
return installed_tool_dependency
return None