+ CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + PATH=/home/mambroz/rpmbuild/BUILDROOT/python-xlrd2-1.3.4-1.fc38.x86_64/usr/bin:/home/mambroz/bin:/usr/lib64/qt-3.3/bin:/usr/share/Modules/bin:/usr/lib64/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/mambroz/.dotnet/tools:/home/mambroz/wrk/zlobot/bin:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/tools/bin:/opt/android-sdk-linux/platform-tools:/home/mambroz/wrk/zlobot/bin:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/tools/bin:/opt/android-sdk-linux/platform-tools:/home/mambroz/wrk/zlobot/bin:/opt/android-sdk-linux/tools:/opt/android-sdk-linux/tools/bin:/opt/android-sdk-linux/platform-tools + PYTHONPATH=/home/mambroz/rpmbuild/BUILDROOT/python-xlrd2-1.3.4-1.fc38.x86_64/usr/lib64/python3.11/site-packages:/home/mambroz/rpmbuild/BUILDROOT/python-xlrd2-1.3.4-1.fc38.x86_64/usr/lib/python3.11/site-packages + PYTHONDONTWRITEBYTECODE=1 + PYTEST_XDIST_AUTO_NUM_WORKERS=4 + /usr/bin/pytest ========================================= test session starts ========================================== platform linux -- Python 3.11.6, pytest-7.2.2, pluggy-1.0.0 rootdir: /home/mambroz/rpmbuild/BUILD/xlrd2-1.3.4 plugins: anyio-3.5.0, cov-4.0.0, bdd-6.1.1 collected 92 items tests/test_alt_sharedstrings_loc.py F [ 1%] tests/test_biffh.py . [ 2%] tests/test_cell.py ...F.. [ 8%] tests/test_formats.py ....... [ 16%] tests/test_formulas.py ............. [ 30%] tests/test_ignore_workbook_corruption_error.py . [ 31%] tests/test_missing_records.py .. [ 33%] tests/test_open_workbook.py .FF.FFFF [ 42%] tests/test_sheet.py ........................F [ 69%] tests/test_workbook.py ......... [ 79%] tests/test_xldate.py ..... [ 84%] tests/test_xldate_to_datetime.py .... [ 89%] tests/test_xlsx_comments.py FFFFFF [ 95%] tests/test_xlsx_parse.py FFFF [100%] =============================================== FAILURES =============================================== ___________________________ TestSharedStringsAltLocation.test_open_workbook ____________________________ self = def setUp(self): > self.book = open_workbook(from_this_dir('sharedstrings_alt_location.xlsx')) tests/test_alt_sharedstrings_loc.py:14: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError ___________________________________ TestCell.test_merged_cells_xlsx ____________________________________ self = def test_merged_cells_xlsx(self): > book = xlrd2.open_workbook(from_this_dir('merged_cells.xlsx')) tests/test_cell.py:53: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError _____________________________________ TestOpen.test_err_cell_empty _____________________________________ self = def test_err_cell_empty(self): # For cell with type "e" (error) but without inner 'val' tags > open_workbook(from_this_dir('err_cell_empty.xlsx')) tests/test_open_workbook.py:51: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError _______________________________________ TestOpen.test_names_demo _______________________________________ self = def test_names_demo(self): # For now, we just check this doesn't raise an error. > open_workbook( from_this_dir(os.path.join('..','examples','namesdemo.xls')), ) tests/test_open_workbook.py:16: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:157: in open_workbook bk = book.open_workbook_xls( xlrd2/book.py:122: in open_workbook_xls bk.get_sheets() xlrd2/book.py:749: in get_sheets self.get_sheet(sheetno) xlrd2/book.py:740: in get_sheet sh.read(self) xlrd2/sheet.py:986: in read formula = decompile_formula(bk, data[22:], fmlalen, FMLA_TYPE_CELL, sheet_id=self.number, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ bk = fmla = b'I\x15\x00\x18\n\x00\x00\x0c\x80%\x01\x00\x03\x00\x0c\x00\x0c\x00#\x17\x00\x00\x00\x0f' fmlalen = 24, fmlatype = 1, browx = 5, bcolx = 0, blah = 0, level = 0, r1c1 = 0, sheet_id = 2 def decompile_formula(bk, fmla, fmlalen, fmlatype=None, browx=None, bcolx=None, blah=0, level=0, r1c1=0, sheet_id=0): if level > STACK_ALARM_LEVEL: blah = 1 reldelta = fmlatype in (FMLA_TYPE_SHARED, FMLA_TYPE_NAME, FMLA_TYPE_COND_FMT, FMLA_TYPE_DATA_VAL) data = fmla bv = bk.biff_version if blah: print("::: decompile_formula len=%d fmlatype=%r browx=%r bcolx=%r reldelta=%d %r level=%d" % (fmlalen, fmlatype, browx, bcolx, reldelta, data, level), file=bk.logfile) hex_char_dump(data, 0, fmlalen, fout=bk.logfile) if level > STACK_PANIC_LEVEL: raise XLRDError("Excessive indirect references in formula") sztab = szdict[bv] pos = 0 stack = [] any_rel = 0 any_err = 0 unk_opnd = Operand(oUNK, None) error_opnd = Operand(oERR, None) spush = stack.append def do_binop(opcd, stk): assert len(stk) >= 2 bop = stk.pop() aop = stk.pop() argdict, result_kind, func, rank, sym = binop_rules[opcd] otext = ''.join([ '('[:aop.rank <= rank], aop.text, ')'[:aop.rank <= rank], sym, '('[:bop.rank <= rank], bop.text, ')'[:bop.rank <= rank], ]) resop = Operand(result_kind, None, rank, otext) stk.append(resop) def do_unaryop(opcode, result_kind, stk): assert len(stk) >= 1 aop = stk.pop() func, rank, sym1, sym2 = unop_rules[opcode] otext = ''.join([ sym1, '('[:aop.rank < rank], aop.text, ')'[:aop.rank < rank], sym2, ]) stk.append(Operand(result_kind, None, rank, otext)) def unexpected_opcode(op_arg, oname_arg): msg = "ERROR *** Unexpected token 0x%02x (%s) found in formula type %s" \ % (op_arg, oname_arg, FMLA_TYPEDESCR_MAP[fmlatype]) print(msg, file=bk.logfile) # raise FormulaError(msg) if fmlalen == 0: stack = [unk_opnd] while 0 <= pos < fmlalen: op = BYTES_ORD(data[pos]) opcode = op & 0x1f optype = (op & 0x60) >> 5 if optype: opx = opcode + 32 else: opx = opcode oname = onames[opx] # + [" RVA"][optype] sz = sztab[opx] if blah: print("Pos:%d Op:0x%02x opname:t%s Sz:%d opcode:%02xh optype:%02xh" % (pos, op, oname, sz, opcode, optype), file=bk.logfile) print("Stack =", stack, file=bk.logfile) if sz == -2: msg = 'ERROR *** Unexpected token 0x%02x ("%s"); biff_version=%d' \ % (op, oname, bv) raise FormulaError(msg) if _TOKEN_NOT_ALLOWED(opx, 0) & fmlatype: unexpected_opcode(op, oname) if not optype: if opcode <= 0x01: # tExp if bv >= 30: fmt = '= 2 bop = stack.pop() aop = stack.pop() sym = ' ' rank = 80 ########## check ####### otext = ''.join([ '('[:aop.rank < rank], aop.text, ')'[:aop.rank < rank], sym, '('[:bop.rank < rank], bop.text, ')'[:bop.rank < rank], ]) res = Operand(oREF) res.text = otext if bop.kind == oERR or aop.kind == oERR: res.kind = oERR elif bop.kind == oUNK or aop.kind == oUNK: # This can happen with undefined # (go search in the current sheet) labels. # For example =Bob Sales # Each label gets a NAME record with an empty formula (!) # Evaluation of the tName token classifies it as oUNK # res.kind = oREF pass elif bop.kind == oREF == aop.kind: pass elif bop.kind == oREL == aop.kind: res.kind = oREL else: pass spush(res) if blah: print("tIsect post", stack, file=bk.logfile) elif opcode == 0x10: # tList if blah: print("tList pre", stack, file=bk.logfile) assert len(stack) >= 2 bop = stack.pop() aop = stack.pop() sym = ',' rank = 80 ########## check ####### otext = ''.join([ '('[:aop.rank < rank], aop.text, ')'[:aop.rank < rank], sym, '('[:bop.rank < rank], bop.text, ')'[:bop.rank < rank], ]) res = Operand(oREF, None, rank, otext) if bop.kind == oERR or aop.kind == oERR: res.kind = oERR elif bop.kind in (oREF, oREL) and aop.kind in (oREF, oREL): res.kind = oREF if aop.kind == oREL or bop.kind == oREL: res.kind = oREL else: pass spush(res) if blah: print("tList post", stack, file=bk.logfile) elif opcode == 0x11: # tRange if blah: print("tRange pre", stack, file=bk.logfile) assert len(stack) >= 2 bop = stack.pop() aop = stack.pop() sym = ':' rank = 80 ########## check ####### otext = ''.join([ '('[:aop.rank < rank], aop.text, ')'[:aop.rank < rank], sym, '('[:bop.rank < rank], bop.text, ')'[:bop.rank < rank], ]) res = Operand(oREF, None, rank, otext) if bop.kind == oERR or aop.kind == oERR: res = oERR elif bop.kind == oREF == aop.kind: pass else: pass spush(res) if blah: print("tRange post", stack, file=bk.logfile) elif 0x12 <= opcode <= 0x14: # tUplus, tUminus, tPercent do_unaryop(opcode, oNUM, stack) elif opcode == 0x15: # tParen # source cosmetics pass elif opcode == 0x16: # tMissArg spush(Operand(oMSNG, None, LEAF_RANK, '')) elif opcode == 0x17: # tStr if bv <= 70: strg, newpos = unpack_string_update_pos( data, pos+1, bk.encoding, lenlen=1) else: strg, newpos = unpack_unicode_update_pos( data, pos+1, lenlen=1) sz = newpos - pos if blah: print(" sz=%d strg=%r" % (sz, strg), file=bk.logfile) text = '"' + strg.replace('"', '""') + '"' spush(Operand(oSTRG, None, LEAF_RANK, text)) elif opcode == 0x18: # tExtended # new with BIFF 8 assert bv >= 80 # not in OOo docs, don't even know how to determine its length > raise FormulaError("tExtended token not implemented") E xlrd2.formula.FormulaError: tExtended token not implemented xlrd2/formula.py:2104: FormulaError __________________________________ TestOpen.test_tilde_path_expansion __________________________________ self = def test_tilde_path_expansion(self): with tempfile.NamedTemporaryFile(suffix='.xlsx', dir=os.path.expanduser('~')) as fp: shutil.copyfile(from_this_dir('text_bar.xlsx'), fp.name) # For now, we just check this doesn't raise an error. > open_workbook(os.path.join('~', os.path.basename(fp.name))) tests/test_open_workbook.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError __________________________________________ TestOpen.test_xlsx __________________________________________ self = def test_xlsx(self): # For now, we just check this doesn't raise an error. > open_workbook(from_this_dir('reveng1.xlsx')) tests/test_open_workbook.py:44: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError _______________________________ TestOpen.test_xlsx_lower_case_cellnames ________________________________ self = def test_xlsx_lower_case_cellnames(self): # Check if it opens with lower cell names > open_workbook(from_this_dir('test_lower_case_cellnames.xlsx')) tests/test_open_workbook.py:55: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError ______________________________________ TestOpen.test_xlsx_simple _______________________________________ self = def test_xlsx_simple(self): # For now, we just check this doesn't raise an error. > open_workbook(from_this_dir('text_bar.xlsx')) tests/test_open_workbook.py:38: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError _________________________________ TestMergedCells.test_tidy_dimensions _________________________________ self = def test_tidy_dimensions(self): > book = xlrd2.open_workbook(from_this_dir('merged_cells.xlsx')) tests/test_sheet.py:166: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError _________________________________ TestXlsxComments.test_excel_comments _________________________________ self = def test_excel_comments(self): > book = open_workbook(from_this_dir('test_comments_excel.xlsx')) tests/test_xlsx_comments.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError ____________________________ TestXlsxComments.test_excel_comments_multiline ____________________________ self = def test_excel_comments_multiline(self): > book = open_workbook(from_this_dir('test_comments_excel.xlsx')) tests/test_xlsx_comments.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError __________________________ TestXlsxComments.test_excel_comments_no_t_elements __________________________ self = def test_excel_comments_no_t_elements(self): > book = open_workbook(from_this_dir('test_comments_excel.xlsx')) tests/test_xlsx_comments.py:33: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError _________________________ TestXlsxComments.test_excel_comments_two_t_elements __________________________ self = def test_excel_comments_two_t_elements(self): > book = open_workbook(from_this_dir('test_comments_excel.xlsx')) tests/test_xlsx_comments.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError ________________________ TestXlsxComments.test_excel_comments_with_multi_sheets ________________________ self = def test_excel_comments_with_multi_sheets(self): > book = open_workbook(from_this_dir('test_comments_excel_sheet2.xlsx')) tests/test_xlsx_comments.py:48: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError _________________________________ TestXlsxComments.test_gdocs_comments _________________________________ self = def test_gdocs_comments(self): > book = open_workbook(from_this_dir('test_comments_gdocs.xlsx')) tests/test_xlsx_comments.py:40: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError _______________________________ TestXlsxParse.test_for_github_issue_101 ________________________________ self = def test_for_github_issue_101(self): # Test for non-Excel file with forward slash file separator # https://github.com/python-excel/xlrd/issues/101 > workbook = xlrd2.open_workbook(from_this_dir('self_evaluation_report_2014-05-19.xlsx')) tests/test_xlsx_parse.py:51: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError _______________________________ TestXlsxParse.test_for_github_issue_150 ________________________________ self = def test_for_github_issue_150(self): # Test for non-Excel file with a non-lowercase worksheet filename. # https://github.com/python-excel/xlrd/issues/150 > workbook = xlrd2.open_workbook(from_this_dir('issue150.xlsx')) tests/test_xlsx_parse.py:62: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError ________________________________ TestXlsxParse.test_for_github_issue_75 ________________________________ self = def test_for_github_issue_75(self): # Test inlineStr attribute without child. # https://github.com/python-excel/xlrd/issues/75 > workbook = xlrd2.open_workbook(from_this_dir('apachepoi_52348.xlsx')) tests/test_xlsx_parse.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError ________________________________ TestXlsxParse.test_for_github_issue_96 ________________________________ self = def test_for_github_issue_96(self): # Test for non-Excel file with forward slash file separator and # lowercase names. https://github.com/python-excel/xlrd/issues/96 > workbook = xlrd2.open_workbook(from_this_dir('apachepoi_49609.xlsx')) tests/test_xlsx_parse.py:36: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ xlrd2/__init__.py:139: in open_workbook bk = xlsx.open_workbook_2007_xml( xlrd2/xlsx.py:813: in open_workbook_2007_xml x12book.process_stream(zflo, 'Workbook') _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = stream = heading = 'Workbook' def process_stream(self, stream, heading=None): if self.verbosity >= 2 and heading is not None: fprintf(self.logfile, "\n=== %s ===\n", heading) self.tree = ET.parse(stream) getmethod = self.tag2meth.get > for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): E AttributeError: 'ElementTree' object has no attribute 'getiterator' xlrd2/xlsx.py:266: AttributeError =========================================== warnings summary =========================================== tests/test_alt_sharedstrings_loc.py::TestSharedStringsAltLocation::test_open_workbook /home/mambroz/rpmbuild/BUILD/xlrd2-1.3.4/xlrd2/xlsx.py:39: DeprecationWarning: defusedxml.cElementTree is deprecated, import from defusedxml.ElementTree instead. try: import defusedxml.cElementTree as ET -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ======================================= short test summary info ======================================== FAILED tests/test_alt_sharedstrings_loc.py::TestSharedStringsAltLocation::test_open_workbook - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_cell.py::TestCell::test_merged_cells_xlsx - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_open_workbook.py::TestOpen::test_err_cell_empty - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_open_workbook.py::TestOpen::test_names_demo - xlrd2.formula.FormulaError: tExtended token not implemented FAILED tests/test_open_workbook.py::TestOpen::test_tilde_path_expansion - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_open_workbook.py::TestOpen::test_xlsx - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_open_workbook.py::TestOpen::test_xlsx_lower_case_cellnames - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_open_workbook.py::TestOpen::test_xlsx_simple - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_sheet.py::TestMergedCells::test_tidy_dimensions - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_xlsx_comments.py::TestXlsxComments::test_excel_comments - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_xlsx_comments.py::TestXlsxComments::test_excel_comments_multiline - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_xlsx_comments.py::TestXlsxComments::test_excel_comments_no_t_elements - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_xlsx_comments.py::TestXlsxComments::test_excel_comments_two_t_elements - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_xlsx_comments.py::TestXlsxComments::test_excel_comments_with_multi_sheets - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_xlsx_comments.py::TestXlsxComments::test_gdocs_comments - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_xlsx_parse.py::TestXlsxParse::test_for_github_issue_101 - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_xlsx_parse.py::TestXlsxParse::test_for_github_issue_150 - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_xlsx_parse.py::TestXlsxParse::test_for_github_issue_75 - AttributeError: 'ElementTree' object has no attribute 'getiterator' FAILED tests/test_xlsx_parse.py::TestXlsxParse::test_for_github_issue_96 - AttributeError: 'ElementTree' object has no attribute 'getiterator' =============================== 19 failed, 73 passed, 1 warning in 2.17s ===============================