Skip to content

Commit

Permalink
Skip format parsing if datatypes registry contains no datatypes
Browse files Browse the repository at this point in the history
  • Loading branch information
mvdbeek committed Dec 3, 2017
1 parent f97774b commit 1b48ff3
Showing 1 changed file with 19 additions and 14 deletions.
33 changes: 19 additions & 14 deletions lib/galaxy/tools/parameters/basic.py
Expand Up @@ -34,6 +34,7 @@
history_query
)
from ..parser import get_input_source as ensure_input_source
from ..repositories import ValidationContext

log = logging.getLogger(__name__)

Expand Down Expand Up @@ -1435,7 +1436,7 @@ def __init__(self, tool, input_source, trans):
super(BaseDataToolParameter, self).__init__(tool, input_source)
self.refresh_on_change = True

def _datatypes_registery(self, trans, tool):
def _datatypes_registry(self, trans, tool):
# Find datatypes_registry
if tool is None:
if trans:
Expand All @@ -1448,22 +1449,26 @@ def _datatypes_registery(self, trans, tool):
datatypes_registry = galaxy.datatypes.registry.Registry()
datatypes_registry.load_datatypes()
else:
datatypes_registry = tool.app.datatypes_registry
if isinstance(tool.app, ValidationContext):
datatypes_registry = {}
else:
datatypes_registry = tool.app.datatypes_registry
return datatypes_registry

def _parse_formats(self, trans, tool, input_source):
datatypes_registry = self._datatypes_registery(trans, tool)

datatypes_registry = self._datatypes_registry(trans, tool)
formats = []
# Build list of classes for supported data formats
self.extensions = input_source.get('format', 'data').split(",")
normalized_extensions = [extension.strip().lower() for extension in self.extensions]
formats = []
for extension in normalized_extensions:
datatype = datatypes_registry.get_datatype_by_extension(extension)
if datatype is not None:
formats.append(datatype)
else:
log.warning("Datatype class not found for extension '%s', which is used in the 'format' attribute of parameter '%s'" % (extension, self.name))
if datatypes_registry:
# Skip during validation since no datatypes are loaded
for extension in normalized_extensions:
datatype = datatypes_registry.get_datatype_by_extension(extension)
if datatype is not None:
formats.append(datatype)
else:
log.warning("Datatype class not found for extension '%s', which is used in the 'format' attribute of parameter '%s'" % (extension, self.name))
self.formats = formats

def _parse_options(self, input_source):
Expand Down Expand Up @@ -1777,9 +1782,9 @@ def to_dict(self, trans, other_values={}):
# create dictionary and fill default parameters
d = super(DataToolParameter, self).to_dict(trans)
extensions = self.extensions
datatypes_registery = self._datatypes_registery(trans, self.tool)
all_edam_formats = datatypes_registery.edam_formats if hasattr(datatypes_registery, 'edam_formats') else {}
all_edam_data = datatypes_registery.edam_data if hasattr(datatypes_registery, 'edam_formats') else {}
datatypes_registry = self._datatypes_registry(trans, self.tool)
all_edam_formats = datatypes_registry.edam_formats if hasattr(datatypes_registry, 'edam_formats') else {}
all_edam_data = datatypes_registry.edam_data if hasattr(datatypes_registry, 'edam_formats') else {}
edam_formats = [all_edam_formats.get(ext, None) for ext in extensions]
edam_data = [all_edam_data.get(ext, None) for ext in extensions]

Expand Down

0 comments on commit 1b48ff3

Please sign in to comment.