mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Implement text defaults in Tool Request API.
This commit is contained in:
@@ -383,14 +383,14 @@ def _fill_default_for(tool_state: Dict[str, Any], parameter: ToolParameterT) ->
|
||||
if not text_parameter.optional:
|
||||
# restore legacy behavior of allowing empty string implicit default
|
||||
# for these non-optional inputs.
|
||||
tool_state[parameter_name] = ""
|
||||
tool_state[parameter_name] = text_parameter.default_value or ""
|
||||
else:
|
||||
tool_state[parameter_name] = None
|
||||
tool_state[parameter_name] = text_parameter.default_value or None
|
||||
else:
|
||||
# legacy behavior of converting explicit None into implicit null. We should introduce
|
||||
# a layer somewhere to deal with this behavior further up the stack and clean up these models.
|
||||
if not text_parameter.optional and tool_state[parameter_name] is None:
|
||||
tool_state[parameter_name] = ""
|
||||
tool_state[parameter_name] = text_parameter.default_value or ""
|
||||
|
||||
|
||||
def _initialize_section_state(parameter: ToolParameterT, tool_state: Dict[str, Any]) -> Dict[str, Any]:
|
||||
|
||||
@@ -119,12 +119,15 @@ def _from_input_source_galaxy(input_source: InputSource, profile: float) -> Tool
|
||||
)
|
||||
elif param_type == "text":
|
||||
optional, optionality_inferred = text_input_is_optional(input_source)
|
||||
implicit_default = None if optional else ""
|
||||
default_value = input_source.get("value", implicit_default)
|
||||
text_validators: List[TextCompatiableValidators] = _text_validators(input_source)
|
||||
return TextParameterModel(
|
||||
type="text",
|
||||
name=input_source.parse_name(),
|
||||
optional=optional,
|
||||
validators=text_validators,
|
||||
value=default_value,
|
||||
)
|
||||
elif param_type == "float":
|
||||
optional = input_source.parse_optional()
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<tool id="gx_text_default" name="gx_text_default" version="1.0.0">
|
||||
<command><![CDATA[
|
||||
echo '$parameter' >> '$output';
|
||||
cat '$inputs' >> $inputs_json;
|
||||
]]></command>
|
||||
<configfiles>
|
||||
<inputs name="inputs" filename="inputs.json" />
|
||||
</configfiles>
|
||||
<inputs>
|
||||
<param name="parameter" type="text" value="foo" />
|
||||
</inputs>
|
||||
<outputs>
|
||||
<data name="output" format="txt" />
|
||||
<data name="inputs_json" format="json" />
|
||||
</outputs>
|
||||
<tests>
|
||||
<test>
|
||||
<param name="parameter" value="12456" />
|
||||
<output name="output">
|
||||
<assert_contents>
|
||||
<has_line line="12456" />
|
||||
</assert_contents>
|
||||
</output>
|
||||
</test>
|
||||
<test>
|
||||
<output name="output">
|
||||
<assert_contents>
|
||||
<has_line line="foo" />
|
||||
</assert_contents>
|
||||
</output>
|
||||
</test>
|
||||
</tests>
|
||||
</tool>
|
||||
@@ -404,6 +404,67 @@ gx_text_optional_false:
|
||||
relaxed_request_invalid:
|
||||
- parameter: 5
|
||||
|
||||
gx_text_default:
|
||||
request_valid: &gx_text_default_request_valid
|
||||
- parameter: moocow
|
||||
- parameter: 'some spaces'
|
||||
- parameter: ''
|
||||
- {}
|
||||
# these are implicitly null just like gx_text
|
||||
- parameter: null
|
||||
request_invalid: &gx_text_default_request_invalid
|
||||
- parameter: 5
|
||||
- parameter: {}
|
||||
- parameter: { "moo": "cow" }
|
||||
- parameter: {__class__: 'ConnectedValue'}
|
||||
request_internal_valid:
|
||||
*gx_text_default_request_valid
|
||||
request_internal_invalid:
|
||||
*gx_text_default_request_invalid
|
||||
request_internal_dereferenced_valid:
|
||||
*gx_text_default_request_valid
|
||||
request_internal_dereferenced_invalid:
|
||||
*gx_text_default_request_invalid
|
||||
landing_request_valid:
|
||||
*gx_text_default_request_valid
|
||||
landing_request_invalid:
|
||||
*gx_text_default_request_invalid
|
||||
landing_request_internal_valid:
|
||||
*gx_text_default_request_valid
|
||||
landing_request_internal_invalid:
|
||||
*gx_text_default_request_invalid
|
||||
job_internal_valid:
|
||||
- parameter: moocow
|
||||
- parameter: 'some spaces'
|
||||
- parameter: ''
|
||||
- parameter: null
|
||||
job_internal_invalid:
|
||||
- {}
|
||||
- parameter: { "moo": "cow" }
|
||||
workflow_step_valid:
|
||||
- parameter: moocow
|
||||
- parameter: 'some spaces'
|
||||
- parameter: ''
|
||||
- {}
|
||||
- parameter: null
|
||||
workflow_step_invalid:
|
||||
- parameter: 5
|
||||
- parameter: {}
|
||||
- parameter: { "moo": "cow" }
|
||||
- parameter: {__class__: 'ConnectedValue'}
|
||||
workflow_step_linked_valid:
|
||||
- parameter: moocow
|
||||
- parameter: 'some spaces'
|
||||
- parameter: ''
|
||||
- {}
|
||||
- parameter: {__class__: 'ConnectedValue'}
|
||||
- parameter: null
|
||||
workflow_step_linked_invalid:
|
||||
- parameter: 5
|
||||
- parameter: {}
|
||||
- parameter: { "moo": "cow" }
|
||||
- parameter: {"class": 'ConnectedValue'}
|
||||
|
||||
gx_text_length_validation:
|
||||
request_valid:
|
||||
- parameter: "mytext"
|
||||
|
||||
Reference in New Issue
Block a user