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 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(self.header) < len(row): # Row values beyond what there are headers for are ignored.
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(self.header, row)}
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 = []
@@ -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
- row_reader_mapper: Optional[Callable] = None,
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._row_reader_mapper = row_reader_mapper if callable(row_reader_mapper) else None
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 = Excel(file)
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 = Excel(file) # Order the sheet names by any specified ordering (e.g. ala snovault.loadxl).
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))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dcicutils
3
- Version: 8.16.6.1b1
3
+ Version: 8.16.6.1b3
4
4
  Summary: Utility package for interacting with the 4DN Data Portal and other 4DN resources
5
5
  Home-page: https://github.com/4dn-dcic/utils
6
6
  License: MIT
@@ -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=6EMrY7TjDE8H7bA_TCWtpLQP7slJ0YTL77_dNh6e7sg,7626
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=AnX8opkCw-lfAnd4KPH-OIneh2ZB2oUYQCo7GWmASh4,66789
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.1b1.dist-info/LICENSE.txt,sha256=IrWHOFtMb2inTgr2ZqwQriRC8H3uMQfQVO6lniaaoE0,1102
79
- dcicutils-8.16.6.1b1.dist-info/METADATA,sha256=sGAPNyW77aQY-rWnX0ycgt9Ya-qDir36Dm-UNjiku1w,3493
80
- dcicutils-8.16.6.1b1.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
81
- dcicutils-8.16.6.1b1.dist-info/entry_points.txt,sha256=W6kEWdUJk9tQ4myAgpehPdebcwvCAZ7UgB-wyPgDUMg,335
82
- dcicutils-8.16.6.1b1.dist-info/RECORD,,
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,,