Skip to content

Commit

Permalink
fixed an issue causing the integration config to be camelized
Browse files Browse the repository at this point in the history
  • Loading branch information
yairsimantov20 committed Aug 9, 2023
1 parent c7b29fa commit f4dec89
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions port_ocean/config/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from humps import decamelize
from pydantic import BaseSettings
from pydantic.env_settings import EnvSettingsSource, InitSettingsSource
from pydantic.main import ModelMetaclass, BaseModel

PROVIDER_WRAPPER_PATTERN = r"{{ from (.*) }}"
PROVIDER_CONFIG_PATTERN = r"^[a-zA-Z0-9]+ .*$"
Expand Down Expand Up @@ -60,17 +61,26 @@ def decamelize_object(obj: Any) -> Any:


def parse_config(
config: dict[str, Any], existing_data: dict[str, Any]
settings_model: BaseModel | ModelMetaclass,
config: dict[str, Any],
existing_data: dict[str, Any],
) -> dict[str, Any]:
"""
Normalizing the config yaml file to work with snake_case and getting only the data that is missing for the settings
"""
for key, value in config.items():
decamelize_key = decamelize(key)
if isinstance(value, dict):
existing_data[decamelize_key] = parse_config(
value, existing_data.get(decamelize_key, {})
)
_type: ModelMetaclass = settings_model.__annotations__[decamelize_key]
if isinstance(_type, ModelMetaclass):
existing_data[decamelize_key] = parse_config(
_type, value, existing_data.get(decamelize_key, {})
)
else:
existing_data[decamelize_key] = {
decamelize(k): v for k, v in value.items()
}

elif isinstance(value, str):
# If the value is a provider, we try to load it from the provider
if provider_match := re.match(PROVIDER_WRAPPER_PATTERN, value):
Expand All @@ -95,7 +105,7 @@ def load_providers(
) -> dict[str, Any]:
yaml_content = read_yaml_config_settings_source(settings, base_path)
data = yaml.safe_load(yaml_content)
return parse_config(data, existing_values)
return parse_config(settings, data, existing_values)


class BaseOceanSettings(BaseSettings):
Expand Down

0 comments on commit f4dec89

Please sign in to comment.