From 9d923a174f250a2b919fe2d0f28c126101a41c23 Mon Sep 17 00:00:00 2001 From: Sai Asish Y Date: Fri, 12 Jun 2026 23:52:09 -0700 Subject: [PATCH] fix(pdf): avoid UnboundLocalError in extract_table_data when table-wrap has no table Signed-off-by: Sai Asish Y --- packtools/sps/formats/pdf/pipeline/xml.py | 2 ++ tests/sps/formats/pdf/pipeline/test_xml.py | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/packtools/sps/formats/pdf/pipeline/xml.py b/packtools/sps/formats/pdf/pipeline/xml.py index 142c570e5..92d54758c 100644 --- a/packtools/sps/formats/pdf/pipeline/xml.py +++ b/packtools/sps/formats/pdf/pipeline/xml.py @@ -585,6 +585,8 @@ def extract_table_data(table_wrap): headers = [] rows = [] + header_spans = [] + row_spans = [] table = table_wrap.find('.//table') layout = determine_table_layout(table_wrap) diff --git a/tests/sps/formats/pdf/pipeline/test_xml.py b/tests/sps/formats/pdf/pipeline/test_xml.py index ca6f636e1..ed7bea835 100644 --- a/tests/sps/formats/pdf/pipeline/test_xml.py +++ b/tests/sps/formats/pdf/pipeline/test_xml.py @@ -1104,6 +1104,19 @@ def test_extract_table_data_multiple_header_rows(self): result = xml_pipe.extract_table_data(table_wrap) self.assertEqual(expected, result) + def test_extract_table_data_no_table_returns_empty_spans(self): + xml_str = """ + + + Graphic Only + + + """ + table_wrap = etree.fromstring(xml_str) + result = xml_pipe.extract_table_data(table_wrap) + self.assertEqual([], result['header_spans']) + self.assertEqual([], result['row_spans']) + class TestExtractTransAbstractData(unittest.TestCase):