mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #2374 from guerler/fix_error_log_000
Revise asserts triggering false exceptions for dynamic parameters
This commit is contained in:
@@ -1005,15 +1005,7 @@ class SelectToolParameter( ToolParameter ):
|
||||
d = super( SelectToolParameter, self ).to_dict( trans )
|
||||
|
||||
# Get options, value.
|
||||
options = []
|
||||
try:
|
||||
options = self.get_options( trans, other_values )
|
||||
except AssertionError:
|
||||
# we dont/cant set other_values (the {} above), so params that require other params to be filled will error:
|
||||
# required dependency in filter_options
|
||||
# associated DataToolParam in get_column_list
|
||||
pass
|
||||
|
||||
options = self.get_options( trans, other_values )
|
||||
d[ 'options' ] = options
|
||||
if options:
|
||||
value = options[0][1]
|
||||
@@ -1195,10 +1187,8 @@ class ColumnListParameter( SelectToolParameter ):
|
||||
Generate a select list containing the columns of the associated
|
||||
dataset (if found).
|
||||
"""
|
||||
# No value indicates a configuration error
|
||||
assert self.data_ref in other_values, "Value for associated data reference not found (data_ref)."
|
||||
# Get the value of the associated data reference (a dataset)
|
||||
dataset = other_values[ self.data_ref ]
|
||||
dataset = other_values.get( self.data_ref, None )
|
||||
# Check if a dataset is selected
|
||||
if not dataset:
|
||||
return []
|
||||
@@ -1232,8 +1222,7 @@ class ColumnListParameter( SelectToolParameter ):
|
||||
"""
|
||||
options = []
|
||||
if self.usecolnames: # read first row - assume is a header with metadata useful for making good choices
|
||||
assert self.data_ref in other_values, "Value for associated data reference not found (data_ref)."
|
||||
dataset = other_values[ self.data_ref ]
|
||||
dataset = other_values.get( self.data_ref, None )
|
||||
try:
|
||||
head = open( dataset.get_file_name(), 'r' ).readline()
|
||||
cnames = head.rstrip().split( '\t' )
|
||||
@@ -1260,6 +1249,8 @@ class ColumnListParameter( SelectToolParameter ):
|
||||
return SelectToolParameter.get_initial_value( self, trans, other_values )
|
||||
|
||||
def get_legal_values( self, trans, other_values ):
|
||||
if self.data_ref not in other_values:
|
||||
raise ValueError( "Value for associated data reference not found (data_ref)." )
|
||||
return set( self.get_column_list( trans, other_values ) )
|
||||
|
||||
def get_dependencies( self ):
|
||||
@@ -1493,10 +1484,11 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
|
||||
return None
|
||||
if not isinstance( value, list ):
|
||||
value = [ value ]
|
||||
if not( self.repeat ) and len( value ) > 1:
|
||||
assert self.multiple, "Multiple values provided but parameter %s is not expecting multiple values" % self.name
|
||||
if not self.repeat and len( value ) > 1 and not self.multiple:
|
||||
raise ValueError( "Multiple values provided but parameter %s is not expecting multiple values." % self.name )
|
||||
rval = []
|
||||
assert legal_values, "Parameter %s requires a value, but has no legal values defined" % self.name
|
||||
if not legal_values:
|
||||
raise ValueError( "Parameter %s requires a value, but has no legal values defined." % self.name )
|
||||
for val in value:
|
||||
if val not in legal_values:
|
||||
raise ValueError( "An invalid option was selected for %s, %r, please verify" % ( self.name, val ) )
|
||||
@@ -1533,9 +1525,8 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
|
||||
for val in value:
|
||||
options = get_options_list( val )
|
||||
rval.extend( options )
|
||||
if len( rval ) > 1:
|
||||
if not self.repeat:
|
||||
assert self.multiple, "Multiple values provided but parameter is not expecting multiple values"
|
||||
if not self.repeat and len( rval ) > 1 and not self.multiple:
|
||||
raise ValueError( "Multiple values provided but parameter %s is not expecting multiple values." % self.name )
|
||||
rval = self.separator.join( map( value_map, rval ) )
|
||||
if self.tool is None or self.tool.options.sanitize:
|
||||
if self.sanitizer:
|
||||
@@ -1600,15 +1591,7 @@ class DrillDownSelectToolParameter( SelectToolParameter ):
|
||||
def to_dict( self, trans, view='collection', value_mapper=None, other_values={} ):
|
||||
# skip SelectToolParameter (the immediate parent) bc we need to get options in a different way here
|
||||
d = ToolParameter.to_dict( self, trans )
|
||||
|
||||
options = []
|
||||
try:
|
||||
options = self.get_options( trans=trans, other_values=other_values )
|
||||
except KeyError:
|
||||
# will sometimes error if self.is_dynamic and self.filtered
|
||||
# bc we dont/cant fill out other_values above ({})
|
||||
pass
|
||||
d['options'] = options
|
||||
d['options'] = self.get_options( trans=trans, other_values=other_values )
|
||||
d['display'] = self.display
|
||||
return d
|
||||
|
||||
|
||||
@@ -124,7 +124,6 @@ class DataMetaFilter( Filter ):
|
||||
if self.multiple:
|
||||
return dataset_value in file_value.split( self.separator )
|
||||
return file_value == dataset_value
|
||||
assert self.ref_name in other_values or ( trans is not None and trans.workflow_building_mode), "Required dependency '%s' not found in incoming values" % self.ref_name
|
||||
ref = other_values.get( self.ref_name, None )
|
||||
is_data = isinstance( ref, galaxy.tools.wrappers.DatasetFilenameWrapper )
|
||||
is_data_list = isinstance( ref, galaxy.tools.wrappers.DatasetListWrapper ) or isinstance( ref, list )
|
||||
@@ -146,7 +145,7 @@ class DataMetaFilter( Filter ):
|
||||
else:
|
||||
meta_value = ref.metadata.get( self.key, None )
|
||||
|
||||
if meta_value is None: # assert meta_value is not None, "Required metadata value '%s' not found in referenced dataset" % self.key
|
||||
if meta_value is None:
|
||||
return [ ( disp_name, optval, selected ) for disp_name, optval, selected in options ]
|
||||
|
||||
if self.column is not None:
|
||||
@@ -208,7 +207,6 @@ class ParamValueFilter( Filter ):
|
||||
def filter_options( self, options, trans, other_values ):
|
||||
if trans is not None and trans.workflow_building_mode:
|
||||
return []
|
||||
assert self.ref_name in other_values, "Required dependency '%s' not found in incoming values" % self.ref_name
|
||||
ref = other_values.get( self.ref_name, None )
|
||||
for ref_attribute in self.ref_attribute:
|
||||
if not hasattr( ref, ref_attribute ):
|
||||
@@ -381,7 +379,6 @@ class RemoveValueFilter( Filter ):
|
||||
def filter_options( self, options, trans, other_values ):
|
||||
if trans is not None and trans.workflow_building_mode:
|
||||
return options
|
||||
assert self.value is not None or ( self.ref_name is not None and self.ref_name in other_values ) or (self.meta_ref is not None and self.meta_ref in other_values ) or ( trans is not None and trans.workflow_building_mode), Exception( "Required dependency '%s' or '%s' not found in incoming values" % ( self.ref_name, self.meta_ref ) )
|
||||
|
||||
def compare_value( option_value, filter_value ):
|
||||
if isinstance( filter_value, list ):
|
||||
@@ -582,7 +579,6 @@ class DynamicOptions( object ):
|
||||
if self.dataset_ref_name:
|
||||
dataset = other_values.get( self.dataset_ref_name, None )
|
||||
if not dataset or not hasattr( dataset, 'file_name' ):
|
||||
log.warn( "Required dataset '%s' missing from input" % self.dataset_ref_name )
|
||||
return [] # no valid dataset in history
|
||||
# Ensure parsing dynamic options does not consume more than a megabyte worth memory.
|
||||
path = dataset.file_name
|
||||
|
||||
@@ -20,8 +20,8 @@ class SelectToolParameterTestCase( BaseParameterTestCase ):
|
||||
self.options_xml = '''<options><filter type="data_meta" ref="input_bam" key="dbkey"/></options>'''
|
||||
try:
|
||||
self.param.from_json("42", self.trans)
|
||||
except AssertionError as err:
|
||||
assert str(err) == "Required dependency 'input_bam' not found in incoming values"
|
||||
except ValueError as err:
|
||||
assert str(err) == "Parameter my_name requires a value, but has no legal values defined."
|
||||
return
|
||||
assert False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user