Normalize legacy and multi-install integration metadata.
(data: dict[str, Any])
| 164 | |
| 165 | |
| 166 | def normalize_integration_state(data: dict[str, Any]) -> dict[str, Any]: |
| 167 | """Normalize legacy and multi-install integration metadata.""" |
| 168 | legacy_key = clean_integration_key(data.get("integration")) |
| 169 | default_key = clean_integration_key(data.get("default_integration")) or legacy_key |
| 170 | |
| 171 | installed = data.get("installed_integrations") |
| 172 | installed_keys = dedupe_integration_keys(installed if isinstance(installed, list) else []) |
| 173 | if not default_key and installed_keys: |
| 174 | default_key = installed_keys[0] |
| 175 | if default_key and default_key not in installed_keys: |
| 176 | installed_keys.insert(0, default_key) |
| 177 | |
| 178 | settings = normalize_integration_settings(data.get("integration_settings")) |
| 179 | |
| 180 | normalized = dict(data) |
| 181 | normalized["integration_state_schema"] = _normalized_integration_state_schema( |
| 182 | data.get("integration_state_schema") |
| 183 | ) |
| 184 | if default_key: |
| 185 | normalized["integration"] = default_key |
| 186 | normalized["default_integration"] = default_key |
| 187 | else: |
| 188 | normalized.pop("integration", None) |
| 189 | normalized.pop("default_integration", None) |
| 190 | normalized["installed_integrations"] = installed_keys |
| 191 | normalized["integration_settings"] = { |
| 192 | key: settings[key] for key in installed_keys if key in settings |
| 193 | } |
| 194 | return normalized |
| 195 | |
| 196 | |
| 197 | def default_integration_key(state: dict[str, Any]) -> str | None: |