def _validate_datasets()

in source/aws_lambda/shared/personalize_service.py [0:0]


    def _validate_datasets(self) -> None:
        """
        Perform a validation of the datasets up front
        :return: None
        """
        datasets = jmespath.search("datasets", self.config_dict)
        if not datasets:
            logger.warning("typical usage includes a dataset declaration")
            return

        datasets = {
            "users": jmespath.search(
                "datasets.users.dataset.serviceConfig", self.config_dict
            ),
            "items": jmespath.search(
                "datasets.items.dataset.serviceConfig", self.config_dict
            ),
            "interactions": jmespath.search(
                "datasets.interactions.dataset.serviceConfig", self.config_dict
            ),
        }

        if not datasets["interactions"]:
            self._configuration_errors.append(
                "You must at minimum create an interactions dataset and declare its schema"
            )

        for dataset_name, dataset in datasets.items():
            if dataset:
                if not self._validate_type(
                    dataset, dict, f"datasets.{dataset_name} must be an object"
                ):
                    return

                # some values are provided by the solution - we introduce placeholders
                SolutionVersion().arn("validation")
                dataset.update(
                    {
                        "datasetGroupArn": DatasetGroup().arn("validation"),
                        "schemaArn": Schema().arn("validation"),
                        "datasetType": dataset_name,
                    }
                )
                self._validate_resource(Dataset(), dataset)