from dataclasses import dataclass from mlflow import MlflowException from mlflow.protos.databricks_pb2 import INVALID_PARAMETER_VALUE @dataclass class Permission: name: str can_read: bool can_update: bool can_delete: bool can_manage: bool READ = Permission( name="READ", can_read=True, can_update=False, can_delete=False, can_manage=False, ) EDIT = Permission( name="EDIT", can_read=True, can_update=True, can_delete=False, can_manage=False, ) MANAGE = Permission( name="MANAGE", can_read=True, can_update=True, can_delete=True, can_manage=True, ) NO_PERMISSIONS = Permission( name="NO_PERMISSIONS", can_read=False, can_update=False, can_delete=False, can_manage=False, ) ALL_PERMISSIONS = { READ.name: READ, EDIT.name: EDIT, MANAGE.name: MANAGE, NO_PERMISSIONS.name: NO_PERMISSIONS, } def get_permission(permission: str) -> Permission: return ALL_PERMISSIONS[permission] def _validate_permission(permission: str): if permission not in ALL_PERMISSIONS: raise MlflowException( f"Invalid permission '{permission}'. Valid permissions are: {tuple(ALL_PERMISSIONS)}", INVALID_PARAMETER_VALUE, )