import pytest from label_studio.tests.sdk.common import LABEL_CONFIG_AND_TASKS pytestmark = pytest.mark.django_db from label_studio_sdk import Client def test_annotation_create_and_update(django_live_url, business_client): ls = Client(url=django_live_url, api_key=business_client.api_key) p = ls.start_project(title='New Project', label_config=LABEL_CONFIG_AND_TASKS['label_config']) task_data = [{'data': {'my_text': 'Test task'}}] p.import_tasks(task_data) tasks = p.get_tasks() assert tasks[0]['data'] == task_data[0]['data'] task_id = tasks[0]['id'] annotation_data = { 'result': [{'from_name': 'label', 'to_name': 'my_text', 'type': 'choices', 'value': {'choices': ['Positive']}}] } new_annotation = p.create_annotation(task_id, **annotation_data) assert (annotation_id := new_annotation['id']) assert new_annotation['result'] == annotation_data['result'] p.update_annotation( annotation_id, result=[{'from_name': 'label', 'to_name': 'my_text', 'type': 'choices', 'value': {'choices': ['Negative']}}], ) updated_annotation = p.get_tasks()[0]['annotations'][0] assert updated_annotation['result'][0]['value'] == {'choices': ['Negative']} def test_annotation_marks_task_as_labeled(django_live_url, business_client): ls = Client(url=django_live_url, api_key=business_client.api_key) p = ls.start_project( title='New Project', label_config=LABEL_CONFIG_AND_TASKS['label_config'], ) task_data = [{'data': {'my_text': 'Test task'}}, {'data': {'my_text': 'Test task 2'}}] p.import_tasks(task_data) tasks = p.get_tasks() assert p.get_labeled_tasks() == [] task_id = tasks[0]['id'] annotation_data = { 'result': [{'from_name': 'label', 'to_name': 'my_text', 'type': 'choices', 'value': {'choices': ['Positive']}}] } p.create_annotation(task_id, **annotation_data) assert len(labeled_tasks := p.get_labeled_tasks()) == 1 assert labeled_tasks[0]['data'] == task_data[0]['data']