Skip to content

Commit 5093472

Browse files
[formrecognizer] Add proper defaults on DocumentTableCell (Azure#21213)
* add proper defaults on document table cell * default kind field * set default in _from_generated and improve init * revert changes to init, fix test comment * set content default for kind * update testcase to account for default scenarios
1 parent 2597a6b commit 5093472

File tree

3 files changed

+69
-9
lines changed

3 files changed

+69
-9
lines changed

sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3120,11 +3120,11 @@ def __init__(self, **kwargs):
31203120
@classmethod
31213121
def _from_generated(cls, cell):
31223122
return cls(
3123-
kind=cell.kind,
3123+
kind=cell.kind if cell.kind else "content",
31243124
row_index=cell.row_index,
31253125
column_index=cell.column_index,
3126-
row_span=cell.row_span,
3127-
column_span=cell.column_span,
3126+
row_span=cell.row_span if cell.row_span else 1,
3127+
column_span=cell.column_span if cell.column_span else 1,
31283128
content=cell.content,
31293129
bounding_regions=[
31303130
BoundingRegion._from_generated(region)
@@ -3184,11 +3184,11 @@ def from_dict(cls, data):
31843184
:rtype: DocumentTableCell
31853185
"""
31863186
return cls(
3187-
kind=data.get("kind", None),
3187+
kind=data.get("kind", "content"),
31883188
row_index=data.get("row_index", None),
31893189
column_index=data.get("column_index", None),
3190-
row_span=data.get("row_span", None),
3191-
column_span=data.get("column_span", None),
3190+
row_span=data.get("row_span", 1),
3191+
column_span=data.get("column_span", 1),
31923192
content=data.get("content", None),
31933193
bounding_regions=[BoundingRegion.from_dict(v) for v in data.get("bounding_regions")] # type: ignore
31943194
if len(data.get("bounding_regions", [])) > 0

sdk/formrecognizer/azure-ai-formrecognizer/tests/test_to_dict_v3.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,57 @@ def test_document_table_cell_to_dict(self):
890890

891891
assert d == final
892892

893+
def test_document_table_cell_to_dict_use_defaults(self):
894+
# NOTE: kind, column_span, and row_span are not included on purpose to test that the proper defaults are set.
895+
model = _models.DocumentTableCell(
896+
row_index=2,
897+
column_index=3,
898+
content="cell content",
899+
bounding_regions=[
900+
_models.BoundingRegion(
901+
bounding_box=[_models.Point(1, 2), _models.Point(3, 4)],
902+
page_number=1,
903+
),
904+
],
905+
spans=[
906+
_models.DocumentSpan(
907+
offset=5,
908+
length=2,
909+
),
910+
],
911+
)
912+
913+
d = model.to_dict()
914+
915+
final = {
916+
"kind": "content",
917+
"row_index": 2,
918+
"column_index": 3,
919+
"row_span": 1,
920+
"column_span": 1,
921+
"content": "cell content",
922+
"bounding_regions": [
923+
{
924+
"page_number": 1,
925+
"bounding_box": [
926+
{"x": 1, "y": 2},
927+
{
928+
"x": 3,
929+
"y": 4,
930+
},
931+
],
932+
},
933+
],
934+
"spans": [
935+
{
936+
"offset": 5,
937+
"length": 2,
938+
},
939+
],
940+
}
941+
942+
assert d == final
943+
893944
def test_model_operation_info_to_dict(self):
894945
model = _models.ModelOperationInfo(
895946
operation_id="id123",

sdk/formrecognizer/azure-ai-formrecognizer/tests/testcase.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -698,11 +698,20 @@ def assertDocumentTablesTransformCorrect(self, transformed_tables, raw_tables, *
698698
self.assertBoundingRegionsTransformCorrect(table.bounding_regions, expected.bounding_regions)
699699

700700
def assertDocumentTableCellTransformCorrect(self, transformed_cell, raw_cell, **kwargs):
701-
assert transformed_cell.kind == raw_cell.kind
701+
if raw_cell.kind:
702+
assert transformed_cell.kind == raw_cell.kind
703+
else:
704+
assert transformed_cell.kind == "content"
702705
assert transformed_cell.row_index == raw_cell.row_index
703706
assert transformed_cell.column_index == raw_cell.column_index
704-
assert transformed_cell.row_span == raw_cell.row_span
705-
assert transformed_cell.column_span == raw_cell.column_span
707+
if raw_cell.row_span:
708+
assert transformed_cell.row_span == raw_cell.row_span
709+
else:
710+
assert transformed_cell.row_span == 1
711+
if raw_cell.column_span:
712+
assert transformed_cell.column_span == raw_cell.column_span
713+
else:
714+
assert transformed_cell.column_span == 1
706715
assert transformed_cell.content == raw_cell.content
707716

708717
for span, expected_span in zip(transformed_cell.spans or [], raw_cell.spans or []):

0 commit comments

Comments
 (0)