mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-10 03:28:53 +00:00
refactor(sso): avoid recursion in get_litellm_user_role
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
parent
f75911a07e
commit
f1ec7a5753
1 changed files with 9 additions and 4 deletions
|
|
@ -34,6 +34,13 @@ def highest_privilege_role(roles: Sequence[LitellmUserRoles]) -> LitellmUserRole
|
|||
return roles[0] if roles else None
|
||||
|
||||
|
||||
def _lookup_role(role_str: object) -> LitellmUserRoles | None:
|
||||
if not isinstance(role_str, str):
|
||||
return None
|
||||
result: Final = LitellmUserRoles._value2member_map_.get(role_str.lower())
|
||||
return cast(LitellmUserRoles | None, result)
|
||||
|
||||
|
||||
def is_valid_litellm_user_role(role_str: str) -> bool:
|
||||
"""
|
||||
Check if a string is a valid LitellmUserRoles enum value (case-insensitive).
|
||||
|
|
@ -69,11 +76,9 @@ def get_litellm_user_role(role_str) -> LitellmUserRoles | None:
|
|||
if isinstance(role_str, list):
|
||||
entries: Final[Sequence[object]] = role_str
|
||||
return highest_privilege_role(
|
||||
tuple(role for role in (get_litellm_user_role(entry) for entry in entries) if role is not None)
|
||||
tuple(role for role in (_lookup_role(entry) for entry in entries) if role is not None)
|
||||
)
|
||||
# Use _value2member_map_ for O(1) lookup, case-insensitive
|
||||
result: Final = LitellmUserRoles._value2member_map_.get(role_str.lower())
|
||||
return cast(LitellmUserRoles | None, result)
|
||||
return _lookup_role(role_str)
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue