From 96d80fc120f9d6cbc07278d23a20d0bcbc5fa4d0 Mon Sep 17 00:00:00 2001 From: "codegen-sh[bot]" <131295404+codegen-sh[bot]@users.noreply.github.com> Date: Wed, 11 Jun 2025 18:04:33 +0000 Subject: [PATCH 1/2] feat: Add source_file_id to Example class and query --- indico/queries/questionnaire.py | 1 + indico/types/questionnaire.py | 1 + tests/integration/queries/test_questionnaire.py | 2 ++ 3 files changed, 4 insertions(+) diff --git a/indico/queries/questionnaire.py b/indico/queries/questionnaire.py index 9dd16a89..7ad47682 100644 --- a/indico/queries/questionnaire.py +++ b/indico/queries/questionnaire.py @@ -77,6 +77,7 @@ class GetQuestionnaireExamples(GraphQLRequest["List[Example]"]): examples(numExamples: $num_examples, datafileId: $datafile_id) { rowIndex datafileId + sourceFileId source id } diff --git a/indico/types/questionnaire.py b/indico/types/questionnaire.py index e536468b..aceb1cd3 100644 --- a/indico/types/questionnaire.py +++ b/indico/types/questionnaire.py @@ -29,6 +29,7 @@ class Questionnaire(BaseType): class Example(BaseType): row_index: int datafile_id: int + source_file_id: int status: str source: str id: int diff --git a/tests/integration/queries/test_questionnaire.py b/tests/integration/queries/test_questionnaire.py index e45d118d..2f215cb8 100644 --- a/tests/integration/queries/test_questionnaire.py +++ b/tests/integration/queries/test_questionnaire.py @@ -142,6 +142,7 @@ 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") def test_add_labels(indico, unlabeled_questionnaire): @@ -183,3 +184,4 @@ def test_add_labels(indico, unlabeled_questionnaire): ) assert questionnaire.num_total_examples == 3 assert questionnaire.num_fully_labeled == 1 + From 38313a924a82d904d2685d45f4eab2e6bfe24a1b Mon Sep 17 00:00:00 2001 From: "codegen-sh[bot]" <131295404+codegen-sh[bot]@users.noreply.github.com> Date: Wed, 11 Jun 2025 18:11:46 +0000 Subject: [PATCH 2/2] feat: Add support for multiple datarow_ids, datafile_ids, datapoint_ids and additional attributes --- indico/queries/questionnaire.py | 44 +++++++++++++++++++ indico/types/questionnaire.py | 31 +++++++++++-- .../integration/queries/test_questionnaire.py | 11 +++++ 3 files changed, 83 insertions(+), 3 deletions(-) diff --git a/indico/queries/questionnaire.py b/indico/queries/questionnaire.py index 7ad47682..1315709e 100644 --- a/indico/queries/questionnaire.py +++ b/indico/queries/questionnaire.py @@ -78,8 +78,52 @@ class GetQuestionnaireExamples(GraphQLRequest["List[Example]"]): 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 aceb1cd3..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,13 +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 - source_file_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 2f215cb8..50efdf7a 100644 --- a/tests/integration/queries/test_questionnaire.py +++ b/tests/integration/queries/test_questionnaire.py @@ -143,6 +143,17 @@ def test_get_examples(indico, unlabeled_questionnaire): 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):