Coverage for .venv/lib/python3.13/site-packages/litellm/proxy/auth/roles.py: 95%

20 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 12:01 +0000

1from __future__ import annotations 

2 

3from enum import Enum 

4from typing import Final 

5 

6 

7class Role(str, Enum): 

8 PLATFORM_ADMIN = "platform_admin" 

9 PLATFORM_VIEWER = "platform_viewer" 

10 ORG_ADMIN = "org_admin" 

11 ORG_VIEWER = "org_viewer" 

12 TEAM_ADMIN = "team_admin" 

13 TEAM_MEMBER = "team_member" 

14 

15 

16class TeamRole(str, Enum): 

17 ADMIN = "admin" 

18 MEMBER = "member" 

19 

20 

21_ROLE_MAP: Final[dict[str, Role]] = { 

22 "proxy_admin": Role.PLATFORM_ADMIN, 

23 "proxy_admin_viewer": Role.PLATFORM_VIEWER, 

24 "org_admin": Role.ORG_ADMIN, 

25} 

26 

27 

28def map_role(value: str | None) -> Role | None: 

29 """Map a LiteLLM ``user_role`` string to a platform Role.""" 

30 if value is None: 

31 return None 

32 return _ROLE_MAP.get(value) 

33 

34 

35def team_role(role: str | None) -> TeamRole: 

36 return TeamRole.ADMIN if role == "admin" else TeamRole.MEMBER