Skip to content

Commit ff81a3f

Browse files
committed
Merge pull request #80 from vadmium/py2.6
Remove workarounds for pre-2.6 Python
2 parents ac3ce17 + 5263ae0 commit ff81a3f

File tree

5 files changed

+22
-63
lines changed

5 files changed

+22
-63
lines changed

scripts/runxlrd.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,8 @@ def get_row_data(bk, sh, rowx, colrange):
8989
if cty == xlrd.XL_CELL_DATE:
9090
try:
9191
showval = xlrd.xldate_as_tuple(cval, dmode)
92-
except xlrd.XLDateError:
93-
e1, e2 = sys.exc_info()[:2]
94-
showval = "%s:%s" % (e1.__name__, e2)
92+
except xlrd.XLDateError as e:
93+
showval = "%s:%s" % (type(e).__name__, e)
9594
cty = xlrd.XL_CELL_ERROR
9695
elif cty == xlrd.XL_CELL_ERROR:
9796
showval = xlrd.error_text_from_code.get(cval, '<Unknown error code 0x%02x>' % cval)
@@ -335,17 +334,15 @@ def main(cmd_args):
335334
t1 = time.time()
336335
if not options.suppress_timing:
337336
print("Open took %.2f seconds" % (t1-t0,))
338-
except xlrd.XLRDError:
339-
e0, e1 = sys.exc_info()[:2]
340-
print("*** Open failed: %s: %s" % (e0.__name__, e1))
337+
except xlrd.XLRDError as e:
338+
print("*** Open failed: %s: %s" % (type(e).__name__, e))
341339
continue
342340
except KeyboardInterrupt:
343341
print("*** KeyboardInterrupt ***")
344342
traceback.print_exc(file=sys.stdout)
345343
sys.exit(1)
346-
except:
347-
e0, e1 = sys.exc_info()[:2]
348-
print("*** Open failed: %s: %s" % (e0.__name__, e1))
344+
except BaseException as e:
345+
print("*** Open failed: %s: %s" % (type(e).__name__, e))
349346
traceback.print_exc(file=sys.stdout)
350347
continue
351348
t0 = time.time()

xlrd/book.py

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -452,22 +452,20 @@ def sheet_names(self):
452452
# @return true if sheet is loaded, false otherwise
453453
# <br /> -- New in version 0.7.1
454454
def sheet_loaded(self, sheet_name_or_index):
455-
# using type(1) because int won't work with Python 2.1
456-
if isinstance(sheet_name_or_index, type(1)):
455+
if isinstance(sheet_name_or_index, int):
457456
sheetx = sheet_name_or_index
458457
else:
459458
try:
460459
sheetx = self._sheet_names.index(sheet_name_or_index)
461460
except ValueError:
462461
raise XLRDError('No sheet named <%r>' % sheet_name_or_index)
463-
return self._sheet_list[sheetx] and True or False # Python 2.1 again
462+
return bool(self._sheet_list[sheetx])
464463

465464
##
466465
# @param sheet_name_or_index Name or index of sheet to be unloaded.
467466
# <br /> -- New in version 0.7.1
468467
def unload_sheet(self, sheet_name_or_index):
469-
# using type(1) because int won't work with Python 2.1
470-
if isinstance(sheet_name_or_index, type(1)):
468+
if isinstance(sheet_name_or_index, int):
471469
sheetx = sheet_name_or_index
472470
else:
473471
try:
@@ -566,43 +564,18 @@ def biff2_8_load(self, filename=None, file_contents=None,
566564
self.ragged_rows = ragged_rows
567565

568566
if not file_contents:
569-
if python_version < (2, 2) and self.use_mmap:
570-
# need to open for update
571-
open_mode = "r+b"
572-
else:
573-
open_mode = "rb"
574-
retry = False
575-
f = None
576-
try:
577-
try:
578-
f = open(filename, open_mode)
579-
except IOError:
580-
e, v = sys.exc_info()[:2]
581-
if open_mode == "r+b" \
582-
and (v.errno == 13 or v.strerror == "Permission denied"):
583-
# Maybe the file is read-only
584-
retry = True
585-
self.use_mmap = False
586-
else:
587-
raise
588-
if retry:
589-
f = open(filename, "rb")
567+
with open(filename, "rb") as f:
590568
f.seek(0, 2) # EOF
591569
size = f.tell()
592570
f.seek(0, 0) # BOF
593571
if size == 0:
594572
raise XLRDError("File size is 0 bytes")
595573
if self.use_mmap:
596-
if python_version < (2, 2):
597-
self.filestr = mmap.mmap(f.fileno(), size)
598-
else:
599-
self.filestr = mmap.mmap(f.fileno(), size, access=mmap.ACCESS_READ)
574+
self.filestr = mmap.mmap(f.fileno(), size, access=mmap.ACCESS_READ)
600575
self.stream_len = size
601576
else:
602577
self.filestr = f.read()
603578
self.stream_len = len(self.filestr)
604-
finally:
605-
if f: f.close()
606579
else:
607580
self.filestr = file_contents
608581
self.stream_len = len(file_contents)
@@ -800,11 +773,10 @@ def derive_encoding(self):
800773
# we're well & truly stuffed -- let the punter know ASAP.
801774
try:
802775
_unused = unicode(b'trial', self.encoding)
803-
except:
804-
ei = sys.exc_info()[:2]
776+
except BaseException as e:
805777
fprintf(self.logfile,
806778
"ERROR *** codepage %r -> encoding %r -> %s: %s\n",
807-
self.codepage, self.encoding, ei[0].__name__.split(".")[-1], ei[1])
779+
self.codepage, self.encoding, type(e).__name__.split(".")[-1], e)
808780
raise
809781
if self.raw_user_name:
810782
strg = unpack_string(self.user_name, 0, self.encoding, lenlen=1)

xlrd/compdoc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# 2007-05-07 SJM Meaningful exception instead of IndexError if a SAT (sector allocation table) is corrupted.
1616
# 2007-04-22 SJM Missing "<" in a struct.unpack call => can't open files on bigendian platforms.
1717

18-
from __future__ import nested_scopes, print_function
18+
from __future__ import print_function
1919
import sys
2020
from struct import unpack
2121
from .timemachine import *

xlrd/examples/xlrdnameAPIdemo.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,8 @@ def showable_cell_value(celltype, cellvalue, datemode):
7777
if celltype == xlrd.XL_CELL_DATE:
7878
try:
7979
showval = xlrd.xldate_as_tuple(cellvalue, datemode)
80-
except xlrd.XLDateError:
81-
e1, e2 = sys.exc_info()[:2]
82-
showval = "%s:%s" % (e1.__name__, e2)
80+
except xlrd.XLDateError as e:
81+
showval = "%s:%s" % (type(e).__name__, e)
8382
elif celltype == xlrd.XL_CELL_ERROR:
8483
showval = xlrd.error_text_from_code.get(
8584
cellvalue, '<Unknown error code 0x%02x>' % cellvalue)

xlrd/xlsx.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -692,15 +692,6 @@ def bad_child_tag(child_tag):
692692
}
693693
augment_keys(tag2meth, U_SSML12)
694694

695-
def getzflo(zipfile, member_path):
696-
# GET a Zipfile File-Like Object for passing to
697-
# an XML parser
698-
try:
699-
return zipfile.open(member_path) # CPython 2.6 onwards
700-
except AttributeError:
701-
# old way
702-
return BYTES_IO(zipfile.read(member_path))
703-
704695
def open_workbook_2007_xml(
705696
zf,
706697
component_names,
@@ -727,20 +718,20 @@ def open_workbook_2007_xml(
727718
bk.ragged_rows = ragged_rows
728719

729720
x12book = X12Book(bk, logfile, verbosity)
730-
zflo = getzflo(zf, 'xl/_rels/workbook.xml.rels')
721+
zflo = zf.open('xl/_rels/workbook.xml.rels')
731722
x12book.process_rels(zflo)
732723
del zflo
733-
zflo = getzflo(zf, 'xl/workbook.xml')
724+
zflo = zf.open('xl/workbook.xml')
734725
x12book.process_stream(zflo, 'Workbook')
735726
del zflo
736727
props_name = 'docProps/core.xml'
737728
if props_name in component_names:
738-
zflo = getzflo(zf, props_name)
729+
zflo = zf.open(props_name)
739730
x12book.process_coreprops(zflo)
740731

741732
x12sty = X12Styles(bk, logfile, verbosity)
742733
if 'xl/styles.xml' in component_names:
743-
zflo = getzflo(zf, 'xl/styles.xml')
734+
zflo = zf.open('xl/styles.xml')
744735
x12sty.process_stream(zflo, 'styles')
745736
del zflo
746737
else:
@@ -750,13 +741,13 @@ def open_workbook_2007_xml(
750741
sst_fname = 'xl/sharedStrings.xml'
751742
x12sst = X12SST(bk, logfile, verbosity)
752743
if sst_fname in component_names:
753-
zflo = getzflo(zf, sst_fname)
744+
zflo = zf.open(sst_fname)
754745
x12sst.process_stream(zflo, 'SST')
755746
del zflo
756747

757748
for sheetx in range(bk.nsheets):
758749
fname = x12book.sheet_targets[sheetx]
759-
zflo = getzflo(zf, fname)
750+
zflo = zf.open(fname)
760751
sheet = bk._sheet_list[sheetx]
761752
x12sheet = X12Sheet(sheet, logfile, verbosity)
762753
heading = "Sheet %r (sheetx=%d) from %r" % (sheet.name, sheetx, fname)

0 commit comments

Comments
 (0)