in src/mozanalysis/config.py [0:0]
def get_metric(self, metric_slug: str, app_name: str) -> Metric:
"""Load a metric definition for the given app.
Returns a :class:`mozanalysis.metrics.Metric` instance.
"""
metric_definition = self.configs.get_metric_definition(metric_slug, app_name)
if metric_definition is None:
if self.check_configs_for_app(app_name):
raise MetricNotFound(
f"Could not find definition for metric {metric_slug} in application {app_name}" # noqa:E501
)
else:
raise ApplicationNotFound(
f"Could not find application {app_name}, so metric {metric_slug} could not be resolved" # noqa:E501
)
return Metric(
name=metric_definition.name,
select_expr=self.configs.get_env()
.from_string(metric_definition.select_expression)
.render(),
friendly_name=metric_definition.friendly_name,
description=metric_definition.description,
data_source=self.get_data_source(
metric_definition.data_source.name, app_name
),
bigger_is_better=metric_definition.bigger_is_better,
app_name=app_name,
)