diff --git a/lib/galaxy/tool_shed/galaxy_install/install_manager.py b/lib/galaxy/tool_shed/galaxy_install/install_manager.py
index deca45a3ea5..563de8f02e5 100644
--- a/lib/galaxy/tool_shed/galaxy_install/install_manager.py
+++ b/lib/galaxy/tool_shed/galaxy_install/install_manager.py
@@ -162,7 +162,8 @@ class InstallRepositoryManager:
)
sample_files = irmm_metadata_dict.get("sample_files", [])
tool_index_sample_files = stdtm.get_tool_index_sample_files(sample_files)
- tool_util.copy_sample_files(self.app, tool_index_sample_files, tool_path=tool_path)
+ tool_data_path = self.app.config.tool_data_path
+ tool_util.copy_sample_files(tool_data_path, tool_index_sample_files, tool_path=tool_path)
sample_files_copied = [str(s) for s in tool_index_sample_files]
repository_tools_tups = irmm.get_repository_tools_tups()
if repository_tools_tups:
@@ -177,7 +178,7 @@ class InstallRepositoryManager:
# Copy remaining sample files included in the repository to the ~/tool-data directory of the
# local Galaxy instance.
tool_util.copy_sample_files(
- self.app, sample_files, tool_path=tool_path, sample_files_copied=sample_files_copied
+ tool_data_path, sample_files, tool_path=tool_path, sample_files_copied=sample_files_copied
)
self.tpm.add_to_tool_panel(
repository_name=tool_shed_repository.name,
diff --git a/lib/galaxy/tool_shed/metadata/metadata_generator.py b/lib/galaxy/tool_shed/metadata/metadata_generator.py
index 0f8e26fd594..581b93ce525 100644
--- a/lib/galaxy/tool_shed/metadata/metadata_generator.py
+++ b/lib/galaxy/tool_shed/metadata/metadata_generator.py
@@ -313,7 +313,7 @@ class MetadataGenerator:
# can load tools that depend on them.
data_table_conf_xml_sample_files = []
for sample_file in sample_file_copy_paths:
- tool_util.copy_sample_file(self.app, sample_file, dest_path=work_dir)
+ tool_util.copy_sample_file(self.app.config.tool_data_path, sample_file, dest_path=work_dir)
# If the list of sample files includes a tool_data_table_conf.xml.sample file, load
# its table elements into memory.
relative_path, filename = os.path.split(sample_file)
diff --git a/lib/galaxy/tool_shed/util/tool_util.py b/lib/galaxy/tool_shed/util/tool_util.py
index f93370d4860..59c484bd665 100644
--- a/lib/galaxy/tool_shed/util/tool_util.py
+++ b/lib/galaxy/tool_shed/util/tool_util.py
@@ -1,6 +1,7 @@
import logging
import os
import shutil
+from typing import Optional
import galaxy.tools
from galaxy import util
@@ -39,14 +40,15 @@ def build_tool_panel_section_select_field(app):
return select_field
-def copy_sample_file(app, filename, dest_path=None):
+def copy_sample_file(tool_data_path: str, filename: str, dest_path: Optional[str] = None) -> str:
"""
Copies a sample file at `filename` to `the dest_path`
directory and strips the '.sample' extensions from `filename`.
Returns the path to the copied file (with the .sample extension).
"""
if dest_path is None:
- dest_path = os.path.abspath(app.config.tool_data_path)
+ dest_path = tool_data_path
+ assert dest_path
sample_file_name = basic_util.strip_path(filename)
copied_file = sample_file_name.rsplit(".sample", 1)[0]
full_source_path = os.path.abspath(filename)
@@ -63,7 +65,13 @@ def copy_sample_file(app, filename, dest_path=None):
return non_sample_path
-def copy_sample_files(app, sample_files, tool_path=None, sample_files_copied=None, dest_path=None):
+def copy_sample_files(
+ tool_data_path: str,
+ sample_files,
+ tool_path: Optional[str] = None,
+ sample_files_copied=None,
+ dest_path: Optional[str] = None,
+) -> None:
"""
Copy all appropriate files to dest_path in the local Galaxy environment that have not
already been copied. Those that have been copied are contained in sample_files_copied.
@@ -79,13 +87,18 @@ def copy_sample_files(app, sample_files, tool_path=None, sample_files_copied=Non
if tool_path:
filename = os.path.join(tool_path, filename)
# Attempt to ensure we're copying an appropriate file.
- if is_data_index_sample_file(filename):
- copy_sample_file(app, filename, dest_path=dest_path)
+ if _is_data_index_sample_file(filename):
+ copy_sample_file(tool_data_path, filename, dest_path=dest_path)
def generate_message_for_invalid_tools(
- app, invalid_file_tups, repository, metadata_dict, as_html=True, displaying_invalid_tool=False
-):
+ app,
+ invalid_file_tups: list,
+ repository,
+ metadata_dict: Optional[dict],
+ as_html: bool = True,
+ displaying_invalid_tool: bool = False,
+) -> str:
if as_html:
new_line = "
"
bold_start = ""
@@ -133,23 +146,6 @@ def generate_message_for_invalid_tools(
return message
-def get_tool_path_install_dir(partial_install_dir, shed_tool_conf_dict, tool_dict, config_elems):
- for elem in config_elems:
- if elem.tag == "tool":
- if elem.get("guid") == tool_dict["guid"]:
- tool_path = shed_tool_conf_dict["tool_path"]
- relative_install_dir = os.path.join(tool_path, partial_install_dir)
- return tool_path, relative_install_dir
- elif elem.tag == "section":
- for section_elem in elem:
- if section_elem.tag == "tool":
- if section_elem.get("guid") == tool_dict["guid"]:
- tool_path = shed_tool_conf_dict["tool_path"]
- relative_install_dir = os.path.join(tool_path, partial_install_dir)
- return tool_path, relative_install_dir
- return None, None
-
-
def handle_missing_index_file(app, tool_path, sample_files, repository_tools_tups, sample_files_copied):
"""
Inspect each tool to see if it has any input parameters that are dynamically
@@ -175,7 +171,7 @@ def handle_missing_index_file(app, tool_path, sample_files, repository_tools_tup
return repository_tools_tups, sample_files_copied
-def is_data_index_sample_file(file_path):
+def _is_data_index_sample_file(file_path):
"""
Attempt to determine if a .sample file is appropriate for copying to ~/tool-data when
a tool shed repository is being installed into a Galaxy instance.
@@ -254,9 +250,7 @@ __all__ = (
"copy_sample_file",
"copy_sample_files",
"generate_message_for_invalid_tools",
- "get_tool_path_install_dir",
"handle_missing_index_file",
- "is_data_index_sample_file",
"new_state",
"panel_entry_per_tool",
)
diff --git a/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py b/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
index eb4a84e54aa..e9cc2e8bb7a 100644
--- a/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
+++ b/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
@@ -14,20 +14,24 @@ from galaxy.exceptions import ConfigDoesNotAllowException
from galaxy.tool_shed.galaxy_install import install_manager
from galaxy.tool_shed.galaxy_install.repository_dependencies import repository_dependency_manager
from galaxy.tool_shed.galaxy_install.tools import tool_panel_manager
+from galaxy.tool_shed.util import (
+ hg_util,
+ tool_dependency_util,
+ tool_util,
+)
from galaxy.tool_util.deps import views
from galaxy.util import unicodify
+from galaxy.util.tool_shed import (
+ common_util,
+ encoding_util,
+)
from galaxy.web.form_builder import CheckboxField
from tool_shed.galaxy_install import dependency_display
from tool_shed.galaxy_install.grids import admin_toolshed_grids
from tool_shed.util import (
- common_util,
- encoding_util,
- hg_util,
readme_util,
repository_util,
shed_util_common as suc,
- tool_dependency_util,
- tool_util,
)
from tool_shed.util.web_util import escape
from .admin import AdminGalaxy
diff --git a/lib/tool_shed/tools/tool_validator.py b/lib/tool_shed/tools/tool_validator.py
index 0c5ec6a6f02..2a99c7eb2bd 100644
--- a/lib/tool_shed/tools/tool_validator.py
+++ b/lib/tool_shed/tools/tool_validator.py
@@ -65,7 +65,7 @@ class ToolValidator(GalaxyToolValidator):
for name in files:
if name.endswith(".sample"):
relative_path = os.path.join(root, name)
- tool_util.copy_sample_file(self.app, relative_path, dest_path=dest_path)
+ tool_util.copy_sample_file(self.app.config.tool_data_path, relative_path, dest_path=dest_path)
sample_files.append(name)
return sample_files
diff --git a/lib/tool_shed/util/tool_util.py b/lib/tool_shed/util/tool_util.py
index 63b85802f6a..d4df72e993c 100644
--- a/lib/tool_shed/util/tool_util.py
+++ b/lib/tool_shed/util/tool_util.py
@@ -1,25 +1,13 @@
from galaxy.tool_shed.util.tool_util import (
- build_shed_tool_conf_select_field,
- build_tool_panel_section_select_field,
copy_sample_file,
copy_sample_files,
generate_message_for_invalid_tools,
- get_tool_path_install_dir,
- handle_missing_index_file,
- is_data_index_sample_file,
new_state,
- panel_entry_per_tool,
)
__all__ = (
- "build_shed_tool_conf_select_field",
- "build_tool_panel_section_select_field",
"copy_sample_file",
"copy_sample_files",
"generate_message_for_invalid_tools",
- "get_tool_path_install_dir",
- "handle_missing_index_file",
- "is_data_index_sample_file",
"new_state",
- "panel_entry_per_tool",
)