probe_scraper/parsers/metrics.py (23 lines of code) (raw):

# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. from pathlib import Path from glean_parser.parser import parse_objects from .pings import normalize_ping_name from .utils import get_source_url class GleanMetricsParser: """ Use the [Glean Parser] (https://mozilla.github.io/glean_parser) to parse the metrics.yaml files. """ def parse(self, filenames, config, repo_url=None, commit_hash=None): config = config.copy() config["do_not_disable_expired"] = True paths = [Path(fname) for fname in filenames] paths = [path for path in paths if path.is_file()] results = parse_objects(paths, config) errors = [err for err in results] metrics = { metric.identifier(): metric.serialize() for category, probes in results.value.items() for probe_name, metric in probes.items() } for v in metrics.values(): v["send_in_pings"] = [normalize_ping_name(p) for p in v["send_in_pings"]] if repo_url and commit_hash: v["source_url"] = get_source_url(v["defined_in"], repo_url, commit_hash) # the 'defined_in' structure is no longer needed del v["defined_in"] return metrics, errors