Skip to content

Commit c548c10

Browse files
committed
improving error handling in CLI; improving inferred ids of tables in multi.CSV, multi.TSV files
1 parent 35035bb commit c548c10

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

obj_tables/__main__.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import obj_tables
1515
import os
1616
import os.path
17+
import sys
1718
import types # noqa: F401
1819

1920
DEFAULT_WRITER_ARGS = {
@@ -313,7 +314,13 @@ def main():
313314
if os.getenv('DEBUG', '0').lower() in ['1', 'true']:
314315
raise exception
315316
else:
316-
raise SystemExit(str(exception))
317+
if isinstance(exception, ValueError):
318+
raise SystemExit(str(exception))
319+
else:
320+
_, _, traceback = sys.exc_info()
321+
raise SystemExit('ObjTables encountered an unexpected error: {}: {} at {}:{}'.format(
322+
exception.__class__.__name__, str(exception),
323+
traceback.tb_frame.f_code.co_filename, traceback.tb_frame.f_code.co_firstlineno))
317324

318325

319326
def get_schema_models(filename):

obj_tables/io.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2236,6 +2236,7 @@ def run(self, path, schema_name=None, models=None,
22362236

22372237
i_sheet = 0
22382238
i_sheet_start = 0
2239+
i_sheet_class = {}
22392240
last_sheet_metadata = None
22402241

22412242
data = reader.read_worksheet('')
@@ -2247,6 +2248,7 @@ def run(self, path, schema_name=None, models=None,
22472248
data[0][0])
22482249
data.remove(data[0])
22492250

2251+
sheet_class = None
22502252
sheet_id = None
22512253
for i_row, row in enumerate(data):
22522254
if row and isinstance(row[0], str):
@@ -2255,11 +2257,15 @@ def run(self, path, schema_name=None, models=None,
22552257
if i_sheet > 0:
22562258
self._write_model(data[i_sheet_start:i_row],
22572259
last_sheet_metadata, tmp_dirname, sheet_id, ext)
2260+
last_sheet_metadata = WorkbookReader.parse_worksheet_heading_metadata(
2261+
row[0], sheet_name=str(i_sheet + 1))
2262+
sheet_class = last_sheet_metadata.get('type', '') + '-' + last_sheet_metadata.get('class', '')
2263+
if sheet_class not in i_sheet_class:
2264+
i_sheet_class[sheet_class] = 0
2265+
sheet_id = str(i_sheet_class[sheet_class] + 1)
2266+
i_sheet_class[sheet_class] += 1
22582267
i_sheet += 1
22592268
i_sheet_start = i_row
2260-
sheet_id = str(i_sheet + 1)
2261-
last_sheet_metadata = WorkbookReader.parse_worksheet_heading_metadata(
2262-
row[0], sheet_name=sheet_id)
22632269
if last_sheet_metadata.get('id', None):
22642270
sheet_id = last_sheet_metadata['id']
22652271

obj_tables/math/expression.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ def merge_attrs(self, other, other_objs_in_self, self_objs_in_other):
579579
self._parsed_expression.related_objects[cls][obj_id] = other_objs_in_self.get(other_obj, other_obj)
580580

581581

582-
class ParsedExpressionError(Exception):
582+
class ParsedExpressionError(ValueError):
583583
""" Exception raised for errors in :obj:`ParsedExpression`
584584
585585
Attributes:

0 commit comments

Comments
 (0)