def verify_response()

in dynalab/tasks/task_io.py [0:0]


    def verify_response(self, response, data):
        """
        Defines task output by verifying a response satisfies all requirements
        """
        assert "id" in response and response["id"] == data["uid"]
        assert response["signature"] == self.generate_response_signature(response, data)

        missing_target_fields = len(self.targets)
        extra_fields = len(response) - 2

        target_names = [target["name"] for target in self.targets]

        outputs = self.task_info["annotation_config"]["output"]
        name_to_constructor_args = {}
        for output in outputs:
            name_to_constructor_args[output["name"]] = output["constructor_args"]

        for output in outputs:
            output_name = output["name"]
            if output_name in response:
                extra_fields -= 1
                if output_name in target_names:
                    missing_target_fields -= 1

                annotation_verifiers[output["type"]](
                    response[output_name],
                    name_to_constructor_args[output_name],
                    name_to_constructor_args,
                    data,
                )

        assert missing_target_fields == 0
        assert extra_fields == 0