dcicutils 8.14.0.1b25__py3-none-any.whl → 8.14.0.1b27__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/scripts/update_portal_object.py +24 -3
- {dcicutils-8.14.0.1b25.dist-info → dcicutils-8.14.0.1b27.dist-info}/METADATA +1 -1
- {dcicutils-8.14.0.1b25.dist-info → dcicutils-8.14.0.1b27.dist-info}/RECORD +6 -6
- {dcicutils-8.14.0.1b25.dist-info → dcicutils-8.14.0.1b27.dist-info}/LICENSE.txt +0 -0
- {dcicutils-8.14.0.1b25.dist-info → dcicutils-8.14.0.1b27.dist-info}/WHEEL +0 -0
- {dcicutils-8.14.0.1b25.dist-info → dcicutils-8.14.0.1b27.dist-info}/entry_points.txt +0 -0
@@ -139,6 +139,8 @@ def main():
|
|
139
139
|
parser.add_argument("--noignore", action="store_true", required=False, default=False,
|
140
140
|
help="Do not ignore standard fields on update(s).")
|
141
141
|
parser.add_argument("--ignore", nargs="+", help="Ignore these additional fields.")
|
142
|
+
parser.add_argument("--unresolved-output", "--unresolved", type=str,
|
143
|
+
help="Output file to write unresolved references to for --load only.")
|
142
144
|
parser.add_argument("--confirm", action="store_true", required=False, default=False, help="Confirm before action.")
|
143
145
|
parser.add_argument("--verbose", action="store_true", required=False, default=False, help="Verbose output.")
|
144
146
|
parser.add_argument("--quiet", action="store_true", required=False, default=False, help="Quiet output.")
|
@@ -162,6 +164,7 @@ def main():
|
|
162
164
|
|
163
165
|
if args.load:
|
164
166
|
_load_data(portal=portal, load=args.load, ini_file=args.ini, explicit_schema_name=args.schema,
|
167
|
+
unresolved_output=args.unresolved_output,
|
165
168
|
verbose=args.verbose, debug=args.debug, noprogress=args.noprogress)
|
166
169
|
|
167
170
|
if explicit_schema_name := args.schema:
|
@@ -397,6 +400,7 @@ def _upsert_data(portal: Portal, data: dict, schema_name: str,
|
|
397
400
|
|
398
401
|
|
399
402
|
def _load_data(portal: Portal, load: str, ini_file: str, explicit_schema_name: Optional[str] = None,
|
403
|
+
unresolved_output: Optional[str] = False,
|
400
404
|
verbose: bool = False, debug: bool = False, noprogress: bool = False,
|
401
405
|
_single_insert_file: Optional[str] = None) -> bool:
|
402
406
|
|
@@ -515,6 +519,7 @@ def _load_data(portal: Portal, load: str, ini_file: str, explicit_schema_name: O
|
|
515
519
|
if not os.path.isabs(load := os.path.normpath(os.path.expanduser(load))):
|
516
520
|
load = os.path.normpath(os.path.join(os.getcwd(), load))
|
517
521
|
if not os.path.exists(load):
|
522
|
+
_print(f"Specified JSON data file not found: {load}")
|
518
523
|
return False
|
519
524
|
|
520
525
|
if os.path.isdir(load):
|
@@ -544,6 +549,7 @@ def _load_data(portal: Portal, load: str, ini_file: str, explicit_schema_name: O
|
|
544
549
|
with io.open(file_name, "w") as f:
|
545
550
|
json.dump(data, f)
|
546
551
|
return _load_data(portal=portal, load=tmpdir, ini_file=ini_file, explicit_schema_name=schema_name,
|
552
|
+
unresolved_output=unresolved_output,
|
547
553
|
verbose=verbose, debug=debug, noprogress=noprogress,
|
548
554
|
_single_insert_file=inserts_file)
|
549
555
|
elif isinstance(data, dict):
|
@@ -571,6 +577,7 @@ def _load_data(portal: Portal, load: str, ini_file: str, explicit_schema_name: O
|
|
571
577
|
nfiles += 1
|
572
578
|
if nfiles > 0:
|
573
579
|
return _load_data(portal=portal, load=tmpdir, ini_file=ini_file,
|
580
|
+
unresolved_output=unresolved_output,
|
574
581
|
verbose=verbose, debug=debug, noprogress=noprogress,
|
575
582
|
_single_insert_file=inserts_file)
|
576
583
|
return True
|
@@ -641,6 +648,19 @@ def _load_data(portal: Portal, load: str, ini_file: str, explicit_schema_name: O
|
|
641
648
|
_print(f" ✗ {item}: {len(loadxl_unresolved[item])}")
|
642
649
|
for subitem in loadxl_unresolved[item]:
|
643
650
|
_print(f" ▶ {subitem}")
|
651
|
+
if unresolved_output:
|
652
|
+
if unresolved_output:
|
653
|
+
if not os.path.isabs(unresolved_output := os.path.normpath(os.path.expanduser(unresolved_output))):
|
654
|
+
unresolved_output = os.path.normpath(os.path.join(os.getcwd(), unresolved_output))
|
655
|
+
if os.path.exists(unresolved_output):
|
656
|
+
if os.path.isdir(unresolved_output):
|
657
|
+
_print("Unresolved output file exists as a directory: {unresolved_output}")
|
658
|
+
return False
|
659
|
+
_print(f"Unresolved output file already exists: {unresolved_output}")
|
660
|
+
if yes_or_no(f"Do you want to overwrite this file?"):
|
661
|
+
with io.open(unresolved_output, "w") as f:
|
662
|
+
for item in loadxl_unresolved:
|
663
|
+
f.write(f"{item}\n")
|
644
664
|
if debug and loadxl_output:
|
645
665
|
_print("✗ Output from loadxl:")
|
646
666
|
for item in loadxl_output:
|
@@ -707,9 +727,10 @@ def _create_portal(env: Optional[str] = None, ini: Optional[str] = None, app: Op
|
|
707
727
|
if (not load) and (app == APP_SMAHT) and (env := os.environ.get(_SMAHT_ENV_ENVIRON_NAME)):
|
708
728
|
env_from_environ = True
|
709
729
|
if not env:
|
710
|
-
if os.path.exists(ini_file := os.path.normpath(os.path.join(os.getcwd(), _DEFAULT_INI_FILE_FOR_LOAD))):
|
711
|
-
|
712
|
-
|
730
|
+
if not os.path.exists(ini_file := os.path.normpath(os.path.join(os.getcwd(), _DEFAULT_INI_FILE_FOR_LOAD))):
|
731
|
+
_print("Must specify --ini or --env option in order to create a Portal object.")
|
732
|
+
return None
|
733
|
+
return _create_portal(ini=ini_file, app=app, verbose=verbose, debug=debug)
|
713
734
|
if not (portal := Portal(env, app=app) if env or app else None):
|
714
735
|
_print(f"Cannot create access-key based Portal object: {env}{f' ({app})' if app else ''}")
|
715
736
|
return None
|
@@ -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=
|
63
|
+
dcicutils/scripts/update_portal_object.py,sha256=c4-nQ_QkmVA6pnAM-08TjhdISseLPh0rg_OX3_V2ugU,41613
|
64
64
|
dcicutils/scripts/view_portal_object.py,sha256=vsJzS985JFEW6-xOe_ExkuE4Dk21G6d8xfC9RBUNwUg,38655
|
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.
|
79
|
-
dcicutils-8.14.0.
|
80
|
-
dcicutils-8.14.0.
|
81
|
-
dcicutils-8.14.0.
|
82
|
-
dcicutils-8.14.0.
|
78
|
+
dcicutils-8.14.0.1b27.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
|
79
|
+
dcicutils-8.14.0.1b27.dist-info/METADATA,sha256=eTXjvupOrwP4AJOFmh9XvYc91x12alWq6dGPFKakDq8,3440
|
80
|
+
dcicutils-8.14.0.1b27.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
81
|
+
dcicutils-8.14.0.1b27.dist-info/entry_points.txt,sha256=W6kEWdUJk9tQ4myAgpehPdebcwvCAZ7UgB-wyPgDUMg,335
|
82
|
+
dcicutils-8.14.0.1b27.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|