From 780dfc04fe9f80e4254e39c4b0edcc73a4152fd7 Mon Sep 17 00:00:00 2001 From: Catalina Peralta Date: Mon, 11 Oct 2021 18:23:10 -0700 Subject: [PATCH 1/6] add proper defaults on document table cell --- .../azure/ai/formrecognizer/_models.py | 4 +- .../tests/test_to_dict_v3.py | 52 +++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) 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..0670b14d0359 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -3187,8 +3187,8 @@ def from_dict(cls, data): kind=data.get("kind", None), 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..3966cf9f8b9e 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,58 @@ def test_document_table_cell_to_dict(self): assert d == final + def test_document_table_cell_to_dict_use_defaults(self): + # NOTE: column_span and row_span are not included on purpose to test that the proper defaults are set. + model = _models.DocumentTableCell( + kind="content", + 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", From 69977e66c6defdef00231774c9217e9905719963 Mon Sep 17 00:00:00 2001 From: Catalina Peralta Date: Fri, 15 Oct 2021 14:25:44 -0700 Subject: [PATCH 2/6] default kind field --- .../azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py | 2 +- .../azure-ai-formrecognizer/tests/test_to_dict_v3.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) 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 0670b14d0359..abd493979688 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -3189,7 +3189,7 @@ def from_dict(cls, data): column_index=data.get("column_index", None), row_span=data.get("row_span", 1), column_span=data.get("column_span", 1), - content=data.get("content", None), + content=data.get("content", "content"), bounding_regions=[BoundingRegion.from_dict(v) for v in data.get("bounding_regions")] # type: ignore if len(data.get("bounding_regions", [])) > 0 else [], 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 3966cf9f8b9e..1dd49c8b9107 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 @@ -891,9 +891,8 @@ def test_document_table_cell_to_dict(self): assert d == final def test_document_table_cell_to_dict_use_defaults(self): - # NOTE: column_span and row_span are not included on purpose to test that the proper defaults are set. + # NOTE: content, column_span, and row_span are not included on purpose to test that the proper defaults are set. model = _models.DocumentTableCell( - kind="content", row_index=2, column_index=3, content="cell content", From 1bdb8ddf3d97d341750a3149fe6b1b2cfdc006b5 Mon Sep 17 00:00:00 2001 From: Catalina Peralta Date: Fri, 15 Oct 2021 18:10:23 -0700 Subject: [PATCH 3/6] set default in _from_generated and improve init --- .../azure/ai/formrecognizer/_models.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 abd493979688..ca24d58c585c 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -3108,11 +3108,11 @@ class DocumentTableCell(object): """ def __init__(self, **kwargs): - self.kind = kwargs.get("kind", "content") + self.kind = kwargs.get("kind") or "content" self.row_index = kwargs.get("row_index", None) self.column_index = kwargs.get("column_index", None) - self.row_span = kwargs.get("row_span", 1) - self.column_span = kwargs.get("column_span", 1) + self.row_span = kwargs.get("row_span") or 1 + self.column_span = kwargs.get("column_span") or 1 self.content = kwargs.get("content", None) self.bounding_regions = kwargs.get("bounding_regions", None) self.spans = kwargs.get("spans", None) @@ -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) From 5afa0edc0fc18d5e4dd6f6d2cc2a5b4051957b8c Mon Sep 17 00:00:00 2001 From: Catalina Peralta Date: Mon, 18 Oct 2021 11:06:12 -0700 Subject: [PATCH 4/6] revert changes to init, fix test comment --- .../azure/ai/formrecognizer/_models.py | 6 +++--- .../azure-ai-formrecognizer/tests/test_to_dict_v3.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) 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 ca24d58c585c..11e5dda93040 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -3108,11 +3108,11 @@ class DocumentTableCell(object): """ def __init__(self, **kwargs): - self.kind = kwargs.get("kind") or "content" + self.kind = kwargs.get("kind", "content") self.row_index = kwargs.get("row_index", None) self.column_index = kwargs.get("column_index", None) - self.row_span = kwargs.get("row_span") or 1 - self.column_span = kwargs.get("column_span") or 1 + self.row_span = kwargs.get("row_span", 1) + self.column_span = kwargs.get("column_span", 1) self.content = kwargs.get("content", None) self.bounding_regions = kwargs.get("bounding_regions", None) self.spans = kwargs.get("spans", None) 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 1dd49c8b9107..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 @@ -891,7 +891,7 @@ def test_document_table_cell_to_dict(self): assert d == final def test_document_table_cell_to_dict_use_defaults(self): - # NOTE: content, column_span, and row_span are not included on purpose to test that the proper defaults are set. + # 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, From 6fa5408ff9c0c3ac6a3a14c8c957e33648e1541b Mon Sep 17 00:00:00 2001 From: Catalina Peralta Date: Mon, 18 Oct 2021 11:08:23 -0700 Subject: [PATCH 5/6] set content default for kind --- .../azure/ai/formrecognizer/_models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 11e5dda93040..e5260d3414d4 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py +++ b/sdk/formrecognizer/azure-ai-formrecognizer/azure/ai/formrecognizer/_models.py @@ -3184,12 +3184,12 @@ 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", 1), column_span=data.get("column_span", 1), - content=data.get("content", "content"), + 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 else [], From 460aa66ceb159d6b77778b11532ad27ba88537c5 Mon Sep 17 00:00:00 2001 From: Catalina Peralta Date: Mon, 18 Oct 2021 13:32:47 -0700 Subject: [PATCH 6/6] update testcase to account for default scenarios --- .../azure-ai-formrecognizer/tests/testcase.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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 []):