dcicutils 8.14.0.1b26__py3-none-any.whl → 8.14.0.1b28__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 +25 -2
- {dcicutils-8.14.0.1b26.dist-info → dcicutils-8.14.0.1b28.dist-info}/METADATA +1 -1
- {dcicutils-8.14.0.1b26.dist-info → dcicutils-8.14.0.1b28.dist-info}/RECORD +6 -6
- {dcicutils-8.14.0.1b26.dist-info → dcicutils-8.14.0.1b28.dist-info}/LICENSE.txt +0 -0
- {dcicutils-8.14.0.1b26.dist-info → dcicutils-8.14.0.1b28.dist-info}/WHEEL +0 -0
- {dcicutils-8.14.0.1b26.dist-info → dcicutils-8.14.0.1b28.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):
|
@@ -556,8 +562,11 @@ def _load_data(portal: Portal, load: str, ini_file: str, explicit_schema_name: O
|
|
556
562
|
else:
|
557
563
|
data = {schema_name: [data]}
|
558
564
|
if not _is_schema_name_list(portal, schema_names := list(data.keys())):
|
559
|
-
|
560
|
-
|
565
|
+
if not (schema_name := _get_schema_name_from_schema_named_json_file_name(portal, inserts_file)):
|
566
|
+
_print(f"Unrecognized types in JSON data file: {inserts_file}")
|
567
|
+
# Assume simple object of type from the JSON file name.
|
568
|
+
schema_names = [schema_name]
|
569
|
+
data = {schema_name: [data]}
|
561
570
|
with temporary_directory() as tmpdir:
|
562
571
|
nfiles = 0
|
563
572
|
for schema_name in schema_names:
|
@@ -571,6 +580,7 @@ def _load_data(portal: Portal, load: str, ini_file: str, explicit_schema_name: O
|
|
571
580
|
nfiles += 1
|
572
581
|
if nfiles > 0:
|
573
582
|
return _load_data(portal=portal, load=tmpdir, ini_file=ini_file,
|
583
|
+
unresolved_output=unresolved_output,
|
574
584
|
verbose=verbose, debug=debug, noprogress=noprogress,
|
575
585
|
_single_insert_file=inserts_file)
|
576
586
|
return True
|
@@ -641,6 +651,19 @@ def _load_data(portal: Portal, load: str, ini_file: str, explicit_schema_name: O
|
|
641
651
|
_print(f" ✗ {item}: {len(loadxl_unresolved[item])}")
|
642
652
|
for subitem in loadxl_unresolved[item]:
|
643
653
|
_print(f" ▶ {subitem}")
|
654
|
+
if unresolved_output:
|
655
|
+
if unresolved_output:
|
656
|
+
if not os.path.isabs(unresolved_output := os.path.normpath(os.path.expanduser(unresolved_output))):
|
657
|
+
unresolved_output = os.path.normpath(os.path.join(os.getcwd(), unresolved_output))
|
658
|
+
if os.path.exists(unresolved_output):
|
659
|
+
if os.path.isdir(unresolved_output):
|
660
|
+
_print("Unresolved output file exists as a directory: {unresolved_output}")
|
661
|
+
return False
|
662
|
+
_print(f"Unresolved output file already exists: {unresolved_output}")
|
663
|
+
if yes_or_no(f"Do you want to overwrite this file?"):
|
664
|
+
with io.open(unresolved_output, "w") as f:
|
665
|
+
for item in loadxl_unresolved:
|
666
|
+
f.write(f"{item}\n")
|
644
667
|
if debug and loadxl_output:
|
645
668
|
_print("✗ Output from loadxl:")
|
646
669
|
for item in loadxl_output:
|
@@ -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=BwZw1cZx2zhzp1ivn_DXUxfnmUyC5A9fAotjHV0fXf4,41875
|
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.1b28.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
|
79
|
+
dcicutils-8.14.0.1b28.dist-info/METADATA,sha256=_Cl7Wklz95RtMUYcwgxsJk1mox2gnJeshyNHC3imAaA,3440
|
80
|
+
dcicutils-8.14.0.1b28.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
81
|
+
dcicutils-8.14.0.1b28.dist-info/entry_points.txt,sha256=W6kEWdUJk9tQ4myAgpehPdebcwvCAZ7UgB-wyPgDUMg,335
|
82
|
+
dcicutils-8.14.0.1b28.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|