in probe_scraper/parsers/repositories.py [0:0]
def parse_v2(self, filename=None) -> dict:
"""
Parse the given filename as a set of repository definitions.
The passed file must be in the current RepositoriesYamlV2 format.
"""
with open(filename or REPOSITORIES_FILENAME, "r") as f:
data = yaml.load(f, Loader=yaml.SafeLoader)
model_validation.apply_defaults_and_validate(data, "RepositoriesYamlV2")
repos = data
app_listings = []
for app in repos["applications"]:
channels = app.pop("channels")
for channel in channels:
dependencies = app.get("dependencies", []) + channel.pop(
"additional_dependencies", []
)
listing = {**app, **channel}
listing["dependencies"] = dependencies
app_id = listing["app_id"]
listing["document_namespace"] = (
app_id.lower().replace("_", "-").replace(".", "-")
)
listing["bq_dataset_family"] = (
app_id.lower().replace("-", "_").replace(".", "_")
)
# Need a deepcopy to ensure the dictionary values remain distinct.
listing = copy.deepcopy(listing)
model_validation.validate_as(listing, "AppListing")
app_listings.append(listing)
library_variants = []
for lib in repos["libraries"]:
variants = lib.pop("variants")
for variant in variants:
listing = {**lib, **variant}
model_validation.validate_as(listing, "LibraryVariant")
library_variants.append(listing)
return {
"library-variants": library_variants,
"app-listings": app_listings,
}