def _update_data()

in sync/wptmeta/__init__.py [0:0]


    def _update_data(self,
                     data: dict[str, Any],
                     ) -> dict[str, Any]:
        links_by_state = OrderedDict()

        for item in data.get("links", []):
            label = item.get("label")
            url = item.get("url")
            product = item.get("product")
            for result in item["results"]:
                test_id = "/{}/{}".format(self.dir_name, result.get("test"))
                subtest = result.get("subtest")
                status = result.get("status")
                links_by_state[LinkState(label, url, product, test_id, subtest, status)] = (
                    LinkState(label, url, product, test_id, subtest, status))

        # Remove deletions first so that delete and readd works
        for item in self.links._deleted:
            if item._initial_state in links_by_state:
                del links_by_state[item._initial_state]

        for item in self.links:
            if item._initial_state in links_by_state:
                links_by_state[item._initial_state] = item.state
            else:
                links_by_state[item.state] = item.state

        by_link: OrderedDict[tuple[str | None, str | None, str],
                             list[dict[str, Any]]] = OrderedDict()
        for link in links_by_state.values():
            result = {}
            test_id = link.test_id
            if test_id is not None:
                _, test = parse_test(test_id)
                result["test"] = test
            for prop in ["subtest", "status"]:
                value = getattr(link, prop)
                if value is not None:
                    result[prop] = value
            key = (link.label, link.url, link.product)
            if key not in by_link:
                by_link[key] = []
            by_link[key].append(result)

        links = []

        for (label, url, product), results in by_link.items():
            link_data = {"results": results}
            for link_key, value in [("label", label), ("url", url), ("product", product)]:
                if value is not None:
                    link_data[link_key] = value
            links.append(link_data)
        data["links"] = links

        return data