probe_scraper/parsers/utils.py (16 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/.
HTTP_HEADERS = {
"user-agent": "probe-scraper/1.0",
}
def set_in_nested_dict(dictionary, path, value):
"""Set a property in a nested dictionary by specifying a path to it.
A call like e.g.:
set_in_nested_dict(d, "a/b/c", 1)
is equivalent to:
d["a"]["b"]["c"] = 1
"""
keys = path.split("/")
for k in keys[:-1]:
dictionary = dictionary[k]
dictionary[keys[-1]] = value
def get_major_version(version):
"""Extracts the major (leftmost) version of a version string.
:param version: the version string (e.g. "53.1")
:return: a string containing the leftmost number before the first dot
"""
return version.split(".")[0]
def get_source_url(glean_definition, repo_url, commit_hash):
"""Add source URL where metrics and pings are defined."""
line_number = glean_definition["line"]
file_path = glean_definition["filepath"][
glean_definition["filepath"].find(commit_hash) : # noqa: E203
]
return f"{repo_url}/blob/{file_path}#L{line_number}"