dcicutils 8.14.0.1b11__py3-none-any.whl → 8.14.0.1b13__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.
@@ -123,7 +123,8 @@ def main():
123
123
  parser.add_argument("--post", type=str, required=False, default=None, help="POST data.")
124
124
  parser.add_argument("--patch", type=str, required=False, default=None, help="PATCH data.")
125
125
  parser.add_argument("--upsert", type=str, required=False, default=None, help="Upsert data.")
126
- parser.add_argument("--load", type=str, required=False, default=None, help="Load data via snovault.loadxl.")
126
+ parser.add_argument("--load", "--loadxl", type=str, required=False, default=None,
127
+ help="Load data via snovault.loadxl.")
127
128
  parser.add_argument("--ini", type=str, required=False, default=None, help="INI file for data via snovault.loadxl.")
128
129
  parser.add_argument("--delete", type=str, required=False, default=None, help="Delete data.")
129
130
  parser.add_argument("--purge", type=str, required=False, default=None, help="Purge data.")
@@ -159,11 +160,12 @@ def main():
159
160
  "when using the --load option (to load data via snovault.loadxl).")
160
161
  exit(1)
161
162
  if args.env:
162
- _print("The --env is not used for the --load option (to load data via snovault.loadxl).")
163
- if args.schema:
164
- _print("The --schema is not used for the --load option (to load data via snovault.loadxl).")
165
- _load_data(load=args.load, ini_file=args.ini,
166
- verbose=args.verbose, debug=args.debug, noprogress=args.noprogress)
163
+ if args.ini:
164
+ _print("The --env is not used for the --load option (to load data via snovault.loadxl).")
165
+ args.ini = args.env
166
+ if not _load_data(load=args.load, ini_file=args.ini, explicit_schema_name=args.schema,
167
+ verbose=args.verbose, debug=args.debug, noprogress=args.noprogress):
168
+ exit(1)
167
169
  exit(0)
168
170
 
169
171
  portal = _create_portal(env=args.env, app=app, verbose=args.verbose, debug=args.debug)
@@ -171,7 +173,7 @@ def main():
171
173
  if explicit_schema_name := args.schema:
172
174
  schema, explicit_schema_name = _get_schema(portal, explicit_schema_name)
173
175
  if not schema:
174
- usage(f"ERROR: Unknown schema name: {args.schema}")
176
+ usage(f"Unknown specified schema name: {args.schema}")
175
177
 
176
178
  if args.post:
177
179
  _post_or_patch_or_upsert(portal=portal,
@@ -401,7 +403,8 @@ def _upsert_data(portal: Portal, data: dict, schema_name: str,
401
403
 
402
404
 
403
405
  def _load_data(load: str, ini_file: str, explicit_schema_name: Optional[str] = None,
404
- verbose: bool = False, debug: bool = False, noprogress: bool = False) -> bool:
406
+ verbose: bool = False, debug: bool = False, noprogress: bool = False,
407
+ _portal: Optional[Portal] = None, _single_insert_file: Optional[str] = None) -> bool:
405
408
 
406
409
  from snovault.loadxl import load_all_gen, LoadGenWrapper
407
410
  from dcicutils.captured_output import captured_output
@@ -411,7 +414,7 @@ def _load_data(load: str, ini_file: str, explicit_schema_name: Optional[str] = N
411
414
 
412
415
  nonlocal LoadGenWrapper, load_all_gen, verbose, debug
413
416
  progress_total = sum(schema_names_to_load.values()) * 2 # loadxl does two passes
414
- progress_bar = ProgressBar(progress_total) if not noprogress else None
417
+ progress_bar = ProgressBar(progress_total, interrupt_exit=True) if not noprogress else None
415
418
 
416
419
  def decode_bytes(str_or_bytes: Union[str, bytes], *, encoding: str = "utf-8") -> str:
417
420
  if not isinstance(encoding, str):
@@ -477,9 +480,9 @@ def _load_data(load: str, ini_file: str, explicit_schema_name: Optional[str] = N
477
480
  inserts_directory = None
478
481
  inserts_file = load
479
482
 
480
- portal = None
481
- with captured_output(not debug):
482
- portal = Portal(ini_file)
483
+ if not (portal := _portal):
484
+ with captured_output(not debug):
485
+ portal = Portal(ini_file)
483
486
 
484
487
  if inserts_file:
485
488
  with io.open(inserts_file, "r") as f:
@@ -493,14 +496,25 @@ def _load_data(load: str, ini_file: str, explicit_schema_name: Optional[str] = N
493
496
  if not (schema_name := _get_schema_name_from_schema_named_json_file_name(portal, inserts_file)):
494
497
  _print("Unable to determine schema name for JSON data file: {inserts_file}")
495
498
  return False
499
+ elif not (schema_name := _get_schema(portal, explicit_schema_name)[1]):
500
+ _print(f"Unknown specified schema name: {explicit_schema_name}")
501
+ return False
496
502
  with temporary_directory() as tmpdir:
497
503
  file_name = os.path.join(tmpdir, f"{to_snake_case(schema_name)}.json")
498
504
  with io.open(file_name, "w") as f:
499
505
  json.dump(data, f)
500
- return _load_data(load=tmpdir, ini_file=ini_file, explicit_schema_name=explicit_schema_name,
501
- verbose=verbose, debug=debug, noprogress=noprogress)
506
+ return _load_data(load=tmpdir, ini_file=ini_file, explicit_schema_name=schema_name,
507
+ verbose=verbose, debug=debug, noprogress=noprogress,
508
+ _portal=portal, _single_insert_file=inserts_file)
502
509
  elif isinstance(data, dict):
503
- _print("DICT IN FILE FOR LOAD NOT YET SUPPPORTED")
510
+ if schema_name := explicit_schema_name:
511
+ if _is_schema_name_list(portal, schema_names := list(data.keys())):
512
+ _print(f"Ignoring specify --schema: {schema_name}")
513
+ elif not (schema_name := _get_schema(portal, schema_name)[1]):
514
+ _print(f"Unknown specified schema name: {explicit_schema_name}")
515
+ return False
516
+ else:
517
+ data = {schema_name: [data]}
504
518
  if not _is_schema_name_list(portal, schema_names := list(data.keys())):
505
519
  _print(f"Unrecognized types in JSON data file: {inserts_file}")
506
520
  return False
@@ -517,7 +531,8 @@ def _load_data(load: str, ini_file: str, explicit_schema_name: Optional[str] = N
517
531
  nfiles += 1
518
532
  if nfiles > 0:
519
533
  return _load_data(load=tmpdir, ini_file=ini_file,
520
- verbose=verbose, debug=debug, noprogress=noprogress)
534
+ verbose=verbose, debug=debug, noprogress=noprogress,
535
+ _portal=portal, _single_insert_file=inserts_file)
521
536
  # TODO
522
537
  return True
523
538
  else:
@@ -525,7 +540,10 @@ def _load_data(load: str, ini_file: str, explicit_schema_name: Optional[str] = N
525
540
  return False
526
541
  return True
527
542
  if verbose:
528
- _print(f"Loading data files into Portal (via snovault.loadxl) from: {inserts_directory}")
543
+ if _single_insert_file:
544
+ _print(f"Loading data into Portal (via snovault.loadxl) from file: {_single_insert_file}")
545
+ else:
546
+ _print(f"Loading data into Portal (via snovault.loadxl) from directory: {inserts_directory}")
529
547
  _print(f"Portal INI file for load is: {ini_file}")
530
548
 
531
549
  schema_names = list(_get_schemas(portal).keys())
@@ -569,7 +587,10 @@ def _load_data(load: str, ini_file: str, explicit_schema_name: Optional[str] = N
569
587
  else:
570
588
  loadxl(portal=portal, inserts_directory=inserts_directory, schema_names_to_load=schema_names_to_load)
571
589
  if verbose:
572
- _print(f"Done loading data into Portal (via snovault.loadxl) files from: {inserts_directory}")
590
+ if _single_insert_file:
591
+ _print(f"Done loading data into Portal (via snovault.loadxl) from file: {_single_insert_file}")
592
+ else:
593
+ _print(f"Done loading data into Portal (via snovault.loadxl) from directory: {inserts_directory}")
573
594
  return True
574
595
 
575
596
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dcicutils
3
- Version: 8.14.0.1b11
3
+ Version: 8.14.0.1b13
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
@@ -60,7 +60,7 @@ dcicutils/s3_utils.py,sha256=h2B9ftOo-kxqfiKth5ZDC_cAUFy1Pbu7BrVanFnE5Iw,28839
60
60
  dcicutils/schema_utils.py,sha256=GmRm-XqZKJ6qine16SQF1txcby9WougDav_sYmKNs9E,12400
61
61
  dcicutils/scripts/publish_to_pypi.py,sha256=sMd4WASQGlxlh7uLrt2eGkFRXYgONVmvIg8mClMS5RQ,13903
62
62
  dcicutils/scripts/run_license_checker.py,sha256=z2keYnRDZsHQbTeo1XORAXSXNJK5axVzL5LjiNqZ7jE,4184
63
- dcicutils/scripts/update_portal_object.py,sha256=fLgsPgnugKLS18A8JwP8O_UdmeFqNIjUIhrEFlIhfgE,32589
63
+ dcicutils/scripts/update_portal_object.py,sha256=Y3bdu8qJMSZ26RM5XkaBPVoFb81bayQjAbc08fKtgw0,33901
64
64
  dcicutils/scripts/view_portal_object.py,sha256=lcgXWH9ooVf7tJDIRnoFGOgT0wYLGhiJlJW3a9w6A_c,36983
65
65
  dcicutils/secrets_utils.py,sha256=8dppXAsiHhJzI6NmOcvJV5ldvKkQZzh3Fl-cb8Wm7MI,19745
66
66
  dcicutils/sheet_utils.py,sha256=VlmzteONW5VF_Q4vo0yA5vesz1ViUah1MZ_yA1rwZ0M,33629
@@ -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.14.0.1b11.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
79
- dcicutils-8.14.0.1b11.dist-info/METADATA,sha256=HFNj87yKbAwTA98cVDJm_0r9aVJssg7zo5dIsqngVrg,3440
80
- dcicutils-8.14.0.1b11.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
81
- dcicutils-8.14.0.1b11.dist-info/entry_points.txt,sha256=W6kEWdUJk9tQ4myAgpehPdebcwvCAZ7UgB-wyPgDUMg,335
82
- dcicutils-8.14.0.1b11.dist-info/RECORD,,
78
+ dcicutils-8.14.0.1b13.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
79
+ dcicutils-8.14.0.1b13.dist-info/METADATA,sha256=5QlfpJpS0C59LVay7HnYSP-GQUeE8BsEM60E1GvKSfI,3440
80
+ dcicutils-8.14.0.1b13.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
81
+ dcicutils-8.14.0.1b13.dist-info/entry_points.txt,sha256=W6kEWdUJk9tQ4myAgpehPdebcwvCAZ7UgB-wyPgDUMg,335
82
+ dcicutils-8.14.0.1b13.dist-info/RECORD,,