From d592dc5840a1175a5032c92781030bb5f99c3956 Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Wed, 29 Apr 2026 12:50:40 +0530 Subject: [PATCH] Fix mypy --- .../object_permission_utils.py | 54 +++---------------- 1 file changed, 6 insertions(+), 48 deletions(-) diff --git a/litellm/proxy/management_helpers/object_permission_utils.py b/litellm/proxy/management_helpers/object_permission_utils.py index 73ba3e97bb3..552478f7b51 100644 --- a/litellm/proxy/management_helpers/object_permission_utils.py +++ b/litellm/proxy/management_helpers/object_permission_utils.py @@ -335,8 +335,9 @@ async def validate_key_mcp_servers_against_team( disallowed_servers = requested_servers - all_allowed_servers if disallowed_servers: if team_obj is not None: + team_id = team_obj.team_id detail = ( - f"Key requests MCP servers not allowed by team '{team_obj.team_id}': " + f"Key requests MCP servers not allowed by team '{team_id}': " f"{sorted(disallowed_servers)}. " f"Team allows: {sorted(team_allowed_servers)}. " f"Global (allow_all_keys) servers: {sorted(allow_all_keys_servers)}." @@ -365,8 +366,9 @@ async def validate_key_mcp_servers_against_team( disallowed_groups = requested_access_groups - team_access_groups if disallowed_groups: if team_obj is not None: + team_id = team_obj.team_id detail = ( - f"Key requests MCP access groups not allowed by team '{team_obj.team_id}': " + f"Key requests MCP access groups not allowed by team '{team_id}': " f"{sorted(disallowed_groups)}. " f"Team allows: {sorted(team_access_groups)}." ) @@ -390,58 +392,14 @@ async def validate_key_mcp_servers_against_team( if team_mcp_toolsets: disallowed_toolsets = requested_toolsets - set(team_mcp_toolsets) if disallowed_toolsets: + team_id = team_obj.team_id raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail={ "error": ( - f"Key requests MCP toolsets not allowed by team '{team_obj.team_id}': " + f"Key requests MCP toolsets not allowed by team '{team_id}': " f"{sorted(disallowed_toolsets)}. " f"Team allows: {sorted(team_mcp_toolsets)}." ) }, ) - - -def _extract_requested_search_tools(object_permission: Optional[dict]) -> List[str]: - """Return search_tool_name values from a key's object_permission dict.""" - if not object_permission or not isinstance(object_permission, dict): - return [] - raw = object_permission.get("search_tools") - if not isinstance(raw, list): - return [] - return [str(x) for x in raw if x] - - -async def validate_key_search_tools_against_team( - object_permission: Optional[dict], - team_obj: Optional["LiteLLM_TeamTableCachedObj"], -) -> None: - """ - Validate key object_permission.search_tools is a subset of the team's allowlist. - - Empty team allowlist means no restriction at team layer (skip). - """ - requested = _extract_requested_search_tools(object_permission) - if not requested: - return - - team_tools: List[str] = [] - if team_obj is not None and team_obj.object_permission is not None: - st = team_obj.object_permission.search_tools - if st: - team_tools = list(st) - - if not team_tools: - return - - disallowed = set(requested) - set(team_tools) - if disallowed: - raise HTTPException( - status_code=status.HTTP_403_FORBIDDEN, - detail={ - "error": ( - f"Key requests search tools not allowed by team '{team_obj.team_id}': " - f"{sorted(disallowed)}. Team allows: {sorted(team_tools)}." - ) - }, - )