Skip to content

Commit 639e503

Browse files
committed
Support different encodings for data tables
1 parent 29bbaa5 commit 639e503

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

webware/MiscUtils/DataTable.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -354,23 +354,24 @@ class DataTable:
354354

355355
def __init__(
356356
self, filenameOrHeadings=None, delimiter=',',
357-
allowComments=True, stripWhite=True,
357+
allowComments=True, stripWhite=True, encoding=None,
358358
defaultType=None, usePickleCache=None):
359359
if usePickleCache is None:
360360
self._usePickleCache = self._usePickleCache
361361
else:
362362
self._usePickleCache = usePickleCache
363363
if defaultType and defaultType not in _types:
364364
raise DataTableError(
365-
'Unknown type for default type: %r' % defaultType)
365+
f'Unknown type for default type: {defaultType!r}')
366366
self._defaultType = defaultType
367367
self._filename = None
368368
self._headings = []
369369
self._rows = []
370370
if filenameOrHeadings:
371371
if isinstance(filenameOrHeadings, str):
372372
self.readFileNamed(
373-
filenameOrHeadings, delimiter, allowComments, stripWhite)
373+
filenameOrHeadings, delimiter,
374+
allowComments, stripWhite, encoding)
374375
else:
375376
self.setHeadings(filenameOrHeadings)
376377

@@ -380,7 +381,8 @@ def __init__(
380381

381382
def readFileNamed(
382383
self, filename, delimiter=',',
383-
allowComments=True, stripWhite=True, worksheet=1, row=1, column=1):
384+
allowComments=True, stripWhite=True, encoding=None,
385+
worksheet=1, row=1, column=1):
384386
self._filename = filename
385387
data = None
386388
if self._usePickleCache:
@@ -390,7 +392,7 @@ def readFileNamed(
390392
if self._filename.lower().endswith('.xls'):
391393
self.readExcel(worksheet, row, column)
392394
else:
393-
with open(self._filename) as f:
395+
with open(self._filename, encoding=encoding) as f:
394396
self.readFile(f, delimiter, allowComments, stripWhite)
395397
if self._usePickleCache:
396398
writePickleCache(self, filename, source='MiscUtils.DataTable')
@@ -776,7 +778,7 @@ def __contains__(self, key):
776778
return key in self._nameToIndexMap
777779

778780
def __repr__(self):
779-
return '%s' % self._values
781+
return repr(self._values)
780782

781783
def __iter__(self):
782784
for value in self._values:

0 commit comments

Comments
 (0)