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