def load_from_regions_to_rules()

in src/run.py [0:0]


    def load_from_regions_to_rules(self, policies: list[PolicyDict],
                                   mapping: dict[str, set[str]]
                                   ) -> list[Policy]:
        """
        Currently, self._load_global does not impact this method
        Expected mapping:
        {
            'eu-central-1': {'epam-aws-005..', 'epam-aws-006..'},
            'eu-west-1': {'epam-aws-006..', 'epam-aws-007..'}
        }
        :param policies:
        :param mapping:
        :return:
        """
        rules = set(chain.from_iterable(mapping.values()))  # all rules
        if self._cloud != Cloud.AWS:
            # load all policies ignoring region and set global to all
            items = self._load(policies)
            items = list(filter(lambda p: p.name in rules, items))
            for policy in items:
                self.set_global_output(policy)
            return items
        # self._cloud == Cloud.AWS
        # first -> I load all the rules for regions that came + us-east-1.
        # second -> execute self.prepare_policies in order to set global
        # third -> For each region I keep only necessary rules
        config = self._base_config()
        config.regions = [*mapping.keys(), AWS_DEFAULT_REGION]
        items = []
        for policy in self.prepare_policies(self._load(policies, config)):
            if self.is_global(policy) and policy.name in rules:
                items.append(policy)
            elif policy.name in (mapping.get(policy.options.region) or ()):
                items.append(policy)
        return items