def parse_v2()

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,
        }