diff --git a/litellm/llms/sap/credentials.py b/litellm/llms/sap/credentials.py index 59693e9d8c4..900f5e94be2 100644 --- a/litellm/llms/sap/credentials.py +++ b/litellm/llms/sap/credentials.py @@ -184,7 +184,7 @@ def resolve_resource_group(sources: List[Source]) -> Optional[str]: return value return rg_cred.default -def fetch_credentials(service_key: Optional[str, dict] = None, profile: Optional[str] = None, **kwargs) -> Dict[str, str]: +def fetch_credentials(service_key: Optional[Union[str, dict]] = None, profile: Optional[str] = None, **kwargs) -> Dict[str, str]: """ Resolution order per key: kwargs @@ -200,9 +200,10 @@ def fetch_credentials(service_key: Optional[str, dict] = None, profile: Optional vcap_service = _get_vcap_service(VCAP_AICORE_SERVICE_NAME) sources = [ - Source("service key", lambda cv: _get_nested(service_key, cv.vcap_key if cv.vcap_key else (cv.name,))), # type: ignore[arg-type] Source("kwargs", lambda cv: _str_or_none(kwargs.get(cv.name))), + Source("service key", + lambda cv: _get_nested(service_key, cv.vcap_key if cv.vcap_key else (cv.name,))), # type: ignore[arg-type] Source("environment variables", lambda cv: _str_or_none(os.environ.get(f'AICORE_{cv.name.upper()}'))), Source("config file", diff --git a/tests/test_litellm/llms/sap/test_sap_fetch_creds.py b/tests/test_litellm/llms/sap/test_sap_fetch_creds.py index a1caf7a538d..46e5656a523 100644 --- a/tests/test_litellm/llms/sap/test_sap_fetch_creds.py +++ b/tests/test_litellm/llms/sap/test_sap_fetch_creds.py @@ -37,7 +37,7 @@ def test_sap_fetch_creds_from_env_service_key(monkeypatch): creds = fetch_credentials() assert creds == expected_creds -def test_sap_fetch_creds_from_api_key_service_key(monkeypatch): +def test_sap_fetch_creds_from_arg_service_key(monkeypatch): monkeypatch.setenv("AICORE_HOME", 'notexist') creds = fetch_credentials(service_key=json.dumps(mock_sap_service_key_dict)) assert creds == expected_creds @@ -64,3 +64,14 @@ def test_fetch_creds_from_env(monkeypatch): assert creds['auth_url'] == "env-auth-url/oauth/token" assert creds['base_url'] == "env-base-url/v2" assert creds['resource_group'] == "env-resource-group" + +def test_creds_priority_order(monkeypatch): + monkeypatch.setenv("AICORE_HOME", 'notexist') + monkeypatch.setenv("AICORE_CLIENT_ID", "env-client-id") + monkeypatch.setenv("AICORE_CLIENT_SECRET", "env-client-secret") + monkeypatch.setenv("AICORE_AUTH_URL", "env-auth-url") + monkeypatch.setenv("AICORE_BASE_URL", "env-base-url") + monkeypatch.setenv("AICORE_RESOURCE_GROUP", "env-resource-group") + creds = fetch_credentials(service_key=json.dumps(mock_sap_service_key_dict)) + assert creds['client_id'] == "mockclientid" + assert creds['resource_group'] == "env-resource-group" \ No newline at end of file