Merge pull request #3155 from nsoranzo/remove_set_output_history

Remove unnecessary set_output_history parameter
This commit is contained in:
John Chilton
2016-11-13 22:46:46 -05:00
committed by GitHub
4 changed files with 23 additions and 30 deletions
+1
View File
@@ -264,6 +264,7 @@ lib/galaxy/sample_tracking/__init__.py
lib/galaxy/sample_tracking/sample.py
lib/galaxy/security/validate_user_input.py
lib/galaxy/tags/
lib/galaxy/tools/actions/__init__.py
lib/galaxy/tools/actions/metadata.py
lib/galaxy/tools/cwl/
lib/galaxy/tools/data_manager/__init__.py
+2 -2
View File
@@ -502,7 +502,7 @@ class Data( object ):
"""Returns ( target_ext, existing converted dataset )"""
return datatypes_registry.find_conversion_destination_for_dataset_by_extensions( dataset, accepted_formats, **kwd )
def convert_dataset(self, trans, original_dataset, target_type, return_output=False, visible=True, deps=None, set_output_history=True, target_context=None):
def convert_dataset(self, trans, original_dataset, target_type, return_output=False, visible=True, deps=None, target_context=None):
"""This function adds a job to the queue to convert a dataset to another type. Returns a message about success/failure."""
converter = trans.app.datatypes_registry.get_converter_by_target_type( original_dataset.ext, target_type )
@@ -525,7 +525,7 @@ class Data( object ):
params[input_name] = original_dataset
# Run converter, job is dispatched through Queue
converted_dataset = converter.execute( trans, incoming=params, set_output_hid=visible, set_output_history=set_output_history)[1]
converted_dataset = converter.execute( trans, incoming=params, set_output_hid=visible )[1]
if len(params) > 0:
trans.log_event( "Converter params: %s" % (str(params)), tool_id=converter.id )
if not visible:
+3 -3
View File
@@ -2080,7 +2080,7 @@ class DatasetInstance( object ):
raise NoConverterException("A dependency (%s) is missing a converter." % dependency)
except KeyError:
pass # No deps
new_dataset = next(iter(self.datatype.convert_dataset( trans, self, target_ext, return_output=True, visible=False, deps=deps, set_output_history=True, target_context=target_context ).values()))
new_dataset = next(iter(self.datatype.convert_dataset( trans, self, target_ext, return_output=True, visible=False, deps=deps, target_context=target_context ).values()))
new_dataset.name = self.name
self.copy_attributes( new_dataset )
assoc = ImplicitlyConvertedDatasetAssociation( parent=self, file_type=target_ext, dataset=new_dataset, metadata_safe=False )
@@ -3139,14 +3139,14 @@ class DatasetCollection( object, Dictifiable, UsesAnnotations ):
def populated( self ):
top_level_populated = self.populated_state == DatasetCollection.populated_states.OK
if top_level_populated and self.has_subcollections:
return all(map(lambda e: e.child_collection.populated, self.elements))
return all(e.child_collection.populated for e in self.elements)
return top_level_populated
@property
def waiting_for_elements( self ):
top_level_waiting = self.populated_state == DatasetCollection.populated_states.NEW
if not top_level_waiting and self.has_subcollections:
return any(map(lambda e: e.child_collection.waiting_for_elements, self.elements))
return any(e.child_collection.waiting_for_elements for e in self.elements)
return top_level_waiting
def mark_as_populated( self ):
+17 -25
View File
@@ -1,4 +1,5 @@
import json
import logging
import re
from json import dumps
@@ -7,16 +8,15 @@ from six import string_types
from galaxy import model
from galaxy.exceptions import ObjectInvalid
from galaxy.model import LibraryDatasetDatasetAssociation
from galaxy.tools.parameters import update_param
from galaxy.tools.parameters.basic import DataCollectionToolParameter, DataToolParameter, RuntimeValue
from galaxy.tools.parameters.wrapped import WrappedParameters
from galaxy.tools.parameters import update_param
from galaxy.util import ExecutionTimer
from galaxy.util.none_like import NoneDataset
from galaxy.util.odict import odict
from galaxy.util.template import fill_template
from galaxy.web import url_for
import logging
log = logging.getLogger( __name__ )
@@ -193,7 +193,7 @@ class DefaultToolAction( object ):
return history, inp_data, inp_dataset_collections
def execute(self, tool, trans, incoming={}, return_job=False, set_output_hid=True, set_output_history=True, history=None, job_params=None, rerun_remap_job_id=None, mapping_over_collection=False, execution_cache=None ):
def execute(self, tool, trans, incoming={}, return_job=False, set_output_hid=True, history=None, job_params=None, rerun_remap_job_id=None, mapping_over_collection=False, execution_cache=None ):
"""
Executes a tool, creating job and tool outputs, associating them, and
submitting the job to the job queue. If history is not specified, use
@@ -254,7 +254,7 @@ class DefaultToolAction( object ):
wrapped_params = self._wrapped_params( trans, tool, incoming )
out_data = odict()
input_collections = dict( [ (k, v[0][0]) for k, v in inp_dataset_collections.iteritems() ] )
input_collections = dict( (k, v[0][0]) for k, v in inp_dataset_collections.items() )
output_collections = OutputCollections(
trans,
history,
@@ -345,9 +345,6 @@ class DefaultToolAction( object ):
if not filter_output(output, incoming):
if output.collection:
collections_manager = app.dataset_collections_service
# As far as I can tell - this is always true - but just verify
assert set_output_history, "Cannot create dataset collection for this kind of tool."
element_identifiers = []
known_outputs = output.known_outputs( input_collections, collections_manager.type_registry )
# Just to echo TODO elsewhere - this should be restructured to allow
@@ -360,7 +357,7 @@ class DefaultToolAction( object ):
for parent_id in (output_part_def.parent_ids or []):
# TODO: replace following line with formal abstractions for doing this.
current_collection_type = ":".join(current_collection_type.split(":")[1:])
name_to_index = dict(map(lambda (index, value): (value["name"], index), enumerate(current_element_identifiers)))
name_to_index = dict((value["name"], index) for (index, value) in enumerate(current_element_identifiers))
if parent_id not in name_to_index:
if parent_id not in current_element_identifiers:
index = len(current_element_identifiers)
@@ -382,8 +379,7 @@ class DefaultToolAction( object ):
# Following hack causes dataset to no be added to history...
child_dataset_names.add( effective_output_name )
if set_output_history:
history.add_dataset( element, set_hid=set_output_hid, quota=False )
history.add_dataset( element, set_hid=set_output_hid, quota=False )
trans.sa_session.add( element )
trans.sa_session.flush()
@@ -416,15 +412,11 @@ class DefaultToolAction( object ):
if name not in child_dataset_names and name not in incoming: # don't add children; or already existing datasets, i.e. async created
data = out_data[ name ]
datasets_to_persist.append( data )
if set_output_history:
# Set HID and add to history.
# This is brand new and certainly empty so don't worry about quota.
# TOOL OPTIMIZATION NOTE - from above loop to the job create below 99%+
# of execution time happens within in history.add_datasets.
history.add_datasets( trans.sa_session, datasets_to_persist, set_hid=set_output_hid, quota=False, flush=False )
else:
for data in datasets_to_persist:
trans.sa_session.add( data )
# Set HID and add to history.
# This is brand new and certainly empty so don't worry about quota.
# TOOL OPTIMIZATION NOTE - from above loop to the job create below 99%+
# of execution time happens within in history.add_datasets.
history.add_datasets( trans.sa_session, datasets_to_persist, set_hid=set_output_hid, quota=False, flush=False )
# Add all the children to their parents
for parent_name, child_name in parent_to_child_pairs:
@@ -549,7 +541,7 @@ class DefaultToolAction( object ):
# FIXME: Don't need all of incoming here, just the defined parameters
# from the tool. We need to deal with tools that pass all post
# parameters to the command as a special case.
for name, dataset_collection_info_pairs in inp_dataset_collections.iteritems():
for name, dataset_collection_info_pairs in inp_dataset_collections.items():
first_reduction = True
for ( dataset_collection, reduced ) in dataset_collection_info_pairs:
# TODO: update incoming for list...
@@ -562,23 +554,23 @@ class DefaultToolAction( object ):
# datasets below?
# TODO: verify can have multiple with same name, don't want to loose tracability
job.add_input_dataset_collection( name, dataset_collection )
for name, value in tool.params_to_strings( incoming, trans.app ).iteritems():
for name, value in tool.params_to_strings( incoming, trans.app ).items():
job.add_parameter( name, value )
self._check_input_data_access( trans, job, inp_data, current_user_roles )
def _record_outputs( self, job, out_data, output_collections ):
out_collections = output_collections.out_collections
out_collection_instances = output_collections.out_collection_instances
for name, dataset in out_data.iteritems():
for name, dataset in out_data.items():
job.add_output_dataset( name, dataset )
for name, dataset_collection in out_collections.iteritems():
for name, dataset_collection in out_collections.items():
job.add_implicit_output_dataset_collection( name, dataset_collection )
for name, dataset_collection_instance in out_collection_instances.iteritems():
for name, dataset_collection_instance in out_collection_instances.items():
job.add_output_dataset_collection( name, dataset_collection_instance )
def _check_input_data_access( self, trans, job, inp_data, current_user_roles ):
access_timer = ExecutionTimer()
for name, dataset in inp_data.iteritems():
for name, dataset in inp_data.items():
if dataset:
if not trans.app.security_agent.can_access_dataset( current_user_roles, dataset.dataset ):
raise Exception("User does not have permission to use a dataset (%s) provided for input." % dataset.id)