diff --git a/indico/queries/questionnaire.py b/indico/queries/questionnaire.py index 9dd16a89..1315709e 100644 --- a/indico/queries/questionnaire.py +++ b/indico/queries/questionnaire.py @@ -77,8 +77,53 @@ class GetQuestionnaireExamples(GraphQLRequest["List[Example]"]): examples(numExamples: $num_examples, datafileId: $datafile_id) { rowIndex datafileId + sourceFileId + datarowId + datapointId + datarowIds + datafileIds + datapointIds + status source id + partial + autolabeled + originalDatafileId + originalDatafileName + context { + id + source + datafileId + spans { + start + end + pageNum + } + bounds { + top + bottom + left + right + value + } + } + contexts { + id + source + datafileId + spans { + start + end + pageNum + } + bounds { + top + bottom + left + right + value + } + } } } } diff --git a/indico/types/questionnaire.py b/indico/types/questionnaire.py index e536468b..5fa19410 100644 --- a/indico/types/questionnaire.py +++ b/indico/types/questionnaire.py @@ -1,4 +1,4 @@ -from typing import List +from typing import List, Optional from indico.types.base import BaseType @@ -26,12 +26,38 @@ class Questionnaire(BaseType): question: Question +class ExampleContext(BaseType): + """ + The portion of the source file that this example will cover + """ + id: int + source: Optional[str] + datafile_id: Optional[int] + spans: Optional[List[dict]] + bounds: Optional[List[dict]] + + class Example(BaseType): row_index: int - datafile_id: int + # Deprecated fields - use the plural versions instead + datarow_id: Optional[int] + datafile_id: Optional[int] + datapoint_id: Optional[int] + # New plural fields + datarow_ids: Optional[List[int]] + datafile_ids: Optional[List[int]] + datapoint_ids: Optional[List[int]] + source_file_id: Optional[int] status: str source: str id: int + partial: Optional[bool] + autolabeled: Optional[bool] + original_datafile_id: Optional[int] + original_datafile_name: Optional[str] + # Return one context for backwards compatibility + context: Optional[ExampleContext] + contexts: Optional[List[ExampleContext]] class QuestionnaireExamples(BaseType): diff --git a/tests/integration/queries/test_questionnaire.py b/tests/integration/queries/test_questionnaire.py index e45d118d..50efdf7a 100644 --- a/tests/integration/queries/test_questionnaire.py +++ b/tests/integration/queries/test_questionnaire.py @@ -142,6 +142,18 @@ def test_get_examples(indico, unlabeled_questionnaire): assert isinstance(example.source, str) assert isinstance(example.row_index, int) assert isinstance(example.datafile_id, int) + assert hasattr(example, "source_file_id") + assert hasattr(example, "datarow_id") + assert hasattr(example, "datapoint_id") + assert hasattr(example, "datarow_ids") + assert hasattr(example, "datafile_ids") + assert hasattr(example, "datapoint_ids") + assert hasattr(example, "partial") + assert hasattr(example, "autolabeled") + assert hasattr(example, "original_datafile_id") + assert hasattr(example, "original_datafile_name") + assert hasattr(example, "context") + assert hasattr(example, "contexts") def test_add_labels(indico, unlabeled_questionnaire): @@ -183,3 +195,4 @@ def test_add_labels(indico, unlabeled_questionnaire): ) assert questionnaire.num_total_examples == 3 assert questionnaire.num_fully_labeled == 1 +