Source code for tool_shed.util.tool_util

import logging

import galaxy.tools
from galaxy.tool_shed.util.tool_util import (
    copy_sample_file,
    copy_sample_files,
    generate_message_for_invalid_tools,
)
from galaxy.util.expressions import ExpressionContext

log = logging.getLogger(__name__)


[docs]def new_state(trans, tool, invalid=False): """Create a new `DefaultToolState` for the received tool. Only inputs on the first page will be initialized.""" state = galaxy.tools.DefaultToolState() state.inputs = {} if invalid: # We're attempting to display a tool in the tool shed that has been determined to have errors, so is invalid. return state try: # Attempt to generate the tool state using the standard Galaxy-side code return tool.new_state(trans) except Exception as e: # Fall back to building tool state as below log.debug( 'Failed to build tool state for tool "%s" using standard method, will try to fall back on custom method: %s', tool.id, e, ) inputs = tool.inputs_by_page[0] context = ExpressionContext(state.inputs, parent=None) for input in inputs.values(): try: state.inputs[input.name] = input.get_initial_value(trans, context) except Exception: # FIXME: not all values should be an empty list state.inputs[input.name] = [] return state
__all__ = ( "copy_sample_file", "copy_sample_files", "generate_message_for_invalid_tools", "new_state", )