Source code for galaxy.tool_util.toolbox.views.sources
import logging
import os
from typing import (
Dict,
List,
)
import yaml
from galaxy.util import config_directories_from_setting
from .definitions import StaticToolBoxView
log = logging.getLogger(__name__)
EXTENSIONS = [".yml", ".yaml", ".json"]
[docs]class StaticToolBoxViewSources:
view_directories: List[str]
view_dicts: List[Dict]
[docs] def __init__(self, view_directories=None, view_dicts=None):
self.view_directories = config_directories_from_setting(view_directories) or []
self.view_dicts = view_dicts or []
[docs] def get_definitions(self) -> List[StaticToolBoxView]:
view_definitions = []
for view_dict in self.view_dicts:
view_definitions.append(StaticToolBoxView.from_dict(view_dict))
for view_directory in self.view_directories:
if not os.path.exists(view_directory):
log.warning(f"Failed to find toolbox view directory {view_directory}")
for filename in os.listdir(view_directory):
if not looks_like_view_source_filename(filename):
continue
view_path = os.path.join(view_directory, filename)
with open(view_path) as f:
view_dict = yaml.safe_load(f)
if "id" not in view_dict:
file_id = os.path.splitext(filename)[0]
view_dict["id"] = file_id
view_definitions.append(StaticToolBoxView.from_dict(view_dict))
return view_definitions
[docs]def looks_like_view_source_filename(filename: str) -> bool:
for ext in EXTENSIONS:
if filename.endswith(ext):
return True
return False