66from datetime import datetime , timezone
77from typing import Any
88
9- from mcp .types import CreateTaskResult , GetTaskResult , Task
9+ from mcp .types import CancelTaskResult , CreateTaskResult , GetTaskResult , Task
1010
1111from dash import get_app
1212from dash .mcp .primitives .tools .results import format_callback_response
@@ -33,6 +33,7 @@ def create_task(dispatch_response: dict[str, Any], callback) -> CreateTaskResult
3333 cache_key = dispatch_response ["cacheKey" ]
3434 job_id = str (dispatch_response ["job" ])
3535 task_id = f"{ callback .tool_name } :{ job_id } :{ cache_key } "
36+ # pylint: disable-next=protected-access
3637 interval = callback ._cb_info .get ("background" , {}).get ("interval" , 1000 )
3738 now = datetime .now (timezone .utc )
3839 return CreateTaskResult (
@@ -75,14 +76,17 @@ def get_task(task_id: str) -> GetTaskResult:
7576 adapter = get_app ().mcp_callback_map .find_by_tool_name (tool_name )
7677 interval = None
7778 if adapter is not None :
79+ # pylint: disable-next=protected-access
7880 interval = adapter ._cb_info .get ("background" , {}).get ("interval" , 1000 )
7981
8082 now = datetime .now (timezone .utc )
8183 return GetTaskResult (
8284 taskId = task_id ,
8385 status = status ,
8486 statusMessage = str (progress ) if progress else None ,
85- createdAt = datetime .fromisoformat (manager .handle .get (f"{ cache_key } -created_at" ) or now .isoformat ()),
87+ createdAt = datetime .fromisoformat (
88+ manager .handle .get (f"{ cache_key } -created_at" ) or now .isoformat ()
89+ ),
8690 lastUpdatedAt = now ,
8791 ttl = manager .expire * 1000 if manager .expire else None ,
8892 pollInterval = interval ,
@@ -117,7 +121,9 @@ def get_task_result(task_id: str) -> Any:
117121 response_data = json .loads (response .get_data (as_text = True ))
118122
119123 if "response" not in response_data :
120- raise MCPError ("Task result not ready. Poll tasks/get until status is 'completed'." )
124+ raise MCPError (
125+ "Task result not ready. Poll tasks/get until status is 'completed'."
126+ )
121127
122128 return format_callback_response (response_data , adapter )
123129
@@ -127,9 +133,7 @@ def cancel_task(task_id: str) -> Any:
127133
128134 Same underlying mechanism as the renderer's cancelJob query param.
129135 """
130- from mcp .types import CancelTaskResult
131-
132- tool_name , job_id , cache_key = parse_task_id (task_id )
136+ _tool_name , job_id , cache_key = parse_task_id (task_id )
133137
134138 manager = _get_callback_manager ()
135139 if manager is None :
0 commit comments