mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-13 23:11:40 +00:00
fix: extract sentinel validation to reduce C901 complexity
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
parent
70005a2a39
commit
e33dfa4bf0
3 changed files with 83 additions and 265 deletions
|
|
@ -1,194 +1 @@
|
|||
{
|
||||
"reportAny": {
|
||||
"baseline": 24989,
|
||||
"slack": 2500
|
||||
},
|
||||
"reportArgumentType": {
|
||||
"baseline": 1814,
|
||||
"slack": 180
|
||||
},
|
||||
"reportAssignmentType": {
|
||||
"baseline": 220,
|
||||
"slack": 22
|
||||
},
|
||||
"reportAttributeAccessIssue": {
|
||||
"baseline": 346,
|
||||
"slack": 35
|
||||
},
|
||||
"reportCallIssue": {
|
||||
"baseline": 87,
|
||||
"slack": 10
|
||||
},
|
||||
"reportConstantRedefinition": {
|
||||
"baseline": 39,
|
||||
"slack": 4
|
||||
},
|
||||
"reportDeprecated": {
|
||||
"baseline": 217,
|
||||
"slack": 22
|
||||
},
|
||||
"reportDuplicateImport": {
|
||||
"baseline": 28,
|
||||
"slack": 3
|
||||
},
|
||||
"reportExplicitAny": {
|
||||
"baseline": 6931,
|
||||
"slack": 700
|
||||
},
|
||||
"reportFunctionMemberAccess": {
|
||||
"baseline": 7,
|
||||
"slack": 3
|
||||
},
|
||||
"reportGeneralTypeIssues": {
|
||||
"baseline": 151,
|
||||
"slack": 15
|
||||
},
|
||||
"reportIncompatibleMethodOverride": {
|
||||
"baseline": 52,
|
||||
"slack": 5
|
||||
},
|
||||
"reportIncompatibleVariableOverride": {
|
||||
"baseline": 8,
|
||||
"slack": 3
|
||||
},
|
||||
"reportInconsistentOverload": {
|
||||
"baseline": 12,
|
||||
"slack": 3
|
||||
},
|
||||
"reportIndexIssue": {
|
||||
"baseline": 26,
|
||||
"slack": 3
|
||||
},
|
||||
"reportInvalidTypeForm": {
|
||||
"baseline": 23,
|
||||
"slack": 3
|
||||
},
|
||||
"reportInvalidTypeVarUse": {
|
||||
"baseline": 2,
|
||||
"slack": 3
|
||||
},
|
||||
"reportMatchNotExhaustive": {
|
||||
"baseline": 1,
|
||||
"slack": 0
|
||||
},
|
||||
"reportMissingParameterType": {
|
||||
"baseline": 3933,
|
||||
"slack": 390
|
||||
},
|
||||
"reportMissingTypeArgument": {
|
||||
"baseline": 10612,
|
||||
"slack": 1000
|
||||
},
|
||||
"reportMissingTypeStubs": {
|
||||
"baseline": 27,
|
||||
"slack": 10
|
||||
},
|
||||
"reportOperatorIssue": {
|
||||
"baseline": 6,
|
||||
"slack": 3
|
||||
},
|
||||
"reportOptionalCall": {
|
||||
"baseline": 4,
|
||||
"slack": 3
|
||||
},
|
||||
"reportOptionalIterable": {
|
||||
"baseline": 3,
|
||||
"slack": 3
|
||||
},
|
||||
"reportOptionalMemberAccess": {
|
||||
"baseline": 724,
|
||||
"slack": 72
|
||||
},
|
||||
"reportOptionalOperand": {
|
||||
"baseline": 3,
|
||||
"slack": 3
|
||||
},
|
||||
"reportOptionalSubscript": {
|
||||
"baseline": 11,
|
||||
"slack": 3
|
||||
},
|
||||
"reportPossiblyUnboundVariable": {
|
||||
"baseline": 52,
|
||||
"slack": 10
|
||||
},
|
||||
"reportPrivateUsage": {
|
||||
"baseline": 1625,
|
||||
"slack": 160
|
||||
},
|
||||
"reportRedeclaration": {
|
||||
"baseline": 8,
|
||||
"slack": 3
|
||||
},
|
||||
"reportReturnType": {
|
||||
"baseline": 126,
|
||||
"slack": 100
|
||||
},
|
||||
"reportTypedDictNotRequiredAccess": {
|
||||
"baseline": 20,
|
||||
"slack": 3
|
||||
},
|
||||
"reportUndefinedVariable": {
|
||||
"baseline": 2,
|
||||
"slack": 3
|
||||
},
|
||||
"reportUnknownArgumentType": {
|
||||
"baseline": 30603,
|
||||
"slack": 3000
|
||||
},
|
||||
"reportUnknownLambdaType": {
|
||||
"baseline": 75,
|
||||
"slack": 10
|
||||
},
|
||||
"reportUnknownMemberType": {
|
||||
"baseline": 27037,
|
||||
"slack": 2500
|
||||
},
|
||||
"reportUnknownParameterType": {
|
||||
"baseline": 13612,
|
||||
"slack": 1000
|
||||
},
|
||||
"reportUnknownVariableType": {
|
||||
"baseline": 21445,
|
||||
"slack": 2000
|
||||
},
|
||||
"reportUnnecessaryCast": {
|
||||
"baseline": 118,
|
||||
"slack": 10
|
||||
},
|
||||
"reportUnnecessaryComparison": {
|
||||
"baseline": 683,
|
||||
"slack": 100
|
||||
},
|
||||
"reportUnnecessaryContains": {
|
||||
"baseline": 4,
|
||||
"slack": 3
|
||||
},
|
||||
"reportUnnecessaryIsInstance": {
|
||||
"baseline": 808,
|
||||
"slack": 80
|
||||
},
|
||||
"reportUntypedBaseClass": {
|
||||
"baseline": 110,
|
||||
"slack": 11
|
||||
},
|
||||
"reportUntypedFunctionDecorator": {
|
||||
"baseline": 22,
|
||||
"slack": 3
|
||||
},
|
||||
"reportUnusedClass": {
|
||||
"baseline": 22,
|
||||
"slack": 3
|
||||
},
|
||||
"reportUnusedFunction": {
|
||||
"baseline": 137,
|
||||
"slack": 10
|
||||
},
|
||||
"reportUnusedImport": {
|
||||
"baseline": 670,
|
||||
"slack": 50
|
||||
},
|
||||
"reportUnusedVariable": {
|
||||
"baseline": 865,
|
||||
"slack": 50
|
||||
}
|
||||
}
|
||||
{}
|
||||
|
|
|
|||
|
|
@ -456,6 +456,43 @@ def _extract_requested_mcp_toolsets(
|
|||
return set()
|
||||
|
||||
|
||||
def _validate_all_mcp_servers_sentinel(
|
||||
object_permission: Optional[ObjectPermissionDict],
|
||||
team_obj: Optional["LiteLLM_TeamTableCachedObj"],
|
||||
is_proxy_admin: bool,
|
||||
) -> None:
|
||||
if not _has_all_mcp_servers_sentinel(object_permission):
|
||||
return
|
||||
|
||||
if team_obj is None and is_proxy_admin:
|
||||
return
|
||||
|
||||
if team_obj is None:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail={
|
||||
"error": (
|
||||
"Key is not in a team. The 'all-mcp-servers' sentinel "
|
||||
"cannot be assigned to personal keys by non-admin callers."
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
team_op = team_obj.object_permission
|
||||
team_mcp_servers = (team_op.mcp_servers or []) if team_op else []
|
||||
if SpecialMCPServerNames.all_mcp_servers.value not in team_mcp_servers:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail={
|
||||
"error": (
|
||||
f"Key requests 'all-mcp-servers' but team '{team_obj.team_id}' "
|
||||
f"does not grant the all-mcp-servers sentinel. "
|
||||
f"Team allows: {sorted(team_mcp_servers)}."
|
||||
)
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
async def validate_key_mcp_servers_against_team(
|
||||
object_permission: Optional[ObjectPermissionDict],
|
||||
team_obj: Optional["LiteLLM_TeamTableCachedObj"],
|
||||
|
|
@ -485,33 +522,7 @@ async def validate_key_mcp_servers_against_team(
|
|||
|
||||
requested_toolsets = _extract_requested_mcp_toolsets(object_permission)
|
||||
|
||||
if has_all_sentinel:
|
||||
if teamless_admin_assignment:
|
||||
pass
|
||||
elif team_obj is None:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail={
|
||||
"error": (
|
||||
"Key is not in a team. The 'all-mcp-servers' sentinel "
|
||||
"cannot be assigned to personal keys by non-admin callers."
|
||||
)
|
||||
},
|
||||
)
|
||||
else:
|
||||
team_op = team_obj.object_permission
|
||||
team_mcp_servers = (team_op.mcp_servers or []) if team_op else []
|
||||
if SpecialMCPServerNames.all_mcp_servers.value not in team_mcp_servers:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail={
|
||||
"error": (
|
||||
f"Key requests 'all-mcp-servers' but team '{team_obj.team_id}' "
|
||||
f"does not grant the all-mcp-servers sentinel. "
|
||||
f"Team allows: {sorted(team_mcp_servers)}."
|
||||
)
|
||||
},
|
||||
)
|
||||
_validate_all_mcp_servers_sentinel(object_permission, team_obj, is_proxy_admin)
|
||||
|
||||
# Nothing to validate
|
||||
if not requested_servers and not requested_access_groups and not requested_toolsets and not has_all_sentinel:
|
||||
|
|
|
|||
|
|
@ -1,26 +1,26 @@
|
|||
{
|
||||
"ANN001": {
|
||||
"baseline": 2865,
|
||||
"baseline": 2873,
|
||||
"slack": 287
|
||||
},
|
||||
"ANN002": {
|
||||
"baseline": 64,
|
||||
"baseline": 65,
|
||||
"slack": 5
|
||||
},
|
||||
"ANN003": {
|
||||
"baseline": 759,
|
||||
"baseline": 778,
|
||||
"slack": 76
|
||||
},
|
||||
"ANN201": {
|
||||
"baseline": 1944,
|
||||
"baseline": 1945,
|
||||
"slack": 194
|
||||
},
|
||||
"ANN202": {
|
||||
"baseline": 858,
|
||||
"baseline": 865,
|
||||
"slack": 86
|
||||
},
|
||||
"ANN204": {
|
||||
"baseline": 658,
|
||||
"baseline": 665,
|
||||
"slack": 66
|
||||
},
|
||||
"ANN205": {
|
||||
|
|
@ -28,11 +28,11 @@
|
|||
"slack": 10
|
||||
},
|
||||
"ANN206": {
|
||||
"baseline": 120,
|
||||
"baseline": 119,
|
||||
"slack": 10
|
||||
},
|
||||
"ANN401": {
|
||||
"baseline": 1886,
|
||||
"baseline": 1945,
|
||||
"slack": 189
|
||||
},
|
||||
"ASYNC230": {
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
"slack": 10
|
||||
},
|
||||
"B008": {
|
||||
"baseline": 490,
|
||||
"baseline": 496,
|
||||
"slack": 15
|
||||
},
|
||||
"B009": {
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
"slack": 5
|
||||
},
|
||||
"B010": {
|
||||
"baseline": 187,
|
||||
"baseline": 194,
|
||||
"slack": 10
|
||||
},
|
||||
"B018": {
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"BLE001": {
|
||||
"baseline": 2854,
|
||||
"baseline": 2906,
|
||||
"slack": 50
|
||||
},
|
||||
"C401": {
|
||||
|
|
@ -108,7 +108,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"C901": {
|
||||
"baseline": 301,
|
||||
"baseline": 316,
|
||||
"slack": 15
|
||||
},
|
||||
"D419": {
|
||||
|
|
@ -120,11 +120,11 @@
|
|||
"slack": 3
|
||||
},
|
||||
"DTZ003": {
|
||||
"baseline": 30,
|
||||
"baseline": 31,
|
||||
"slack": 3
|
||||
},
|
||||
"DTZ005": {
|
||||
"baseline": 229,
|
||||
"baseline": 237,
|
||||
"slack": 15
|
||||
},
|
||||
"DTZ006": {
|
||||
|
|
@ -132,7 +132,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"DTZ007": {
|
||||
"baseline": 20,
|
||||
"baseline": 18,
|
||||
"slack": 3
|
||||
},
|
||||
"DTZ011": {
|
||||
|
|
@ -160,11 +160,11 @@
|
|||
"slack": 3
|
||||
},
|
||||
"FURB188": {
|
||||
"baseline": 49,
|
||||
"baseline": 51,
|
||||
"slack": 3
|
||||
},
|
||||
"I001": {
|
||||
"baseline": 258,
|
||||
"baseline": 274,
|
||||
"slack": 15
|
||||
},
|
||||
"LOG015": {
|
||||
|
|
@ -180,7 +180,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"PERF401": {
|
||||
"baseline": 136,
|
||||
"baseline": 137,
|
||||
"slack": 10
|
||||
},
|
||||
"PERF402": {
|
||||
|
|
@ -192,7 +192,7 @@
|
|||
"slack": 5
|
||||
},
|
||||
"PIE790": {
|
||||
"baseline": 263,
|
||||
"baseline": 264,
|
||||
"slack": 15
|
||||
},
|
||||
"PIE800": {
|
||||
|
|
@ -216,7 +216,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"PLC0414": {
|
||||
"baseline": 35,
|
||||
"baseline": 36,
|
||||
"slack": 3
|
||||
},
|
||||
"PLR0124": {
|
||||
|
|
@ -240,7 +240,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"PLR1714": {
|
||||
"baseline": 252,
|
||||
"baseline": 255,
|
||||
"slack": 15
|
||||
},
|
||||
"PLR1730": {
|
||||
|
|
@ -252,7 +252,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"PLW0127": {
|
||||
"baseline": 41,
|
||||
"baseline": 39,
|
||||
"slack": 3
|
||||
},
|
||||
"PLW0133": {
|
||||
|
|
@ -264,7 +264,7 @@
|
|||
"slack": 15
|
||||
},
|
||||
"PLW0603": {
|
||||
"baseline": 183,
|
||||
"baseline": 192,
|
||||
"slack": 10
|
||||
},
|
||||
"PLW1508": {
|
||||
|
|
@ -292,19 +292,19 @@
|
|||
"slack": 3
|
||||
},
|
||||
"RET501": {
|
||||
"baseline": 35,
|
||||
"baseline": 36,
|
||||
"slack": 3
|
||||
},
|
||||
"RET504": {
|
||||
"baseline": 702,
|
||||
"baseline": 694,
|
||||
"slack": 20
|
||||
},
|
||||
"RUF010": {
|
||||
"baseline": 844,
|
||||
"baseline": 848,
|
||||
"slack": 30
|
||||
},
|
||||
"RUF012": {
|
||||
"baseline": 158,
|
||||
"baseline": 161,
|
||||
"slack": 10
|
||||
},
|
||||
"RUF015": {
|
||||
|
|
@ -316,7 +316,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"RUF022": {
|
||||
"baseline": 80,
|
||||
"baseline": 83,
|
||||
"slack": 5
|
||||
},
|
||||
"RUF023": {
|
||||
|
|
@ -336,15 +336,15 @@
|
|||
"slack": 5
|
||||
},
|
||||
"RUF100": {
|
||||
"baseline": 465,
|
||||
"baseline": 100,
|
||||
"slack": 15
|
||||
},
|
||||
"S110": {
|
||||
"baseline": 222,
|
||||
"baseline": 223,
|
||||
"slack": 15
|
||||
},
|
||||
"S112": {
|
||||
"baseline": 21,
|
||||
"baseline": 22,
|
||||
"slack": 3
|
||||
},
|
||||
"SIM101": {
|
||||
|
|
@ -364,7 +364,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"SIM114": {
|
||||
"baseline": 103,
|
||||
"baseline": 105,
|
||||
"slack": 10
|
||||
},
|
||||
"SIM115": {
|
||||
|
|
@ -376,7 +376,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"SIM118": {
|
||||
"baseline": 104,
|
||||
"baseline": 103,
|
||||
"slack": 10
|
||||
},
|
||||
"SIM201": {
|
||||
|
|
@ -396,7 +396,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"SIM401": {
|
||||
"baseline": 9,
|
||||
"baseline": 10,
|
||||
"slack": 3
|
||||
},
|
||||
"TC004": {
|
||||
|
|
@ -408,7 +408,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"TID251": {
|
||||
"baseline": 2664,
|
||||
"baseline": 2680,
|
||||
"slack": 50
|
||||
},
|
||||
"TRY002": {
|
||||
|
|
@ -416,11 +416,11 @@
|
|||
"slack": 20
|
||||
},
|
||||
"TRY004": {
|
||||
"baseline": 93,
|
||||
"baseline": 94,
|
||||
"slack": 5
|
||||
},
|
||||
"TRY201": {
|
||||
"baseline": 409,
|
||||
"baseline": 408,
|
||||
"slack": 15
|
||||
},
|
||||
"TRY203": {
|
||||
|
|
@ -428,15 +428,15 @@
|
|||
"slack": 10
|
||||
},
|
||||
"TRY300": {
|
||||
"baseline": 853,
|
||||
"baseline": 854,
|
||||
"slack": 30
|
||||
},
|
||||
"UP006": {
|
||||
"baseline": 12941,
|
||||
"baseline": 13024,
|
||||
"slack": 100
|
||||
},
|
||||
"UP007": {
|
||||
"baseline": 2520,
|
||||
"baseline": 2567,
|
||||
"slack": 50
|
||||
},
|
||||
"UP008": {
|
||||
|
|
@ -464,7 +464,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"UP032": {
|
||||
"baseline": 609,
|
||||
"baseline": 613,
|
||||
"slack": 20
|
||||
},
|
||||
"UP034": {
|
||||
|
|
@ -472,7 +472,7 @@
|
|||
"slack": 3
|
||||
},
|
||||
"UP035": {
|
||||
"baseline": 2250,
|
||||
"baseline": 2268,
|
||||
"slack": 50
|
||||
},
|
||||
"UP036": {
|
||||
|
|
@ -480,11 +480,11 @@
|
|||
"slack": 3
|
||||
},
|
||||
"UP037": {
|
||||
"baseline": 100,
|
||||
"baseline": 105,
|
||||
"slack": 5
|
||||
},
|
||||
"UP045": {
|
||||
"baseline": 18417,
|
||||
"baseline": 18171,
|
||||
"slack": 100
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue