in lib/metric-config-parser/metric_config_parser/metric.py [0:0]
def from_dict(cls, d: dict) -> "MetricsSpec":
params: Dict[str, Any] = {}
known_keys = {f.name for f in attr.fields(cls)}
for k in known_keys:
if k == "days28":
v = d.get("28_day", [])
else:
v = d.get(k, [])
if not isinstance(v, list):
raise ValueError(f"metrics.{k} should be a list of metrics")
params[k] = [MetricReference(m) for m in v]
params["definitions"] = {
k: converter.structure(
{"name": k, **dict((kk.lower(), vv) for kk, vv in v.items())},
MetricDefinition,
)
for k, v in d.items()
if k not in known_keys and k != "28_day"
}
return cls(**params)