mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Add /interop endpoint to Tool Shed tools API.
Mirror Galaxy's /api/tools/{id}/versions/{v}/interop on the Tool Shed so
galaxy-tool-cache can fetch a tool's parsed model from either service with
the same URL shape. Returns ShedParsedTool, same as the bare versioned path.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
8197b61f57
commit
29b35f99be
@@ -70,6 +70,20 @@ class TestShedToolsApi(ShedApiTestCase):
|
||||
tool_response = self.api_interactor.get(url)
|
||||
tool_response.raise_for_status()
|
||||
|
||||
def test_tool_interop(self):
|
||||
populator = self.populator
|
||||
repository = populator.setup_column_maker_repo(prefix="toolinterop")
|
||||
tool_id = populator.tool_guid(self, repository, "Add_a_column1")
|
||||
tool_shed_base, encoded_tool_id = encode_identifier(tool_id)
|
||||
url = f"tools/{encoded_tool_id}/versions/1.1.0/interop"
|
||||
tool_response = self.api_interactor.get(url)
|
||||
tool_response.raise_for_status()
|
||||
parsed = tool_response.json()
|
||||
assert parsed["id"] == "Add_a_column1"
|
||||
assert parsed["version"] == "1.1.0"
|
||||
assert "inputs" in parsed
|
||||
assert "outputs" in parsed
|
||||
|
||||
def test_tool_source(self):
|
||||
populator = self.populator
|
||||
repository = populator.setup_column_maker_repo(prefix="toolsource")
|
||||
|
||||
@@ -155,6 +155,19 @@ class FastAPITools:
|
||||
) -> ShedParsedTool:
|
||||
return parsed_tool_model_cached_for(trans, tool_id, tool_version)
|
||||
|
||||
@router.get(
|
||||
"/api/tools/{tool_id}/versions/{tool_version}/interop",
|
||||
operation_id="tools__interop",
|
||||
summary="Return Galaxy's meta model description of the tool's metadata, inputs, and outputs.",
|
||||
)
|
||||
def interop(
|
||||
self,
|
||||
trans: SessionRequestContext = DependsOnTrans,
|
||||
tool_id: str = TOOL_ID_PATH_PARAM,
|
||||
tool_version: str = TOOL_VERSION_PATH_PARAM,
|
||||
) -> ShedParsedTool:
|
||||
return parsed_tool_model_cached_for(trans, tool_id, tool_version)
|
||||
|
||||
@router.get(
|
||||
"/api/tools/{tool_id}/versions/{tool_version}/parameter_request_schema",
|
||||
operation_id="tools__parameter_request_schema",
|
||||
|
||||
Reference in New Issue
Block a user