diff --git a/changelog.md b/changelog.md index f8d47dfe..2dd03ba8 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,7 @@ ## Developer Experience - **Authentication Configuration Validation**: Added validation for certificate, federated credential, and workload identity authentication settings +- **Configuration Loading**: Expanded `load_configuration_from_env` to accept any mapping type --- diff --git a/libraries/microsoft-agents-activity/microsoft_agents/activity/config/_load_configuration.py b/libraries/microsoft-agents-activity/microsoft_agents/activity/config/_load_configuration.py index 9d54c740..8c851fc8 100644 --- a/libraries/microsoft-agents-activity/microsoft_agents/activity/config/_load_configuration.py +++ b/libraries/microsoft-agents-activity/microsoft_agents/activity/config/_load_configuration.py @@ -1,18 +1,18 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. -from typing import Any +from typing import Any, Mapping from ._configure_logging import _configure_logging -def load_configuration_from_env(env_vars: dict[str, Any]) -> dict: +def load_configuration_from_env(env_vars: Mapping[str, Any]) -> dict: """ Parses environment variables and returns a dictionary with the relevant configuration. """ - vars = env_vars.copy() + local_vars = dict(env_vars) result = {} - for key, value in vars.items(): + for key, value in local_vars.items(): levels = key.split("__") current_level = result last_level = None diff --git a/tests/activity/config/test_load_configuration.py b/tests/activity/config/test_load_configuration.py index 26b881b1..aba83ad1 100644 --- a/tests/activity/config/test_load_configuration.py +++ b/tests/activity/config/test_load_configuration.py @@ -1,3 +1,5 @@ +from types import MappingProxyType + from microsoft_agents.activity import load_configuration_from_env from tests._common import create_env_var_dict @@ -101,3 +103,21 @@ def test_load_configuration_from_env(): input_dict = create_env_var_dict(ENV_RAW) config = load_configuration_from_env(input_dict) assert config == ENV_DICT + + +def test_load_configuration_from_read_only_mapping(): + input_mapping = MappingProxyType(create_env_var_dict(ENV_RAW)) + + config = load_configuration_from_env(input_mapping) + + assert config == ENV_DICT + + +def test_load_configuration_from_empty_mapping(): + config = load_configuration_from_env({}) + + assert config == { + "AGENTAPPLICATION": {}, + "CONNECTIONS": {}, + "CONNECTIONSMAP": [], + }