dcicutils 8.16.6.1b1__py3-none-any.whl → 8.16.6.1b3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dcicutils/data_readers.py +9 -2
- dcicutils/structured_data.py +5 -7
- {dcicutils-8.16.6.1b1.dist-info → dcicutils-8.16.6.1b3.dist-info}/METADATA +1 -1
- {dcicutils-8.16.6.1b1.dist-info → dcicutils-8.16.6.1b3.dist-info}/RECORD +7 -7
- {dcicutils-8.16.6.1b1.dist-info → dcicutils-8.16.6.1b3.dist-info}/LICENSE.txt +0 -0
- {dcicutils-8.16.6.1b1.dist-info → dcicutils-8.16.6.1b3.dist-info}/WHEEL +0 -0
- {dcicutils-8.16.6.1b1.dist-info → dcicutils-8.16.6.1b3.dist-info}/entry_points.txt +0 -0
dcicutils/data_readers.py
CHANGED
@@ -31,15 +31,22 @@ class RowReader(abc.ABC):
|
|
31
31
|
self.open()
|
32
32
|
|
33
33
|
def __iter__(self) -> Iterator:
|
34
|
+
header = self._iter_header()
|
34
35
|
for row in self.rows:
|
35
36
|
self.row_number += 1
|
36
37
|
if self.is_comment_row(row):
|
37
38
|
continue
|
38
39
|
if self.is_terminating_row(row):
|
39
40
|
break
|
40
|
-
if len(
|
41
|
+
if len(header) < len(row): # Row values beyond what there are headers for are ignored.
|
41
42
|
self._warning_extra_values.append(self.row_number)
|
42
|
-
yield {column: self.cell_value(value) for column, value in zip(
|
43
|
+
yield self._iter_mapper({column: self.cell_value(value) for column, value in zip(header, row)})
|
44
|
+
|
45
|
+
def _iter_header(self) -> List[str]:
|
46
|
+
return self.header
|
47
|
+
|
48
|
+
def _iter_mapper(self, row: dict) -> List[str]:
|
49
|
+
return row
|
43
50
|
|
44
51
|
def _define_header(self, header: List[Optional[Any]]) -> None:
|
45
52
|
self.header = []
|
dcicutils/structured_data.py
CHANGED
@@ -59,7 +59,7 @@ class StructuredDataSet:
|
|
59
59
|
progress: Optional[Callable] = None,
|
60
60
|
validator_hook: Optional[Callable] = None,
|
61
61
|
validator_sheet_hook: Optional[Callable] = None,
|
62
|
-
|
62
|
+
excel_class: Optional[Excel] = None,
|
63
63
|
debug_sleep: Optional[str] = None) -> None:
|
64
64
|
self._progress = progress if callable(progress) else None
|
65
65
|
self._data = {}
|
@@ -80,7 +80,7 @@ class StructuredDataSet:
|
|
80
80
|
self._merge = True if merge is True else False # New merge functionality (2024-05-25)
|
81
81
|
self._validator_hook = validator_hook if callable(validator_hook) else None
|
82
82
|
self._validator_sheet_hook = validator_sheet_hook if callable(validator_sheet_hook) else None
|
83
|
-
self.
|
83
|
+
self._excel_class = excel_class if excel_class is not None and issubclass(excel_class, Excel) else Excel
|
84
84
|
self._debug_sleep = None
|
85
85
|
if debug_sleep:
|
86
86
|
try:
|
@@ -306,7 +306,7 @@ class StructuredDataSet:
|
|
306
306
|
def _load_excel_file(self, file: str) -> None:
|
307
307
|
def get_counts() -> Tuple[int, int]:
|
308
308
|
nonlocal file
|
309
|
-
excel =
|
309
|
+
excel = self._excel_class(file)
|
310
310
|
nrows = 0
|
311
311
|
for sheet_name in excel.sheet_names:
|
312
312
|
for row in excel.sheet_reader(sheet_name):
|
@@ -316,7 +316,8 @@ class StructuredDataSet:
|
|
316
316
|
nrows, nsheets = get_counts()
|
317
317
|
self._progress({PROGRESS.LOAD_START: PROGRESS.NOW(),
|
318
318
|
PROGRESS.LOAD_COUNT_SHEETS: nsheets, PROGRESS.LOAD_COUNT_ROWS: nrows})
|
319
|
-
excel =
|
319
|
+
excel = self._excel_class(file)
|
320
|
+
# Order the sheet names by any specified ordering (e.g. ala snovault.loadxl).
|
320
321
|
order = {Schema.type_name(key): index for index, key in enumerate(self._order)} if self._order else {}
|
321
322
|
for sheet_name in sorted(excel.sheet_names, key=lambda key: order.get(Schema.type_name(key), sys.maxsize)):
|
322
323
|
self._load_reader(excel.sheet_reader(sheet_name), type_name=Schema.type_name(sheet_name))
|
@@ -376,10 +377,7 @@ class StructuredDataSet:
|
|
376
377
|
schema = None
|
377
378
|
noschema = False
|
378
379
|
structured_row_template = None
|
379
|
-
sheet_name = reader.sheet_name if self._row_reader_mapper and hasattr(reader, "sheet_name") else None
|
380
380
|
for row in reader:
|
381
|
-
if self._row_reader_mapper and (not isinstance(row := self._row_reader_mapper(row, sheet_name), dict)):
|
382
|
-
continue
|
383
381
|
self._nrows += 1
|
384
382
|
if self._debug_sleep:
|
385
383
|
time.sleep(float(self._debug_sleep))
|
@@ -10,7 +10,7 @@ dcicutils/common.py,sha256=U6tedhp6FFl9EUGoMqiMAqON_WqGJ_317JE_Tr4dXDs,3926
|
|
10
10
|
dcicutils/contribution_scripts.py,sha256=0k5Gw1TumcD5SAcXVkDd6-yvuMEw-jUp5Kfb7FJH6XQ,2015
|
11
11
|
dcicutils/contribution_utils.py,sha256=vYLS1JUB3sKd24BUxZ29qUBqYeQBLK9cwo8x3k64uPg,25653
|
12
12
|
dcicutils/creds_utils.py,sha256=64BbIfS90T1eJmmQJrDyfrRa3V2F1x7T8lOrEeFfqJY,11127
|
13
|
-
dcicutils/data_readers.py,sha256=
|
13
|
+
dcicutils/data_readers.py,sha256=CgxWPB2hJzFfKqVUWL_0fERe4CZRMvt-5Afo9lqEt74,7813
|
14
14
|
dcicutils/data_utils.py,sha256=k2OxOlsx7AJ6jF-YNlMyGus_JqSUBe4_n1s65Mv1gQQ,3098
|
15
15
|
dcicutils/datetime_utils.py,sha256=xaJ9rzSsk4uBPidwV2sByrl2xcQiFWXTnx6HLpt8EcY,13650
|
16
16
|
dcicutils/deployment_utils.py,sha256=6Sv1cM9T944d_9CTJt8O2RPtpw9MiTIPKw_DgYLOnCU,69916
|
@@ -66,7 +66,7 @@ dcicutils/secrets_utils.py,sha256=8dppXAsiHhJzI6NmOcvJV5ldvKkQZzh3Fl-cb8Wm7MI,19
|
|
66
66
|
dcicutils/sheet_utils.py,sha256=VlmzteONW5VF_Q4vo0yA5vesz1ViUah1MZ_yA1rwZ0M,33629
|
67
67
|
dcicutils/snapshot_utils.py,sha256=YDeI3vD-MhAtHwKDzfEm2q-n3l-da2yRpRR3xp0Ah1M,23021
|
68
68
|
dcicutils/ssl_certificate_utils.py,sha256=F0ifz_wnRRN9dfrfsz7aCp4UDLgHEY8LaK7PjnNvrAQ,9707
|
69
|
-
dcicutils/structured_data.py,sha256=
|
69
|
+
dcicutils/structured_data.py,sha256=fnqrB5d59EoD6AcilUUmR2THGdjYeNK17eLoAhBCT4w,66580
|
70
70
|
dcicutils/submitr/progress_constants.py,sha256=5bxyX77ql8qEJearfHEvsvXl7D0GuUODW0T65mbRmnE,2895
|
71
71
|
dcicutils/submitr/ref_lookup_strategy.py,sha256=VJN-Oo0LLna6Vo2cu47eC-eU-yUC9NFlQP29xajejVU,4741
|
72
72
|
dcicutils/task_utils.py,sha256=MF8ujmTD6-O2AC2gRGPHyGdUrVKgtr8epT5XU8WtNjk,8082
|
@@ -75,8 +75,8 @@ dcicutils/trace_utils.py,sha256=g8kwV4ebEy5kXW6oOrEAUsurBcCROvwtZqz9fczsGRE,1769
|
|
75
75
|
dcicutils/validation_utils.py,sha256=cMZIU2cY98FYtzK52z5WUYck7urH6JcqOuz9jkXpqzg,14797
|
76
76
|
dcicutils/variant_utils.py,sha256=2H9azNx3xAj-MySg-uZ2SFqbWs4kZvf61JnK6b-h4Qw,4343
|
77
77
|
dcicutils/zip_utils.py,sha256=_Y9EmL3D2dUZhxucxHvrtmmlbZmK4FpSsHEb7rGSJLU,3265
|
78
|
-
dcicutils-8.16.6.
|
79
|
-
dcicutils-8.16.6.
|
80
|
-
dcicutils-8.16.6.
|
81
|
-
dcicutils-8.16.6.
|
82
|
-
dcicutils-8.16.6.
|
78
|
+
dcicutils-8.16.6.1b3.dist-info/LICENSE.txt,sha256=IrWHOFtMb2inTgr2ZqwQriRC8H3uMQfQVO6lniaaoE0,1102
|
79
|
+
dcicutils-8.16.6.1b3.dist-info/METADATA,sha256=NMooRRWHCGqrfzf8D0lOhEuFyf7jQSM_TmgC4o3CfTk,3493
|
80
|
+
dcicutils-8.16.6.1b3.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
81
|
+
dcicutils-8.16.6.1b3.dist-info/entry_points.txt,sha256=W6kEWdUJk9tQ4myAgpehPdebcwvCAZ7UgB-wyPgDUMg,335
|
82
|
+
dcicutils-8.16.6.1b3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|