dcicutils 8.14.0.1b20__py3-none-any.whl → 8.14.0.1b22__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/view_portal_object.py +33 -6
- {dcicutils-8.14.0.1b20.dist-info → dcicutils-8.14.0.1b22.dist-info}/METADATA +1 -1
- {dcicutils-8.14.0.1b20.dist-info → dcicutils-8.14.0.1b22.dist-info}/RECORD +6 -6
- {dcicutils-8.14.0.1b20.dist-info → dcicutils-8.14.0.1b22.dist-info}/LICENSE.txt +0 -0
- {dcicutils-8.14.0.1b20.dist-info → dcicutils-8.14.0.1b22.dist-info}/WHEEL +0 -0
- {dcicutils-8.14.0.1b20.dist-info → dcicutils-8.14.0.1b22.dist-info}/entry_points.txt +0 -0
@@ -290,6 +290,23 @@ def _get_portal_object(portal: Portal, uuid: str,
|
|
290
290
|
_print()
|
291
291
|
return None
|
292
292
|
|
293
|
+
def get_metadata_types(path: str) -> Optional[dict]:
|
294
|
+
nonlocal portal, debug
|
295
|
+
metadata_types = {}
|
296
|
+
try:
|
297
|
+
if debug:
|
298
|
+
_print(f"Executing separted query to get actual metadata types for raw/inserts query.")
|
299
|
+
if ((response := portal.get(path)) and (response.status_code in [200, 307]) and
|
300
|
+
(response := response.json()) and (results := response.get("@graph"))): # noqa
|
301
|
+
for result in results:
|
302
|
+
if (result_type := result.get("@type")) and (result_uuid := result.get("uuid")):
|
303
|
+
if ((isinstance(result_type, list) and (result_type := result_type[0])) or
|
304
|
+
isinstance(result_type, str)): # noqa
|
305
|
+
metadata_types[result_uuid] = result_type
|
306
|
+
except Exception:
|
307
|
+
return None
|
308
|
+
return metadata_types
|
309
|
+
|
293
310
|
response = None
|
294
311
|
try:
|
295
312
|
if not uuid.startswith("/"):
|
@@ -312,6 +329,7 @@ def _get_portal_object(portal: Portal, uuid: str,
|
|
312
329
|
if not response.json:
|
313
330
|
_exit(f"Invalid JSON getting Portal object: {uuid}")
|
314
331
|
response = response.json()
|
332
|
+
response_types = {}
|
315
333
|
if inserts:
|
316
334
|
# Format results as suitable for inserts (e.g. via update-portal-object).
|
317
335
|
response.pop("schema_version", None)
|
@@ -319,10 +337,12 @@ def _get_portal_object(portal: Portal, uuid: str,
|
|
319
337
|
(isinstance(results_type := response.get("@type"), list) and results_type) and
|
320
338
|
(isinstance(results_type := results_type[0], str) and results_type.endswith("SearchResults")) and
|
321
339
|
(results_type := results_type[0:-len("SearchResults")])): # noqa
|
322
|
-
# For search results, the type (from XyzSearchResults, above) may not be precisely correct
|
323
|
-
# each of the results; it may be the supertype (e.g. QualityMetric vs QualityMetricWorkflowRun);
|
340
|
+
# For (raw frame) search results, the type (from XyzSearchResults, above) may not be precisely correct
|
341
|
+
# for each of the results; it may be the supertype (e.g. QualityMetric vs QualityMetricWorkflowRun);
|
324
342
|
# so for types which are supertypes (gotten via Portal.get_schemas_super_type_map) we actually
|
325
|
-
# lookup each result individually to determine its actual precise type.
|
343
|
+
# lookup each result individually to determine its actual precise type. Although, if we have
|
344
|
+
# more than (say) 5 results to do this for, then do a separate query (get_metadata_types)
|
345
|
+
# to get the result types all at once.
|
326
346
|
if not ((supertypes := portal.get_schemas_super_type_map()) and (subtypes := supertypes.get(results_type))):
|
327
347
|
subtypes = None
|
328
348
|
response = {}
|
@@ -335,9 +355,16 @@ def _get_portal_object(portal: Portal, uuid: str,
|
|
335
355
|
result.pop("schema_version", None)
|
336
356
|
result = prune_data(result)
|
337
357
|
if (subtypes and one_or_more_objects_of_types_exists(portal, subtypes, debug=debug) and
|
338
|
-
(result_uuid := result.get("uuid"))
|
339
|
-
|
340
|
-
|
358
|
+
(result_uuid := result.get("uuid"))): # noqa
|
359
|
+
# If we have more than (say) 5 results for which we need to determine that actual result type,
|
360
|
+
# then get them all at once via separate query (get_metadata_types)) which is not the raw frame.
|
361
|
+
if (results_total > 5) and (not response_types):
|
362
|
+
response_types = get_metadata_types(path)
|
363
|
+
if not (response_types and (result_type := response_types.get(result_uuid))):
|
364
|
+
if individual_result_type := get_metadata_for_individual_result_type(result_uuid):
|
365
|
+
result_type = individual_result_type
|
366
|
+
else:
|
367
|
+
result_type = results_type
|
341
368
|
else:
|
342
369
|
result_type = results_type
|
343
370
|
if response.get(result_type):
|
@@ -61,7 +61,7 @@ dcicutils/schema_utils.py,sha256=GmRm-XqZKJ6qine16SQF1txcby9WougDav_sYmKNs9E,124
|
|
61
61
|
dcicutils/scripts/publish_to_pypi.py,sha256=sMd4WASQGlxlh7uLrt2eGkFRXYgONVmvIg8mClMS5RQ,13903
|
62
62
|
dcicutils/scripts/run_license_checker.py,sha256=z2keYnRDZsHQbTeo1XORAXSXNJK5axVzL5LjiNqZ7jE,4184
|
63
63
|
dcicutils/scripts/update_portal_object.py,sha256=pRTzbfT4Ul64KwlBJa6cqfNRDIqPh2Uyi9BmXeAjoeU,40135
|
64
|
-
dcicutils/scripts/view_portal_object.py,sha256=
|
64
|
+
dcicutils/scripts/view_portal_object.py,sha256=7I7wEBLFoVLpP8VZNGQuxh6N1PALJ38IKZTJ6WSNRRM,38654
|
65
65
|
dcicutils/secrets_utils.py,sha256=8dppXAsiHhJzI6NmOcvJV5ldvKkQZzh3Fl-cb8Wm7MI,19745
|
66
66
|
dcicutils/sheet_utils.py,sha256=VlmzteONW5VF_Q4vo0yA5vesz1ViUah1MZ_yA1rwZ0M,33629
|
67
67
|
dcicutils/snapshot_utils.py,sha256=YDeI3vD-MhAtHwKDzfEm2q-n3l-da2yRpRR3xp0Ah1M,23021
|
@@ -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.1b22.dist-info/LICENSE.txt,sha256=qnwSmfnEWMl5l78VPDEzAmEbLVrRqQvfUQiHT0ehrOo,1102
|
79
|
+
dcicutils-8.14.0.1b22.dist-info/METADATA,sha256=ACXqTzYQxjKfS18CdckhbfPZZF2AeIQ88Ta25nkDMPM,3440
|
80
|
+
dcicutils-8.14.0.1b22.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
|
81
|
+
dcicutils-8.14.0.1b22.dist-info/entry_points.txt,sha256=W6kEWdUJk9tQ4myAgpehPdebcwvCAZ7UgB-wyPgDUMg,335
|
82
|
+
dcicutils-8.14.0.1b22.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|