diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py index 695789fa76ac..e5260d3414d4 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -3120,11 +3120,11 @@ def __init__(self, **kwargs): @classmethod def _from_generated(cls, cell): return cls( - kind=cell.kind, + kind=cell.kind if cell.kind else "content", row_index=cell.row_index, column_index=cell.column_index, - row_span=cell.row_span, - column_span=cell.column_span, + row_span=cell.row_span if cell.row_span else 1, + column_span=cell.column_span if cell.column_span else 1, content=cell.content, bounding_regions=[ BoundingRegion._from_generated(region) @@ -3184,11 +3184,11 @@ def from_dict(cls, data): :rtype: DocumentTableCell """ return cls( - kind=data.get("kind", None), + kind=data.get("kind", "content"), row_index=data.get("row_index", None), column_index=data.get("column_index", None), - row_span=data.get("row_span", None), - column_span=data.get("column_span", None), + row_span=data.get("row_span", 1), + column_span=data.get("column_span", 1), content=data.get("content", None), bounding_regions=[BoundingRegion.from_dict(v) for v in data.get("bounding_regions")] # type: ignore if len(data.get("bounding_regions", [])) > 0 diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_to_dict_v3.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_to_dict_v3.py index e465585c706f..a326955697f3 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_to_dict_v3.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/test_to_dict_v3.py @@ -890,6 +890,57 @@ def test_document_table_cell_to_dict(self): assert d == final + def test_document_table_cell_to_dict_use_defaults(self): + # NOTE: kind, column_span, and row_span are not included on purpose to test that the proper defaults are set. + model = _models.DocumentTableCell( + row_index=2, + column_index=3, + content="cell content", + bounding_regions=[ + _models.BoundingRegion( + bounding_box=[_models.Point(1, 2), _models.Point(3, 4)], + page_number=1, + ), + ], + spans=[ + _models.DocumentSpan( + offset=5, + length=2, + ), + ], + ) + + d = model.to_dict() + + final = { + "kind": "content", + "row_index": 2, + "column_index": 3, + "row_span": 1, + "column_span": 1, + "content": "cell content", + "bounding_regions": [ + { + "page_number": 1, + "bounding_box": [ + {"x": 1, "y": 2}, + { + "x": 3, + "y": 4, + }, + ], + }, + ], + "spans": [ + { + "offset": 5, + "length": 2, + }, + ], + } + + assert d == final + def test_model_operation_info_to_dict(self): model = _models.ModelOperationInfo( operation_id="id123", diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py index 578cc51676db..40e29d4b1a37 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py @@ -698,11 +698,20 @@ def assertDocumentTablesTransformCorrect(self, transformed_tables, raw_tables, * self.assertBoundingRegionsTransformCorrect(table.bounding_regions, expected.bounding_regions) def assertDocumentTableCellTransformCorrect(self, transformed_cell, raw_cell, **kwargs): - assert transformed_cell.kind == raw_cell.kind + if raw_cell.kind: + assert transformed_cell.kind == raw_cell.kind + else: + assert transformed_cell.kind == "content" assert transformed_cell.row_index == raw_cell.row_index assert transformed_cell.column_index == raw_cell.column_index - assert transformed_cell.row_span == raw_cell.row_span - assert transformed_cell.column_span == raw_cell.column_span + if raw_cell.row_span: + assert transformed_cell.row_span == raw_cell.row_span + else: + assert transformed_cell.row_span == 1 + if raw_cell.column_span: + assert transformed_cell.column_span == raw_cell.column_span + else: + assert transformed_cell.column_span == 1 assert transformed_cell.content == raw_cell.content for span, expected_span in zip(transformed_cell.spans or [], raw_cell.spans or []):