import configparser from pathlib import Path from typing import NamedTuple from mlflow.environment_variables import MLFLOW_AUTH_CONFIG_PATH class AuthConfig(NamedTuple): default_permission: str database_uri: str admin_username: str admin_password: str authorization_function: str def _get_auth_config_path() -> str: return ( MLFLOW_AUTH_CONFIG_PATH.get() or Path(__file__).parent.joinpath("basic_auth.ini").resolve() ) def read_auth_config() -> AuthConfig: config_path = _get_auth_config_path() config = configparser.ConfigParser() config.read(config_path) return AuthConfig( default_permission=config["mlflow"]["default_permission"], database_uri=config["mlflow"]["database_uri"], admin_username=config["mlflow"]["admin_username"], admin_password=config["mlflow"]["admin_password"], authorization_function=config["mlflow"].get( "authorization_function", "mlflow.server.auth:authenticate_request_basic_auth" ), )