From df8be3add7fc87fc5ad6e4e38217332a57d3915a Mon Sep 17 00:00:00 2001 From: John Chilton Date: Mon, 23 Jan 2017 22:22:36 -0500 Subject: [PATCH] Fix cached dependency manager. Broken with baf9b82847fc526af56ed8efa7aba4d31d62f400. Also fix test case that made me think it was okay in the first place. --- lib/galaxy/tools/deps/__init__.py | 25 +++++++++++++++---------- test/integration/test_resolvers.py | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/galaxy/tools/deps/__init__.py b/lib/galaxy/tools/deps/__init__.py index b03f33db229..1eeb2fee950 100644 --- a/lib/galaxy/tools/deps/__init__.py +++ b/lib/galaxy/tools/deps/__init__.py @@ -36,7 +36,6 @@ def build_dependency_manager( config ): 'app_config': config, } if getattr(config, "use_cached_dependency_manager", False): - dependency_manager_kwds['tool_dependency_cache_dir'] = config.tool_dependency_cache_dir dependency_manager = CachedDependencyManager(**dependency_manager_kwds) else: dependency_manager = DependencyManager( **dependency_manager_kwds ) @@ -92,15 +91,20 @@ class DependencyManager( object ): global_key = "%s_%s" % (config_prefix, key) value = explicit_resolver_options.get(key, CONFIG_VAL_NOT_FOUND) if value is CONFIG_VAL_NOT_FOUND: - if isinstance(self.__app_config, dict): - value = self.__app_config.get(global_key, CONFIG_VAL_NOT_FOUND) - else: - value = getattr(self.__app_config, global_key, CONFIG_VAL_NOT_FOUND) + value = self.get_app_option(global_key, default) + + return value + + def get_app_option(self, key, default=None): + value = CONFIG_VAL_NOT_FOUND + if isinstance(self.__app_config, dict): + value = self.__app_config.get(key, CONFIG_VAL_NOT_FOUND) + else: + value = getattr(self.__app_config, key, CONFIG_VAL_NOT_FOUND) if value is CONFIG_VAL_NOT_FOUND and hasattr(self.__app_config, "config_dict"): - value = self.__app_config.config_dict.get(global_key, CONFIG_VAL_NOT_FOUND) + value = self.__app_config.config_dict.get(key, CONFIG_VAL_NOT_FOUND) if value is CONFIG_VAL_NOT_FOUND: value = default - return value def dependency_shell_commands( self, requirements, **kwds ): @@ -210,8 +214,9 @@ class DependencyManager( object ): class CachedDependencyManager(DependencyManager): - def __init__(self, default_base_path, conf_file=None, app_config={}): + def __init__(self, default_base_path, conf_file=None, app_config={}, tool_dependency_cache_dir=None): super(CachedDependencyManager, self).__init__(default_base_path=default_base_path, conf_file=conf_file, app_config=app_config) + self.tool_dependency_cache_dir = self.get_app_option("tool_dependency_cache_dir") def build_cache(self, requirements, **kwds): resolved_dependencies = self.requirements_to_dependencies(requirements, **kwds) @@ -240,7 +245,7 @@ class CachedDependencyManager(DependencyManager): resolved_dependencies = self.requirements_to_dependencies(requirements, **kwds) cacheable_dependencies = [dep for dep in resolved_dependencies.values() if dep.cacheable] hashed_dependencies_dir = self.get_hashed_dependencies_path(cacheable_dependencies) - if not os.path.exists(hashed_dependencies_dir) and self.__app_config.getattr("precache_dependencies", False): + if not os.path.exists(hashed_dependencies_dir) and self.get_app_option("precache_dependencies", False): # Cache not present, try to create it self.build_cache(requirements, **kwds) if os.path.exists(hashed_dependencies_dir): @@ -265,4 +270,4 @@ class CachedDependencyManager(DependencyManager): :rtype: str """ req_hashes = self.hash_dependencies(resolved_dependencies) - return os.path.abspath(os.path.join(self.extra_config['tool_dependency_cache_dir'], req_hashes)) + return os.path.abspath(os.path.join(self.tool_dependency_cache_dir, req_hashes)) diff --git a/test/integration/test_resolvers.py b/test/integration/test_resolvers.py index a676a299ca3..d130592e6e0 100644 --- a/test/integration/test_resolvers.py +++ b/test/integration/test_resolvers.py @@ -20,7 +20,7 @@ class CondaResolutionIntegrationTestCase(integration_util.IntegrationTestCase): @classmethod def handle_galaxy_config_kwds(cls, config): cls.conda_tmp_prefix = mkdtemp() - config["use_cached_dep_manager"] = True + config["use_cached_dependency_manager"] = True config["conda_auto_init"] = True config["conda_prefix"] = os.path.join(cls.conda_tmp_prefix, 'conda')