in lib/metric-config-parser/metric_config_parser/data_source.py [0:0]
def merge(self, other: "DataSourcesSpec"):
"""
Merge another datasource spec into the current one.
The `other` DataSourcesSpec overwrites existing keys.
"""
seen = set()
for key, _ in self.definitions.items():
for other_key in other.definitions:
# support wildcard characters in `other`
other_key_regex = re.compile(fnmatch.translate(other_key))
if other_key_regex.fullmatch(key):
self.definitions[key].merge(other.definitions[other_key])
seen.add(other_key)
seen.add(key)
for key, definition in other.definitions.items():
if key not in seen and is_valid_slug(key):
self.definitions[key] = definition